diff --git a/.github/workflows/GHPages.yml b/.github/workflows/GHPages.yml
index c0a73137..a326867e 100644
--- a/.github/workflows/GHPages.yml
+++ b/.github/workflows/GHPages.yml
@@ -25,7 +25,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
- - uses: pnpm/action-setup@v2
+ - uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
- name: Install And Build
run: |+
diff --git a/.github/workflows/NodeCI.yml b/.github/workflows/NodeCI.yml
index 8eb55fc1..70490c12 100644
--- a/.github/workflows/NodeCI.yml
+++ b/.github/workflows/NodeCI.yml
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - uses: pnpm/action-setup@v2
+ - uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
- name: Install Packages
run: pnpm install
@@ -26,7 +26,7 @@ jobs:
node-version: [18.x, 20.x, 22.x, latest]
steps:
- uses: actions/checkout@v4
- - uses: pnpm/action-setup@v2
+ - uses: pnpm/action-setup@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
@@ -39,7 +39,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - uses: pnpm/action-setup@v2
+ - uses: pnpm/action-setup@v4
- name: Use Node.js
uses: actions/setup-node@v4
- name: Install Packages
@@ -51,7 +51,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - uses: pnpm/action-setup@v2
+ - uses: pnpm/action-setup@v4
- name: Use Node.js
uses: actions/setup-node@v4
- name: Install Svelte v4
@@ -70,7 +70,7 @@ jobs:
node-version: [18.x]
steps:
- uses: actions/checkout@v4
- - uses: pnpm/action-setup@v2
+ - uses: pnpm/action-setup@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
@@ -87,7 +87,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - uses: pnpm/action-setup@v2
+ - uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
- name: Install Packages
run: pnpm install
@@ -101,7 +101,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - uses: pnpm/action-setup@v2
+ - uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
- name: Install Packages
run: pnpm install
diff --git a/.github/workflows/Release.yml b/.github/workflows/Release.yml
index 5c8fefa8..5aa84503 100644
--- a/.github/workflows/Release.yml
+++ b/.github/workflows/Release.yml
@@ -22,7 +22,7 @@ jobs:
fetch-depth: 0
- name: Setup pnpm
- uses: pnpm/action-setup@v2
+ uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml
index c0b82e21..1e60d6a8 100644
--- a/.github/workflows/format.yml
+++ b/.github/workflows/format.yml
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - uses: pnpm/action-setup@v2
+ - uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
- name: Install Packages
run: pnpm install
diff --git a/.github/workflows/pkg.pr.new-comment.yml b/.github/workflows/pkg.pr.new-comment.yml
index c3934c47..788908ef 100644
--- a/.github/workflows/pkg.pr.new-comment.yml
+++ b/.github/workflows/pkg.pr.new-comment.yml
@@ -6,6 +6,10 @@ on:
types:
- completed
+permissions:
+ issues: write
+ pull-requests: write
+
jobs:
build:
if: github.repository == 'sveltejs/svelte-eslint-parser'
diff --git a/.github/workflows/pkg.pr.new.yml b/.github/workflows/pkg.pr.new.yml
index 20d5d4aa..27864d31 100644
--- a/.github/workflows/pkg.pr.new.yml
+++ b/.github/workflows/pkg.pr.new.yml
@@ -13,7 +13,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- - uses: pnpm/action-setup@v2
+ - uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
- name: Install Packages
run: pnpm install
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 00000000..44e54133
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1 @@
+tests/fixtures
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 00000000..877131f6
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,3 @@
+{
+ "plugins": ["prettier-plugin-pkg", "prettier-plugin-svelte"]
+}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b78aad53..c903413a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,41 @@
# svelte-eslint-parser
+## 1.2.0
+
+### Minor Changes
+
+- [#714](https://github.com/sveltejs/svelte-eslint-parser/pull/714) [`855af3b`](https://github.com/sveltejs/svelte-eslint-parser/commit/855af3b9fe4dc94d0af025b0b443579fa6e2c507) Thanks [@baseballyama](https://github.com/baseballyama)! - feat: support `{@attach ...}`
+
+## 1.1.3
+
+### Patch Changes
+
+- [#704](https://github.com/sveltejs/svelte-eslint-parser/pull/704) [`0436da6`](https://github.com/sveltejs/svelte-eslint-parser/commit/0436da6b7190208284de45ce7a54e18c4d31c032) Thanks [@mcous](https://github.com/mcous)! - Strip `projectService` from TS options when type information not needed
+
+## 1.1.2
+
+### Patch Changes
+
+- [#698](https://github.com/sveltejs/svelte-eslint-parser/pull/698) [`8188302`](https://github.com/sveltejs/svelte-eslint-parser/commit/81883020381ddef27490ddc27ea719135abee89e) Thanks [@ota-meshi](https://github.com/ota-meshi)! - fix: crash with `$derived()` in template using ts
+
+## 1.1.1
+
+### Patch Changes
+
+- [#692](https://github.com/sveltejs/svelte-eslint-parser/pull/692) [`1c533d8`](https://github.com/sveltejs/svelte-eslint-parser/commit/1c533d8929c57f3bba5e97bc4d1aee06ddd9cdd0) Thanks [@baseballyama](https://github.com/baseballyama)! - fix: resolved issue of `$props` incorrectly detected as store when using variables named after runes like `$props` and `props`
+
+## 1.1.0
+
+### Minor Changes
+
+- [#686](https://github.com/sveltejs/svelte-eslint-parser/pull/686) [`f26ee51`](https://github.com/sveltejs/svelte-eslint-parser/commit/f26ee51709e286713acb3b2c223c5d807c72fecb) Thanks [@marekdedic](https://github.com/marekdedic)! - style Context parsing error type fix
+
+## 1.0.1
+
+### Patch Changes
+
+- [#681](https://github.com/sveltejs/svelte-eslint-parser/pull/681) [`edb63e2`](https://github.com/sveltejs/svelte-eslint-parser/commit/edb63e213fae5e72604d45841b357f158d16fd3b) Thanks [@baseballyama](https://github.com/baseballyama)! - fix: align required Node version with ESLint
+
## 1.0.0
### Major Changes
diff --git a/benchmark/index.ts b/benchmark/index.ts
index 6e23c845..38ff0001 100644
--- a/benchmark/index.ts
+++ b/benchmark/index.ts
@@ -1,12 +1,15 @@
// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair -- ignore
/* eslint-disable no-console -- ignore */
-import * as Benchmark from "benchmark";
-import fs from "fs";
-import { parseForESLint } from "../src/index.js";
+import Benchmark from "benchmark";
+import fs from "node:fs";
+import { fileURLToPath } from "node:url";
import { parseForESLint as parseOld } from "../node_modules/svelte-eslint-parser/lib/index.js";
+import { parseForESLint } from "../src/index.js";
const contents = `${fs.readFileSync(
- require.resolve("../explorer-v2/src/lib/RulesSettings.svelte"),
+ fileURLToPath(
+ import.meta.resolve("../explorer-v2/src/lib/RulesSettings.svelte"),
+ ),
"utf-8",
)}// comments`;
diff --git a/docs/AST.md b/docs/AST.md
index b8eec7b4..c1d3f92d 100644
--- a/docs/AST.md
+++ b/docs/AST.md
@@ -15,7 +15,7 @@ See [ESTree] for the AST node of the script generated by `espree`.
[variabledeclarator]: https://github.com/estree/estree/blob/master/es5.md#variabledeclarator
[pattern]: https://github.com/estree/estree/blob/master/es5.md#patterns
-See details: [../src/ast/*](../src/ast/)
+See details: [../src/ast/\*](../src/ast/)
## Common
@@ -169,6 +169,7 @@ interface SvelteStartTag extends Node {
| SvelteAttribute
| SvelteShorthandAttribute
| SvelteSpreadAttribute
+ | SvelteAttachTag
| SvelteDirective
| SvelteStyleDirective
| SvelteSpecialDirective
@@ -451,6 +452,18 @@ interface SvelteRenderTag extends Node {
}
```
+### SvelteAttachTag
+
+This is `{@attach}` tag node.
+
+```ts
+export interface SvelteAttachTag extends BaseNode {
+ type: "SvelteAttachTag";
+ expression: ESTree.Expression;
+ parent: SvelteStartTag;
+}
+```
+
### SvelteIfBlock
This is the `{#if}` tag node. `{:else if}` is also included in this node.
diff --git a/docs/internal-mechanism.md b/docs/internal-mechanism.md
index 9cc25972..80fead11 100644
--- a/docs/internal-mechanism.md
+++ b/docs/internal-mechanism.md
@@ -38,23 +38,26 @@ For example, if you enter `*.svelte` template to listen for input events:
```svelte
-
+
+
```
Parse the following virtual script code as a script:
```ts
-
- function inputHandler () {
- // process
- }
-;function $_render1(){
-
-(inputHandler) as ((e:'input' extends keyof HTMLElementEventMap ? HTMLElementEventMap['input'] : CustomEvent) => void );
+function inputHandler() {
+ // process
+}
+function $_render1() {
+ inputHandler as (
+ e: "input" extends keyof HTMLElementEventMap
+ ? HTMLElementEventMap["input"]
+ : CustomEvent,
+ ) => void;
}
```
@@ -78,25 +81,24 @@ For example, when using `{#each}` and `{@const}`:
```svelte
+
{#each array as e}
- {@const ee = e * 2}
- {ee}
+ {@const ee = e * 2}
+ {ee}
{/each}
```
Parse the following virtual script code as a script:
```ts
-
- const array = [1, 2, 3]
-;function $_render1(){
-
-Array.from(array).forEach((e) => {
+const array = [1, 2, 3];
+function $_render1() {
+ Array.from(array).forEach((e) => {
const ee = e * 2;
- (ee);
-});
+ ee;
+ });
}
```
@@ -121,8 +123,9 @@ TypeScript's type inference is pretty good, so parsing Svelte as-is gives some w
e.g.
+
```ts
-export let foo: { bar: number } | null = null
+export let foo: { bar: number } | null = null;
$: console.log(foo && foo.bar);
// ^ never type
@@ -139,13 +142,13 @@ For example:
```svelte
{foo && foo.bar}
@@ -154,26 +157,24 @@ $: ({ bar: n } = foo || { bar: 42 });
Parse the following virtual script code as a script:
```ts
-
-export let foo: { bar: number } | null = null
+export let foo: { bar: number } | null = null;
-$: function $_reactiveStatementScopeFunction1(){
- console.log(foo && foo.bar);
+$: function $_reactiveStatementScopeFunction1() {
+ console.log(foo && foo.bar);
}
-$: let r =$_reactiveVariableScopeFunction2();
-function $_reactiveVariableScopeFunction2(){
- let $_tmpVar3;
- return ($_tmpVar3 = foo && foo.bar);
+$: let r = $_reactiveVariableScopeFunction2();
+function $_reactiveVariableScopeFunction2() {
+ let $_tmpVar3;
+ return ($_tmpVar3 = foo && foo.bar);
}
-$: let { bar: n } =$_reactiveVariableScopeFunction4();
-function $_reactiveVariableScopeFunction4(){
- let $_tmpVar5;
- return ($_tmpVar5 = foo || { bar: 42 });
+$: let { bar: n } = $_reactiveVariableScopeFunction4();
+function $_reactiveVariableScopeFunction4() {
+ let $_tmpVar5;
+ return ($_tmpVar5 = foo || { bar: 42 });
}
-;function $_render6(){
-
-(foo && foo.bar);
+function $_render6() {
+ foo && foo.bar;
}
```
diff --git a/explorer-v2/src/lib/AstExplorer.svelte b/explorer-v2/src/lib/AstExplorer.svelte
index 66ff7746..53191731 100644
--- a/explorer-v2/src/lib/AstExplorer.svelte
+++ b/explorer-v2/src/lib/AstExplorer.svelte
@@ -29,19 +29,20 @@
);
let tsParser = undefined;
+ function setTSParser(parser) {
+ if (typeof window !== 'undefined') {
+ if (!window.process) {
+ window.process = {
+ cwd: () => '',
+ env: {}
+ };
+ }
+ }
+ tsParser = parser;
+ }
$: {
if (hasLangTs && !tsParser) {
- import('@typescript-eslint/parser').then((parser) => {
- if (typeof window !== 'undefined') {
- if (!window.process) {
- window.process = {
- cwd: () => '',
- env: {}
- };
- }
- }
- tsParser = parser;
- });
+ import('@typescript-eslint/parser').then(setTSParser);
}
}
diff --git a/explorer-v2/src/lib/ESLintPlayground.svelte b/explorer-v2/src/lib/ESLintPlayground.svelte
index 6905ab06..dacaa2d3 100644
--- a/explorer-v2/src/lib/ESLintPlayground.svelte
+++ b/explorer-v2/src/lib/ESLintPlayground.svelte
@@ -34,19 +34,20 @@
$: hasLangTs = /lang\s*=\s*(?:"ts"|ts|'ts'|"typescript"|typescript|'typescript')/u.test(code);
let tsParser = undefined;
+ function setTSParser(parser) {
+ if (typeof window !== 'undefined') {
+ if (!window.process) {
+ window.process = {
+ cwd: () => '',
+ env: {}
+ };
+ }
+ }
+ tsParser = parser;
+ }
$: {
if (hasLangTs && !tsParser) {
- import('@typescript-eslint/parser').then((parser) => {
- if (typeof window !== 'undefined') {
- if (!window.process) {
- window.process = {
- cwd: () => '',
- env: {}
- };
- }
- }
- tsParser = parser;
- });
+ import('@typescript-eslint/parser').then(setTSParser);
}
}
diff --git a/explorer-v2/src/lib/MonacoEditor.svelte b/explorer-v2/src/lib/MonacoEditor.svelte
index 97246e99..3db6ffa5 100644
--- a/explorer-v2/src/lib/MonacoEditor.svelte
+++ b/explorer-v2/src/lib/MonacoEditor.svelte
@@ -54,22 +54,7 @@
$: {
disposeCodeActionProvider();
if (provideCodeActions) {
- loadingMonaco.then((monaco) => {
- codeActionProviderDisposable = monaco.languages.registerCodeActionProvider(language, {
- provideCodeActions(model, range, context) {
- const editor = getLeftEditor?.();
- if (editor?.getModel().url !== model.url) {
- return {
- actions: [],
- dispose() {
- /* nop */
- }
- };
- }
- return provideCodeActions(model, range, context);
- }
- });
- });
+ loadingMonaco.then((monaco) => setupCodeActionProvider(monaco, provideCodeActions));
}
}
@@ -216,6 +201,22 @@
}
}
+ function setupCodeActionProvider(monaco, provideCodeActions) {
+ codeActionProviderDisposable = monaco.languages.registerCodeActionProvider(language, {
+ provideCodeActions(model, range, context) {
+ const editor = getLeftEditor?.();
+ if (editor?.getModel().url !== model.url) {
+ return {
+ actions: [],
+ dispose() {
+ /* nop */
+ }
+ };
+ }
+ return provideCodeActions(model, range, context);
+ }
+ });
+ }
function disposeCodeActionProvider() {
if (codeActionProviderDisposable) {
codeActionProviderDisposable.dispose();
diff --git a/explorer-v2/src/lib/ScopeExplorer.svelte b/explorer-v2/src/lib/ScopeExplorer.svelte
index ecf361f8..263661a9 100644
--- a/explorer-v2/src/lib/ScopeExplorer.svelte
+++ b/explorer-v2/src/lib/ScopeExplorer.svelte
@@ -28,19 +28,20 @@
svelteValue
);
let tsParser = undefined;
+ function setTSParser(parser) {
+ if (typeof window !== 'undefined') {
+ if (!window.process) {
+ window.process = {
+ cwd: () => '',
+ env: {}
+ };
+ }
+ }
+ tsParser = parser;
+ }
$: {
if (hasLangTs && !tsParser) {
- import('@typescript-eslint/parser').then((parser) => {
- if (typeof window !== 'undefined') {
- if (!window.process) {
- window.process = {
- cwd: () => '',
- env: {}
- };
- }
- }
- tsParser = parser;
- });
+ import('@typescript-eslint/parser').then(setTSParser);
}
}
$: {
diff --git a/package.json b/package.json
index b3105a6d..77d14630 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,7 @@
{
"name": "svelte-eslint-parser",
- "version": "1.0.0",
+ "version": "1.2.0",
+ "type": "module",
"description": "Svelte parser for ESLint",
"repository": "git+https://github.com/sveltejs/svelte-eslint-parser.git",
"homepage": "https://github.com/sveltejs/svelte-eslint-parser#readme",
@@ -10,11 +11,10 @@
],
"funding": "https://github.com/sponsors/ota-meshi",
"license": "MIT",
- "packageManager": "pnpm@9.15.6",
+ "packageManager": "pnpm@9.15.9",
"engines": {
- "node": "^18.20.4 || ^20.18.0 || >=22.10.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
- "type": "module",
"main": "lib/index.js",
"files": [
"lib"
@@ -40,10 +40,10 @@
"prerelease": "pnpm run clean && pnpm run build",
"preversion": "pnpm run lint && pnpm run test",
"release": "changeset publish",
+ "run-update-fixtures": "pnpm run ts ./tools/update-fixtures.ts",
"test": "pnpm run mocha \"tests/src/**/*.ts\" --reporter dot --timeout 60000",
"ts": "node --import tsx/esm",
"update-fixtures": "git add package.json && pnpm i -D svelte@4 && git checkout package.json && pnpm run run-update-fixtures && pnpm i && pnpm run run-update-fixtures",
- "run-update-fixtures": "pnpm run ts ./tools/update-fixtures.ts",
"version:ci": "env-cmd -e version-ci pnpm run build:meta && changeset version"
},
"peerDependencies": {
@@ -63,55 +63,54 @@
"postcss-selector-parser": "^7.0.0"
},
"devDependencies": {
- "@changesets/changelog-github": "^0.5.0",
- "@changesets/cli": "^2.27.10",
- "@changesets/get-release-plan": "^4.0.5",
+ "@changesets/changelog-github": "^0.5.1",
+ "@changesets/cli": "^2.28.1",
+ "@changesets/get-release-plan": "^4.0.8",
"@ota-meshi/eslint-plugin": "^0.17.6",
"@ota-meshi/test-snapshot": "^1.1.0",
"@types/benchmark": "^2.1.5",
- "@types/chai": "^5.0.0",
+ "@types/chai": "^5.2.1",
"@types/eslint": "^9.6.1",
"@types/eslint-scope": "^3.7.7",
"@types/eslint-visitor-keys": "^3.3.2",
- "@types/estree": "^1.0.6",
+ "@types/estree": "^1.0.7",
"@types/mocha": "^10.0.10",
- "@types/node": "^22.10.1",
- "@types/semver": "^7.5.8",
- "@typescript-eslint/eslint-plugin": "^8.16.0",
- "@typescript-eslint/parser": "~8.25.0",
- "@typescript-eslint/types": "~8.25.0",
+ "@types/node": "^22.13.13",
+ "@types/semver": "^7.7.0",
+ "@typescript-eslint/parser": "^8.29.0",
+ "@typescript-eslint/types": "^8.29.0",
"benchmark": "^2.1.4",
- "c8": "^10.1.2",
- "chai": "^5.0.0",
+ "c8": "^10.1.3",
+ "chai": "^5.2.0",
"env-cmd": "^10.1.0",
- "esbuild": "^0.25.0",
- "eslint": "~9.21.0",
- "eslint-config-prettier": "^10.0.0",
+ "esbuild": "^0.25.1",
+ "eslint": "~9.27.0",
+ "eslint-config-prettier": "^10.1.1",
"eslint-plugin-eslint-comments": "^3.2.0",
- "eslint-plugin-jsdoc": "^50.6.0",
- "eslint-plugin-json-schema-validator": "^5.2.0",
- "eslint-plugin-jsonc": "^2.18.2",
- "eslint-plugin-n": "^17.14.0",
- "eslint-plugin-node-dependencies": "^0.12.0",
- "eslint-plugin-prettier": "^5.2.1",
+ "eslint-plugin-jsdoc": "^50.6.9",
+ "eslint-plugin-json-schema-validator": "^5.3.1",
+ "eslint-plugin-jsonc": "^2.20.0",
+ "eslint-plugin-n": "^17.17.0",
+ "eslint-plugin-node-dependencies": "^1.0.0",
+ "eslint-plugin-prettier": "^5.2.5",
"eslint-plugin-regexp": "^2.7.0",
- "eslint-plugin-svelte": "^2.46.1",
- "eslint-plugin-yml": "^1.16.0",
+ "eslint-plugin-svelte": "^3.3.3",
+ "eslint-plugin-yml": "^1.17.0",
"globals": "^16.0.0",
"locate-character": "^3.0.0",
- "magic-string": "^0.30.14",
- "mocha": "^11.0.0",
- "prettier": "~3.5.0",
- "prettier-plugin-pkg": "^0.18.1",
- "prettier-plugin-svelte": "^3.3.2",
+ "magic-string": "^0.30.17",
+ "mocha": "^11.1.0",
+ "prettier": "~3.5.3",
+ "prettier-plugin-pkg": "^0.19.0",
+ "prettier-plugin-svelte": "^3.3.3",
"rimraf": "^6.0.1",
- "semver": "^7.6.3",
- "svelte": "^5.9.0",
- "svelte2tsx": "^0.7.28",
- "tsx": "^4.19.2",
- "typescript": "~5.7.2",
- "typescript-eslint": "^8.16.0",
- "typescript-eslint-parser-for-extra-files": "^0.7.0"
+ "semver": "^7.7.1",
+ "svelte": "^5.30.1",
+ "svelte2tsx": "^0.7.35",
+ "tsx": "^4.19.3",
+ "typescript": "~5.8.2",
+ "typescript-eslint": "^8.28.0",
+ "typescript-eslint-parser-for-extra-files": "^0.9.0"
},
"publishConfig": {
"access": "public"
diff --git a/prettier.config.mjs b/prettier.config.mjs
new file mode 100644
index 00000000..ff8b4c56
--- /dev/null
+++ b/prettier.config.mjs
@@ -0,0 +1 @@
+export default {};
diff --git a/src/ast/html.ts b/src/ast/html.ts
index cd1756f4..c70d158c 100644
--- a/src/ast/html.ts
+++ b/src/ast/html.ts
@@ -31,6 +31,7 @@ export type SvelteHTMLNode =
| SvelteAttribute
| SvelteShorthandAttribute
| SvelteSpreadAttribute
+ | SvelteAttachTag
| SvelteDirective
| SvelteStyleDirective
| SvelteSpecialDirective
@@ -142,6 +143,7 @@ export interface SvelteStartTag extends BaseNode {
| SvelteAttribute
| SvelteShorthandAttribute
| SvelteSpreadAttribute
+ | SvelteAttachTag
| SvelteDirective
| SvelteStyleDirective
| SvelteSpecialDirective
@@ -541,6 +543,12 @@ export interface SvelteSpreadAttribute extends BaseNode {
parent: SvelteStartTag;
}
+export interface SvelteAttachTag extends BaseNode {
+ type: "SvelteAttachTag";
+ expression: ESTree.Expression;
+ parent: SvelteStartTag;
+}
+
/** Node of directive. e.g. `` */
export type SvelteDirective =
| SvelteActionDirective
diff --git a/src/meta.ts b/src/meta.ts
index 979e2cfc..bcd86933 100644
--- a/src/meta.ts
+++ b/src/meta.ts
@@ -1,5 +1,5 @@
// IMPORTANT!
// This file has been automatically generated,
// in order to update its content execute "pnpm run build:meta"
-export const name = "svelte-eslint-parser";
-export const version = "1.0.0";
+export const name = "svelte-eslint-parser" as const;
+export const version = "1.2.0" as const;
diff --git a/src/parser/analyze-scope.ts b/src/parser/analyze-scope.ts
index 01fc9ab4..2182f0b0 100644
--- a/src/parser/analyze-scope.ts
+++ b/src/parser/analyze-scope.ts
@@ -16,6 +16,7 @@ import {
import { addElementToSortedArray } from "../utils/index.js";
import type { NormalizedParserOptions } from "./parser-options.js";
import type { SvelteParseContext } from "./svelte-parse-context.js";
+import { getGlobalsForSvelte } from "./globals.js";
/**
* Analyze scope
*/
@@ -105,7 +106,10 @@ export function analyzeReactiveScope(scopeManager: ScopeManager): void {
/**
* Analyze store scope. e.g. $count
*/
-export function analyzeStoreScope(scopeManager: ScopeManager): void {
+export function analyzeStoreScope(
+ scopeManager: ScopeManager,
+ svelteParseContext: SvelteParseContext,
+): void {
const moduleScope = scopeManager.scopes.find(
(scope) => scope.type === "module",
);
@@ -114,8 +118,13 @@ export function analyzeStoreScope(scopeManager: ScopeManager): void {
}
const toBeMarkAsUsedReferences: Reference[] = [];
+ const globals = getGlobalsForSvelte(svelteParseContext);
+
for (const reference of [...scopeManager.globalScope.through]) {
- if (reference.identifier.name.startsWith("$")) {
+ if (
+ reference.identifier.name.startsWith("$") &&
+ !globals.includes(reference.identifier.name as never)
+ ) {
const realName = reference.identifier.name.slice(1);
const variable = moduleScope.set.get(realName);
if (variable) {
diff --git a/src/parser/converts/attr.ts b/src/parser/converts/attr.ts
index db0d0b9b..2904860f 100644
--- a/src/parser/converts/attr.ts
+++ b/src/parser/converts/attr.ts
@@ -3,6 +3,7 @@ import type {
SvelteAnimationDirective,
SvelteAttribute,
SvelteShorthandAttribute,
+ SvelteAttachTag,
SvelteBindingDirective,
SvelteClassDirective,
SvelteDirective,
@@ -48,6 +49,7 @@ export function* convertAttributes(
| SvAST.AttributeOrDirective
| Compiler.Attribute
| Compiler.SpreadAttribute
+ | Compiler.AttachTag
| Compiler.Directive
)[],
parent: SvelteStartTag,
@@ -56,6 +58,7 @@ export function* convertAttributes(
| SvelteAttribute
| SvelteShorthandAttribute
| SvelteSpreadAttribute
+ | SvelteAttachTag
| SvelteDirective
| SvelteStyleDirective
> {
@@ -68,6 +71,10 @@ export function* convertAttributes(
yield convertSpreadAttribute(attr, parent, ctx);
continue;
}
+ if (attr.type === "AttachTag") {
+ yield convertAttachTag(attr, parent, ctx);
+ continue;
+ }
if (attr.type === "BindDirective" || attr.type === "Binding") {
yield convertBindingDirective(attr, parent, ctx);
continue;
@@ -344,6 +351,31 @@ function convertSpreadAttribute(
return attribute;
}
+function convertAttachTag(
+ node: Compiler.AttachTag,
+ parent: SvelteAttachTag["parent"],
+ ctx: Context,
+): SvelteAttachTag {
+ const attachTag: SvelteAttachTag = {
+ type: "SvelteAttachTag",
+ expression: node.expression,
+ parent,
+ ...ctx.getConvertLocation(node),
+ };
+
+ ctx.scriptLet.addExpression(node.expression, attachTag, null, (es) => {
+ attachTag.expression = es;
+ });
+
+ const atAttachStart = ctx.code.indexOf("@attach", attachTag.range[0]);
+ ctx.addToken("MustacheKeyword", {
+ start: atAttachStart,
+ end: atAttachStart + 7,
+ });
+
+ return attachTag;
+}
+
/** Convert for Binding Directive */
function convertBindingDirective(
node: SvAST.DirectiveForExpression | Compiler.BindDirective,
diff --git a/src/parser/converts/block.ts b/src/parser/converts/block.ts
index 1d9709da..fc9f3f92 100644
--- a/src/parser/converts/block.ts
+++ b/src/parser/converts/block.ts
@@ -147,17 +147,17 @@ export function convertIfBlock(
});
const consequent = getConsequentFromIfBlock(node);
- ifBlock.children.push(
- ...convertChildren(
- {
- nodes:
- // Adjust for Svelte v5
- trimChildren(getChildren(consequent)),
- },
- ifBlock,
- ctx,
- ),
- );
+ for (const child of convertChildren(
+ {
+ nodes:
+ // Adjust for Svelte v5
+ trimChildren(getChildren(consequent)),
+ },
+ ifBlock,
+ ctx,
+ )) {
+ ifBlock.children.push(child);
+ }
ctx.scriptLet.closeScope();
if (elseif) {
@@ -218,17 +218,17 @@ export function convertIfBlock(
ifBlock.else = elseBlock;
ctx.scriptLet.nestBlock(elseBlock);
- elseBlock.children.push(
- ...convertChildren(
- {
- nodes:
- // Adjust for Svelte v5
- trimChildren(elseChildren),
- },
- elseBlock,
- ctx,
- ),
- );
+ for (const child of convertChildren(
+ {
+ nodes:
+ // Adjust for Svelte v5
+ trimChildren(elseChildren),
+ },
+ elseBlock,
+ ctx,
+ )) {
+ elseBlock.children.push(child);
+ }
ctx.scriptLet.closeScope();
extractMustacheBlockTokens(elseBlock, ctx, { startOnly: true });
diff --git a/src/parser/converts/element.ts b/src/parser/converts/element.ts
index bbabaac6..23ab6948 100644
--- a/src/parser/converts/element.ts
+++ b/src/parser/converts/element.ts
@@ -223,13 +223,19 @@ export function* convertChildren(
function extractLetDirectives(fragment: {
attributes:
| SvAST.AttributeOrDirective[]
- | (Compiler.Attribute | Compiler.SpreadAttribute | Compiler.Directive)[];
+ | (
+ | Compiler.Attribute
+ | Compiler.SpreadAttribute
+ | Compiler.AttachTag
+ | Compiler.Directive
+ )[];
}): {
letDirectives: (SvAST.LetDirective | Compiler.LetDirective)[];
attributes: Exclude<
| SvAST.AttributeOrDirective
| Compiler.Attribute
| Compiler.SpreadAttribute
+ | Compiler.AttachTag
| Compiler.Directive,
SvAST.LetDirective | Compiler.LetDirective
>[];
@@ -239,6 +245,7 @@ function extractLetDirectives(fragment: {
| SvAST.AttributeOrDirective
| Compiler.Attribute
| Compiler.SpreadAttribute
+ | Compiler.AttachTag
| Compiler.Directive,
SvAST.LetDirective | Compiler.LetDirective
>[] = [];
diff --git a/src/parser/converts/root.ts b/src/parser/converts/root.ts
index 5e5e8de3..81614868 100644
--- a/src/parser/converts/root.ts
+++ b/src/parser/converts/root.ts
@@ -27,6 +27,7 @@ import {
getOptionsFromRoot,
} from "../compat.js";
import { sortNodes } from "../sort.js";
+import { withoutProjectParserOptions } from "../parser-options.js";
/**
* Convert root
@@ -259,11 +260,7 @@ function convertGenericsAttribute(script: SvelteScriptElement, ctx: Context) {
result = parseScriptWithoutAnalyzeScope(
scriptLet,
ctx.sourceCode.scripts.attrs,
- {
- ...ctx.parserOptions,
- // Without typings
- project: null,
- },
+ withoutProjectParserOptions(ctx.parserOptions),
) as unknown as TSESParseForESLintResult;
} catch {
// ignore
diff --git a/src/parser/index.ts b/src/parser/index.ts
index 641468cf..601e2914 100644
--- a/src/parser/index.ts
+++ b/src/parser/index.ts
@@ -170,9 +170,9 @@ function parseAsSvelte(
sortNodes(ctx.comments);
sortNodes(ctx.tokens);
extractTokens(ctx);
- analyzeStoreScope(resultScript.scopeManager!);
+ analyzeStoreScope(resultScript.scopeManager!, svelteParseContext);
analyzeReactiveScope(resultScript.scopeManager!);
- analyzeStoreScope(resultScript.scopeManager!); // for reactive vars
+ analyzeStoreScope(resultScript.scopeManager!, svelteParseContext); // for reactive vars
analyzeSnippetsScope(ctx.snippets, resultScript.scopeManager!);
// Add $$xxx variable
diff --git a/src/parser/parser-options.ts b/src/parser/parser-options.ts
index fd338485..44d43af1 100644
--- a/src/parser/parser-options.ts
+++ b/src/parser/parser-options.ts
@@ -9,6 +9,8 @@ import { getParserForLang, type UserOptionParser } from "./resolve-parser.js";
export type NormalizedParserOptions = {
parser?: UserOptionParser;
project?: string | string[] | null;
+ projectService?: unknown;
+ EXPERIMENTAL_useProjectService?: unknown;
ecmaVersion: number | "latest";
sourceType: "module" | "script";
@@ -104,3 +106,24 @@ export function isTypeScript(
return false;
}
+
+/**
+ * Remove typing-related options from parser options.
+ *
+ * Allows the typescript-eslint parser to parse a file without
+ * trying to collect typing information from TypeScript.
+ *
+ * See https://typescript-eslint.io/packages/parser#withoutprojectparseroptionsparseroptions
+ */
+export function withoutProjectParserOptions(
+ options: NormalizedParserOptions,
+): NormalizedParserOptions {
+ const {
+ project: _strippedProject,
+ projectService: _strippedProjectService,
+ EXPERIMENTAL_useProjectService: _strippedExperimentalUseProjectService,
+ ...result
+ } = options;
+
+ return result;
+}
diff --git a/src/parser/style-context.ts b/src/parser/style-context.ts
index fa161c03..96ac48ad 100644
--- a/src/parser/style-context.ts
+++ b/src/parser/style-context.ts
@@ -23,7 +23,7 @@ export interface StyleContextNoStyleElement {
export interface StyleContextParseError {
status: "parse-error";
sourceLang: string;
- error: any;
+ error: Error;
}
export interface StyleContextSuccess {
@@ -79,7 +79,7 @@ export function parseStyleContext(
from: ctx.parserOptions.filePath,
});
} catch (error) {
- return { status: "parse-error", sourceLang, error };
+ return { status: "parse-error", sourceLang, error: error as Error };
}
fixPostCSSNodeLocation(sourceAst, styleElement);
sourceAst.walk((node) => {
diff --git a/src/parser/svelte-ast-types-for-v5.ts b/src/parser/svelte-ast-types-for-v5.ts
index 9c8fd9d9..52614128 100644
--- a/src/parser/svelte-ast-types-for-v5.ts
+++ b/src/parser/svelte-ast-types-for-v5.ts
@@ -37,6 +37,7 @@ export type SnippetBlock = AST.SnippetBlock;
export type Comment = AST.Comment;
export type Attribute = AST.Attribute;
export type SpreadAttribute = AST.SpreadAttribute;
+export type AttachTag = AST.AttachTag;
export type AnimateDirective = AST.AnimateDirective;
export type BindDirective = AST.BindDirective;
export type ClassDirective = AST.ClassDirective;
diff --git a/src/parser/typescript/analyze/index.ts b/src/parser/typescript/analyze/index.ts
index b6de0a9b..cea34041 100644
--- a/src/parser/typescript/analyze/index.ts
+++ b/src/parser/typescript/analyze/index.ts
@@ -23,6 +23,7 @@ import type { NormalizedParserOptions } from "../../parser-options.js";
import { setParent } from "../set-parent.js";
import { getGlobalsForSvelte, globalsForRunes } from "../../globals.js";
import type { SvelteParseContext } from "../../svelte-parse-context.js";
+import { withoutProjectParserOptions } from "../../parser-options.js";
export type AnalyzeTypeScriptContext = {
slots: Set;
@@ -53,11 +54,7 @@ export function analyzeTypeScriptInSvelte(
const result = parseScriptWithoutAnalyzeScope(
code.script + code.render + code.rootScope,
attrs,
- {
- ...parserOptions,
- // Without typings
- project: null,
- },
+ withoutProjectParserOptions(parserOptions),
) as unknown as TSESParseForESLintResult;
ctx._beforeResult = result;
@@ -73,15 +70,26 @@ export function analyzeTypeScriptInSvelte(
analyzeRuneVariables(result, ctx, context.svelteParseContext);
- applyTransforms(
- [
- ...analyzeReactiveScopes(result),
- ...analyzeDollarDerivedScopes(result, context.svelteParseContext),
- ],
- ctx,
- );
+ const scriptTransformers: TransformInfo[] = [
+ ...analyzeReactiveScopes(result),
+ ];
+ const templateTransformers: TransformInfo[] = [];
+ for (const transform of analyzeDollarDerivedScopes(
+ result,
+ context.svelteParseContext,
+ )) {
+ if (transform.node.range[0] < code.script.length) {
+ scriptTransformers.push(transform);
+ } else {
+ templateTransformers.push(transform);
+ }
+ }
- analyzeRenderScopes(code, ctx);
+ applyTransforms(scriptTransformers, ctx);
+
+ analyzeRenderScopes(code, ctx, () =>
+ applyTransforms(templateTransformers, ctx),
+ );
// When performing type checking on TypeScript code that is not a module, the error `Cannot redeclare block-scoped variable 'xxx'`. occurs. To fix this, add an `export`.
// see: https://github.com/sveltejs/svelte-eslint-parser/issues/557
@@ -107,11 +115,11 @@ export function analyzeTypeScript(
const ctx = new VirtualTypeScriptContext(code);
ctx.appendOriginal(/^\s*/u.exec(code)![0].length);
- const result = parseScriptWithoutAnalyzeScope(code, attrs, {
- ...parserOptions,
- // Without typings
- project: null,
- }) as unknown as TSESParseForESLintResult;
+ const result = parseScriptWithoutAnalyzeScope(
+ code,
+ attrs,
+ withoutProjectParserOptions(parserOptions),
+ ) as unknown as TSESParseForESLintResult;
ctx._beforeResult = result;
@@ -625,10 +633,12 @@ function* analyzeDollarDerivedScopes(
function analyzeRenderScopes(
code: { script: string; render: string; rootScope: string },
ctx: VirtualTypeScriptContext,
+ analyzeInTemplate: () => void,
) {
ctx.appendOriginal(code.script.length);
const renderFunctionName = ctx.generateUniqueId("render");
ctx.appendVirtualScript(`export function ${renderFunctionName}(){`);
+ analyzeInTemplate();
ctx.appendOriginal(code.script.length + code.render.length);
ctx.appendVirtualScript(`}`);
ctx.restoreContext.addRestoreStatementProcess((node, result) => {
diff --git a/src/visitor-keys.ts b/src/visitor-keys.ts
index f9a2e0e2..2dbebe40 100644
--- a/src/visitor-keys.ts
+++ b/src/visitor-keys.ts
@@ -42,6 +42,7 @@ const svelteKeys: SvelteKeysType = {
SvelteAttribute: ["key", "value"],
SvelteShorthandAttribute: ["key", "value"],
SvelteSpreadAttribute: ["argument"],
+ SvelteAttachTag: ["expression"],
SvelteDirective: ["key", "expression"],
SvelteStyleDirective: ["key", "value"],
SvelteSpecialDirective: ["key", "expression"],
diff --git a/tests/fixtures/integrations/snippet-scope/snippet-shadow-scope-setup.ts b/tests/fixtures/integrations/snippet-scope/snippet-shadow-scope-setup.ts
index 303b59e4..52336412 100644
--- a/tests/fixtures/integrations/snippet-scope/snippet-shadow-scope-setup.ts
+++ b/tests/fixtures/integrations/snippet-scope/snippet-shadow-scope-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils.js";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src/index.js";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/integrations/snippet-scope/ts-snippet-hoist-scope-setup.ts b/tests/fixtures/integrations/snippet-scope/ts-snippet-hoist-scope-setup.ts
index 9b7181f5..fa38171d 100644
--- a/tests/fixtures/integrations/snippet-scope/ts-snippet-hoist-scope-setup.ts
+++ b/tests/fixtures/integrations/snippet-scope/ts-snippet-hoist-scope-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils.js";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src/index.js";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/integrations/type-info-tests/$derived-setup.ts b/tests/fixtures/integrations/type-info-tests/$derived-setup.ts
index 1751c29e..d412fd99 100644
--- a/tests/fixtures/integrations/type-info-tests/$derived-setup.ts
+++ b/tests/fixtures/integrations/type-info-tests/$derived-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/integrations/type-info-tests/$derived-ts-setup.ts b/tests/fixtures/integrations/type-info-tests/$derived-ts-setup.ts
index 1751c29e..d412fd99 100644
--- a/tests/fixtures/integrations/type-info-tests/$derived-ts-setup.ts
+++ b/tests/fixtures/integrations/type-info-tests/$derived-ts-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/integrations/type-info-tests/$derived2-setup.ts b/tests/fixtures/integrations/type-info-tests/$derived2-setup.ts
index 1751c29e..d412fd99 100644
--- a/tests/fixtures/integrations/type-info-tests/$derived2-setup.ts
+++ b/tests/fixtures/integrations/type-info-tests/$derived2-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/integrations/type-info-tests/$derived2-ts-setup.ts b/tests/fixtures/integrations/type-info-tests/$derived2-ts-setup.ts
index 1751c29e..d412fd99 100644
--- a/tests/fixtures/integrations/type-info-tests/$derived2-ts-setup.ts
+++ b/tests/fixtures/integrations/type-info-tests/$derived2-ts-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/integrations/type-info-tests/$props-setup.ts b/tests/fixtures/integrations/type-info-tests/$props-setup.ts
index 1751c29e..d412fd99 100644
--- a/tests/fixtures/integrations/type-info-tests/$props-setup.ts
+++ b/tests/fixtures/integrations/type-info-tests/$props-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/integrations/type-info-tests/await-setup.ts b/tests/fixtures/integrations/type-info-tests/await-setup.ts
index 0776177e..6e873163 100644
--- a/tests/fixtures/integrations/type-info-tests/await-setup.ts
+++ b/tests/fixtures/integrations/type-info-tests/await-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/integrations/type-info-tests/await-with-same-id-setup.ts b/tests/fixtures/integrations/type-info-tests/await-with-same-id-setup.ts
index 1172dc96..5af1937a 100644
--- a/tests/fixtures/integrations/type-info-tests/await-with-same-id-setup.ts
+++ b/tests/fixtures/integrations/type-info-tests/await-with-same-id-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/integrations/type-info-tests/i18n-setup.ts b/tests/fixtures/integrations/type-info-tests/i18n-setup.ts
index 0776177e..6e873163 100644
--- a/tests/fixtures/integrations/type-info-tests/i18n-setup.ts
+++ b/tests/fixtures/integrations/type-info-tests/i18n-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/integrations/type-info-tests/issue226-setup.ts b/tests/fixtures/integrations/type-info-tests/issue226-setup.ts
index 2b458b9d..0ad5e9ea 100644
--- a/tests/fixtures/integrations/type-info-tests/issue226-setup.ts
+++ b/tests/fixtures/integrations/type-info-tests/issue226-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/integrations/type-info-tests/no-unnecessary-condition01-setup.ts b/tests/fixtures/integrations/type-info-tests/no-unnecessary-condition01-setup.ts
index 14872ebb..05846f7d 100644
--- a/tests/fixtures/integrations/type-info-tests/no-unnecessary-condition01-setup.ts
+++ b/tests/fixtures/integrations/type-info-tests/no-unnecessary-condition01-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/integrations/type-info-tests/plugin-issue254-setup.ts b/tests/fixtures/integrations/type-info-tests/plugin-issue254-setup.ts
index 14872ebb..05846f7d 100644
--- a/tests/fixtures/integrations/type-info-tests/plugin-issue254-setup.ts
+++ b/tests/fixtures/integrations/type-info-tests/plugin-issue254-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/integrations/type-info-tests/reactive-setup.ts b/tests/fixtures/integrations/type-info-tests/reactive-setup.ts
index 12eb3010..b90f6180 100644
--- a/tests/fixtures/integrations/type-info-tests/reactive-setup.ts
+++ b/tests/fixtures/integrations/type-info-tests/reactive-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/integrations/type-info-tests/reactive2-setup.ts b/tests/fixtures/integrations/type-info-tests/reactive2-setup.ts
index 5804c700..96c7ba6f 100644
--- a/tests/fixtures/integrations/type-info-tests/reactive2-setup.ts
+++ b/tests/fixtures/integrations/type-info-tests/reactive2-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/integrations/type-info-tests/ts-newline-setup.ts b/tests/fixtures/integrations/type-info-tests/ts-newline-setup.ts
index a1a075a0..348575af 100644
--- a/tests/fixtures/integrations/type-info-tests/ts-newline-setup.ts
+++ b/tests/fixtures/integrations/type-info-tests/ts-newline-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/integrations/type-info-tests/ts-no-misused-promises-setup.ts b/tests/fixtures/integrations/type-info-tests/ts-no-misused-promises-setup.ts
index f8a6a783..50827a22 100644
--- a/tests/fixtures/integrations/type-info-tests/ts-no-misused-promises-setup.ts
+++ b/tests/fixtures/integrations/type-info-tests/ts-no-misused-promises-setup.ts
@@ -1,6 +1,6 @@
import type { Linter } from "eslint";
import { generateParserOptions } from "../../../src/parser/test-utils";
-import { rules } from "@typescript-eslint/eslint-plugin";
+import { plugin } from "typescript-eslint";
import * as parser from "../../../../src";
import globals from "globals";
@@ -8,7 +8,7 @@ export function getConfig(): Linter.Config {
return {
plugins: {
"@typescript-eslint": {
- rules: rules as any,
+ rules: plugin.rules as any,
},
},
languageOptions: {
diff --git a/tests/fixtures/parser/ast/svelte5/$derived-in-template-with-ts01-input.svelte b/tests/fixtures/parser/ast/svelte5/$derived-in-template-with-ts01-input.svelte
new file mode 100644
index 00000000..f2935614
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/$derived-in-template-with-ts01-input.svelte
@@ -0,0 +1,5 @@
+
+
+ $derived(0)} />
diff --git a/tests/fixtures/parser/ast/svelte5/$derived-in-template-with-ts01-output.json b/tests/fixtures/parser/ast/svelte5/$derived-in-template-with-ts01-output.json
new file mode 100644
index 00000000..af4df0a9
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/$derived-in-template-with-ts01-output.json
@@ -0,0 +1,1032 @@
+{
+ "type": "Program",
+ "body": [
+ {
+ "type": "SvelteScriptElement",
+ "name": {
+ "type": "SvelteName",
+ "name": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteAttribute",
+ "key": {
+ "type": "SvelteName",
+ "name": "lang",
+ "range": [
+ 8,
+ 12
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 8
+ },
+ "end": {
+ "line": 1,
+ "column": 12
+ }
+ }
+ },
+ "boolean": false,
+ "value": [
+ {
+ "type": "SvelteLiteral",
+ "value": "ts",
+ "range": [
+ 14,
+ 16
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 14
+ },
+ "end": {
+ "line": 1,
+ "column": 16
+ }
+ }
+ }
+ ],
+ "range": [
+ 8,
+ 17
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 8
+ },
+ "end": {
+ "line": 1,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "selfClosing": false,
+ "range": [
+ 0,
+ 18
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 18
+ }
+ }
+ },
+ "body": [
+ {
+ "type": "ImportDeclaration",
+ "importKind": "value",
+ "source": {
+ "type": "Literal",
+ "raw": "'./MyComponent.svelte'",
+ "value": "./MyComponent.svelte",
+ "range": [
+ 47,
+ 69
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 28
+ },
+ "end": {
+ "line": 2,
+ "column": 50
+ }
+ }
+ },
+ "specifiers": [
+ {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 30,
+ 41
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ },
+ "range": [
+ 30,
+ 41
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ }
+ ],
+ "range": [
+ 23,
+ 70
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 4
+ },
+ "end": {
+ "line": 2,
+ "column": 51
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 71,
+ 80
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 0
+ },
+ "end": {
+ "line": 3,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 0,
+ 80
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 3,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 80,
+ 82
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 9
+ },
+ "end": {
+ "line": 5,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteElement",
+ "kind": "component",
+ "name": {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 83,
+ 94
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteAttribute",
+ "key": {
+ "type": "SvelteName",
+ "name": ":foo",
+ "range": [
+ 95,
+ 99
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 13
+ },
+ "end": {
+ "line": 5,
+ "column": 17
+ }
+ }
+ },
+ "boolean": false,
+ "value": [
+ {
+ "type": "SvelteMustacheTag",
+ "kind": "text",
+ "expression": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "0",
+ "value": 0,
+ "range": [
+ 116,
+ 117
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 34
+ },
+ "end": {
+ "line": 5,
+ "column": 35
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "$derived",
+ "range": [
+ 107,
+ 115
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 25
+ },
+ "end": {
+ "line": 5,
+ "column": 33
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 107,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 25
+ },
+ "end": {
+ "line": 5,
+ "column": 36
+ }
+ }
+ },
+ "expression": true,
+ "generator": false,
+ "id": null,
+ "params": [],
+ "range": [
+ 101,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 19
+ },
+ "end": {
+ "line": 5,
+ "column": 36
+ }
+ }
+ },
+ "range": [
+ 100,
+ 119
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 18
+ },
+ "end": {
+ "line": 5,
+ "column": 37
+ }
+ }
+ }
+ ],
+ "range": [
+ 95,
+ 119
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 13
+ },
+ "end": {
+ "line": 5,
+ "column": 37
+ }
+ }
+ }
+ ],
+ "selfClosing": true,
+ "range": [
+ 82,
+ 122
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 0
+ },
+ "end": {
+ "line": 5,
+ "column": 40
+ }
+ }
+ },
+ "children": [],
+ "endTag": null,
+ "range": [
+ 82,
+ 122
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 0
+ },
+ "end": {
+ "line": 5,
+ "column": 40
+ }
+ }
+ }
+ ],
+ "sourceType": "module",
+ "comments": [],
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 0,
+ 1
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "lang",
+ "range": [
+ 8,
+ 12
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 8
+ },
+ "end": {
+ "line": 1,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 12,
+ 13
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 12
+ },
+ "end": {
+ "line": 1,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "\"",
+ "range": [
+ 13,
+ 14
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 13
+ },
+ "end": {
+ "line": 1,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "ts",
+ "range": [
+ 14,
+ 16
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 14
+ },
+ "end": {
+ "line": 1,
+ "column": 16
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "\"",
+ "range": [
+ 16,
+ 17
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 16
+ },
+ "end": {
+ "line": 1,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 17,
+ 18
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 17
+ },
+ "end": {
+ "line": 1,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "import",
+ "range": [
+ 23,
+ 29
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 4
+ },
+ "end": {
+ "line": 2,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "MyComponent",
+ "range": [
+ 30,
+ 41
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "from",
+ "range": [
+ 42,
+ 46
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 23
+ },
+ "end": {
+ "line": 2,
+ "column": 27
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'./MyComponent.svelte'",
+ "range": [
+ 47,
+ 69
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 28
+ },
+ "end": {
+ "line": 2,
+ "column": 50
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 69,
+ 70
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 50
+ },
+ "end": {
+ "line": 2,
+ "column": 51
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 71,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 0
+ },
+ "end": {
+ "line": 3,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 72,
+ 73
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 3,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 73,
+ 79
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 2
+ },
+ "end": {
+ "line": 3,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 79,
+ 80
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 80,
+ 82
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 9
+ },
+ "end": {
+ "line": 5,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 82,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 0
+ },
+ "end": {
+ "line": 5,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "MyComponent",
+ "range": [
+ 83,
+ 94
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": ":foo",
+ "range": [
+ 95,
+ 99
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 13
+ },
+ "end": {
+ "line": 5,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 99,
+ 100
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 17
+ },
+ "end": {
+ "line": 5,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 100,
+ 101
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 18
+ },
+ "end": {
+ "line": 5,
+ "column": 19
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 101,
+ 102
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 19
+ },
+ "end": {
+ "line": 5,
+ "column": 20
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 102,
+ 103
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 20
+ },
+ "end": {
+ "line": 5,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=>",
+ "range": [
+ 104,
+ 106
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 22
+ },
+ "end": {
+ "line": 5,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "$derived",
+ "range": [
+ 107,
+ 115
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 25
+ },
+ "end": {
+ "line": 5,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 115,
+ 116
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 33
+ },
+ "end": {
+ "line": 5,
+ "column": 34
+ }
+ }
+ },
+ {
+ "type": "Numeric",
+ "value": "0",
+ "range": [
+ 116,
+ 117
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 34
+ },
+ "end": {
+ "line": 5,
+ "column": 35
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 117,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 35
+ },
+ "end": {
+ "line": 5,
+ "column": 36
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 118,
+ 119
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 36
+ },
+ "end": {
+ "line": 5,
+ "column": 37
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 120,
+ 121
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 38
+ },
+ "end": {
+ "line": 5,
+ "column": 39
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 121,
+ 122
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 39
+ },
+ "end": {
+ "line": 5,
+ "column": 40
+ }
+ }
+ }
+ ],
+ "range": [
+ 0,
+ 123
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 6,
+ "column": 0
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/$derived-in-template-with-ts01-scope-output.json b/tests/fixtures/parser/ast/svelte5/$derived-in-template-with-ts01-scope-output.json
new file mode 100644
index 00000000..45ae4174
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/$derived-in-template-with-ts01-scope-output.json
@@ -0,0 +1,345 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "$$slots",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$restProps",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$state",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$derived",
+ "identifiers": [],
+ "defs": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$derived",
+ "range": [
+ 107,
+ 115
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 25
+ },
+ "end": {
+ "line": 5,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ },
+ {
+ "name": "$effect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$bindable",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$inspect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$host",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "MyComponent",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 30,
+ 41
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 30,
+ 41
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ },
+ "node": {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 30,
+ 41
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ },
+ "range": [
+ 30,
+ 41
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 83,
+ 94
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 30,
+ 41
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 83,
+ 94
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 30,
+ 41
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$derived",
+ "range": [
+ 107,
+ 115
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 25
+ },
+ "end": {
+ "line": 5,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ],
+ "childScopes": [],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$derived",
+ "range": [
+ 107,
+ 115
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 25
+ },
+ "end": {
+ "line": 5,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$derived",
+ "range": [
+ 107,
+ 115
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 25
+ },
+ "end": {
+ "line": 5,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": []
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/$derived-in-template-without-ts01-input.svelte b/tests/fixtures/parser/ast/svelte5/$derived-in-template-without-ts01-input.svelte
new file mode 100644
index 00000000..7e006dff
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/$derived-in-template-without-ts01-input.svelte
@@ -0,0 +1,5 @@
+
+
+ $derived(0)} />
diff --git a/tests/fixtures/parser/ast/svelte5/$derived-in-template-without-ts01-output.json b/tests/fixtures/parser/ast/svelte5/$derived-in-template-without-ts01-output.json
new file mode 100644
index 00000000..ddf94b02
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/$derived-in-template-without-ts01-output.json
@@ -0,0 +1,884 @@
+{
+ "type": "Program",
+ "body": [
+ {
+ "type": "SvelteScriptElement",
+ "name": {
+ "type": "SvelteName",
+ "name": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [],
+ "selfClosing": false,
+ "range": [
+ 0,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ "body": [
+ {
+ "type": "ImportDeclaration",
+ "source": {
+ "type": "Literal",
+ "raw": "'./MyComponent.svelte'",
+ "value": "./MyComponent.svelte",
+ "range": [
+ 37,
+ 59
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 28
+ },
+ "end": {
+ "line": 2,
+ "column": 50
+ }
+ }
+ },
+ "specifiers": [
+ {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 20,
+ 31
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ },
+ "range": [
+ 20,
+ 31
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ }
+ ],
+ "range": [
+ 13,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 4
+ },
+ "end": {
+ "line": 2,
+ "column": 51
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 61,
+ 70
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 0
+ },
+ "end": {
+ "line": 3,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 0,
+ 70
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 3,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 70,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 9
+ },
+ "end": {
+ "line": 5,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteElement",
+ "kind": "component",
+ "name": {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 73,
+ 84
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteAttribute",
+ "key": {
+ "type": "SvelteName",
+ "name": ":foo",
+ "range": [
+ 85,
+ 89
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 13
+ },
+ "end": {
+ "line": 5,
+ "column": 17
+ }
+ }
+ },
+ "boolean": false,
+ "value": [
+ {
+ "type": "SvelteMustacheTag",
+ "kind": "text",
+ "expression": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "0",
+ "value": 0,
+ "range": [
+ 106,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 34
+ },
+ "end": {
+ "line": 5,
+ "column": 35
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "$derived",
+ "range": [
+ 97,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 25
+ },
+ "end": {
+ "line": 5,
+ "column": 33
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 97,
+ 108
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 25
+ },
+ "end": {
+ "line": 5,
+ "column": 36
+ }
+ }
+ },
+ "expression": true,
+ "generator": false,
+ "id": null,
+ "params": [],
+ "range": [
+ 91,
+ 108
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 19
+ },
+ "end": {
+ "line": 5,
+ "column": 36
+ }
+ }
+ },
+ "range": [
+ 90,
+ 109
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 18
+ },
+ "end": {
+ "line": 5,
+ "column": 37
+ }
+ }
+ }
+ ],
+ "range": [
+ 85,
+ 109
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 13
+ },
+ "end": {
+ "line": 5,
+ "column": 37
+ }
+ }
+ }
+ ],
+ "selfClosing": true,
+ "range": [
+ 72,
+ 112
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 0
+ },
+ "end": {
+ "line": 5,
+ "column": 40
+ }
+ }
+ },
+ "children": [],
+ "endTag": null,
+ "range": [
+ 72,
+ 112
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 0
+ },
+ "end": {
+ "line": 5,
+ "column": 40
+ }
+ }
+ }
+ ],
+ "sourceType": "module",
+ "comments": [],
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 0,
+ 1
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 7,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 7
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "import",
+ "range": [
+ 13,
+ 19
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 4
+ },
+ "end": {
+ "line": 2,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "MyComponent",
+ "range": [
+ 20,
+ 31
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "from",
+ "range": [
+ 32,
+ 36
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 23
+ },
+ "end": {
+ "line": 2,
+ "column": 27
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'./MyComponent.svelte'",
+ "range": [
+ 37,
+ 59
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 28
+ },
+ "end": {
+ "line": 2,
+ "column": 50
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 59,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 50
+ },
+ "end": {
+ "line": 2,
+ "column": 51
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 61,
+ 62
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 0
+ },
+ "end": {
+ "line": 3,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 62,
+ 63
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 3,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 63,
+ 69
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 2
+ },
+ "end": {
+ "line": 3,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 69,
+ 70
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 70,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 9
+ },
+ "end": {
+ "line": 5,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 72,
+ 73
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 0
+ },
+ "end": {
+ "line": 5,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "MyComponent",
+ "range": [
+ 73,
+ 84
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": ":foo",
+ "range": [
+ 85,
+ 89
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 13
+ },
+ "end": {
+ "line": 5,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 89,
+ 90
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 17
+ },
+ "end": {
+ "line": 5,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 90,
+ 91
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 18
+ },
+ "end": {
+ "line": 5,
+ "column": 19
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 91,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 19
+ },
+ "end": {
+ "line": 5,
+ "column": 20
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 92,
+ 93
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 20
+ },
+ "end": {
+ "line": 5,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=>",
+ "range": [
+ 94,
+ 96
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 22
+ },
+ "end": {
+ "line": 5,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "$derived",
+ "range": [
+ 97,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 25
+ },
+ "end": {
+ "line": 5,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 105,
+ 106
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 33
+ },
+ "end": {
+ "line": 5,
+ "column": 34
+ }
+ }
+ },
+ {
+ "type": "Numeric",
+ "value": "0",
+ "range": [
+ 106,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 34
+ },
+ "end": {
+ "line": 5,
+ "column": 35
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 107,
+ 108
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 35
+ },
+ "end": {
+ "line": 5,
+ "column": 36
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 108,
+ 109
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 36
+ },
+ "end": {
+ "line": 5,
+ "column": 37
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 110,
+ 111
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 38
+ },
+ "end": {
+ "line": 5,
+ "column": 39
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 111,
+ 112
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 39
+ },
+ "end": {
+ "line": 5,
+ "column": 40
+ }
+ }
+ }
+ ],
+ "range": [
+ 0,
+ 113
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 6,
+ "column": 0
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/$derived-in-template-without-ts01-scope-output.json b/tests/fixtures/parser/ast/svelte5/$derived-in-template-without-ts01-scope-output.json
new file mode 100644
index 00000000..0e14a8ee
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/$derived-in-template-without-ts01-scope-output.json
@@ -0,0 +1,345 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "$$slots",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$restProps",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$state",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$derived",
+ "identifiers": [],
+ "defs": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$derived",
+ "range": [
+ 97,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 25
+ },
+ "end": {
+ "line": 5,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ },
+ {
+ "name": "$effect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$bindable",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$inspect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$host",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "MyComponent",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 20,
+ 31
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 20,
+ 31
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ },
+ "node": {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 20,
+ 31
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ },
+ "range": [
+ 20,
+ 31
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 73,
+ 84
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 20,
+ 31
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 73,
+ 84
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "MyComponent",
+ "range": [
+ 20,
+ 31
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 11
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$derived",
+ "range": [
+ 97,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 25
+ },
+ "end": {
+ "line": 5,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ],
+ "childScopes": [],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$derived",
+ "range": [
+ 97,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 25
+ },
+ "end": {
+ "line": 5,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$derived",
+ "range": [
+ 97,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 25
+ },
+ "end": {
+ "line": 5,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": []
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-runes-config.json b/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-runes-config.json
new file mode 100644
index 00000000..623877c3
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-runes-config.json
@@ -0,0 +1,7 @@
+{
+ "svelteConfig": {
+ "compilerOptions": {
+ "runes": true
+ }
+ }
+}
diff --git a/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-runes-input.svelte b/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-runes-input.svelte
new file mode 100644
index 00000000..ee5502fb
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-runes-input.svelte
@@ -0,0 +1,6 @@
+
+
+{props}
diff --git a/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-runes-output.json b/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-runes-output.json
new file mode 100644
index 00000000..7d51d648
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-runes-output.json
@@ -0,0 +1,785 @@
+{
+ "type": "Program",
+ "body": [
+ {
+ "type": "SvelteScriptElement",
+ "name": {
+ "type": "SvelteName",
+ "name": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [],
+ "selfClosing": false,
+ "range": [
+ 0,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 60,
+ 65
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [],
+ "callee": {
+ "type": "Identifier",
+ "name": "$props",
+ "range": [
+ 68,
+ 74
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 68,
+ 76
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 23
+ }
+ }
+ },
+ "range": [
+ 60,
+ 76
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 23
+ }
+ }
+ }
+ ],
+ "range": [
+ 54,
+ 77
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 3,
+ "column": 24
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 78,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 0
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 0,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 87,
+ 89
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 9
+ },
+ "end": {
+ "line": 6,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteElement",
+ "kind": "html",
+ "name": {
+ "type": "SvelteName",
+ "name": "span",
+ "range": [
+ 90,
+ 94
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 1
+ },
+ "end": {
+ "line": 6,
+ "column": 5
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [],
+ "selfClosing": false,
+ "range": [
+ 89,
+ 95
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 0
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "SvelteMustacheTag",
+ "kind": "text",
+ "expression": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 96,
+ 101
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 7
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "range": [
+ 95,
+ 102
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 6
+ },
+ "end": {
+ "line": 6,
+ "column": 13
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 102,
+ 109
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 13
+ },
+ "end": {
+ "line": 6,
+ "column": 20
+ }
+ }
+ },
+ "range": [
+ 89,
+ 109
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 0
+ },
+ "end": {
+ "line": 6,
+ "column": 20
+ }
+ }
+ }
+ ],
+ "sourceType": "module",
+ "comments": [
+ {
+ "type": "Line",
+ "value": " It should not be recognized as a store.",
+ "range": [
+ 10,
+ 52
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 0,
+ 1
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 7,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 7
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "const",
+ "range": [
+ 54,
+ 59
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 3,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "props",
+ "range": [
+ 60,
+ 65
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 66,
+ 67
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 13
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "$props",
+ "range": [
+ 68,
+ 74
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 74,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 21
+ },
+ "end": {
+ "line": 3,
+ "column": 22
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 75,
+ 76
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 22
+ },
+ "end": {
+ "line": 3,
+ "column": 23
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 76,
+ 77
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 23
+ },
+ "end": {
+ "line": 3,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 78,
+ 79
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 0
+ },
+ "end": {
+ "line": 4,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 79,
+ 80
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 1
+ },
+ "end": {
+ "line": 4,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 80,
+ 86
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 86,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 8
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 87,
+ 89
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 9
+ },
+ "end": {
+ "line": 6,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 89,
+ 90
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 0
+ },
+ "end": {
+ "line": 6,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "span",
+ "range": [
+ 90,
+ 94
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 1
+ },
+ "end": {
+ "line": 6,
+ "column": 5
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 94,
+ 95
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 95,
+ 96
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 6
+ },
+ "end": {
+ "line": 6,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "props",
+ "range": [
+ 96,
+ 101
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 7
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 101,
+ 102
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 12
+ },
+ "end": {
+ "line": 6,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 102,
+ 103
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 13
+ },
+ "end": {
+ "line": 6,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 103,
+ 104
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 14
+ },
+ "end": {
+ "line": 6,
+ "column": 15
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "span",
+ "range": [
+ 104,
+ 108
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 6,
+ "column": 19
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 108,
+ 109
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 19
+ },
+ "end": {
+ "line": 6,
+ "column": 20
+ }
+ }
+ }
+ ],
+ "range": [
+ 0,
+ 110
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 7,
+ "column": 0
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-runes-scope-output.json b/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-runes-scope-output.json
new file mode 100644
index 00000000..0c95113b
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-runes-scope-output.json
@@ -0,0 +1,429 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "$$slots",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$restProps",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$state",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$derived",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$effect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$props",
+ "identifiers": [],
+ "defs": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$props",
+ "range": [
+ 68,
+ 74
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ },
+ {
+ "name": "$bindable",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$inspect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$host",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "props",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 60,
+ 65
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 60,
+ 65
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 60,
+ 65
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [],
+ "callee": {
+ "type": "Identifier",
+ "name": "$props",
+ "range": [
+ 68,
+ 74
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 68,
+ 76
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 23
+ }
+ }
+ },
+ "range": [
+ 60,
+ 76
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 23
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 60,
+ 65
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 60,
+ 65
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 96,
+ 101
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 7
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 60,
+ 65
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 60,
+ 65
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 60,
+ 65
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$props",
+ "range": [
+ 68,
+ 74
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 96,
+ 101
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 7
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 60,
+ 65
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$props",
+ "range": [
+ 68,
+ 74
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": []
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-without-runes-config.json b/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-without-runes-config.json
new file mode 100644
index 00000000..f5145143
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-without-runes-config.json
@@ -0,0 +1,7 @@
+{
+ "svelteConfig": {
+ "compilerOptions": {
+ "runes": false
+ }
+ }
+}
diff --git a/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-without-runes-input.svelte b/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-without-runes-input.svelte
new file mode 100644
index 00000000..0ef437b2
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-without-runes-input.svelte
@@ -0,0 +1,6 @@
+
+
+{props}
diff --git a/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-without-runes-output.json b/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-without-runes-output.json
new file mode 100644
index 00000000..ef78b834
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-without-runes-output.json
@@ -0,0 +1,785 @@
+{
+ "type": "Program",
+ "body": [
+ {
+ "type": "SvelteScriptElement",
+ "name": {
+ "type": "SvelteName",
+ "name": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [],
+ "selfClosing": false,
+ "range": [
+ 0,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 56,
+ 61
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [],
+ "callee": {
+ "type": "Identifier",
+ "name": "$props",
+ "range": [
+ 64,
+ 70
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 64,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 23
+ }
+ }
+ },
+ "range": [
+ 56,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 23
+ }
+ }
+ }
+ ],
+ "range": [
+ 50,
+ 73
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 3,
+ "column": 24
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 74,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 0
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 0,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 83,
+ 85
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 9
+ },
+ "end": {
+ "line": 6,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteElement",
+ "kind": "html",
+ "name": {
+ "type": "SvelteName",
+ "name": "span",
+ "range": [
+ 86,
+ 90
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 1
+ },
+ "end": {
+ "line": 6,
+ "column": 5
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [],
+ "selfClosing": false,
+ "range": [
+ 85,
+ 91
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 0
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "SvelteMustacheTag",
+ "kind": "text",
+ "expression": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 92,
+ 97
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 7
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "range": [
+ 91,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 6
+ },
+ "end": {
+ "line": 6,
+ "column": 13
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 98,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 13
+ },
+ "end": {
+ "line": 6,
+ "column": 20
+ }
+ }
+ },
+ "range": [
+ 85,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 0
+ },
+ "end": {
+ "line": 6,
+ "column": 20
+ }
+ }
+ }
+ ],
+ "sourceType": "module",
+ "comments": [
+ {
+ "type": "Line",
+ "value": " It should be recognized as a store.",
+ "range": [
+ 10,
+ 48
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 39
+ }
+ }
+ }
+ ],
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 0,
+ 1
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 7,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 7
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "const",
+ "range": [
+ 50,
+ 55
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 3,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "props",
+ "range": [
+ 56,
+ 61
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 62,
+ 63
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 13
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "$props",
+ "range": [
+ 64,
+ 70
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 70,
+ 71
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 21
+ },
+ "end": {
+ "line": 3,
+ "column": 22
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 71,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 22
+ },
+ "end": {
+ "line": 3,
+ "column": 23
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 72,
+ 73
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 23
+ },
+ "end": {
+ "line": 3,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 74,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 0
+ },
+ "end": {
+ "line": 4,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 75,
+ 76
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 1
+ },
+ "end": {
+ "line": 4,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 76,
+ 82
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 82,
+ 83
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 8
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 83,
+ 85
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 9
+ },
+ "end": {
+ "line": 6,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 85,
+ 86
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 0
+ },
+ "end": {
+ "line": 6,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "span",
+ "range": [
+ 86,
+ 90
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 1
+ },
+ "end": {
+ "line": 6,
+ "column": 5
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 90,
+ 91
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 91,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 6
+ },
+ "end": {
+ "line": 6,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "props",
+ "range": [
+ 92,
+ 97
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 7
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 97,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 12
+ },
+ "end": {
+ "line": 6,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 98,
+ 99
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 13
+ },
+ "end": {
+ "line": 6,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 99,
+ 100
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 14
+ },
+ "end": {
+ "line": 6,
+ "column": 15
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "span",
+ "range": [
+ 100,
+ 104
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 6,
+ "column": 19
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 104,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 19
+ },
+ "end": {
+ "line": 6,
+ "column": 20
+ }
+ }
+ }
+ ],
+ "range": [
+ 0,
+ 106
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 7,
+ "column": 0
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-without-runes-scope-output.json b/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-without-runes-scope-output.json
new file mode 100644
index 00000000..dffec93b
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/$props-without-destructuring-without-runes-scope-output.json
@@ -0,0 +1,396 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "$$slots",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$restProps",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "props",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 56,
+ 61
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 56,
+ 61
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 56,
+ 61
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [],
+ "callee": {
+ "type": "Identifier",
+ "name": "$props",
+ "range": [
+ 64,
+ 70
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 64,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 23
+ }
+ }
+ },
+ "range": [
+ 56,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 23
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 56,
+ 61
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 56,
+ 61
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$props",
+ "range": [
+ 64,
+ 70
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 56,
+ 61
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 92,
+ 97
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 7
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 56,
+ 61
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 56,
+ 61
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 56,
+ 61
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$props",
+ "range": [
+ 64,
+ 70
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 56,
+ 61
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 92,
+ 97
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 7
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "props",
+ "range": [
+ 56,
+ 61
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 7
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [],
+ "through": []
+ }
+ ],
+ "through": []
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach-ts-01-input.svelte b/tests/fixtures/parser/ast/svelte5/attach-ts-01-input.svelte
new file mode 100644
index 00000000..e1bc8a5b
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach-ts-01-input.svelte
@@ -0,0 +1,14 @@
+
+
+...
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach-ts-01-output.json b/tests/fixtures/parser/ast/svelte5/attach-ts-01-output.json
new file mode 100644
index 00000000..33f2cc52
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach-ts-01-output.json
@@ -0,0 +1,2118 @@
+{
+ "type": "Program",
+ "body": [
+ {
+ "type": "SvelteScriptElement",
+ "name": {
+ "type": "SvelteName",
+ "name": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteAttribute",
+ "key": {
+ "type": "SvelteName",
+ "name": "lang",
+ "range": [
+ 8,
+ 12
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 8
+ },
+ "end": {
+ "line": 1,
+ "column": 12
+ }
+ }
+ },
+ "boolean": false,
+ "value": [
+ {
+ "type": "SvelteLiteral",
+ "value": "ts",
+ "range": [
+ 14,
+ 16
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 14
+ },
+ "end": {
+ "line": 1,
+ "column": 16
+ }
+ }
+ }
+ ],
+ "range": [
+ 8,
+ 17
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 8
+ },
+ "end": {
+ "line": 1,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "selfClosing": false,
+ "range": [
+ 0,
+ 18
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 18
+ }
+ }
+ },
+ "body": [
+ {
+ "type": "ImportDeclaration",
+ "importKind": "type",
+ "source": {
+ "type": "Literal",
+ "raw": "'svelte/attachments'",
+ "value": "svelte/attachments",
+ "range": [
+ 52,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 33
+ },
+ "end": {
+ "line": 2,
+ "column": 53
+ }
+ }
+ },
+ "specifiers": [
+ {
+ "type": "ImportSpecifier",
+ "importKind": "value",
+ "imported": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 34,
+ 44
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 15
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ },
+ "local": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 34,
+ 44
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 15
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 34,
+ 44
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 15
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ }
+ ],
+ "range": [
+ 20,
+ 73
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 54
+ }
+ }
+ },
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 95,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 19
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 83,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "init": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 139,
+ 146
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 14
+ },
+ "end": {
+ "line": 6,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "nodeName",
+ "range": [
+ 147,
+ 155
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 22
+ },
+ "end": {
+ "line": 6,
+ "column": 30
+ }
+ }
+ },
+ "range": [
+ 139,
+ 155
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 14
+ },
+ "end": {
+ "line": 6,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 127,
+ 134
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "log",
+ "range": [
+ 135,
+ 138
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 10
+ },
+ "end": {
+ "line": 6,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 127,
+ 138
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 13
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 127,
+ 156
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 127,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'cleaning up'",
+ "value": "cleaning up",
+ "range": [
+ 200,
+ 213
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 15
+ },
+ "end": {
+ "line": 9,
+ "column": 28
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 188,
+ 195
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 10
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "log",
+ "range": [
+ 196,
+ 199
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 11
+ },
+ "end": {
+ "line": 9,
+ "column": 14
+ }
+ }
+ },
+ "range": [
+ 188,
+ 199
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 14
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 188,
+ 214
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 29
+ }
+ }
+ },
+ "range": [
+ 188,
+ 215
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "range": [
+ 183,
+ 219
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 15
+ },
+ "end": {
+ "line": 10,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [],
+ "range": [
+ 177,
+ 219
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 170,
+ 220
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 2
+ },
+ "end": {
+ "line": 10,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 123,
+ 223
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 47
+ },
+ "end": {
+ "line": 11,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 35
+ },
+ "end": {
+ "line": 5,
+ "column": 42
+ }
+ }
+ }
+ ],
+ "range": [
+ 110,
+ 223
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 34
+ },
+ "end": {
+ "line": 11,
+ "column": 2
+ }
+ }
+ },
+ "range": [
+ 83,
+ 223
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 11,
+ "column": 2
+ }
+ }
+ }
+ ],
+ "range": [
+ 77,
+ 224
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 11,
+ "column": 3
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 225,
+ 234
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 0
+ },
+ "end": {
+ "line": 12,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 0,
+ 234
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 12,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 234,
+ 236
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 14,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteElement",
+ "kind": "html",
+ "name": {
+ "type": "SvelteName",
+ "name": "div",
+ "range": [
+ 237,
+ 240
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 1
+ },
+ "end": {
+ "line": 14,
+ "column": 4
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteAttachTag",
+ "expression": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "range": [
+ 250,
+ 262
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 14
+ },
+ "end": {
+ "line": 14,
+ "column": 26
+ }
+ }
+ },
+ "range": [
+ 241,
+ 263
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 5
+ },
+ "end": {
+ "line": 14,
+ "column": 27
+ }
+ }
+ }
+ ],
+ "selfClosing": false,
+ "range": [
+ 236,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 0
+ },
+ "end": {
+ "line": 14,
+ "column": 28
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "SvelteText",
+ "value": "...",
+ "range": [
+ 264,
+ 267
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 28
+ },
+ "end": {
+ "line": 14,
+ "column": 31
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 267,
+ 273
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 31
+ },
+ "end": {
+ "line": 14,
+ "column": 37
+ }
+ }
+ },
+ "range": [
+ 236,
+ 273
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 0
+ },
+ "end": {
+ "line": 14,
+ "column": 37
+ }
+ }
+ }
+ ],
+ "sourceType": "module",
+ "comments": [
+ {
+ "type": "Line",
+ "value": " 'DIV'",
+ "range": [
+ 158,
+ 166
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 33
+ },
+ "end": {
+ "line": 6,
+ "column": 41
+ }
+ }
+ }
+ ],
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 0,
+ 1
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "lang",
+ "range": [
+ 8,
+ 12
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 8
+ },
+ "end": {
+ "line": 1,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 12,
+ 13
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 12
+ },
+ "end": {
+ "line": 1,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "\"",
+ "range": [
+ 13,
+ 14
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 13
+ },
+ "end": {
+ "line": 1,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "ts",
+ "range": [
+ 14,
+ 16
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 14
+ },
+ "end": {
+ "line": 1,
+ "column": 16
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "\"",
+ "range": [
+ 16,
+ 17
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 16
+ },
+ "end": {
+ "line": 1,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 17,
+ 18
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 17
+ },
+ "end": {
+ "line": 1,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "import",
+ "range": [
+ 20,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "type",
+ "range": [
+ 27,
+ 31
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 32,
+ 33
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 13
+ },
+ "end": {
+ "line": 2,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "Attachment",
+ "range": [
+ 34,
+ 44
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 15
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 45,
+ 46
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 26
+ },
+ "end": {
+ "line": 2,
+ "column": 27
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "from",
+ "range": [
+ 47,
+ 51
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 28
+ },
+ "end": {
+ "line": 2,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'svelte/attachments'",
+ "range": [
+ 52,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 33
+ },
+ "end": {
+ "line": 2,
+ "column": 53
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 72,
+ 73
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 53
+ },
+ "end": {
+ "line": 2,
+ "column": 54
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "const",
+ "range": [
+ 77,
+ 82
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "myAttachment",
+ "range": [
+ 83,
+ 95
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 19
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ":",
+ "range": [
+ 95,
+ 96
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 19
+ },
+ "end": {
+ "line": 5,
+ "column": 20
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "Attachment",
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 108,
+ 109
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 32
+ },
+ "end": {
+ "line": 5,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 110,
+ 111
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 34
+ },
+ "end": {
+ "line": 5,
+ "column": 35
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "element",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 35
+ },
+ "end": {
+ "line": 5,
+ "column": 42
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 118,
+ 119
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 42
+ },
+ "end": {
+ "line": 5,
+ "column": 43
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=>",
+ "range": [
+ 120,
+ 122
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 44
+ },
+ "end": {
+ "line": 5,
+ "column": 46
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 123,
+ 124
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 47
+ },
+ "end": {
+ "line": 5,
+ "column": 48
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "console",
+ "range": [
+ 127,
+ 134
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ".",
+ "range": [
+ 134,
+ 135
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 9
+ },
+ "end": {
+ "line": 6,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "log",
+ "range": [
+ 135,
+ 138
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 10
+ },
+ "end": {
+ "line": 6,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 138,
+ 139
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 13
+ },
+ "end": {
+ "line": 6,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "element",
+ "range": [
+ 139,
+ 146
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 14
+ },
+ "end": {
+ "line": 6,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ".",
+ "range": [
+ 146,
+ 147
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 21
+ },
+ "end": {
+ "line": 6,
+ "column": 22
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "nodeName",
+ "range": [
+ 147,
+ 155
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 22
+ },
+ "end": {
+ "line": 6,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 155,
+ 156
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 30
+ },
+ "end": {
+ "line": 6,
+ "column": 31
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 156,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 31
+ },
+ "end": {
+ "line": 6,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "return",
+ "range": [
+ 170,
+ 176
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 2
+ },
+ "end": {
+ "line": 8,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 177,
+ 178
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 9
+ },
+ "end": {
+ "line": 8,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 178,
+ 179
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=>",
+ "range": [
+ 180,
+ 182
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 12
+ },
+ "end": {
+ "line": 8,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 183,
+ 184
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 15
+ },
+ "end": {
+ "line": 8,
+ "column": 16
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "console",
+ "range": [
+ 188,
+ 195
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ".",
+ "range": [
+ 195,
+ 196
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "log",
+ "range": [
+ 196,
+ 199
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 11
+ },
+ "end": {
+ "line": 9,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 199,
+ 200
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 14
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'cleaning up'",
+ "range": [
+ 200,
+ 213
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 15
+ },
+ "end": {
+ "line": 9,
+ "column": 28
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 213,
+ 214
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 28
+ },
+ "end": {
+ "line": 9,
+ "column": 29
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 214,
+ 215
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 29
+ },
+ "end": {
+ "line": 9,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 218,
+ 219
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 2
+ },
+ "end": {
+ "line": 10,
+ "column": 3
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 219,
+ 220
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 222,
+ 223
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 1
+ },
+ "end": {
+ "line": 11,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 223,
+ 224
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 3
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 225,
+ 226
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 0
+ },
+ "end": {
+ "line": 12,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 226,
+ 227
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 1
+ },
+ "end": {
+ "line": 12,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 227,
+ 233
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 2
+ },
+ "end": {
+ "line": 12,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 233,
+ 234
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 8
+ },
+ "end": {
+ "line": 12,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 234,
+ 236
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 14,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 236,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 0
+ },
+ "end": {
+ "line": 14,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "div",
+ "range": [
+ 237,
+ 240
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 1
+ },
+ "end": {
+ "line": 14,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 241,
+ 242
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 5
+ },
+ "end": {
+ "line": 14,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "MustacheKeyword",
+ "value": "@attach",
+ "range": [
+ 242,
+ 249
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 6
+ },
+ "end": {
+ "line": 14,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "myAttachment",
+ "range": [
+ 250,
+ 262
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 14
+ },
+ "end": {
+ "line": 14,
+ "column": 26
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 262,
+ 263
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 26
+ },
+ "end": {
+ "line": 14,
+ "column": 27
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 263,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 27
+ },
+ "end": {
+ "line": 14,
+ "column": 28
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "...",
+ "range": [
+ 264,
+ 267
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 28
+ },
+ "end": {
+ "line": 14,
+ "column": 31
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 267,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 31
+ },
+ "end": {
+ "line": 14,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 268,
+ 269
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 32
+ },
+ "end": {
+ "line": 14,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "div",
+ "range": [
+ 269,
+ 272
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 33
+ },
+ "end": {
+ "line": 14,
+ "column": 36
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 272,
+ 273
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 36
+ },
+ "end": {
+ "line": 14,
+ "column": 37
+ }
+ }
+ }
+ ],
+ "range": [
+ 0,
+ 273
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 14,
+ "column": 37
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach-ts-01-scope-output.json b/tests/fixtures/parser/ast/svelte5/attach-ts-01-scope-output.json
new file mode 100644
index 00000000..ffc206e4
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach-ts-01-scope-output.json
@@ -0,0 +1,2081 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "$$slots",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$restProps",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$state",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$derived",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$effect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$bindable",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$inspect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$host",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "Attachment",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 34,
+ 44
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 15
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 34,
+ 44
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 15
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ },
+ "node": {
+ "type": "ImportSpecifier",
+ "importKind": "value",
+ "imported": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 34,
+ 44
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 15
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ },
+ "local": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 34,
+ 44
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 15
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 34,
+ 44
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 15
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 34,
+ 44
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 15
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "myAttachment",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 95,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 19
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 83,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 95,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 19
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 83,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 95,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 19
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 83,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "init": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 139,
+ 146
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 14
+ },
+ "end": {
+ "line": 6,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "nodeName",
+ "range": [
+ 147,
+ 155
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 22
+ },
+ "end": {
+ "line": 6,
+ "column": 30
+ }
+ }
+ },
+ "range": [
+ 139,
+ 155
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 14
+ },
+ "end": {
+ "line": 6,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 127,
+ 134
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "log",
+ "range": [
+ 135,
+ 138
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 10
+ },
+ "end": {
+ "line": 6,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 127,
+ 138
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 13
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 127,
+ 156
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 127,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'cleaning up'",
+ "value": "cleaning up",
+ "range": [
+ 200,
+ 213
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 15
+ },
+ "end": {
+ "line": 9,
+ "column": 28
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 188,
+ 195
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 10
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "log",
+ "range": [
+ 196,
+ 199
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 11
+ },
+ "end": {
+ "line": 9,
+ "column": 14
+ }
+ }
+ },
+ "range": [
+ 188,
+ 199
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 14
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 188,
+ 214
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 29
+ }
+ }
+ },
+ "range": [
+ 188,
+ 215
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "range": [
+ 183,
+ 219
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 15
+ },
+ "end": {
+ "line": 10,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [],
+ "range": [
+ 177,
+ 219
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 170,
+ 220
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 2
+ },
+ "end": {
+ "line": 10,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 123,
+ 223
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 47
+ },
+ "end": {
+ "line": 11,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 35
+ },
+ "end": {
+ "line": 5,
+ "column": 42
+ }
+ }
+ }
+ ],
+ "range": [
+ 110,
+ 223
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 34
+ },
+ "end": {
+ "line": 11,
+ "column": 2
+ }
+ }
+ },
+ "range": [
+ 83,
+ 223
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 11,
+ "column": 2
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 95,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 19
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 83,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 95,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 19
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 83,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "range": [
+ 250,
+ 262
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 14
+ },
+ "end": {
+ "line": 14,
+ "column": 26
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 95,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 19
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 83,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 95,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 19
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 83,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 95,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 19
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 83,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 34,
+ 44
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 15
+ },
+ "end": {
+ "line": 2,
+ "column": 25
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "range": [
+ 250,
+ 262
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 14
+ },
+ "end": {
+ "line": 14,
+ "column": 26
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 97,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 95,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 19
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 83,
+ 107
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 7
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "element",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 35
+ },
+ "end": {
+ "line": 5,
+ "column": 42
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "name": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 35
+ },
+ "end": {
+ "line": 5,
+ "column": 42
+ }
+ }
+ },
+ "node": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 139,
+ 146
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 14
+ },
+ "end": {
+ "line": 6,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "nodeName",
+ "range": [
+ 147,
+ 155
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 22
+ },
+ "end": {
+ "line": 6,
+ "column": 30
+ }
+ }
+ },
+ "range": [
+ 139,
+ 155
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 14
+ },
+ "end": {
+ "line": 6,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 127,
+ 134
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "log",
+ "range": [
+ 135,
+ 138
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 10
+ },
+ "end": {
+ "line": 6,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 127,
+ 138
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 13
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 127,
+ 156
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 127,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'cleaning up'",
+ "value": "cleaning up",
+ "range": [
+ 200,
+ 213
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 15
+ },
+ "end": {
+ "line": 9,
+ "column": 28
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 188,
+ 195
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 10
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "log",
+ "range": [
+ 196,
+ 199
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 11
+ },
+ "end": {
+ "line": 9,
+ "column": 14
+ }
+ }
+ },
+ "range": [
+ 188,
+ 199
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 14
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 188,
+ 214
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 29
+ }
+ }
+ },
+ "range": [
+ 188,
+ 215
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "range": [
+ 183,
+ 219
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 15
+ },
+ "end": {
+ "line": 10,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [],
+ "range": [
+ 177,
+ 219
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 170,
+ 220
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 2
+ },
+ "end": {
+ "line": 10,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 123,
+ 223
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 47
+ },
+ "end": {
+ "line": 11,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 35
+ },
+ "end": {
+ "line": 5,
+ "column": 42
+ }
+ }
+ }
+ ],
+ "range": [
+ 110,
+ 223
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 34
+ },
+ "end": {
+ "line": 11,
+ "column": 2
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 139,
+ 146
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 14
+ },
+ "end": {
+ "line": 6,
+ "column": 21
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 35
+ },
+ "end": {
+ "line": 5,
+ "column": 42
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 127,
+ 134
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 139,
+ 146
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 14
+ },
+ "end": {
+ "line": 6,
+ "column": 21
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 35
+ },
+ "end": {
+ "line": 5,
+ "column": 42
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 188,
+ 195
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 10
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ],
+ "childScopes": [],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 188,
+ 195
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 10
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 127,
+ 134
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 188,
+ 195
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 10
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 127,
+ 134
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 188,
+ 195
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 10
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 127,
+ 134
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 188,
+ 195
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 10
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach-ts-02-input.svelte b/tests/fixtures/parser/ast/svelte5/attach-ts-02-input.svelte
new file mode 100644
index 00000000..e99390da
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach-ts-02-input.svelte
@@ -0,0 +1,19 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach-ts-02-output.json b/tests/fixtures/parser/ast/svelte5/attach-ts-02-output.json
new file mode 100644
index 00000000..3ec9cd72
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach-ts-02-output.json
@@ -0,0 +1,3082 @@
+{
+ "type": "Program",
+ "body": [
+ {
+ "type": "SvelteScriptElement",
+ "name": {
+ "type": "SvelteName",
+ "name": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteAttribute",
+ "key": {
+ "type": "SvelteName",
+ "name": "lang",
+ "range": [
+ 8,
+ 12
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 8
+ },
+ "end": {
+ "line": 1,
+ "column": 12
+ }
+ }
+ },
+ "boolean": false,
+ "value": [
+ {
+ "type": "SvelteLiteral",
+ "value": "ts",
+ "range": [
+ 14,
+ 16
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 14
+ },
+ "end": {
+ "line": 1,
+ "column": 16
+ }
+ }
+ }
+ ],
+ "range": [
+ 8,
+ 17
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 8
+ },
+ "end": {
+ "line": 1,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "selfClosing": false,
+ "range": [
+ 0,
+ 18
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 18
+ }
+ }
+ },
+ "body": [
+ {
+ "type": "ImportDeclaration",
+ "importKind": "value",
+ "source": {
+ "type": "Literal",
+ "raw": "'tippy.js'",
+ "value": "tippy.js",
+ "range": [
+ 38,
+ 48
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 19
+ },
+ "end": {
+ "line": 2,
+ "column": 29
+ }
+ }
+ },
+ "specifiers": [
+ {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ ],
+ "range": [
+ 20,
+ 49
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "ImportDeclaration",
+ "importKind": "type",
+ "source": {
+ "type": "Literal",
+ "raw": "'svelte/attachments'",
+ "value": "svelte/attachments",
+ "range": [
+ 83,
+ 103
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 33
+ },
+ "end": {
+ "line": 3,
+ "column": 53
+ }
+ }
+ },
+ "specifiers": [
+ {
+ "type": "ImportSpecifier",
+ "importKind": "value",
+ "imported": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 65,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 25
+ }
+ }
+ },
+ "local": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 65,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 65,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 25
+ }
+ }
+ }
+ ],
+ "range": [
+ 51,
+ 104
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 3,
+ "column": 54
+ }
+ }
+ },
+ {
+ "type": "VariableDeclaration",
+ "kind": "let",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'Hello!'",
+ "value": "Hello!",
+ "range": [
+ 128,
+ 136
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 22
+ },
+ "end": {
+ "line": 5,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 121,
+ 127
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 121,
+ 137
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 111,
+ 137
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ }
+ ],
+ "range": [
+ 107,
+ 138
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 222,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 25
+ },
+ "end": {
+ "line": 9,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 247,
+ 258
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 34
+ },
+ "end": {
+ "line": 9,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 232,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 19
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 232,
+ 259
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 19
+ },
+ "end": {
+ "line": 9,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 222,
+ 259
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 216,
+ 260
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 271,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 279,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 18
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 271,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 264,
+ 287
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 211,
+ 291
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 22
+ },
+ "end": {
+ "line": 11,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 199,
+ 206
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 198,
+ 291
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 9
+ },
+ "end": {
+ "line": 11,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 191,
+ 292
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 187,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 47
+ },
+ "end": {
+ "line": 12,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 10
+ },
+ "end": {
+ "line": 7,
+ "column": 17
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 167,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 27
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 165,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 25
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 158,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 18
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ }
+ ],
+ "returnType": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 176,
+ 186
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 36
+ },
+ "end": {
+ "line": 7,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 176,
+ 186
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 36
+ },
+ "end": {
+ "line": 7,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 174,
+ 186
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 34
+ },
+ "end": {
+ "line": 7,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 141,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 1
+ },
+ "end": {
+ "line": 12,
+ "column": 2
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 296,
+ 305
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 0
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 0,
+ 305
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 305,
+ 307
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 15,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteElement",
+ "kind": "html",
+ "name": {
+ "type": "SvelteName",
+ "name": "input",
+ "range": [
+ 308,
+ 313
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 1
+ },
+ "end": {
+ "line": 15,
+ "column": 6
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteDirective",
+ "kind": "Binding",
+ "key": {
+ "type": "SvelteDirectiveKey",
+ "name": {
+ "type": "SvelteName",
+ "name": "value",
+ "range": [
+ 319,
+ 324
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 12
+ },
+ "end": {
+ "line": 15,
+ "column": 17
+ }
+ }
+ },
+ "modifiers": [],
+ "range": [
+ 314,
+ 324
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 7
+ },
+ "end": {
+ "line": 15,
+ "column": 17
+ }
+ }
+ },
+ "expression": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 326,
+ 333
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 19
+ },
+ "end": {
+ "line": 15,
+ "column": 26
+ }
+ }
+ },
+ "shorthand": false,
+ "range": [
+ 314,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 7
+ },
+ "end": {
+ "line": 15,
+ "column": 27
+ }
+ }
+ }
+ ],
+ "selfClosing": true,
+ "range": [
+ 307,
+ 337
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 0
+ },
+ "end": {
+ "line": 15,
+ "column": 30
+ }
+ }
+ },
+ "children": [],
+ "endTag": null,
+ "range": [
+ 307,
+ 337
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 0
+ },
+ "end": {
+ "line": 15,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 337,
+ 339
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 30
+ },
+ "end": {
+ "line": 17,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteElement",
+ "kind": "html",
+ "name": {
+ "type": "SvelteName",
+ "name": "button",
+ "range": [
+ 340,
+ 346
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 1
+ },
+ "end": {
+ "line": 17,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteAttachTag",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 364,
+ 371
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 25
+ },
+ "end": {
+ "line": 17,
+ "column": 32
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 356,
+ 363
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 17
+ },
+ "end": {
+ "line": 17,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 356,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 17
+ },
+ "end": {
+ "line": 17,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 347,
+ 373
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 8
+ },
+ "end": {
+ "line": 17,
+ "column": 34
+ }
+ }
+ }
+ ],
+ "selfClosing": false,
+ "range": [
+ 339,
+ 374
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 0
+ },
+ "end": {
+ "line": 17,
+ "column": 35
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "SvelteText",
+ "value": "\n\tHover me\n",
+ "range": [
+ 374,
+ 385
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 35
+ },
+ "end": {
+ "line": 19,
+ "column": 0
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 385,
+ 394
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 0
+ },
+ "end": {
+ "line": 19,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 339,
+ 394
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 0
+ },
+ "end": {
+ "line": 19,
+ "column": 9
+ }
+ }
+ }
+ ],
+ "sourceType": "module",
+ "comments": [],
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 0,
+ 1
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "lang",
+ "range": [
+ 8,
+ 12
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 8
+ },
+ "end": {
+ "line": 1,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 12,
+ 13
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 12
+ },
+ "end": {
+ "line": 1,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "\"",
+ "range": [
+ 13,
+ 14
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 13
+ },
+ "end": {
+ "line": 1,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "ts",
+ "range": [
+ 14,
+ 16
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 14
+ },
+ "end": {
+ "line": 1,
+ "column": 16
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "\"",
+ "range": [
+ 16,
+ 17
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 16
+ },
+ "end": {
+ "line": 1,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 17,
+ 18
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 17
+ },
+ "end": {
+ "line": 1,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "import",
+ "range": [
+ 20,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "from",
+ "range": [
+ 33,
+ 37
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 14
+ },
+ "end": {
+ "line": 2,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'tippy.js'",
+ "range": [
+ 38,
+ 48
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 19
+ },
+ "end": {
+ "line": 2,
+ "column": 29
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 48,
+ 49
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 29
+ },
+ "end": {
+ "line": 2,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "import",
+ "range": [
+ 51,
+ 57
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 3,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "type",
+ "range": [
+ 58,
+ 62
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 63,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 13
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "Attachment",
+ "range": [
+ 65,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 76,
+ 77
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 26
+ },
+ "end": {
+ "line": 3,
+ "column": 27
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "from",
+ "range": [
+ 78,
+ 82
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 28
+ },
+ "end": {
+ "line": 3,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'svelte/attachments'",
+ "range": [
+ 83,
+ 103
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 33
+ },
+ "end": {
+ "line": 3,
+ "column": 53
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 103,
+ 104
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 53
+ },
+ "end": {
+ "line": 3,
+ "column": 54
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "let",
+ "range": [
+ 107,
+ 110
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 119,
+ 120
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 13
+ },
+ "end": {
+ "line": 5,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "$state",
+ "range": [
+ 121,
+ 127
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 127,
+ 128
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 22
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'Hello!'",
+ "range": [
+ 128,
+ 136
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 22
+ },
+ "end": {
+ "line": 5,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 136,
+ 137
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 30
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 137,
+ 138
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 31
+ },
+ "end": {
+ "line": 5,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "function",
+ "range": [
+ 141,
+ 149
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 1
+ },
+ "end": {
+ "line": 7,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tooltip",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 10
+ },
+ "end": {
+ "line": 7,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 157,
+ 158
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 17
+ },
+ "end": {
+ "line": 7,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 158,
+ 165
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 18
+ },
+ "end": {
+ "line": 7,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ":",
+ "range": [
+ 165,
+ 166
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 25
+ },
+ "end": {
+ "line": 7,
+ "column": 26
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "string",
+ "range": [
+ 167,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 27
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 173,
+ 174
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 33
+ },
+ "end": {
+ "line": 7,
+ "column": 34
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ":",
+ "range": [
+ 174,
+ 175
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 34
+ },
+ "end": {
+ "line": 7,
+ "column": 35
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "Attachment",
+ "range": [
+ 176,
+ 186
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 36
+ },
+ "end": {
+ "line": 7,
+ "column": 46
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 187,
+ 188
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 47
+ },
+ "end": {
+ "line": 7,
+ "column": 48
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "return",
+ "range": [
+ 191,
+ 197
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 2
+ },
+ "end": {
+ "line": 8,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 198,
+ 199
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 9
+ },
+ "end": {
+ "line": 8,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "element",
+ "range": [
+ 199,
+ 206
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 206,
+ 207
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 17
+ },
+ "end": {
+ "line": 8,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=>",
+ "range": [
+ 208,
+ 210
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 19
+ },
+ "end": {
+ "line": 8,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 211,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 22
+ },
+ "end": {
+ "line": 8,
+ "column": 23
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "const",
+ "range": [
+ 216,
+ 221
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tooltip",
+ "range": [
+ 222,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 16
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 230,
+ 231
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 17
+ },
+ "end": {
+ "line": 9,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tippy",
+ "range": [
+ 232,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 19
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 237,
+ 238
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 24
+ },
+ "end": {
+ "line": 9,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 25
+ },
+ "end": {
+ "line": 9,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ",",
+ "range": [
+ 245,
+ 246
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 32
+ },
+ "end": {
+ "line": 9,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 247,
+ 248
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 34
+ },
+ "end": {
+ "line": 9,
+ "column": 35
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 257,
+ 258
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 44
+ },
+ "end": {
+ "line": 9,
+ "column": 45
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 258,
+ 259
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 45
+ },
+ "end": {
+ "line": 9,
+ "column": 46
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 259,
+ 260
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 46
+ },
+ "end": {
+ "line": 9,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "return",
+ "range": [
+ 264,
+ 270
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tooltip",
+ "range": [
+ 271,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ".",
+ "range": [
+ 278,
+ 279
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 17
+ },
+ "end": {
+ "line": 10,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "destroy",
+ "range": [
+ 279,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 18
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 286,
+ 287
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 25
+ },
+ "end": {
+ "line": 10,
+ "column": 26
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 290,
+ 291
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 3
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 291,
+ 292
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 3
+ },
+ "end": {
+ "line": 11,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 294,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 1
+ },
+ "end": {
+ "line": 12,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 296,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 0
+ },
+ "end": {
+ "line": 13,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 297,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 1
+ },
+ "end": {
+ "line": 13,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 298,
+ 304
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 2
+ },
+ "end": {
+ "line": 13,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 304,
+ 305
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 8
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 305,
+ 307
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 15,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 307,
+ 308
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 0
+ },
+ "end": {
+ "line": 15,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "input",
+ "range": [
+ 308,
+ 313
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 1
+ },
+ "end": {
+ "line": 15,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "bind",
+ "range": [
+ 314,
+ 318
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 7
+ },
+ "end": {
+ "line": 15,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ":",
+ "range": [
+ 318,
+ 319
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 11
+ },
+ "end": {
+ "line": 15,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "value",
+ "range": [
+ 319,
+ 324
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 12
+ },
+ "end": {
+ "line": 15,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 324,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 17
+ },
+ "end": {
+ "line": 15,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 325,
+ 326
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 18
+ },
+ "end": {
+ "line": 15,
+ "column": 19
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 326,
+ 333
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 19
+ },
+ "end": {
+ "line": 15,
+ "column": 26
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 333,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 26
+ },
+ "end": {
+ "line": 15,
+ "column": 27
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 335,
+ 336
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 28
+ },
+ "end": {
+ "line": 15,
+ "column": 29
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 336,
+ 337
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 29
+ },
+ "end": {
+ "line": 15,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 337,
+ 339
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 30
+ },
+ "end": {
+ "line": 17,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 339,
+ 340
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 0
+ },
+ "end": {
+ "line": 17,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "button",
+ "range": [
+ 340,
+ 346
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 1
+ },
+ "end": {
+ "line": 17,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 347,
+ 348
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 8
+ },
+ "end": {
+ "line": 17,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "MustacheKeyword",
+ "value": "@attach",
+ "range": [
+ 348,
+ 355
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 9
+ },
+ "end": {
+ "line": 17,
+ "column": 16
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tooltip",
+ "range": [
+ 356,
+ 363
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 17
+ },
+ "end": {
+ "line": 17,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 363,
+ 364
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 24
+ },
+ "end": {
+ "line": 17,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 364,
+ 371
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 25
+ },
+ "end": {
+ "line": 17,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 371,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 32
+ },
+ "end": {
+ "line": 17,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 372,
+ 373
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 33
+ },
+ "end": {
+ "line": 17,
+ "column": 34
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 373,
+ 374
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 34
+ },
+ "end": {
+ "line": 17,
+ "column": 35
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\t",
+ "range": [
+ 374,
+ 376
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 35
+ },
+ "end": {
+ "line": 18,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "Hover",
+ "range": [
+ 376,
+ 381
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 1
+ },
+ "end": {
+ "line": 18,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": " ",
+ "range": [
+ 381,
+ 382
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 6
+ },
+ "end": {
+ "line": 18,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "me",
+ "range": [
+ 382,
+ 384
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 7
+ },
+ "end": {
+ "line": 18,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n",
+ "range": [
+ 384,
+ 385
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 9
+ },
+ "end": {
+ "line": 19,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 385,
+ 386
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 0
+ },
+ "end": {
+ "line": 19,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 386,
+ 387
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 1
+ },
+ "end": {
+ "line": 19,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "button",
+ "range": [
+ 387,
+ 393
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 2
+ },
+ "end": {
+ "line": 19,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 393,
+ 394
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 8
+ },
+ "end": {
+ "line": 19,
+ "column": 9
+ }
+ }
+ }
+ ],
+ "range": [
+ 0,
+ 394
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 19,
+ "column": 9
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach-ts-02-scope-output.json b/tests/fixtures/parser/ast/svelte5/attach-ts-02-scope-output.json
new file mode 100644
index 00000000..e400cdfc
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach-ts-02-scope-output.json
@@ -0,0 +1,3308 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "$$slots",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$restProps",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$state",
+ "identifiers": [],
+ "defs": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 121,
+ 127
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ },
+ {
+ "name": "$derived",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$effect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$bindable",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$inspect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$host",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "tippy",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "node": {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 232,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 19
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "Attachment",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 65,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 25
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 65,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 25
+ }
+ }
+ },
+ "node": {
+ "type": "ImportSpecifier",
+ "importKind": "value",
+ "imported": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 65,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 25
+ }
+ }
+ },
+ "local": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 65,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 65,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 25
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 176,
+ 186
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 36
+ },
+ "end": {
+ "line": 7,
+ "column": 46
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 65,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 25
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "content",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'Hello!'",
+ "value": "Hello!",
+ "range": [
+ 128,
+ 136
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 22
+ },
+ "end": {
+ "line": 5,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 121,
+ 127
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 121,
+ 137
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 111,
+ 137
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 326,
+ 333
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 19
+ },
+ "end": {
+ "line": 15,
+ "column": 26
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 364,
+ 371
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 25
+ },
+ "end": {
+ "line": 17,
+ "column": 32
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "tooltip",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 10
+ },
+ "end": {
+ "line": 7,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "FunctionName",
+ "name": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 10
+ },
+ "end": {
+ "line": 7,
+ "column": 17
+ }
+ }
+ },
+ "node": {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 222,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 25
+ },
+ "end": {
+ "line": 9,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 247,
+ 258
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 34
+ },
+ "end": {
+ "line": 9,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 232,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 19
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 232,
+ 259
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 19
+ },
+ "end": {
+ "line": 9,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 222,
+ 259
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 216,
+ 260
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 271,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 279,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 18
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 271,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 264,
+ 287
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 211,
+ 291
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 22
+ },
+ "end": {
+ "line": 11,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 199,
+ 206
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 198,
+ 291
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 9
+ },
+ "end": {
+ "line": 11,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 191,
+ 292
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 187,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 47
+ },
+ "end": {
+ "line": 12,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 10
+ },
+ "end": {
+ "line": 7,
+ "column": 17
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 167,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 27
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 165,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 25
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 158,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 18
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ }
+ ],
+ "returnType": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 176,
+ 186
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 36
+ },
+ "end": {
+ "line": 7,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 176,
+ 186
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 36
+ },
+ "end": {
+ "line": 7,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 174,
+ 186
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 34
+ },
+ "end": {
+ "line": 7,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 141,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 1
+ },
+ "end": {
+ "line": 12,
+ "column": 2
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 356,
+ 363
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 17
+ },
+ "end": {
+ "line": 17,
+ "column": 24
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 10
+ },
+ "end": {
+ "line": 7,
+ "column": 17
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 121,
+ 127
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 326,
+ 333
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 19
+ },
+ "end": {
+ "line": 15,
+ "column": 26
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 356,
+ 363
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 17
+ },
+ "end": {
+ "line": 17,
+ "column": 24
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 10
+ },
+ "end": {
+ "line": 7,
+ "column": 17
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 364,
+ 371
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 25
+ },
+ "end": {
+ "line": 17,
+ "column": 32
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 111,
+ 118
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "arguments",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "content",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 167,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 27
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 165,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 25
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 158,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 18
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "name": {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 167,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 27
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 165,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 25
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 158,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 18
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "node": {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 222,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 25
+ },
+ "end": {
+ "line": 9,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 247,
+ 258
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 34
+ },
+ "end": {
+ "line": 9,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 232,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 19
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 232,
+ 259
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 19
+ },
+ "end": {
+ "line": 9,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 222,
+ 259
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 216,
+ 260
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 271,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 279,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 18
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 271,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 264,
+ 287
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 211,
+ 291
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 22
+ },
+ "end": {
+ "line": 11,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 199,
+ 206
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 198,
+ 291
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 9
+ },
+ "end": {
+ "line": 11,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 191,
+ 292
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 187,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 47
+ },
+ "end": {
+ "line": 12,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 10
+ },
+ "end": {
+ "line": 7,
+ "column": 17
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 167,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 27
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 165,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 25
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 158,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 18
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ }
+ ],
+ "returnType": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 176,
+ 186
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 36
+ },
+ "end": {
+ "line": 7,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 176,
+ 186
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 36
+ },
+ "end": {
+ "line": 7,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 174,
+ 186
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 34
+ },
+ "end": {
+ "line": 7,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 141,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 1
+ },
+ "end": {
+ "line": 12,
+ "column": 2
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 167,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 27
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 165,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 25
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 158,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 18
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 176,
+ 186
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 36
+ },
+ "end": {
+ "line": 7,
+ "column": 46
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 65,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 25
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "element",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 199,
+ 206
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "name": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 199,
+ 206
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ "node": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 222,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 25
+ },
+ "end": {
+ "line": 9,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 247,
+ 258
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 34
+ },
+ "end": {
+ "line": 9,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 232,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 19
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 232,
+ 259
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 19
+ },
+ "end": {
+ "line": 9,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 222,
+ 259
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 216,
+ 260
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 3
+ },
+ "end": {
+ "line": 9,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 271,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 279,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 18
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 271,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 264,
+ 287
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 211,
+ 291
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 22
+ },
+ "end": {
+ "line": 11,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 199,
+ 206
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 198,
+ 291
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 9
+ },
+ "end": {
+ "line": 11,
+ "column": 3
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 25
+ },
+ "end": {
+ "line": 9,
+ "column": 32
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 199,
+ 206
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "tooltip",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 222,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 16
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 222,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 16
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 222,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 25
+ },
+ "end": {
+ "line": 9,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 247,
+ 258
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 34
+ },
+ "end": {
+ "line": 9,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 232,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 19
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 232,
+ 259
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 19
+ },
+ "end": {
+ "line": 9,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 222,
+ 259
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 46
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 222,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 16
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 222,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 16
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 271,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 222,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 16
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 222,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 16
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 222,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 16
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 232,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 19
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 25
+ },
+ "end": {
+ "line": 9,
+ "column": 32
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 199,
+ 206
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 167,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 27
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 165,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 25
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 158,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 18
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 271,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 222,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 16
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 232,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 19
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 249,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 43
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 167,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 27
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 165,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 25
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 158,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 18
+ },
+ "end": {
+ "line": 7,
+ "column": 33
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 176,
+ 186
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 36
+ },
+ "end": {
+ "line": 7,
+ "column": 46
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 65,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 25
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 232,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 19
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 121,
+ 127
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": []
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach-ts-03-input.svelte b/tests/fixtures/parser/ast/svelte5/attach-ts-03-input.svelte
new file mode 100644
index 00000000..392ba5ea
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach-ts-03-input.svelte
@@ -0,0 +1,22 @@
+
+
+
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach-ts-03-output.json b/tests/fixtures/parser/ast/svelte5/attach-ts-03-output.json
new file mode 100644
index 00000000..168412cd
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach-ts-03-output.json
@@ -0,0 +1,3201 @@
+{
+ "type": "Program",
+ "body": [
+ {
+ "type": "SvelteScriptElement",
+ "name": {
+ "type": "SvelteName",
+ "name": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteAttribute",
+ "key": {
+ "type": "SvelteName",
+ "name": "lang",
+ "range": [
+ 8,
+ 12
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 8
+ },
+ "end": {
+ "line": 1,
+ "column": 12
+ }
+ }
+ },
+ "boolean": false,
+ "value": [
+ {
+ "type": "SvelteLiteral",
+ "value": "ts",
+ "range": [
+ 14,
+ 16
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 14
+ },
+ "end": {
+ "line": 1,
+ "column": 16
+ }
+ }
+ }
+ ],
+ "range": [
+ 8,
+ 17
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 8
+ },
+ "end": {
+ "line": 1,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "selfClosing": false,
+ "range": [
+ 0,
+ 18
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 18
+ }
+ }
+ },
+ "body": [
+ {
+ "type": "ImportDeclaration",
+ "importKind": "value",
+ "source": {
+ "type": "Literal",
+ "raw": "'./gradient.js'",
+ "value": "./gradient.js",
+ "range": [
+ 42,
+ 57
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 23
+ },
+ "end": {
+ "line": 2,
+ "column": 38
+ }
+ }
+ },
+ "specifiers": [
+ {
+ "type": "ImportSpecifier",
+ "importKind": "value",
+ "imported": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 29,
+ 34
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ },
+ "local": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 29,
+ 34
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ },
+ "range": [
+ 29,
+ 34
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ ],
+ "range": [
+ 20,
+ 58
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 39
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 59,
+ 68
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 0
+ },
+ "end": {
+ "line": 3,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 0,
+ 68
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 3,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 68,
+ 70
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 9
+ },
+ "end": {
+ "line": 5,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteElement",
+ "kind": "html",
+ "name": {
+ "type": "SvelteName",
+ "name": "canvas",
+ "range": [
+ 71,
+ 77
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteAttribute",
+ "key": {
+ "type": "SvelteName",
+ "name": "width",
+ "range": [
+ 79,
+ 84
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 1
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ },
+ "boolean": false,
+ "value": [
+ {
+ "type": "SvelteMustacheTag",
+ "kind": "text",
+ "expression": {
+ "type": "Literal",
+ "raw": "32",
+ "value": 32,
+ "range": [
+ 86,
+ 88
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 8
+ },
+ "end": {
+ "line": 6,
+ "column": 10
+ }
+ }
+ },
+ "range": [
+ 85,
+ 89
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 7
+ },
+ "end": {
+ "line": 6,
+ "column": 11
+ }
+ }
+ }
+ ],
+ "range": [
+ 79,
+ 89
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 1
+ },
+ "end": {
+ "line": 6,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "SvelteAttribute",
+ "key": {
+ "type": "SvelteName",
+ "name": "height",
+ "range": [
+ 91,
+ 97
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 1
+ },
+ "end": {
+ "line": 7,
+ "column": 7
+ }
+ }
+ },
+ "boolean": false,
+ "value": [
+ {
+ "type": "SvelteMustacheTag",
+ "kind": "text",
+ "expression": {
+ "type": "Literal",
+ "raw": "32",
+ "value": 32,
+ "range": [
+ 99,
+ 101
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 9
+ },
+ "end": {
+ "line": 7,
+ "column": 11
+ }
+ }
+ },
+ "range": [
+ 98,
+ 102
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 8
+ },
+ "end": {
+ "line": 7,
+ "column": 12
+ }
+ }
+ }
+ ],
+ "range": [
+ 91,
+ 102
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 1
+ },
+ "end": {
+ "line": 7,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "SvelteAttachTag",
+ "expression": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 135,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'2d'",
+ "value": "2d",
+ "range": [
+ 163,
+ 167
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 40
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 145,
+ 151
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "getContext",
+ "range": [
+ 152,
+ 162
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 25
+ },
+ "end": {
+ "line": 9,
+ "column": 35
+ }
+ }
+ },
+ "range": [
+ 145,
+ 162
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 35
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 145,
+ 168
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 41
+ }
+ }
+ },
+ "range": [
+ 135,
+ 168
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 41
+ }
+ }
+ }
+ ],
+ "range": [
+ 129,
+ 169
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 2
+ },
+ "end": {
+ "line": 9,
+ "column": 42
+ }
+ }
+ },
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "let",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "FunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 249,
+ 254
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 279,
+ 283
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 257,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 257,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 249,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 249,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 305,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 19
+ },
+ "end": {
+ "line": 14,
+ "column": 20
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 290,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 290,
+ 307
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 21
+ }
+ }
+ },
+ "range": [
+ 290,
+ 308
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 22
+ }
+ }
+ }
+ ],
+ "range": [
+ 243,
+ 313
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 54
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 235,
+ 239
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 240,
+ 241
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ }
+ ],
+ "range": [
+ 226,
+ 313
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 37
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 204,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 204,
+ 314
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 15,
+ "column": 5
+ }
+ }
+ },
+ "range": [
+ 196,
+ 314
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 15,
+ "column": 5
+ }
+ }
+ }
+ ],
+ "range": [
+ 192,
+ 315
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 3
+ },
+ "end": {
+ "line": 15,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 360,
+ 365
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "cancelAnimationFrame",
+ "range": [
+ 339,
+ 359
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 339,
+ 366
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 339,
+ 367
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 32
+ }
+ }
+ }
+ ],
+ "range": [
+ 333,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 16
+ },
+ "end": {
+ "line": 19,
+ "column": 4
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [],
+ "range": [
+ 327,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 10
+ },
+ "end": {
+ "line": 19,
+ "column": 4
+ }
+ }
+ },
+ "range": [
+ 320,
+ 373
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 3
+ },
+ "end": {
+ "line": 19,
+ "column": 5
+ }
+ }
+ }
+ ],
+ "range": [
+ 187,
+ 377
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 16
+ },
+ "end": {
+ "line": 20,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [],
+ "range": [
+ 181,
+ 377
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 20,
+ "column": 3
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "$effect",
+ "range": [
+ 173,
+ 180
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 173,
+ 378
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 20,
+ "column": 4
+ }
+ }
+ },
+ "range": [
+ 173,
+ 379
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 20,
+ "column": 5
+ }
+ }
+ }
+ ],
+ "range": [
+ 125,
+ 382
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 22
+ },
+ "end": {
+ "line": 21,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 114,
+ 120
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 11
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 113,
+ 382
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 21,
+ "column": 2
+ }
+ }
+ },
+ "range": [
+ 104,
+ 383
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 1
+ },
+ "end": {
+ "line": 21,
+ "column": 3
+ }
+ }
+ }
+ ],
+ "selfClosing": false,
+ "range": [
+ 70,
+ 385
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 0
+ },
+ "end": {
+ "line": 22,
+ "column": 1
+ }
+ }
+ },
+ "children": [],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 385,
+ 394
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 1
+ },
+ "end": {
+ "line": 22,
+ "column": 10
+ }
+ }
+ },
+ "range": [
+ 70,
+ 394
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 0
+ },
+ "end": {
+ "line": 22,
+ "column": 10
+ }
+ }
+ }
+ ],
+ "sourceType": "module",
+ "comments": [],
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 0,
+ 1
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "lang",
+ "range": [
+ 8,
+ 12
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 8
+ },
+ "end": {
+ "line": 1,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 12,
+ 13
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 12
+ },
+ "end": {
+ "line": 1,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "\"",
+ "range": [
+ 13,
+ 14
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 13
+ },
+ "end": {
+ "line": 1,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "ts",
+ "range": [
+ 14,
+ 16
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 14
+ },
+ "end": {
+ "line": 1,
+ "column": 16
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "\"",
+ "range": [
+ 16,
+ 17
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 16
+ },
+ "end": {
+ "line": 1,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 17,
+ 18
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 17
+ },
+ "end": {
+ "line": 1,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "import",
+ "range": [
+ 20,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 27,
+ 28
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "paint",
+ "range": [
+ 29,
+ 34
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 35,
+ 36
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 16
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "from",
+ "range": [
+ 37,
+ 41
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 18
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'./gradient.js'",
+ "range": [
+ 42,
+ 57
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 23
+ },
+ "end": {
+ "line": 2,
+ "column": 38
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 57,
+ 58
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 38
+ },
+ "end": {
+ "line": 2,
+ "column": 39
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 59,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 0
+ },
+ "end": {
+ "line": 3,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 60,
+ 61
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 3,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 61,
+ 67
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 2
+ },
+ "end": {
+ "line": 3,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 67,
+ 68
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 68,
+ 70
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 9
+ },
+ "end": {
+ "line": 5,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 70,
+ 71
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 0
+ },
+ "end": {
+ "line": 5,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "canvas",
+ "range": [
+ 71,
+ 77
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "width",
+ "range": [
+ 79,
+ 84
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 1
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 84,
+ 85
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 6
+ },
+ "end": {
+ "line": 6,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 85,
+ 86
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 7
+ },
+ "end": {
+ "line": 6,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Numeric",
+ "value": "32",
+ "range": [
+ 86,
+ 88
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 8
+ },
+ "end": {
+ "line": 6,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 88,
+ 89
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 10
+ },
+ "end": {
+ "line": 6,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "height",
+ "range": [
+ 91,
+ 97
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 1
+ },
+ "end": {
+ "line": 7,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 97,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 7
+ },
+ "end": {
+ "line": 7,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 98,
+ 99
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 8
+ },
+ "end": {
+ "line": 7,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Numeric",
+ "value": "32",
+ "range": [
+ 99,
+ 101
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 9
+ },
+ "end": {
+ "line": 7,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 101,
+ 102
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 11
+ },
+ "end": {
+ "line": 7,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 104,
+ 105
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 1
+ },
+ "end": {
+ "line": 8,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "MustacheKeyword",
+ "value": "@attach",
+ "range": [
+ 105,
+ 112
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 2
+ },
+ "end": {
+ "line": 8,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 113,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "canvas",
+ "range": [
+ 114,
+ 120
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 11
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 120,
+ 121
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 17
+ },
+ "end": {
+ "line": 8,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=>",
+ "range": [
+ 122,
+ 124
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 19
+ },
+ "end": {
+ "line": 8,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 125,
+ 126
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 22
+ },
+ "end": {
+ "line": 8,
+ "column": 23
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "const",
+ "range": [
+ 129,
+ 134
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 2
+ },
+ "end": {
+ "line": 9,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "context",
+ "range": [
+ 135,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 143,
+ 144
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 16
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "canvas",
+ "range": [
+ 145,
+ 151
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ".",
+ "range": [
+ 151,
+ 152
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 24
+ },
+ "end": {
+ "line": 9,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "getContext",
+ "range": [
+ 152,
+ 162
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 25
+ },
+ "end": {
+ "line": 9,
+ "column": 35
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 162,
+ 163
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 35
+ },
+ "end": {
+ "line": 9,
+ "column": 36
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'2d'",
+ "range": [
+ 163,
+ 167
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 167,
+ 168
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 40
+ },
+ "end": {
+ "line": 9,
+ "column": 41
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 168,
+ 169
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 41
+ },
+ "end": {
+ "line": 9,
+ "column": 42
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "$effect",
+ "range": [
+ 173,
+ 180
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 180,
+ 181
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 9
+ },
+ "end": {
+ "line": 11,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 181,
+ 182
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 182,
+ 183
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 11
+ },
+ "end": {
+ "line": 11,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=>",
+ "range": [
+ 184,
+ 186
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 13
+ },
+ "end": {
+ "line": 11,
+ "column": 15
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 187,
+ 188
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 16
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "let",
+ "range": [
+ 192,
+ 195
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 3
+ },
+ "end": {
+ "line": 12,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 202,
+ 203
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 13
+ },
+ "end": {
+ "line": 12,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "requestAnimationFrame",
+ "range": [
+ 204,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 225,
+ 226
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 37
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "function",
+ "range": [
+ 226,
+ 234
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 37
+ },
+ "end": {
+ "line": 12,
+ "column": 45
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "loop",
+ "range": [
+ 235,
+ 239
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 239,
+ 240
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 50
+ },
+ "end": {
+ "line": 12,
+ "column": 51
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "t",
+ "range": [
+ 240,
+ 241
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 241,
+ 242
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 52
+ },
+ "end": {
+ "line": 12,
+ "column": 53
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 243,
+ 244
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 54
+ },
+ "end": {
+ "line": 12,
+ "column": 55
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "frame",
+ "range": [
+ 249,
+ 254
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 255,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 10
+ },
+ "end": {
+ "line": 13,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "requestAnimationFrame",
+ "range": [
+ 257,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 278,
+ 279
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 33
+ },
+ "end": {
+ "line": 13,
+ "column": 34
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "loop",
+ "range": [
+ 279,
+ 283
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 283,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 38
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 284,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 39
+ },
+ "end": {
+ "line": 13,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "paint",
+ "range": [
+ 290,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 295,
+ 296
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 9
+ },
+ "end": {
+ "line": 14,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "context",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ",",
+ "range": [
+ 303,
+ 304
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 17
+ },
+ "end": {
+ "line": 14,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "t",
+ "range": [
+ 305,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 19
+ },
+ "end": {
+ "line": 14,
+ "column": 20
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 306,
+ 307
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 20
+ },
+ "end": {
+ "line": 14,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 307,
+ 308
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 21
+ },
+ "end": {
+ "line": 14,
+ "column": 22
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 312,
+ 313
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 3
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 313,
+ 314
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 4
+ },
+ "end": {
+ "line": 15,
+ "column": 5
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 314,
+ 315
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 5
+ },
+ "end": {
+ "line": 15,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "return",
+ "range": [
+ 320,
+ 326
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 3
+ },
+ "end": {
+ "line": 17,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 327,
+ 328
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 10
+ },
+ "end": {
+ "line": 17,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 328,
+ 329
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 11
+ },
+ "end": {
+ "line": 17,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=>",
+ "range": [
+ 330,
+ 332
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 13
+ },
+ "end": {
+ "line": 17,
+ "column": 15
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 333,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 16
+ },
+ "end": {
+ "line": 17,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "cancelAnimationFrame",
+ "range": [
+ 339,
+ 359
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 359,
+ 360
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 24
+ },
+ "end": {
+ "line": 18,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "frame",
+ "range": [
+ 360,
+ 365
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 365,
+ 366
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 30
+ },
+ "end": {
+ "line": 18,
+ "column": 31
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 366,
+ 367
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 31
+ },
+ "end": {
+ "line": 18,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 371,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 3
+ },
+ "end": {
+ "line": 19,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 372,
+ 373
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 4
+ },
+ "end": {
+ "line": 19,
+ "column": 5
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 376,
+ 377
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 2
+ },
+ "end": {
+ "line": 20,
+ "column": 3
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 377,
+ 378
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 3
+ },
+ "end": {
+ "line": 20,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 378,
+ 379
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 4
+ },
+ "end": {
+ "line": 20,
+ "column": 5
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 381,
+ 382
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 1
+ },
+ "end": {
+ "line": 21,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 382,
+ 383
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 2
+ },
+ "end": {
+ "line": 21,
+ "column": 3
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 384,
+ 385
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 0
+ },
+ "end": {
+ "line": 22,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 385,
+ 386
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 1
+ },
+ "end": {
+ "line": 22,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 386,
+ 387
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 2
+ },
+ "end": {
+ "line": 22,
+ "column": 3
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "canvas",
+ "range": [
+ 387,
+ 393
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 3
+ },
+ "end": {
+ "line": 22,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 393,
+ 394
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 9
+ },
+ "end": {
+ "line": 22,
+ "column": 10
+ }
+ }
+ }
+ ],
+ "range": [
+ 0,
+ 394
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 22,
+ "column": 10
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach-ts-03-scope-output.json b/tests/fixtures/parser/ast/svelte5/attach-ts-03-scope-output.json
new file mode 100644
index 00000000..51a918f4
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach-ts-03-scope-output.json
@@ -0,0 +1,3985 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "$$slots",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$restProps",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$state",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$derived",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$effect",
+ "identifiers": [],
+ "defs": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$effect",
+ "range": [
+ 173,
+ 180
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ },
+ {
+ "name": "$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$bindable",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$inspect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$host",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "paint",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 29,
+ 34
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 29,
+ 34
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ },
+ "node": {
+ "type": "ImportSpecifier",
+ "importKind": "value",
+ "imported": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 29,
+ 34
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ },
+ "local": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 29,
+ 34
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ },
+ "range": [
+ 29,
+ 34
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 290,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 29,
+ 34
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "canvas",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 114,
+ 120
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 11
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "name": {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 114,
+ 120
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 11
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ "node": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 135,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'2d'",
+ "value": "2d",
+ "range": [
+ 163,
+ 167
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 40
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 145,
+ 151
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "getContext",
+ "range": [
+ 152,
+ 162
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 25
+ },
+ "end": {
+ "line": 9,
+ "column": 35
+ }
+ }
+ },
+ "range": [
+ 145,
+ 162
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 35
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 145,
+ 168
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 41
+ }
+ }
+ },
+ "range": [
+ 135,
+ 168
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 41
+ }
+ }
+ }
+ ],
+ "range": [
+ 129,
+ 169
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 2
+ },
+ "end": {
+ "line": 9,
+ "column": 42
+ }
+ }
+ },
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "let",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "FunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 249,
+ 254
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 279,
+ 283
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 257,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 257,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 249,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 249,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 305,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 19
+ },
+ "end": {
+ "line": 14,
+ "column": 20
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 290,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 290,
+ 307
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 21
+ }
+ }
+ },
+ "range": [
+ 290,
+ 308
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 22
+ }
+ }
+ }
+ ],
+ "range": [
+ 243,
+ 313
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 54
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 235,
+ 239
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 240,
+ 241
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ }
+ ],
+ "range": [
+ 226,
+ 313
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 37
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 204,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 204,
+ 314
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 15,
+ "column": 5
+ }
+ }
+ },
+ "range": [
+ 196,
+ 314
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 15,
+ "column": 5
+ }
+ }
+ }
+ ],
+ "range": [
+ 192,
+ 315
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 3
+ },
+ "end": {
+ "line": 15,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 360,
+ 365
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "cancelAnimationFrame",
+ "range": [
+ 339,
+ 359
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 339,
+ 366
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 339,
+ 367
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 32
+ }
+ }
+ }
+ ],
+ "range": [
+ 333,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 16
+ },
+ "end": {
+ "line": 19,
+ "column": 4
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [],
+ "range": [
+ 327,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 10
+ },
+ "end": {
+ "line": 19,
+ "column": 4
+ }
+ }
+ },
+ "range": [
+ 320,
+ 373
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 3
+ },
+ "end": {
+ "line": 19,
+ "column": 5
+ }
+ }
+ }
+ ],
+ "range": [
+ 187,
+ 377
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 16
+ },
+ "end": {
+ "line": 20,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [],
+ "range": [
+ 181,
+ 377
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 20,
+ "column": 3
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "$effect",
+ "range": [
+ 173,
+ 180
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 173,
+ 378
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 20,
+ "column": 4
+ }
+ }
+ },
+ "range": [
+ 173,
+ 379
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 20,
+ "column": 5
+ }
+ }
+ }
+ ],
+ "range": [
+ 125,
+ 382
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 22
+ },
+ "end": {
+ "line": 21,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 114,
+ 120
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 11
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 113,
+ 382
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 21,
+ "column": 2
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 145,
+ 151
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 114,
+ 120
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 11
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "context",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 135,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 135,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 135,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'2d'",
+ "value": "2d",
+ "range": [
+ 163,
+ 167
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 40
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 145,
+ 151
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "getContext",
+ "range": [
+ 152,
+ 162
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 25
+ },
+ "end": {
+ "line": 9,
+ "column": 35
+ }
+ }
+ },
+ "range": [
+ 145,
+ 162
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 35
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 145,
+ 168
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 41
+ }
+ }
+ },
+ "range": [
+ 135,
+ 168
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 41
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 135,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 135,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 135,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 135,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 135,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 145,
+ 151
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 114,
+ 120
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 11
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$effect",
+ "range": [
+ 173,
+ 180
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "frame",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "FunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 249,
+ 254
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 279,
+ 283
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 257,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 257,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 249,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 249,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 305,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 19
+ },
+ "end": {
+ "line": 14,
+ "column": 20
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 290,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 290,
+ 307
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 21
+ }
+ }
+ },
+ "range": [
+ 290,
+ 308
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 22
+ }
+ }
+ }
+ ],
+ "range": [
+ 243,
+ 313
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 54
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 235,
+ 239
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 240,
+ 241
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ }
+ ],
+ "range": [
+ 226,
+ 313
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 37
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 204,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 204,
+ 314
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 15,
+ "column": 5
+ }
+ }
+ },
+ "range": [
+ 196,
+ 314
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 15,
+ "column": 5
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 249,
+ 254
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": false,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 360,
+ 365
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 30
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 204,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function-expression-name",
+ "variables": [
+ {
+ "name": "loop",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 235,
+ 239
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "FunctionName",
+ "name": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 235,
+ 239
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ },
+ "node": {
+ "type": "FunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 249,
+ 254
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 279,
+ 283
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 257,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 257,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 249,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 249,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 305,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 19
+ },
+ "end": {
+ "line": 14,
+ "column": 20
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 290,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 290,
+ 307
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 21
+ }
+ }
+ },
+ "range": [
+ 290,
+ 308
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 22
+ }
+ }
+ }
+ ],
+ "range": [
+ 243,
+ 313
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 54
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 235,
+ 239
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 240,
+ 241
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ }
+ ],
+ "range": [
+ 226,
+ 313
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 37
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 279,
+ 283
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 235,
+ 239
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "arguments",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "t",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 240,
+ 241
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "name": {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 240,
+ 241
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ },
+ "node": {
+ "type": "FunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 249,
+ 254
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 279,
+ 283
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 257,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 257,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 249,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 249,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 305,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 19
+ },
+ "end": {
+ "line": 14,
+ "column": 20
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 290,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 290,
+ 307
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 21
+ }
+ }
+ },
+ "range": [
+ 290,
+ 308
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 22
+ }
+ }
+ }
+ ],
+ "range": [
+ 243,
+ 313
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 54
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 235,
+ 239
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 240,
+ 241
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ }
+ ],
+ "range": [
+ 226,
+ 313
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 37
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 305,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 19
+ },
+ "end": {
+ "line": 14,
+ "column": 20
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 240,
+ 241
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 249,
+ 254
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": false,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 257,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 279,
+ 283
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 235,
+ 239
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 290,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 29,
+ 34
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 135,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 305,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 19
+ },
+ "end": {
+ "line": 14,
+ "column": 20
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 240,
+ 241
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 249,
+ 254
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": false,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 257,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 279,
+ 283
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 235,
+ 239
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 290,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 29,
+ 34
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 135,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 249,
+ 254
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": false,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 257,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 290,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 29,
+ 34
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 135,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "type": "function",
+ "variables": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "cancelAnimationFrame",
+ "range": [
+ 339,
+ 359
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 360,
+ 365
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 30
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "cancelAnimationFrame",
+ "range": [
+ 339,
+ 359
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 360,
+ 365
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 30
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 196,
+ 201
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 204,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 257,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 290,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 29,
+ 34
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 135,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "cancelAnimationFrame",
+ "range": [
+ 339,
+ 359
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$effect",
+ "range": [
+ 173,
+ 180
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 204,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 257,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 290,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 29,
+ 34
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "cancelAnimationFrame",
+ "range": [
+ 339,
+ 359
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$effect",
+ "range": [
+ 173,
+ 180
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 204,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 257,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "cancelAnimationFrame",
+ "range": [
+ 339,
+ 359
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 204,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 257,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "cancelAnimationFrame",
+ "range": [
+ 339,
+ 359
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach01-input.svelte b/tests/fixtures/parser/ast/svelte5/attach01-input.svelte
new file mode 100644
index 00000000..dbd10390
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach01-input.svelte
@@ -0,0 +1,12 @@
+
+
+...
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach01-output.json b/tests/fixtures/parser/ast/svelte5/attach01-output.json
new file mode 100644
index 00000000..674fba42
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach01-output.json
@@ -0,0 +1,1572 @@
+{
+ "type": "Program",
+ "body": [
+ {
+ "type": "SvelteScriptElement",
+ "name": {
+ "type": "SvelteName",
+ "name": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [],
+ "selfClosing": false,
+ "range": [
+ 0,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ "body": [
+ {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 113,
+ 120
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 14
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "nodeName",
+ "range": [
+ 121,
+ 129
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 22
+ },
+ "end": {
+ "line": 4,
+ "column": 30
+ }
+ }
+ },
+ "range": [
+ 113,
+ 129
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 14
+ },
+ "end": {
+ "line": 4,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 101,
+ 108
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "log",
+ "range": [
+ 109,
+ 112
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 10
+ },
+ "end": {
+ "line": 4,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 101,
+ 112
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 13
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 101,
+ 130
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 101,
+ 131
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'cleaning up'",
+ "value": "cleaning up",
+ "range": [
+ 174,
+ 187
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 15
+ },
+ "end": {
+ "line": 7,
+ "column": 28
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 162,
+ 169
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 10
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "log",
+ "range": [
+ 170,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 11
+ },
+ "end": {
+ "line": 7,
+ "column": 14
+ }
+ }
+ },
+ "range": [
+ 162,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 14
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 162,
+ 188
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 29
+ }
+ }
+ },
+ "range": [
+ 162,
+ 189
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "range": [
+ 157,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 8,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [],
+ "range": [
+ 151,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 9
+ },
+ "end": {
+ "line": 8,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 144,
+ 194
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 8,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 97,
+ 197
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 32
+ },
+ "end": {
+ "line": 9,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "range": [
+ 75,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 10
+ },
+ "end": {
+ "line": 3,
+ "column": 22
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 88,
+ 95
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 23
+ },
+ "end": {
+ "line": 3,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "range": [
+ 66,
+ 197
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 9,
+ "column": 2
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 198,
+ 207
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 0
+ },
+ "end": {
+ "line": 10,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 0,
+ 207
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 10,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 207,
+ 209
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteElement",
+ "kind": "html",
+ "name": {
+ "type": "SvelteName",
+ "name": "div",
+ "range": [
+ 210,
+ 213
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 1
+ },
+ "end": {
+ "line": 12,
+ "column": 4
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteAttachTag",
+ "expression": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "range": [
+ 223,
+ 235
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 14
+ },
+ "end": {
+ "line": 12,
+ "column": 26
+ }
+ }
+ },
+ "range": [
+ 214,
+ 236
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 5
+ },
+ "end": {
+ "line": 12,
+ "column": 27
+ }
+ }
+ }
+ ],
+ "selfClosing": false,
+ "range": [
+ 209,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 0
+ },
+ "end": {
+ "line": 12,
+ "column": 28
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "SvelteText",
+ "value": "...",
+ "range": [
+ 237,
+ 240
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 28
+ },
+ "end": {
+ "line": 12,
+ "column": 31
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 240,
+ 246
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 31
+ },
+ "end": {
+ "line": 12,
+ "column": 37
+ }
+ }
+ },
+ "range": [
+ 209,
+ 246
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 0
+ },
+ "end": {
+ "line": 12,
+ "column": 37
+ }
+ }
+ }
+ ],
+ "sourceType": "module",
+ "comments": [
+ {
+ "type": "Block",
+ "value": "* @type {import('svelte/attachments').Attachment} ",
+ "range": [
+ 10,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 55
+ }
+ }
+ },
+ {
+ "type": "Line",
+ "value": " 'DIV'",
+ "range": [
+ 132,
+ 140
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 33
+ },
+ "end": {
+ "line": 4,
+ "column": 41
+ }
+ }
+ }
+ ],
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 0,
+ 1
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 7,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 7
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "function",
+ "range": [
+ 66,
+ 74
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 3,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "myAttachment",
+ "range": [
+ 75,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 10
+ },
+ "end": {
+ "line": 3,
+ "column": 22
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 87,
+ 88
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 22
+ },
+ "end": {
+ "line": 3,
+ "column": 23
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "element",
+ "range": [
+ 88,
+ 95
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 23
+ },
+ "end": {
+ "line": 3,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 95,
+ 96
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 30
+ },
+ "end": {
+ "line": 3,
+ "column": 31
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 97,
+ 98
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 32
+ },
+ "end": {
+ "line": 3,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "console",
+ "range": [
+ 101,
+ 108
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ".",
+ "range": [
+ 108,
+ 109
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 9
+ },
+ "end": {
+ "line": 4,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "log",
+ "range": [
+ 109,
+ 112
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 10
+ },
+ "end": {
+ "line": 4,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 112,
+ 113
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 13
+ },
+ "end": {
+ "line": 4,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "element",
+ "range": [
+ 113,
+ 120
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 14
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ".",
+ "range": [
+ 120,
+ 121
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 21
+ },
+ "end": {
+ "line": 4,
+ "column": 22
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "nodeName",
+ "range": [
+ 121,
+ 129
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 22
+ },
+ "end": {
+ "line": 4,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 129,
+ 130
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 30
+ },
+ "end": {
+ "line": 4,
+ "column": 31
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 130,
+ 131
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 31
+ },
+ "end": {
+ "line": 4,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "return",
+ "range": [
+ 144,
+ 150
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 6,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 151,
+ 152
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 9
+ },
+ "end": {
+ "line": 6,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 152,
+ 153
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 10
+ },
+ "end": {
+ "line": 6,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=>",
+ "range": [
+ 154,
+ 156
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 12
+ },
+ "end": {
+ "line": 6,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 157,
+ 158
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 6,
+ "column": 16
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "console",
+ "range": [
+ 162,
+ 169
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ".",
+ "range": [
+ 169,
+ 170
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 10
+ },
+ "end": {
+ "line": 7,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "log",
+ "range": [
+ 170,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 11
+ },
+ "end": {
+ "line": 7,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 173,
+ 174
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 14
+ },
+ "end": {
+ "line": 7,
+ "column": 15
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'cleaning up'",
+ "range": [
+ 174,
+ 187
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 15
+ },
+ "end": {
+ "line": 7,
+ "column": 28
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 187,
+ 188
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 28
+ },
+ "end": {
+ "line": 7,
+ "column": 29
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 188,
+ 189
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 29
+ },
+ "end": {
+ "line": 7,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 192,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 2
+ },
+ "end": {
+ "line": 8,
+ "column": 3
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 193,
+ 194
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 3
+ },
+ "end": {
+ "line": 8,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 196,
+ 197
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 1
+ },
+ "end": {
+ "line": 9,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 198,
+ 199
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 0
+ },
+ "end": {
+ "line": 10,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 199,
+ 200
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 1
+ },
+ "end": {
+ "line": 10,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 200,
+ 206
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 2
+ },
+ "end": {
+ "line": 10,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 206,
+ 207
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 8
+ },
+ "end": {
+ "line": 10,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 207,
+ 209
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 209,
+ 210
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 0
+ },
+ "end": {
+ "line": 12,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "div",
+ "range": [
+ 210,
+ 213
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 1
+ },
+ "end": {
+ "line": 12,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 214,
+ 215
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 5
+ },
+ "end": {
+ "line": 12,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "MustacheKeyword",
+ "value": "@attach",
+ "range": [
+ 215,
+ 222
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 6
+ },
+ "end": {
+ "line": 12,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "myAttachment",
+ "range": [
+ 223,
+ 235
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 14
+ },
+ "end": {
+ "line": 12,
+ "column": 26
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 235,
+ 236
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 26
+ },
+ "end": {
+ "line": 12,
+ "column": 27
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 236,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 27
+ },
+ "end": {
+ "line": 12,
+ "column": 28
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "...",
+ "range": [
+ 237,
+ 240
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 28
+ },
+ "end": {
+ "line": 12,
+ "column": 31
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 240,
+ 241
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 31
+ },
+ "end": {
+ "line": 12,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 241,
+ 242
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 32
+ },
+ "end": {
+ "line": 12,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "div",
+ "range": [
+ 242,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 33
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 245,
+ 246
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 37
+ }
+ }
+ }
+ ],
+ "range": [
+ 0,
+ 246
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 12,
+ "column": 37
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach01-scope-output.json b/tests/fixtures/parser/ast/svelte5/attach01-scope-output.json
new file mode 100644
index 00000000..e6423bc4
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach01-scope-output.json
@@ -0,0 +1,1356 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "$$slots",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$restProps",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$state",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$derived",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$effect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$bindable",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$inspect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$host",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "myAttachment",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "range": [
+ 75,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 10
+ },
+ "end": {
+ "line": 3,
+ "column": 22
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "FunctionName",
+ "name": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "range": [
+ 75,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 10
+ },
+ "end": {
+ "line": 3,
+ "column": 22
+ }
+ }
+ },
+ "node": {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 113,
+ 120
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 14
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "nodeName",
+ "range": [
+ 121,
+ 129
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 22
+ },
+ "end": {
+ "line": 4,
+ "column": 30
+ }
+ }
+ },
+ "range": [
+ 113,
+ 129
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 14
+ },
+ "end": {
+ "line": 4,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 101,
+ 108
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "log",
+ "range": [
+ 109,
+ 112
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 10
+ },
+ "end": {
+ "line": 4,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 101,
+ 112
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 13
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 101,
+ 130
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 101,
+ 131
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'cleaning up'",
+ "value": "cleaning up",
+ "range": [
+ 174,
+ 187
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 15
+ },
+ "end": {
+ "line": 7,
+ "column": 28
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 162,
+ 169
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 10
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "log",
+ "range": [
+ 170,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 11
+ },
+ "end": {
+ "line": 7,
+ "column": 14
+ }
+ }
+ },
+ "range": [
+ 162,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 14
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 162,
+ 188
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 29
+ }
+ }
+ },
+ "range": [
+ 162,
+ 189
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "range": [
+ 157,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 8,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [],
+ "range": [
+ 151,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 9
+ },
+ "end": {
+ "line": 8,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 144,
+ 194
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 8,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 97,
+ 197
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 32
+ },
+ "end": {
+ "line": 9,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "range": [
+ 75,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 10
+ },
+ "end": {
+ "line": 3,
+ "column": 22
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 88,
+ 95
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 23
+ },
+ "end": {
+ "line": 3,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "range": [
+ 66,
+ 197
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 9,
+ "column": 2
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "range": [
+ 223,
+ 235
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 14
+ },
+ "end": {
+ "line": 12,
+ "column": 26
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "range": [
+ 75,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 10
+ },
+ "end": {
+ "line": 3,
+ "column": 22
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "range": [
+ 223,
+ 235
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 14
+ },
+ "end": {
+ "line": 12,
+ "column": 26
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "range": [
+ 75,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 10
+ },
+ "end": {
+ "line": 3,
+ "column": 22
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "arguments",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "element",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 88,
+ 95
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 23
+ },
+ "end": {
+ "line": 3,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "name": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 88,
+ 95
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 23
+ },
+ "end": {
+ "line": 3,
+ "column": 30
+ }
+ }
+ },
+ "node": {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 113,
+ 120
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 14
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "nodeName",
+ "range": [
+ 121,
+ 129
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 22
+ },
+ "end": {
+ "line": 4,
+ "column": 30
+ }
+ }
+ },
+ "range": [
+ 113,
+ 129
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 14
+ },
+ "end": {
+ "line": 4,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 101,
+ 108
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "log",
+ "range": [
+ 109,
+ 112
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 10
+ },
+ "end": {
+ "line": 4,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 101,
+ 112
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 13
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 101,
+ 130
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 101,
+ 131
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'cleaning up'",
+ "value": "cleaning up",
+ "range": [
+ 174,
+ 187
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 15
+ },
+ "end": {
+ "line": 7,
+ "column": 28
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 162,
+ 169
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 10
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "log",
+ "range": [
+ 170,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 11
+ },
+ "end": {
+ "line": 7,
+ "column": 14
+ }
+ }
+ },
+ "range": [
+ 162,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 14
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 162,
+ 188
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 29
+ }
+ }
+ },
+ "range": [
+ 162,
+ 189
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "range": [
+ 157,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 8,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [],
+ "range": [
+ 151,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 9
+ },
+ "end": {
+ "line": 8,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 144,
+ 194
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 2
+ },
+ "end": {
+ "line": 8,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 97,
+ 197
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 32
+ },
+ "end": {
+ "line": 9,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "myAttachment",
+ "range": [
+ 75,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 10
+ },
+ "end": {
+ "line": 3,
+ "column": 22
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 88,
+ 95
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 23
+ },
+ "end": {
+ "line": 3,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "range": [
+ 66,
+ 197
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 9,
+ "column": 2
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 113,
+ 120
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 14
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 88,
+ 95
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 23
+ },
+ "end": {
+ "line": 3,
+ "column": 30
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 101,
+ 108
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 113,
+ 120
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 14
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 88,
+ 95
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 23
+ },
+ "end": {
+ "line": 3,
+ "column": 30
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 162,
+ 169
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 10
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ],
+ "childScopes": [],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 162,
+ 169
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 10
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 101,
+ 108
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 162,
+ 169
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 10
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 101,
+ 108
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 162,
+ 169
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 10
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 101,
+ 108
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 2
+ },
+ "end": {
+ "line": 4,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "console",
+ "range": [
+ 162,
+ 169
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 3
+ },
+ "end": {
+ "line": 7,
+ "column": 10
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach02-input.svelte b/tests/fixtures/parser/ast/svelte5/attach02-input.svelte
new file mode 100644
index 00000000..130adc7f
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach02-input.svelte
@@ -0,0 +1,22 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach02-output.json b/tests/fixtures/parser/ast/svelte5/attach02-output.json
new file mode 100644
index 00000000..3db188f7
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach02-output.json
@@ -0,0 +1,2558 @@
+{
+ "type": "Program",
+ "body": [
+ {
+ "type": "SvelteScriptElement",
+ "name": {
+ "type": "SvelteName",
+ "name": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [],
+ "selfClosing": false,
+ "range": [
+ 0,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ "body": [
+ {
+ "type": "ImportDeclaration",
+ "source": {
+ "type": "Literal",
+ "raw": "'tippy.js'",
+ "value": "tippy.js",
+ "range": [
+ 28,
+ 38
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 19
+ },
+ "end": {
+ "line": 2,
+ "column": 29
+ }
+ }
+ },
+ "specifiers": [
+ {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ ],
+ "range": [
+ 10,
+ 39
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "VariableDeclaration",
+ "kind": "let",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 46,
+ 53
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 5
+ },
+ "end": {
+ "line": 4,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'Hello!'",
+ "value": "Hello!",
+ "range": [
+ 63,
+ 71
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 22
+ },
+ "end": {
+ "line": 4,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 56,
+ 62
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 56,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 46,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 5
+ },
+ "end": {
+ "line": 4,
+ "column": 31
+ }
+ }
+ }
+ ],
+ "range": [
+ 42,
+ 73
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 1
+ },
+ "end": {
+ "line": 4,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 230,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 25
+ },
+ "end": {
+ "line": 12,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 255,
+ 266
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 34
+ },
+ "end": {
+ "line": 12,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 240,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 19
+ },
+ "end": {
+ "line": 12,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 240,
+ 267
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 19
+ },
+ "end": {
+ "line": 12,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 230,
+ 267
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 224,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 3
+ },
+ "end": {
+ "line": 12,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 279,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 10
+ },
+ "end": {
+ "line": 13,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 287,
+ 294
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 18
+ },
+ "end": {
+ "line": 13,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 279,
+ 294
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 10
+ },
+ "end": {
+ "line": 13,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 272,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 3
+ },
+ "end": {
+ "line": 13,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 219,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 22
+ },
+ "end": {
+ "line": 14,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 207,
+ 214
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 206,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 9
+ },
+ "end": {
+ "line": 14,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 199,
+ 300
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 14,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 195,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 27
+ },
+ "end": {
+ "line": 15,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 178,
+ 185
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 17
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 186,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 18
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ }
+ ],
+ "range": [
+ 169,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 1
+ },
+ "end": {
+ "line": 15,
+ "column": 2
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 304,
+ 313
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 0
+ },
+ "end": {
+ "line": 16,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 0,
+ 313
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 16,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 313,
+ 315
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 9
+ },
+ "end": {
+ "line": 18,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteElement",
+ "kind": "html",
+ "name": {
+ "type": "SvelteName",
+ "name": "input",
+ "range": [
+ 316,
+ 321
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 1
+ },
+ "end": {
+ "line": 18,
+ "column": 6
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteDirective",
+ "kind": "Binding",
+ "key": {
+ "type": "SvelteDirectiveKey",
+ "name": {
+ "type": "SvelteName",
+ "name": "value",
+ "range": [
+ 327,
+ 332
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 12
+ },
+ "end": {
+ "line": 18,
+ "column": 17
+ }
+ }
+ },
+ "modifiers": [],
+ "range": [
+ 322,
+ 332
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 7
+ },
+ "end": {
+ "line": 18,
+ "column": 17
+ }
+ }
+ },
+ "expression": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 334,
+ 341
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 19
+ },
+ "end": {
+ "line": 18,
+ "column": 26
+ }
+ }
+ },
+ "shorthand": false,
+ "range": [
+ 322,
+ 342
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 7
+ },
+ "end": {
+ "line": 18,
+ "column": 27
+ }
+ }
+ }
+ ],
+ "selfClosing": true,
+ "range": [
+ 315,
+ 345
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 0
+ },
+ "end": {
+ "line": 18,
+ "column": 30
+ }
+ }
+ },
+ "children": [],
+ "endTag": null,
+ "range": [
+ 315,
+ 345
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 0
+ },
+ "end": {
+ "line": 18,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 345,
+ 347
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 30
+ },
+ "end": {
+ "line": 20,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteElement",
+ "kind": "html",
+ "name": {
+ "type": "SvelteName",
+ "name": "button",
+ "range": [
+ 348,
+ 354
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 1
+ },
+ "end": {
+ "line": 20,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteAttachTag",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 372,
+ 379
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 25
+ },
+ "end": {
+ "line": 20,
+ "column": 32
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 364,
+ 371
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 17
+ },
+ "end": {
+ "line": 20,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 364,
+ 380
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 17
+ },
+ "end": {
+ "line": 20,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 355,
+ 381
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 8
+ },
+ "end": {
+ "line": 20,
+ "column": 34
+ }
+ }
+ }
+ ],
+ "selfClosing": false,
+ "range": [
+ 347,
+ 382
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 0
+ },
+ "end": {
+ "line": 20,
+ "column": 35
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "SvelteText",
+ "value": "\n\tHover me\n",
+ "range": [
+ 382,
+ 393
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 35
+ },
+ "end": {
+ "line": 22,
+ "column": 0
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 393,
+ 402
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 0
+ },
+ "end": {
+ "line": 22,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 347,
+ 402
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 0
+ },
+ "end": {
+ "line": 22,
+ "column": 9
+ }
+ }
+ }
+ ],
+ "sourceType": "module",
+ "comments": [
+ {
+ "type": "Block",
+ "value": "*\n\t * @param {string} content\n\t * @returns {import('svelte/attachments').Attachment}\n\t ",
+ "range": [
+ 76,
+ 167
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 1
+ },
+ "end": {
+ "line": 9,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 0,
+ 1
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 7,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 7
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "import",
+ "range": [
+ 10,
+ 16
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "from",
+ "range": [
+ 23,
+ 27
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 14
+ },
+ "end": {
+ "line": 2,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'tippy.js'",
+ "range": [
+ 28,
+ 38
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 19
+ },
+ "end": {
+ "line": 2,
+ "column": 29
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 38,
+ 39
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 29
+ },
+ "end": {
+ "line": 2,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "let",
+ "range": [
+ 42,
+ 45
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 1
+ },
+ "end": {
+ "line": 4,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 46,
+ 53
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 5
+ },
+ "end": {
+ "line": 4,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 54,
+ 55
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 13
+ },
+ "end": {
+ "line": 4,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "$state",
+ "range": [
+ 56,
+ 62
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 62,
+ 63
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 21
+ },
+ "end": {
+ "line": 4,
+ "column": 22
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'Hello!'",
+ "range": [
+ 63,
+ 71
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 22
+ },
+ "end": {
+ "line": 4,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 71,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 30
+ },
+ "end": {
+ "line": 4,
+ "column": 31
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 72,
+ 73
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 31
+ },
+ "end": {
+ "line": 4,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "function",
+ "range": [
+ 169,
+ 177
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 1
+ },
+ "end": {
+ "line": 10,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tooltip",
+ "range": [
+ 178,
+ 185
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 185,
+ 186
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 17
+ },
+ "end": {
+ "line": 10,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 186,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 18
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 193,
+ 194
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 25
+ },
+ "end": {
+ "line": 10,
+ "column": 26
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 195,
+ 196
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 27
+ },
+ "end": {
+ "line": 10,
+ "column": 28
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "return",
+ "range": [
+ 199,
+ 205
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 206,
+ 207
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 9
+ },
+ "end": {
+ "line": 11,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "element",
+ "range": [
+ 207,
+ 214
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 214,
+ 215
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 17
+ },
+ "end": {
+ "line": 11,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=>",
+ "range": [
+ 216,
+ 218
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 19
+ },
+ "end": {
+ "line": 11,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 219,
+ 220
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 22
+ },
+ "end": {
+ "line": 11,
+ "column": 23
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "const",
+ "range": [
+ 224,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 3
+ },
+ "end": {
+ "line": 12,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tooltip",
+ "range": [
+ 230,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 16
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 238,
+ 239
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 17
+ },
+ "end": {
+ "line": 12,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tippy",
+ "range": [
+ 240,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 19
+ },
+ "end": {
+ "line": 12,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 245,
+ 246
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 24
+ },
+ "end": {
+ "line": 12,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 25
+ },
+ "end": {
+ "line": 12,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ",",
+ "range": [
+ 253,
+ 254
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 32
+ },
+ "end": {
+ "line": 12,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 255,
+ 256
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 34
+ },
+ "end": {
+ "line": 12,
+ "column": 35
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 265,
+ 266
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 44
+ },
+ "end": {
+ "line": 12,
+ "column": 45
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 266,
+ 267
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 45
+ },
+ "end": {
+ "line": 12,
+ "column": 46
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 267,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "return",
+ "range": [
+ 272,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 3
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tooltip",
+ "range": [
+ 279,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 10
+ },
+ "end": {
+ "line": 13,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ".",
+ "range": [
+ 286,
+ 287
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 17
+ },
+ "end": {
+ "line": 13,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "destroy",
+ "range": [
+ 287,
+ 294
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 18
+ },
+ "end": {
+ "line": 13,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 294,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 25
+ },
+ "end": {
+ "line": 13,
+ "column": 26
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 298,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 2
+ },
+ "end": {
+ "line": 14,
+ "column": 3
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 299,
+ 300
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 3
+ },
+ "end": {
+ "line": 14,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 302,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 1
+ },
+ "end": {
+ "line": 15,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 304,
+ 305
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 0
+ },
+ "end": {
+ "line": 16,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 305,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 1
+ },
+ "end": {
+ "line": 16,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 306,
+ 312
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 2
+ },
+ "end": {
+ "line": 16,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 312,
+ 313
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 8
+ },
+ "end": {
+ "line": 16,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 313,
+ 315
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 9
+ },
+ "end": {
+ "line": 18,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 315,
+ 316
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 0
+ },
+ "end": {
+ "line": 18,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "input",
+ "range": [
+ 316,
+ 321
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 1
+ },
+ "end": {
+ "line": 18,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "bind",
+ "range": [
+ 322,
+ 326
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 7
+ },
+ "end": {
+ "line": 18,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ":",
+ "range": [
+ 326,
+ 327
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 11
+ },
+ "end": {
+ "line": 18,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "value",
+ "range": [
+ 327,
+ 332
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 12
+ },
+ "end": {
+ "line": 18,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 332,
+ 333
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 17
+ },
+ "end": {
+ "line": 18,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 333,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 18
+ },
+ "end": {
+ "line": 18,
+ "column": 19
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 334,
+ 341
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 19
+ },
+ "end": {
+ "line": 18,
+ "column": 26
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 341,
+ 342
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 26
+ },
+ "end": {
+ "line": 18,
+ "column": 27
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 343,
+ 344
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 28
+ },
+ "end": {
+ "line": 18,
+ "column": 29
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 344,
+ 345
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 29
+ },
+ "end": {
+ "line": 18,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 345,
+ 347
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 30
+ },
+ "end": {
+ "line": 20,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 347,
+ 348
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 0
+ },
+ "end": {
+ "line": 20,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "button",
+ "range": [
+ 348,
+ 354
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 1
+ },
+ "end": {
+ "line": 20,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 355,
+ 356
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 8
+ },
+ "end": {
+ "line": 20,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "MustacheKeyword",
+ "value": "@attach",
+ "range": [
+ 356,
+ 363
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 9
+ },
+ "end": {
+ "line": 20,
+ "column": 16
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tooltip",
+ "range": [
+ 364,
+ 371
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 17
+ },
+ "end": {
+ "line": 20,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 371,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 24
+ },
+ "end": {
+ "line": 20,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 372,
+ 379
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 25
+ },
+ "end": {
+ "line": 20,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 379,
+ 380
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 32
+ },
+ "end": {
+ "line": 20,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 380,
+ 381
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 33
+ },
+ "end": {
+ "line": 20,
+ "column": 34
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 381,
+ 382
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 34
+ },
+ "end": {
+ "line": 20,
+ "column": 35
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\t",
+ "range": [
+ 382,
+ 384
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 35
+ },
+ "end": {
+ "line": 21,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "Hover",
+ "range": [
+ 384,
+ 389
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 1
+ },
+ "end": {
+ "line": 21,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": " ",
+ "range": [
+ 389,
+ 390
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 6
+ },
+ "end": {
+ "line": 21,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "me",
+ "range": [
+ 390,
+ 392
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 7
+ },
+ "end": {
+ "line": 21,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n",
+ "range": [
+ 392,
+ 393
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 9
+ },
+ "end": {
+ "line": 22,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 393,
+ 394
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 0
+ },
+ "end": {
+ "line": 22,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 394,
+ 395
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 1
+ },
+ "end": {
+ "line": 22,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "button",
+ "range": [
+ 395,
+ 401
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 2
+ },
+ "end": {
+ "line": 22,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 401,
+ 402
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 8
+ },
+ "end": {
+ "line": 22,
+ "column": 9
+ }
+ }
+ }
+ ],
+ "range": [
+ 0,
+ 402
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 22,
+ "column": 9
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach02-scope-output.json b/tests/fixtures/parser/ast/svelte5/attach02-scope-output.json
new file mode 100644
index 00000000..ccd49d11
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach02-scope-output.json
@@ -0,0 +1,2743 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "$$slots",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$restProps",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$state",
+ "identifiers": [],
+ "defs": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 56,
+ 62
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ },
+ {
+ "name": "$derived",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$effect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$bindable",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$inspect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$host",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "tippy",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "node": {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 240,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 19
+ },
+ "end": {
+ "line": 12,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "content",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 46,
+ 53
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 5
+ },
+ "end": {
+ "line": 4,
+ "column": 12
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 46,
+ 53
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 5
+ },
+ "end": {
+ "line": 4,
+ "column": 12
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 46,
+ 53
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 5
+ },
+ "end": {
+ "line": 4,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'Hello!'",
+ "value": "Hello!",
+ "range": [
+ 63,
+ 71
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 22
+ },
+ "end": {
+ "line": 4,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 56,
+ 62
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 56,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 46,
+ 72
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 5
+ },
+ "end": {
+ "line": 4,
+ "column": 31
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 46,
+ 53
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 5
+ },
+ "end": {
+ "line": 4,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 46,
+ 53
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 5
+ },
+ "end": {
+ "line": 4,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 334,
+ 341
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 19
+ },
+ "end": {
+ "line": 18,
+ "column": 26
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 46,
+ 53
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 5
+ },
+ "end": {
+ "line": 4,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 372,
+ 379
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 25
+ },
+ "end": {
+ "line": 20,
+ "column": 32
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 46,
+ 53
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 5
+ },
+ "end": {
+ "line": 4,
+ "column": 12
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "tooltip",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 178,
+ 185
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "FunctionName",
+ "name": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 178,
+ 185
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 17
+ }
+ }
+ },
+ "node": {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 230,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 25
+ },
+ "end": {
+ "line": 12,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 255,
+ 266
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 34
+ },
+ "end": {
+ "line": 12,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 240,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 19
+ },
+ "end": {
+ "line": 12,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 240,
+ 267
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 19
+ },
+ "end": {
+ "line": 12,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 230,
+ 267
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 224,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 3
+ },
+ "end": {
+ "line": 12,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 279,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 10
+ },
+ "end": {
+ "line": 13,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 287,
+ 294
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 18
+ },
+ "end": {
+ "line": 13,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 279,
+ 294
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 10
+ },
+ "end": {
+ "line": 13,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 272,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 3
+ },
+ "end": {
+ "line": 13,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 219,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 22
+ },
+ "end": {
+ "line": 14,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 207,
+ 214
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 206,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 9
+ },
+ "end": {
+ "line": 14,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 199,
+ 300
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 14,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 195,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 27
+ },
+ "end": {
+ "line": 15,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 178,
+ 185
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 17
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 186,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 18
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ }
+ ],
+ "range": [
+ 169,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 1
+ },
+ "end": {
+ "line": 15,
+ "column": 2
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 364,
+ 371
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 17
+ },
+ "end": {
+ "line": 20,
+ "column": 24
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 178,
+ 185
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 17
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 46,
+ 53
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 5
+ },
+ "end": {
+ "line": 4,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 46,
+ 53
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 5
+ },
+ "end": {
+ "line": 4,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 56,
+ 62
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 334,
+ 341
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 19
+ },
+ "end": {
+ "line": 18,
+ "column": 26
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 46,
+ 53
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 5
+ },
+ "end": {
+ "line": 4,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 364,
+ 371
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 17
+ },
+ "end": {
+ "line": 20,
+ "column": 24
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 178,
+ 185
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 17
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 372,
+ 379
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 25
+ },
+ "end": {
+ "line": 20,
+ "column": 32
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 46,
+ 53
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 5
+ },
+ "end": {
+ "line": 4,
+ "column": 12
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "arguments",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "content",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 186,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 18
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "name": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 186,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 18
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ },
+ "node": {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 230,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 25
+ },
+ "end": {
+ "line": 12,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 255,
+ 266
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 34
+ },
+ "end": {
+ "line": 12,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 240,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 19
+ },
+ "end": {
+ "line": 12,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 240,
+ 267
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 19
+ },
+ "end": {
+ "line": 12,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 230,
+ 267
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 224,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 3
+ },
+ "end": {
+ "line": 12,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 279,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 10
+ },
+ "end": {
+ "line": 13,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 287,
+ 294
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 18
+ },
+ "end": {
+ "line": 13,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 279,
+ 294
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 10
+ },
+ "end": {
+ "line": 13,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 272,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 3
+ },
+ "end": {
+ "line": 13,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 219,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 22
+ },
+ "end": {
+ "line": 14,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 207,
+ 214
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 206,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 9
+ },
+ "end": {
+ "line": 14,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 199,
+ 300
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 14,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 195,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 27
+ },
+ "end": {
+ "line": 15,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 178,
+ 185
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 10
+ },
+ "end": {
+ "line": 10,
+ "column": 17
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 186,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 18
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ }
+ ],
+ "range": [
+ 169,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 1
+ },
+ "end": {
+ "line": 15,
+ "column": 2
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 186,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 18
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "element",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 207,
+ 214
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "name": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 207,
+ 214
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ "node": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 230,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 25
+ },
+ "end": {
+ "line": 12,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 255,
+ 266
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 34
+ },
+ "end": {
+ "line": 12,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 240,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 19
+ },
+ "end": {
+ "line": 12,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 240,
+ 267
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 19
+ },
+ "end": {
+ "line": 12,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 230,
+ 267
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 224,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 3
+ },
+ "end": {
+ "line": 12,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 279,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 10
+ },
+ "end": {
+ "line": 13,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 287,
+ 294
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 18
+ },
+ "end": {
+ "line": 13,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 279,
+ 294
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 10
+ },
+ "end": {
+ "line": 13,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 272,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 3
+ },
+ "end": {
+ "line": 13,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 219,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 22
+ },
+ "end": {
+ "line": 14,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 207,
+ 214
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 206,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 9
+ },
+ "end": {
+ "line": 14,
+ "column": 3
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 25
+ },
+ "end": {
+ "line": 12,
+ "column": 32
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 207,
+ 214
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "tooltip",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 230,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 16
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 230,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 16
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 230,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 25
+ },
+ "end": {
+ "line": 12,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 255,
+ 266
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 34
+ },
+ "end": {
+ "line": 12,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 240,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 19
+ },
+ "end": {
+ "line": 12,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 240,
+ 267
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 19
+ },
+ "end": {
+ "line": 12,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 230,
+ 267
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 46
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 230,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 16
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 230,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 16
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 279,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 10
+ },
+ "end": {
+ "line": 13,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 230,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 16
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 230,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 16
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 230,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 16
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 240,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 19
+ },
+ "end": {
+ "line": 12,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 25
+ },
+ "end": {
+ "line": 12,
+ "column": 32
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 207,
+ 214
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 186,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 18
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 279,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 10
+ },
+ "end": {
+ "line": 13,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 230,
+ 237
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 16
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 240,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 19
+ },
+ "end": {
+ "line": 12,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 257,
+ 264
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 43
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 186,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 18
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 240,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 19
+ },
+ "end": {
+ "line": 12,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 56,
+ 62
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": []
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach03-input.svelte b/tests/fixtures/parser/ast/svelte5/attach03-input.svelte
new file mode 100644
index 00000000..95409d2d
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach03-input.svelte
@@ -0,0 +1,22 @@
+
+
+
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach03-output.json b/tests/fixtures/parser/ast/svelte5/attach03-output.json
new file mode 100644
index 00000000..5d6bd09e
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach03-output.json
@@ -0,0 +1,3052 @@
+{
+ "type": "Program",
+ "body": [
+ {
+ "type": "SvelteScriptElement",
+ "name": {
+ "type": "SvelteName",
+ "name": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [],
+ "selfClosing": false,
+ "range": [
+ 0,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ "body": [
+ {
+ "type": "ImportDeclaration",
+ "source": {
+ "type": "Literal",
+ "raw": "'./gradient.js'",
+ "value": "./gradient.js",
+ "range": [
+ 32,
+ 47
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 23
+ },
+ "end": {
+ "line": 2,
+ "column": 38
+ }
+ }
+ },
+ "specifiers": [
+ {
+ "type": "ImportSpecifier",
+ "imported": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 19,
+ 24
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ },
+ "local": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 19,
+ 24
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ },
+ "range": [
+ 19,
+ 24
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ ],
+ "range": [
+ 10,
+ 48
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 39
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 49,
+ 58
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 0
+ },
+ "end": {
+ "line": 3,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 0,
+ 58
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 3,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 58,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 9
+ },
+ "end": {
+ "line": 5,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteElement",
+ "kind": "html",
+ "name": {
+ "type": "SvelteName",
+ "name": "canvas",
+ "range": [
+ 61,
+ 67
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteAttribute",
+ "key": {
+ "type": "SvelteName",
+ "name": "width",
+ "range": [
+ 69,
+ 74
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 1
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ },
+ "boolean": false,
+ "value": [
+ {
+ "type": "SvelteMustacheTag",
+ "kind": "text",
+ "expression": {
+ "type": "Literal",
+ "raw": "32",
+ "value": 32,
+ "range": [
+ 76,
+ 78
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 8
+ },
+ "end": {
+ "line": 6,
+ "column": 10
+ }
+ }
+ },
+ "range": [
+ 75,
+ 79
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 7
+ },
+ "end": {
+ "line": 6,
+ "column": 11
+ }
+ }
+ }
+ ],
+ "range": [
+ 69,
+ 79
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 1
+ },
+ "end": {
+ "line": 6,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "SvelteAttribute",
+ "key": {
+ "type": "SvelteName",
+ "name": "height",
+ "range": [
+ 81,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 1
+ },
+ "end": {
+ "line": 7,
+ "column": 7
+ }
+ }
+ },
+ "boolean": false,
+ "value": [
+ {
+ "type": "SvelteMustacheTag",
+ "kind": "text",
+ "expression": {
+ "type": "Literal",
+ "raw": "32",
+ "value": 32,
+ "range": [
+ 89,
+ 91
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 9
+ },
+ "end": {
+ "line": 7,
+ "column": 11
+ }
+ }
+ },
+ "range": [
+ 88,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 8
+ },
+ "end": {
+ "line": 7,
+ "column": 12
+ }
+ }
+ }
+ ],
+ "range": [
+ 81,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 1
+ },
+ "end": {
+ "line": 7,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "SvelteAttachTag",
+ "expression": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 125,
+ 132
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'2d'",
+ "value": "2d",
+ "range": [
+ 153,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 40
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 135,
+ 141
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "getContext",
+ "range": [
+ 142,
+ 152
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 25
+ },
+ "end": {
+ "line": 9,
+ "column": 35
+ }
+ }
+ },
+ "range": [
+ 135,
+ 152
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 35
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 135,
+ 158
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 41
+ }
+ }
+ },
+ "range": [
+ 125,
+ 158
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 41
+ }
+ }
+ }
+ ],
+ "range": [
+ 119,
+ 159
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 2
+ },
+ "end": {
+ "line": 9,
+ "column": 42
+ }
+ }
+ },
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "let",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "FunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 239,
+ 244
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 269,
+ 273
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 247,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 247,
+ 274
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 239,
+ 274
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 239,
+ 275
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 286,
+ 293
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 295,
+ 296
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 19
+ },
+ "end": {
+ "line": 14,
+ "column": 20
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 280,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 280,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 21
+ }
+ }
+ },
+ "range": [
+ 280,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 22
+ }
+ }
+ }
+ ],
+ "range": [
+ 233,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 54
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 225,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 230,
+ 231
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ }
+ ],
+ "range": [
+ 216,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 37
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 194,
+ 215
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 194,
+ 304
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 15,
+ "column": 5
+ }
+ }
+ },
+ "range": [
+ 186,
+ 304
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 15,
+ "column": 5
+ }
+ }
+ }
+ ],
+ "range": [
+ 182,
+ 305
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 3
+ },
+ "end": {
+ "line": 15,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 350,
+ 355
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "cancelAnimationFrame",
+ "range": [
+ 329,
+ 349
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 329,
+ 356
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 329,
+ 357
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 32
+ }
+ }
+ }
+ ],
+ "range": [
+ 323,
+ 362
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 16
+ },
+ "end": {
+ "line": 19,
+ "column": 4
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [],
+ "range": [
+ 317,
+ 362
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 10
+ },
+ "end": {
+ "line": 19,
+ "column": 4
+ }
+ }
+ },
+ "range": [
+ 310,
+ 363
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 3
+ },
+ "end": {
+ "line": 19,
+ "column": 5
+ }
+ }
+ }
+ ],
+ "range": [
+ 177,
+ 367
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 16
+ },
+ "end": {
+ "line": 20,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [],
+ "range": [
+ 171,
+ 367
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 20,
+ "column": 3
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "$effect",
+ "range": [
+ 163,
+ 170
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 163,
+ 368
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 20,
+ "column": 4
+ }
+ }
+ },
+ "range": [
+ 163,
+ 369
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 20,
+ "column": 5
+ }
+ }
+ }
+ ],
+ "range": [
+ 115,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 22
+ },
+ "end": {
+ "line": 21,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 104,
+ 110
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 11
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 103,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 21,
+ "column": 2
+ }
+ }
+ },
+ "range": [
+ 94,
+ 373
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 1
+ },
+ "end": {
+ "line": 21,
+ "column": 3
+ }
+ }
+ }
+ ],
+ "selfClosing": false,
+ "range": [
+ 60,
+ 375
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 0
+ },
+ "end": {
+ "line": 22,
+ "column": 1
+ }
+ }
+ },
+ "children": [],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 375,
+ 384
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 1
+ },
+ "end": {
+ "line": 22,
+ "column": 10
+ }
+ }
+ },
+ "range": [
+ 60,
+ 384
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 0
+ },
+ "end": {
+ "line": 22,
+ "column": 10
+ }
+ }
+ }
+ ],
+ "sourceType": "module",
+ "comments": [],
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 0,
+ 1
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 7,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 7
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "import",
+ "range": [
+ 10,
+ 16
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 17,
+ 18
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "paint",
+ "range": [
+ 19,
+ 24
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 25,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 16
+ },
+ "end": {
+ "line": 2,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "from",
+ "range": [
+ 27,
+ 31
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 18
+ },
+ "end": {
+ "line": 2,
+ "column": 22
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'./gradient.js'",
+ "range": [
+ 32,
+ 47
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 23
+ },
+ "end": {
+ "line": 2,
+ "column": 38
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 47,
+ 48
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 38
+ },
+ "end": {
+ "line": 2,
+ "column": 39
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 49,
+ 50
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 0
+ },
+ "end": {
+ "line": 3,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 50,
+ 51
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 3,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 51,
+ 57
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 2
+ },
+ "end": {
+ "line": 3,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 57,
+ 58
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 58,
+ 60
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 9
+ },
+ "end": {
+ "line": 5,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 60,
+ 61
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 0
+ },
+ "end": {
+ "line": 5,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "canvas",
+ "range": [
+ 61,
+ 67
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "width",
+ "range": [
+ 69,
+ 74
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 1
+ },
+ "end": {
+ "line": 6,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 74,
+ 75
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 6
+ },
+ "end": {
+ "line": 6,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 75,
+ 76
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 7
+ },
+ "end": {
+ "line": 6,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Numeric",
+ "value": "32",
+ "range": [
+ 76,
+ 78
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 8
+ },
+ "end": {
+ "line": 6,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 78,
+ 79
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 10
+ },
+ "end": {
+ "line": 6,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "height",
+ "range": [
+ 81,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 1
+ },
+ "end": {
+ "line": 7,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 87,
+ 88
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 7
+ },
+ "end": {
+ "line": 7,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 88,
+ 89
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 8
+ },
+ "end": {
+ "line": 7,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Numeric",
+ "value": "32",
+ "range": [
+ 89,
+ 91
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 9
+ },
+ "end": {
+ "line": 7,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 91,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 11
+ },
+ "end": {
+ "line": 7,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 94,
+ 95
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 1
+ },
+ "end": {
+ "line": 8,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "MustacheKeyword",
+ "value": "@attach",
+ "range": [
+ 95,
+ 102
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 2
+ },
+ "end": {
+ "line": 8,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 103,
+ 104
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "canvas",
+ "range": [
+ 104,
+ 110
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 11
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 110,
+ 111
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 17
+ },
+ "end": {
+ "line": 8,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=>",
+ "range": [
+ 112,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 19
+ },
+ "end": {
+ "line": 8,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 115,
+ 116
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 22
+ },
+ "end": {
+ "line": 8,
+ "column": 23
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "const",
+ "range": [
+ 119,
+ 124
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 2
+ },
+ "end": {
+ "line": 9,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "context",
+ "range": [
+ 125,
+ 132
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 133,
+ 134
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 16
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "canvas",
+ "range": [
+ 135,
+ 141
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ".",
+ "range": [
+ 141,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 24
+ },
+ "end": {
+ "line": 9,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "getContext",
+ "range": [
+ 142,
+ 152
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 25
+ },
+ "end": {
+ "line": 9,
+ "column": 35
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 152,
+ 153
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 35
+ },
+ "end": {
+ "line": 9,
+ "column": 36
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'2d'",
+ "range": [
+ 153,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 157,
+ 158
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 40
+ },
+ "end": {
+ "line": 9,
+ "column": 41
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 158,
+ 159
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 41
+ },
+ "end": {
+ "line": 9,
+ "column": 42
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "$effect",
+ "range": [
+ 163,
+ 170
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 170,
+ 171
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 9
+ },
+ "end": {
+ "line": 11,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 171,
+ 172
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 172,
+ 173
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 11
+ },
+ "end": {
+ "line": 11,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=>",
+ "range": [
+ 174,
+ 176
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 13
+ },
+ "end": {
+ "line": 11,
+ "column": 15
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 177,
+ 178
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 16
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "let",
+ "range": [
+ 182,
+ 185
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 3
+ },
+ "end": {
+ "line": 12,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 192,
+ 193
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 13
+ },
+ "end": {
+ "line": 12,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "requestAnimationFrame",
+ "range": [
+ 194,
+ 215
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 215,
+ 216
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 36
+ },
+ "end": {
+ "line": 12,
+ "column": 37
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "function",
+ "range": [
+ 216,
+ 224
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 37
+ },
+ "end": {
+ "line": 12,
+ "column": 45
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "loop",
+ "range": [
+ 225,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 229,
+ 230
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 50
+ },
+ "end": {
+ "line": 12,
+ "column": 51
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "t",
+ "range": [
+ 230,
+ 231
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 231,
+ 232
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 52
+ },
+ "end": {
+ "line": 12,
+ "column": 53
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 233,
+ 234
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 54
+ },
+ "end": {
+ "line": 12,
+ "column": 55
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "frame",
+ "range": [
+ 239,
+ 244
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 245,
+ 246
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 10
+ },
+ "end": {
+ "line": 13,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "requestAnimationFrame",
+ "range": [
+ 247,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 268,
+ 269
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 33
+ },
+ "end": {
+ "line": 13,
+ "column": 34
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "loop",
+ "range": [
+ 269,
+ 273
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 273,
+ 274
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 38
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 274,
+ 275
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 39
+ },
+ "end": {
+ "line": 13,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "paint",
+ "range": [
+ 280,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 285,
+ 286
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 9
+ },
+ "end": {
+ "line": 14,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "context",
+ "range": [
+ 286,
+ 293
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ",",
+ "range": [
+ 293,
+ 294
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 17
+ },
+ "end": {
+ "line": 14,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "t",
+ "range": [
+ 295,
+ 296
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 19
+ },
+ "end": {
+ "line": 14,
+ "column": 20
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 296,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 20
+ },
+ "end": {
+ "line": 14,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 297,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 21
+ },
+ "end": {
+ "line": 14,
+ "column": 22
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 302,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 3
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 303,
+ 304
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 4
+ },
+ "end": {
+ "line": 15,
+ "column": 5
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 304,
+ 305
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 5
+ },
+ "end": {
+ "line": 15,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "return",
+ "range": [
+ 310,
+ 316
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 3
+ },
+ "end": {
+ "line": 17,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 317,
+ 318
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 10
+ },
+ "end": {
+ "line": 17,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 318,
+ 319
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 11
+ },
+ "end": {
+ "line": 17,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=>",
+ "range": [
+ 320,
+ 322
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 13
+ },
+ "end": {
+ "line": 17,
+ "column": 15
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 323,
+ 324
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 16
+ },
+ "end": {
+ "line": 17,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "cancelAnimationFrame",
+ "range": [
+ 329,
+ 349
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 349,
+ 350
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 24
+ },
+ "end": {
+ "line": 18,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "frame",
+ "range": [
+ 350,
+ 355
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 355,
+ 356
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 30
+ },
+ "end": {
+ "line": 18,
+ "column": 31
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 356,
+ 357
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 31
+ },
+ "end": {
+ "line": 18,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 361,
+ 362
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 3
+ },
+ "end": {
+ "line": 19,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 362,
+ 363
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 4
+ },
+ "end": {
+ "line": 19,
+ "column": 5
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 366,
+ 367
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 2
+ },
+ "end": {
+ "line": 20,
+ "column": 3
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 367,
+ 368
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 3
+ },
+ "end": {
+ "line": 20,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 368,
+ 369
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 4
+ },
+ "end": {
+ "line": 20,
+ "column": 5
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 371,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 1
+ },
+ "end": {
+ "line": 21,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 372,
+ 373
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 2
+ },
+ "end": {
+ "line": 21,
+ "column": 3
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 374,
+ 375
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 0
+ },
+ "end": {
+ "line": 22,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 375,
+ 376
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 1
+ },
+ "end": {
+ "line": 22,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 376,
+ 377
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 2
+ },
+ "end": {
+ "line": 22,
+ "column": 3
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "canvas",
+ "range": [
+ 377,
+ 383
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 3
+ },
+ "end": {
+ "line": 22,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 383,
+ 384
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 9
+ },
+ "end": {
+ "line": 22,
+ "column": 10
+ }
+ }
+ }
+ ],
+ "range": [
+ 0,
+ 384
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 22,
+ "column": 10
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach03-scope-output.json b/tests/fixtures/parser/ast/svelte5/attach03-scope-output.json
new file mode 100644
index 00000000..c8e33f77
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach03-scope-output.json
@@ -0,0 +1,3984 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "$$slots",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$restProps",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$state",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$derived",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$effect",
+ "identifiers": [],
+ "defs": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$effect",
+ "range": [
+ 163,
+ 170
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ },
+ {
+ "name": "$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$bindable",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$inspect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$host",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "paint",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 19,
+ 24
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 19,
+ 24
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ },
+ "node": {
+ "type": "ImportSpecifier",
+ "imported": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 19,
+ 24
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ },
+ "local": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 19,
+ 24
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ },
+ "range": [
+ 19,
+ 24
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 280,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 19,
+ 24
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "canvas",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 104,
+ 110
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 11
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "name": {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 104,
+ 110
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 11
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ "node": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 125,
+ 132
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'2d'",
+ "value": "2d",
+ "range": [
+ 153,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 40
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 135,
+ 141
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "getContext",
+ "range": [
+ 142,
+ 152
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 25
+ },
+ "end": {
+ "line": 9,
+ "column": 35
+ }
+ }
+ },
+ "range": [
+ 135,
+ 152
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 35
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 135,
+ 158
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 41
+ }
+ }
+ },
+ "range": [
+ 125,
+ 158
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 41
+ }
+ }
+ }
+ ],
+ "range": [
+ 119,
+ 159
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 2
+ },
+ "end": {
+ "line": 9,
+ "column": 42
+ }
+ }
+ },
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "let",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "FunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 239,
+ 244
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 269,
+ 273
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 247,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 247,
+ 274
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 239,
+ 274
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 239,
+ 275
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 286,
+ 293
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 295,
+ 296
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 19
+ },
+ "end": {
+ "line": 14,
+ "column": 20
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 280,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 280,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 21
+ }
+ }
+ },
+ "range": [
+ 280,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 22
+ }
+ }
+ }
+ ],
+ "range": [
+ 233,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 54
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 225,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 230,
+ 231
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ }
+ ],
+ "range": [
+ 216,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 37
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 194,
+ 215
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 194,
+ 304
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 15,
+ "column": 5
+ }
+ }
+ },
+ "range": [
+ 186,
+ 304
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 15,
+ "column": 5
+ }
+ }
+ }
+ ],
+ "range": [
+ 182,
+ 305
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 3
+ },
+ "end": {
+ "line": 15,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 350,
+ 355
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "cancelAnimationFrame",
+ "range": [
+ 329,
+ 349
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 329,
+ 356
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 329,
+ 357
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 32
+ }
+ }
+ }
+ ],
+ "range": [
+ 323,
+ 362
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 16
+ },
+ "end": {
+ "line": 19,
+ "column": 4
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [],
+ "range": [
+ 317,
+ 362
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 10
+ },
+ "end": {
+ "line": 19,
+ "column": 4
+ }
+ }
+ },
+ "range": [
+ 310,
+ 363
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 3
+ },
+ "end": {
+ "line": 19,
+ "column": 5
+ }
+ }
+ }
+ ],
+ "range": [
+ 177,
+ 367
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 16
+ },
+ "end": {
+ "line": 20,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [],
+ "range": [
+ 171,
+ 367
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 20,
+ "column": 3
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "$effect",
+ "range": [
+ 163,
+ 170
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 163,
+ 368
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 20,
+ "column": 4
+ }
+ }
+ },
+ "range": [
+ 163,
+ 369
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 20,
+ "column": 5
+ }
+ }
+ }
+ ],
+ "range": [
+ 115,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 22
+ },
+ "end": {
+ "line": 21,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 104,
+ 110
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 11
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 103,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 21,
+ "column": 2
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 135,
+ 141
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 104,
+ 110
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 11
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "context",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 125,
+ 132
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 125,
+ 132
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 125,
+ 132
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'2d'",
+ "value": "2d",
+ "range": [
+ 153,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 36
+ },
+ "end": {
+ "line": 9,
+ "column": 40
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 135,
+ 141
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "getContext",
+ "range": [
+ 142,
+ 152
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 25
+ },
+ "end": {
+ "line": 9,
+ "column": 35
+ }
+ }
+ },
+ "range": [
+ 135,
+ 152
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 35
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 135,
+ 158
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 41
+ }
+ }
+ },
+ "range": [
+ 125,
+ 158
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 41
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 125,
+ 132
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 125,
+ 132
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 286,
+ 293
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 125,
+ 132
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 125,
+ 132
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 125,
+ 132
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 135,
+ 141
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 18
+ },
+ "end": {
+ "line": 9,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "canvas",
+ "range": [
+ 104,
+ 110
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 11
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$effect",
+ "range": [
+ 163,
+ 170
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "frame",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "FunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 239,
+ 244
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 269,
+ 273
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 247,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 247,
+ 274
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 239,
+ 274
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 239,
+ 275
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 286,
+ 293
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 295,
+ 296
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 19
+ },
+ "end": {
+ "line": 14,
+ "column": 20
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 280,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 280,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 21
+ }
+ }
+ },
+ "range": [
+ 280,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 22
+ }
+ }
+ }
+ ],
+ "range": [
+ 233,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 54
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 225,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 230,
+ 231
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ }
+ ],
+ "range": [
+ 216,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 37
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 194,
+ 215
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 194,
+ 304
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 15,
+ "column": 5
+ }
+ }
+ },
+ "range": [
+ 186,
+ 304
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 15,
+ "column": 5
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 239,
+ 244
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": false,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 350,
+ 355
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 30
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 194,
+ 215
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function-expression-name",
+ "variables": [
+ {
+ "name": "loop",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 225,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "FunctionName",
+ "name": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 225,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ },
+ "node": {
+ "type": "FunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 239,
+ 244
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 269,
+ 273
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 247,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 247,
+ 274
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 239,
+ 274
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 239,
+ 275
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 286,
+ 293
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 295,
+ 296
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 19
+ },
+ "end": {
+ "line": 14,
+ "column": 20
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 280,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 280,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 21
+ }
+ }
+ },
+ "range": [
+ 280,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 22
+ }
+ }
+ }
+ ],
+ "range": [
+ 233,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 54
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 225,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 230,
+ 231
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ }
+ ],
+ "range": [
+ 216,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 37
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 269,
+ 273
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 225,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "arguments",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "t",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 230,
+ 231
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "name": {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 230,
+ 231
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ },
+ "node": {
+ "type": "FunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "AssignmentExpression",
+ "left": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 239,
+ 244
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "operator": "=",
+ "right": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 269,
+ 273
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 247,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 247,
+ 274
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 239,
+ 274
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 39
+ }
+ }
+ },
+ "range": [
+ 239,
+ 275
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 40
+ }
+ }
+ },
+ {
+ "type": "ExpressionStatement",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 286,
+ 293
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 295,
+ 296
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 19
+ },
+ "end": {
+ "line": 14,
+ "column": 20
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 280,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 280,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 21
+ }
+ }
+ },
+ "range": [
+ 280,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 22
+ }
+ }
+ }
+ ],
+ "range": [
+ 233,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 54
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 225,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 230,
+ 231
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ }
+ ],
+ "range": [
+ 216,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 37
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 295,
+ 296
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 19
+ },
+ "end": {
+ "line": 14,
+ "column": 20
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 230,
+ 231
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 239,
+ 244
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": false,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 247,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 269,
+ 273
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 225,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 280,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 19,
+ 24
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 286,
+ 293
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 125,
+ 132
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 295,
+ 296
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 19
+ },
+ "end": {
+ "line": 14,
+ "column": 20
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "t",
+ "range": [
+ 230,
+ 231
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 51
+ },
+ "end": {
+ "line": 12,
+ "column": 52
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 239,
+ 244
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": false,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 247,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 269,
+ 273
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 38
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "loop",
+ "range": [
+ 225,
+ 229
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 46
+ },
+ "end": {
+ "line": 12,
+ "column": 50
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 280,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 19,
+ 24
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 286,
+ 293
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 125,
+ 132
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 239,
+ 244
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 4
+ },
+ "end": {
+ "line": 13,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": false,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 247,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 280,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 19,
+ 24
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 286,
+ 293
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 125,
+ 132
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "type": "function",
+ "variables": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "cancelAnimationFrame",
+ "range": [
+ 329,
+ 349
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 350,
+ 355
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 30
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "cancelAnimationFrame",
+ "range": [
+ 329,
+ 349
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 350,
+ 355
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 30
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "frame",
+ "range": [
+ 186,
+ 191
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 7
+ },
+ "end": {
+ "line": 12,
+ "column": 12
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 194,
+ 215
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 247,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 280,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 19,
+ 24
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 286,
+ 293
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "context",
+ "range": [
+ 125,
+ 132
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 8
+ },
+ "end": {
+ "line": 9,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "cancelAnimationFrame",
+ "range": [
+ 329,
+ 349
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$effect",
+ "range": [
+ 163,
+ 170
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 194,
+ 215
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 247,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 280,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 4
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "paint",
+ "range": [
+ 19,
+ 24
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 15
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "cancelAnimationFrame",
+ "range": [
+ 329,
+ 349
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$effect",
+ "range": [
+ 163,
+ 170
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 2
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 194,
+ 215
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 247,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "cancelAnimationFrame",
+ "range": [
+ 329,
+ 349
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 194,
+ 215
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 15
+ },
+ "end": {
+ "line": 12,
+ "column": 36
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "requestAnimationFrame",
+ "range": [
+ 247,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 12
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "cancelAnimationFrame",
+ "range": [
+ 329,
+ 349
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 4
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": null
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach04-input.svelte b/tests/fixtures/parser/ast/svelte5/attach04-input.svelte
new file mode 100644
index 00000000..b600aa6e
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach04-input.svelte
@@ -0,0 +1,23 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach04-output.json b/tests/fixtures/parser/ast/svelte5/attach04-output.json
new file mode 100644
index 00000000..992bc6d9
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach04-output.json
@@ -0,0 +1,2721 @@
+{
+ "type": "Program",
+ "body": [
+ {
+ "type": "SvelteScriptElement",
+ "name": {
+ "type": "SvelteName",
+ "name": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [],
+ "selfClosing": false,
+ "range": [
+ 0,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ "body": [
+ {
+ "type": "ImportDeclaration",
+ "source": {
+ "type": "Literal",
+ "raw": "'tippy.js'",
+ "value": "tippy.js",
+ "range": [
+ 28,
+ 38
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 19
+ },
+ "end": {
+ "line": 2,
+ "column": 29
+ }
+ }
+ },
+ "specifiers": [
+ {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ ],
+ "range": [
+ 10,
+ 39
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "ImportDeclaration",
+ "source": {
+ "type": "Literal",
+ "raw": "'./Button.svelte'",
+ "value": "./Button.svelte",
+ "range": [
+ 60,
+ 77
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 20
+ },
+ "end": {
+ "line": 3,
+ "column": 37
+ }
+ }
+ },
+ "specifiers": [
+ {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 48,
+ 54
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ },
+ "range": [
+ 48,
+ 54
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ }
+ ],
+ "range": [
+ 41,
+ 78
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 3,
+ "column": 38
+ }
+ }
+ },
+ {
+ "type": "VariableDeclaration",
+ "kind": "let",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 85,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'Hello!'",
+ "value": "Hello!",
+ "range": [
+ 102,
+ 110
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 22
+ },
+ "end": {
+ "line": 5,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 95,
+ 101
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 95,
+ 111
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 85,
+ 111
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ }
+ ],
+ "range": [
+ 81,
+ 112
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 269,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 285,
+ 292
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 25
+ },
+ "end": {
+ "line": 13,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 294,
+ 305
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 279,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 19
+ },
+ "end": {
+ "line": 13,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 279,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 19
+ },
+ "end": {
+ "line": 13,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 269,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 263,
+ 307
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 3
+ },
+ "end": {
+ "line": 13,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 318,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 326,
+ 333
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 18
+ },
+ "end": {
+ "line": 14,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 318,
+ 333
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 311,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 3
+ },
+ "end": {
+ "line": 14,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 258,
+ 338
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 22
+ },
+ "end": {
+ "line": 15,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 10
+ },
+ "end": {
+ "line": 12,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 245,
+ 338
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 15,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 238,
+ 339
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 2
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 234,
+ 342
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 27
+ },
+ "end": {
+ "line": 16,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 217,
+ 224
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 225,
+ 232
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ }
+ ],
+ "range": [
+ 208,
+ 342
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 1
+ },
+ "end": {
+ "line": 16,
+ "column": 2
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 343,
+ 352
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 0
+ },
+ "end": {
+ "line": 17,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 0,
+ 352
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 17,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 352,
+ 354
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 9
+ },
+ "end": {
+ "line": 19,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteElement",
+ "kind": "html",
+ "name": {
+ "type": "SvelteName",
+ "name": "input",
+ "range": [
+ 355,
+ 360
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 1
+ },
+ "end": {
+ "line": 19,
+ "column": 6
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteDirective",
+ "kind": "Binding",
+ "key": {
+ "type": "SvelteDirectiveKey",
+ "name": {
+ "type": "SvelteName",
+ "name": "value",
+ "range": [
+ 366,
+ 371
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 12
+ },
+ "end": {
+ "line": 19,
+ "column": 17
+ }
+ }
+ },
+ "modifiers": [],
+ "range": [
+ 361,
+ 371
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 7
+ },
+ "end": {
+ "line": 19,
+ "column": 17
+ }
+ }
+ },
+ "expression": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 373,
+ 380
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 19
+ },
+ "end": {
+ "line": 19,
+ "column": 26
+ }
+ }
+ },
+ "shorthand": false,
+ "range": [
+ 361,
+ 381
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 7
+ },
+ "end": {
+ "line": 19,
+ "column": 27
+ }
+ }
+ }
+ ],
+ "selfClosing": true,
+ "range": [
+ 354,
+ 384
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 0
+ },
+ "end": {
+ "line": 19,
+ "column": 30
+ }
+ }
+ },
+ "children": [],
+ "endTag": null,
+ "range": [
+ 354,
+ 384
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 0
+ },
+ "end": {
+ "line": 19,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 384,
+ 386
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 30
+ },
+ "end": {
+ "line": 21,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteElement",
+ "kind": "component",
+ "name": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 387,
+ 393
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 1
+ },
+ "end": {
+ "line": 21,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteAttachTag",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 411,
+ 418
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 25
+ },
+ "end": {
+ "line": 21,
+ "column": 32
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 403,
+ 410
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 17
+ },
+ "end": {
+ "line": 21,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 403,
+ 419
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 17
+ },
+ "end": {
+ "line": 21,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 394,
+ 420
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 8
+ },
+ "end": {
+ "line": 21,
+ "column": 34
+ }
+ }
+ }
+ ],
+ "selfClosing": false,
+ "range": [
+ 386,
+ 421
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 0
+ },
+ "end": {
+ "line": 21,
+ "column": 35
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "SvelteText",
+ "value": "\n\tHover me\n",
+ "range": [
+ 421,
+ 432
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 35
+ },
+ "end": {
+ "line": 23,
+ "column": 0
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 432,
+ 441
+ ],
+ "loc": {
+ "start": {
+ "line": 23,
+ "column": 0
+ },
+ "end": {
+ "line": 23,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 386,
+ 441
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 0
+ },
+ "end": {
+ "line": 23,
+ "column": 9
+ }
+ }
+ }
+ ],
+ "sourceType": "module",
+ "comments": [
+ {
+ "type": "Block",
+ "value": "*\n\t * @param {string} content\n\t * @returns {import('svelte/attachments').Attachment}\n\t ",
+ "range": [
+ 115,
+ 206
+ ],
+ "loc": {
+ "start": {
+ "line": 7,
+ "column": 1
+ },
+ "end": {
+ "line": 10,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 0,
+ 1
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 7,
+ 8
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 7
+ },
+ "end": {
+ "line": 1,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "import",
+ "range": [
+ 10,
+ 16
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "from",
+ "range": [
+ 23,
+ 27
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 14
+ },
+ "end": {
+ "line": 2,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'tippy.js'",
+ "range": [
+ 28,
+ 38
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 19
+ },
+ "end": {
+ "line": 2,
+ "column": 29
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 38,
+ 39
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 29
+ },
+ "end": {
+ "line": 2,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "import",
+ "range": [
+ 41,
+ 47
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 3,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "Button",
+ "range": [
+ 48,
+ 54
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "from",
+ "range": [
+ 55,
+ 59
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 19
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'./Button.svelte'",
+ "range": [
+ 60,
+ 77
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 20
+ },
+ "end": {
+ "line": 3,
+ "column": 37
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 77,
+ 78
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 37
+ },
+ "end": {
+ "line": 3,
+ "column": 38
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "let",
+ "range": [
+ 81,
+ 84
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 1
+ },
+ "end": {
+ "line": 5,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 85,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 93,
+ 94
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 13
+ },
+ "end": {
+ "line": 5,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "$state",
+ "range": [
+ 95,
+ 101
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 101,
+ 102
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 21
+ },
+ "end": {
+ "line": 5,
+ "column": 22
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'Hello!'",
+ "range": [
+ 102,
+ 110
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 22
+ },
+ "end": {
+ "line": 5,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 110,
+ 111
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 30
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 111,
+ 112
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 31
+ },
+ "end": {
+ "line": 5,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "function",
+ "range": [
+ 208,
+ 216
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 1
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tooltip",
+ "range": [
+ 217,
+ 224
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 224,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 17
+ },
+ "end": {
+ "line": 11,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 225,
+ 232
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 232,
+ 233
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 25
+ },
+ "end": {
+ "line": 11,
+ "column": 26
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 234,
+ 235
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 27
+ },
+ "end": {
+ "line": 11,
+ "column": 28
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "return",
+ "range": [
+ 238,
+ 244
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 2
+ },
+ "end": {
+ "line": 12,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 245,
+ 246
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 10
+ },
+ "end": {
+ "line": 12,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 253,
+ 254
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 17
+ },
+ "end": {
+ "line": 12,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=>",
+ "range": [
+ 255,
+ 257
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 19
+ },
+ "end": {
+ "line": 12,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 258,
+ 259
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 22
+ },
+ "end": {
+ "line": 12,
+ "column": 23
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "const",
+ "range": [
+ 263,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 3
+ },
+ "end": {
+ "line": 13,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tooltip",
+ "range": [
+ 269,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 16
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 277,
+ 278
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 17
+ },
+ "end": {
+ "line": 13,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tippy",
+ "range": [
+ 279,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 19
+ },
+ "end": {
+ "line": 13,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 284,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 24
+ },
+ "end": {
+ "line": 13,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "element",
+ "range": [
+ 285,
+ 292
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 25
+ },
+ "end": {
+ "line": 13,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ",",
+ "range": [
+ 292,
+ 293
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 32
+ },
+ "end": {
+ "line": 13,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 294,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 35
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 304,
+ 305
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 44
+ },
+ "end": {
+ "line": 13,
+ "column": 45
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 305,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 45
+ },
+ "end": {
+ "line": 13,
+ "column": 46
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 306,
+ 307
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 46
+ },
+ "end": {
+ "line": 13,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "return",
+ "range": [
+ 311,
+ 317
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 3
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tooltip",
+ "range": [
+ 318,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ".",
+ "range": [
+ 325,
+ 326
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 17
+ },
+ "end": {
+ "line": 14,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "destroy",
+ "range": [
+ 326,
+ 333
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 18
+ },
+ "end": {
+ "line": 14,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 333,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 25
+ },
+ "end": {
+ "line": 14,
+ "column": 26
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 337,
+ 338
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 2
+ },
+ "end": {
+ "line": 15,
+ "column": 3
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 338,
+ 339
+ ],
+ "loc": {
+ "start": {
+ "line": 15,
+ "column": 3
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 341,
+ 342
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 1
+ },
+ "end": {
+ "line": 16,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 343,
+ 344
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 0
+ },
+ "end": {
+ "line": 17,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 344,
+ 345
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 1
+ },
+ "end": {
+ "line": 17,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 345,
+ 351
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 2
+ },
+ "end": {
+ "line": 17,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 351,
+ 352
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 8
+ },
+ "end": {
+ "line": 17,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 352,
+ 354
+ ],
+ "loc": {
+ "start": {
+ "line": 17,
+ "column": 9
+ },
+ "end": {
+ "line": 19,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 354,
+ 355
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 0
+ },
+ "end": {
+ "line": 19,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "input",
+ "range": [
+ 355,
+ 360
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 1
+ },
+ "end": {
+ "line": 19,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "bind",
+ "range": [
+ 361,
+ 365
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 7
+ },
+ "end": {
+ "line": 19,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ":",
+ "range": [
+ 365,
+ 366
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 11
+ },
+ "end": {
+ "line": 19,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "value",
+ "range": [
+ 366,
+ 371
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 12
+ },
+ "end": {
+ "line": 19,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 371,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 17
+ },
+ "end": {
+ "line": 19,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 372,
+ 373
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 18
+ },
+ "end": {
+ "line": 19,
+ "column": 19
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 373,
+ 380
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 19
+ },
+ "end": {
+ "line": 19,
+ "column": 26
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 380,
+ 381
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 26
+ },
+ "end": {
+ "line": 19,
+ "column": 27
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 382,
+ 383
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 28
+ },
+ "end": {
+ "line": 19,
+ "column": 29
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 383,
+ 384
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 29
+ },
+ "end": {
+ "line": 19,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 384,
+ 386
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 30
+ },
+ "end": {
+ "line": 21,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 386,
+ 387
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 0
+ },
+ "end": {
+ "line": 21,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "Button",
+ "range": [
+ 387,
+ 393
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 1
+ },
+ "end": {
+ "line": 21,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 394,
+ 395
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 8
+ },
+ "end": {
+ "line": 21,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "MustacheKeyword",
+ "value": "@attach",
+ "range": [
+ 395,
+ 402
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 9
+ },
+ "end": {
+ "line": 21,
+ "column": 16
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tooltip",
+ "range": [
+ 403,
+ 410
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 17
+ },
+ "end": {
+ "line": 21,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 410,
+ 411
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 24
+ },
+ "end": {
+ "line": 21,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 411,
+ 418
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 25
+ },
+ "end": {
+ "line": 21,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 418,
+ 419
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 32
+ },
+ "end": {
+ "line": 21,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 419,
+ 420
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 33
+ },
+ "end": {
+ "line": 21,
+ "column": 34
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 420,
+ 421
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 34
+ },
+ "end": {
+ "line": 21,
+ "column": 35
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\t",
+ "range": [
+ 421,
+ 423
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 35
+ },
+ "end": {
+ "line": 22,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "Hover",
+ "range": [
+ 423,
+ 428
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 1
+ },
+ "end": {
+ "line": 22,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": " ",
+ "range": [
+ 428,
+ 429
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 6
+ },
+ "end": {
+ "line": 22,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "me",
+ "range": [
+ 429,
+ 431
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 7
+ },
+ "end": {
+ "line": 22,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n",
+ "range": [
+ 431,
+ 432
+ ],
+ "loc": {
+ "start": {
+ "line": 22,
+ "column": 9
+ },
+ "end": {
+ "line": 23,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 432,
+ 433
+ ],
+ "loc": {
+ "start": {
+ "line": 23,
+ "column": 0
+ },
+ "end": {
+ "line": 23,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 433,
+ 434
+ ],
+ "loc": {
+ "start": {
+ "line": 23,
+ "column": 1
+ },
+ "end": {
+ "line": 23,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "Button",
+ "range": [
+ 434,
+ 440
+ ],
+ "loc": {
+ "start": {
+ "line": 23,
+ "column": 2
+ },
+ "end": {
+ "line": 23,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 440,
+ 441
+ ],
+ "loc": {
+ "start": {
+ "line": 23,
+ "column": 8
+ },
+ "end": {
+ "line": 23,
+ "column": 9
+ }
+ }
+ }
+ ],
+ "range": [
+ 0,
+ 441
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 23,
+ "column": 9
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach04-scope-output.json b/tests/fixtures/parser/ast/svelte5/attach04-scope-output.json
new file mode 100644
index 00000000..2388f9ba
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach04-scope-output.json
@@ -0,0 +1,2906 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "$$slots",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$restProps",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$state",
+ "identifiers": [],
+ "defs": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 95,
+ 101
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ },
+ {
+ "name": "$derived",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$effect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$bindable",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$inspect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$host",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "tippy",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "node": {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 279,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 19
+ },
+ "end": {
+ "line": 13,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "Button",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 48,
+ 54
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 48,
+ 54
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ },
+ "node": {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 48,
+ 54
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ },
+ "range": [
+ 48,
+ 54
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 387,
+ 393
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 1
+ },
+ "end": {
+ "line": 21,
+ "column": 7
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 48,
+ 54
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "content",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 85,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 85,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 85,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'Hello!'",
+ "value": "Hello!",
+ "range": [
+ 102,
+ 110
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 22
+ },
+ "end": {
+ "line": 5,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 95,
+ 101
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 95,
+ 111
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 85,
+ 111
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 31
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 85,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 85,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 373,
+ 380
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 19
+ },
+ "end": {
+ "line": 19,
+ "column": 26
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 85,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 411,
+ 418
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 25
+ },
+ "end": {
+ "line": 21,
+ "column": 32
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 85,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "tooltip",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 217,
+ 224
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "FunctionName",
+ "name": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 217,
+ 224
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ "node": {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 269,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 285,
+ 292
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 25
+ },
+ "end": {
+ "line": 13,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 294,
+ 305
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 279,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 19
+ },
+ "end": {
+ "line": 13,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 279,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 19
+ },
+ "end": {
+ "line": 13,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 269,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 263,
+ 307
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 3
+ },
+ "end": {
+ "line": 13,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 318,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 326,
+ 333
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 18
+ },
+ "end": {
+ "line": 14,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 318,
+ 333
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 311,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 3
+ },
+ "end": {
+ "line": 14,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 258,
+ 338
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 22
+ },
+ "end": {
+ "line": 15,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 10
+ },
+ "end": {
+ "line": 12,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 245,
+ 338
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 15,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 238,
+ 339
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 2
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 234,
+ 342
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 27
+ },
+ "end": {
+ "line": 16,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 217,
+ 224
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 225,
+ 232
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ }
+ ],
+ "range": [
+ 208,
+ 342
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 1
+ },
+ "end": {
+ "line": 16,
+ "column": 2
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 403,
+ 410
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 17
+ },
+ "end": {
+ "line": 21,
+ "column": 24
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 217,
+ 224
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 85,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 85,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 95,
+ 101
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 373,
+ 380
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 19
+ },
+ "end": {
+ "line": 19,
+ "column": 26
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 85,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 403,
+ 410
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 17
+ },
+ "end": {
+ "line": 21,
+ "column": 24
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 217,
+ 224
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 411,
+ 418
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 25
+ },
+ "end": {
+ "line": 21,
+ "column": 32
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 85,
+ 92
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 5
+ },
+ "end": {
+ "line": 5,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 387,
+ 393
+ ],
+ "loc": {
+ "start": {
+ "line": 21,
+ "column": 1
+ },
+ "end": {
+ "line": 21,
+ "column": 7
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 48,
+ 54
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "arguments",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "content",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 225,
+ 232
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "name": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 225,
+ 232
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ "node": {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 269,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 285,
+ 292
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 25
+ },
+ "end": {
+ "line": 13,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 294,
+ 305
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 279,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 19
+ },
+ "end": {
+ "line": 13,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 279,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 19
+ },
+ "end": {
+ "line": 13,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 269,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 263,
+ 307
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 3
+ },
+ "end": {
+ "line": 13,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 318,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 326,
+ 333
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 18
+ },
+ "end": {
+ "line": 14,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 318,
+ 333
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 311,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 3
+ },
+ "end": {
+ "line": 14,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 258,
+ 338
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 22
+ },
+ "end": {
+ "line": 15,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 10
+ },
+ "end": {
+ "line": 12,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 245,
+ 338
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 15,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 238,
+ 339
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 2
+ },
+ "end": {
+ "line": 15,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 234,
+ 342
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 27
+ },
+ "end": {
+ "line": 16,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 217,
+ 224
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 225,
+ 232
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ }
+ ],
+ "range": [
+ 208,
+ 342
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 1
+ },
+ "end": {
+ "line": 16,
+ "column": 2
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 225,
+ 232
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "element",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 10
+ },
+ "end": {
+ "line": 12,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "name": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 10
+ },
+ "end": {
+ "line": 12,
+ "column": 17
+ }
+ }
+ },
+ "node": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 269,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 285,
+ 292
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 25
+ },
+ "end": {
+ "line": 13,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 294,
+ 305
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 279,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 19
+ },
+ "end": {
+ "line": 13,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 279,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 19
+ },
+ "end": {
+ "line": 13,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 269,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 263,
+ 307
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 3
+ },
+ "end": {
+ "line": 13,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 318,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 326,
+ 333
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 18
+ },
+ "end": {
+ "line": 14,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 318,
+ 333
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 311,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 3
+ },
+ "end": {
+ "line": 14,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 258,
+ 338
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 22
+ },
+ "end": {
+ "line": 15,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 10
+ },
+ "end": {
+ "line": 12,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 245,
+ 338
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 9
+ },
+ "end": {
+ "line": 15,
+ "column": 3
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 285,
+ 292
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 25
+ },
+ "end": {
+ "line": 13,
+ "column": 32
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 10
+ },
+ "end": {
+ "line": 12,
+ "column": 17
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "tooltip",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 269,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 16
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 269,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 16
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 269,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 285,
+ 292
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 25
+ },
+ "end": {
+ "line": 13,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 294,
+ 305
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 34
+ },
+ "end": {
+ "line": 13,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 279,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 19
+ },
+ "end": {
+ "line": 13,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 279,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 19
+ },
+ "end": {
+ "line": 13,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 269,
+ 306
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 46
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 269,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 16
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 269,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 16
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 318,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 269,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 16
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 269,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 16
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 269,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 16
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 279,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 19
+ },
+ "end": {
+ "line": 13,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 285,
+ 292
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 25
+ },
+ "end": {
+ "line": 13,
+ "column": 32
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 246,
+ 253
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 10
+ },
+ "end": {
+ "line": 12,
+ "column": 17
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 225,
+ 232
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 318,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 10
+ },
+ "end": {
+ "line": 14,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 269,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 9
+ },
+ "end": {
+ "line": 13,
+ "column": 16
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 279,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 19
+ },
+ "end": {
+ "line": 13,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 296,
+ 303
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 36
+ },
+ "end": {
+ "line": 13,
+ "column": 43
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 225,
+ 232
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 279,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 19
+ },
+ "end": {
+ "line": 13,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 17,
+ 22
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 95,
+ 101
+ ],
+ "loc": {
+ "start": {
+ "line": 5,
+ "column": 15
+ },
+ "end": {
+ "line": 5,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": []
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach04-ts-input.svelte b/tests/fixtures/parser/ast/svelte5/attach04-ts-input.svelte
new file mode 100644
index 00000000..5c0cd4d3
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach04-ts-input.svelte
@@ -0,0 +1,20 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach04-ts-output.json b/tests/fixtures/parser/ast/svelte5/attach04-ts-output.json
new file mode 100644
index 00000000..8ca334a4
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach04-ts-output.json
@@ -0,0 +1,3246 @@
+{
+ "type": "Program",
+ "body": [
+ {
+ "type": "SvelteScriptElement",
+ "name": {
+ "type": "SvelteName",
+ "name": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteAttribute",
+ "key": {
+ "type": "SvelteName",
+ "name": "lang",
+ "range": [
+ 8,
+ 12
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 8
+ },
+ "end": {
+ "line": 1,
+ "column": 12
+ }
+ }
+ },
+ "boolean": false,
+ "value": [
+ {
+ "type": "SvelteLiteral",
+ "value": "ts",
+ "range": [
+ 14,
+ 16
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 14
+ },
+ "end": {
+ "line": 1,
+ "column": 16
+ }
+ }
+ }
+ ],
+ "range": [
+ 8,
+ 17
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 8
+ },
+ "end": {
+ "line": 1,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "selfClosing": false,
+ "range": [
+ 0,
+ 18
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 18
+ }
+ }
+ },
+ "body": [
+ {
+ "type": "ImportDeclaration",
+ "importKind": "value",
+ "source": {
+ "type": "Literal",
+ "raw": "'tippy.js'",
+ "value": "tippy.js",
+ "range": [
+ 38,
+ 48
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 19
+ },
+ "end": {
+ "line": 2,
+ "column": 29
+ }
+ }
+ },
+ "specifiers": [
+ {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ ],
+ "range": [
+ 20,
+ 49
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "ImportDeclaration",
+ "importKind": "value",
+ "source": {
+ "type": "Literal",
+ "raw": "'./Button.svelte'",
+ "value": "./Button.svelte",
+ "range": [
+ 70,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 20
+ },
+ "end": {
+ "line": 3,
+ "column": 37
+ }
+ }
+ },
+ "specifiers": [
+ {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 58,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ },
+ "range": [
+ 58,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ }
+ ],
+ "range": [
+ 51,
+ 88
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 3,
+ "column": 38
+ }
+ }
+ },
+ {
+ "type": "ImportDeclaration",
+ "importKind": "type",
+ "source": {
+ "type": "Literal",
+ "raw": "'svelte/attachments'",
+ "value": "svelte/attachments",
+ "range": [
+ 122,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 33
+ },
+ "end": {
+ "line": 4,
+ "column": 53
+ }
+ }
+ },
+ "specifiers": [
+ {
+ "type": "ImportSpecifier",
+ "importKind": "value",
+ "imported": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ },
+ "local": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ }
+ ],
+ "range": [
+ 90,
+ 143
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 1
+ },
+ "end": {
+ "line": 4,
+ "column": 54
+ }
+ }
+ },
+ {
+ "type": "VariableDeclaration",
+ "kind": "let",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'Hello!'",
+ "value": "Hello!",
+ "range": [
+ 167,
+ 175
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 22
+ },
+ "end": {
+ "line": 6,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 160,
+ 166
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 6,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 160,
+ 176
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 6,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 150,
+ 176
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 31
+ }
+ }
+ }
+ ],
+ "range": [
+ 146,
+ 177
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 1
+ },
+ "end": {
+ "line": 6,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 277,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 25
+ },
+ "end": {
+ "line": 10,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 286,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 34
+ },
+ "end": {
+ "line": 10,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 271,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 261,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 255,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 310,
+ 317
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 318,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 310,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 303,
+ 326
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 3
+ },
+ "end": {
+ "line": 11,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 250,
+ 330
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 22
+ },
+ "end": {
+ "line": 12,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 237,
+ 330
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 230,
+ 331
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 2
+ },
+ "end": {
+ "line": 12,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 226,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 47
+ },
+ "end": {
+ "line": 13,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 189,
+ 196
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 206,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 27
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 204,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 25
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 197,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ }
+ ],
+ "returnType": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 213,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 34
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 180,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 1
+ },
+ "end": {
+ "line": 13,
+ "column": 2
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 335,
+ 344
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 0
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 0,
+ 344
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 344,
+ 346
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 9
+ },
+ "end": {
+ "line": 16,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteElement",
+ "kind": "html",
+ "name": {
+ "type": "SvelteName",
+ "name": "input",
+ "range": [
+ 347,
+ 352
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 1
+ },
+ "end": {
+ "line": 16,
+ "column": 6
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteDirective",
+ "kind": "Binding",
+ "key": {
+ "type": "SvelteDirectiveKey",
+ "name": {
+ "type": "SvelteName",
+ "name": "value",
+ "range": [
+ 358,
+ 363
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 12
+ },
+ "end": {
+ "line": 16,
+ "column": 17
+ }
+ }
+ },
+ "modifiers": [],
+ "range": [
+ 353,
+ 363
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 7
+ },
+ "end": {
+ "line": 16,
+ "column": 17
+ }
+ }
+ },
+ "expression": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 365,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 19
+ },
+ "end": {
+ "line": 16,
+ "column": 26
+ }
+ }
+ },
+ "shorthand": false,
+ "range": [
+ 353,
+ 373
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 7
+ },
+ "end": {
+ "line": 16,
+ "column": 27
+ }
+ }
+ }
+ ],
+ "selfClosing": true,
+ "range": [
+ 346,
+ 376
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 0
+ },
+ "end": {
+ "line": 16,
+ "column": 30
+ }
+ }
+ },
+ "children": [],
+ "endTag": null,
+ "range": [
+ 346,
+ 376
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 0
+ },
+ "end": {
+ "line": 16,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "SvelteText",
+ "value": "\n\n",
+ "range": [
+ 376,
+ 378
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 30
+ },
+ "end": {
+ "line": 18,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "SvelteElement",
+ "kind": "component",
+ "name": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 379,
+ 385
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 1
+ },
+ "end": {
+ "line": 18,
+ "column": 7
+ }
+ }
+ },
+ "startTag": {
+ "type": "SvelteStartTag",
+ "attributes": [
+ {
+ "type": "SvelteAttachTag",
+ "expression": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 403,
+ 410
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 32
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 395,
+ 402
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 17
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 395,
+ 411
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 17
+ },
+ "end": {
+ "line": 18,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 386,
+ 412
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 8
+ },
+ "end": {
+ "line": 18,
+ "column": 34
+ }
+ }
+ }
+ ],
+ "selfClosing": false,
+ "range": [
+ 378,
+ 413
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 0
+ },
+ "end": {
+ "line": 18,
+ "column": 35
+ }
+ }
+ },
+ "children": [
+ {
+ "type": "SvelteText",
+ "value": "\n\tHover me\n",
+ "range": [
+ 413,
+ 424
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 35
+ },
+ "end": {
+ "line": 20,
+ "column": 0
+ }
+ }
+ }
+ ],
+ "endTag": {
+ "type": "SvelteEndTag",
+ "range": [
+ 424,
+ 433
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 0
+ },
+ "end": {
+ "line": 20,
+ "column": 9
+ }
+ }
+ },
+ "range": [
+ 378,
+ 433
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 0
+ },
+ "end": {
+ "line": 20,
+ "column": 9
+ }
+ }
+ }
+ ],
+ "sourceType": "module",
+ "comments": [],
+ "tokens": [
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 0,
+ 1
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 1,
+ 7
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "lang",
+ "range": [
+ 8,
+ 12
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 8
+ },
+ "end": {
+ "line": 1,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 12,
+ 13
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 12
+ },
+ "end": {
+ "line": 1,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "\"",
+ "range": [
+ 13,
+ 14
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 13
+ },
+ "end": {
+ "line": 1,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "ts",
+ "range": [
+ 14,
+ 16
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 14
+ },
+ "end": {
+ "line": 1,
+ "column": 16
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "\"",
+ "range": [
+ 16,
+ 17
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 16
+ },
+ "end": {
+ "line": 1,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 17,
+ 18
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 17
+ },
+ "end": {
+ "line": 1,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "import",
+ "range": [
+ 20,
+ 26
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "from",
+ "range": [
+ 33,
+ 37
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 14
+ },
+ "end": {
+ "line": 2,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'tippy.js'",
+ "range": [
+ 38,
+ 48
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 19
+ },
+ "end": {
+ "line": 2,
+ "column": 29
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 48,
+ 49
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 29
+ },
+ "end": {
+ "line": 2,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "import",
+ "range": [
+ 51,
+ 57
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 1
+ },
+ "end": {
+ "line": 3,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "Button",
+ "range": [
+ 58,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "from",
+ "range": [
+ 65,
+ 69
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 15
+ },
+ "end": {
+ "line": 3,
+ "column": 19
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'./Button.svelte'",
+ "range": [
+ 70,
+ 87
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 20
+ },
+ "end": {
+ "line": 3,
+ "column": 37
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 87,
+ 88
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 37
+ },
+ "end": {
+ "line": 3,
+ "column": 38
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "import",
+ "range": [
+ 90,
+ 96
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 1
+ },
+ "end": {
+ "line": 4,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "type",
+ "range": [
+ 97,
+ 101
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 8
+ },
+ "end": {
+ "line": 4,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 102,
+ 103
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 13
+ },
+ "end": {
+ "line": 4,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 115,
+ 116
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 26
+ },
+ "end": {
+ "line": 4,
+ "column": 27
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "from",
+ "range": [
+ 117,
+ 121
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 28
+ },
+ "end": {
+ "line": 4,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'svelte/attachments'",
+ "range": [
+ 122,
+ 142
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 33
+ },
+ "end": {
+ "line": 4,
+ "column": 53
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 142,
+ 143
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 53
+ },
+ "end": {
+ "line": 4,
+ "column": 54
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "let",
+ "range": [
+ 146,
+ 149
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 1
+ },
+ "end": {
+ "line": 6,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 158,
+ 159
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 13
+ },
+ "end": {
+ "line": 6,
+ "column": 14
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "$state",
+ "range": [
+ 160,
+ 166
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 6,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 166,
+ 167
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 21
+ },
+ "end": {
+ "line": 6,
+ "column": 22
+ }
+ }
+ },
+ {
+ "type": "String",
+ "value": "'Hello!'",
+ "range": [
+ 167,
+ 175
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 22
+ },
+ "end": {
+ "line": 6,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 175,
+ 176
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 30
+ },
+ "end": {
+ "line": 6,
+ "column": 31
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 176,
+ 177
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 31
+ },
+ "end": {
+ "line": 6,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "function",
+ "range": [
+ 180,
+ 188
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 1
+ },
+ "end": {
+ "line": 8,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tooltip",
+ "range": [
+ 189,
+ 196
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 196,
+ 197
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 17
+ },
+ "end": {
+ "line": 8,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 197,
+ 204
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ":",
+ "range": [
+ 204,
+ 205
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 25
+ },
+ "end": {
+ "line": 8,
+ "column": 26
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "string",
+ "range": [
+ 206,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 27
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 212,
+ 213
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 33
+ },
+ "end": {
+ "line": 8,
+ "column": 34
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ":",
+ "range": [
+ 213,
+ 214
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 34
+ },
+ "end": {
+ "line": 8,
+ "column": 35
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "Attachment",
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 226,
+ 227
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 47
+ },
+ "end": {
+ "line": 8,
+ "column": 48
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "return",
+ "range": [
+ 230,
+ 236
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 2
+ },
+ "end": {
+ "line": 9,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 237,
+ 238
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 9,
+ "column": 10
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 245,
+ 246
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 17
+ },
+ "end": {
+ "line": 9,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=>",
+ "range": [
+ 247,
+ 249
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 19
+ },
+ "end": {
+ "line": 9,
+ "column": 21
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 250,
+ 251
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 22
+ },
+ "end": {
+ "line": 9,
+ "column": 23
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "const",
+ "range": [
+ 255,
+ 260
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 269,
+ 270
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 17
+ },
+ "end": {
+ "line": 10,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 276,
+ 277
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 24
+ },
+ "end": {
+ "line": 10,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "element",
+ "range": [
+ 277,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 25
+ },
+ "end": {
+ "line": 10,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ",",
+ "range": [
+ 284,
+ 285
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 32
+ },
+ "end": {
+ "line": 10,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 286,
+ 287
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 34
+ },
+ "end": {
+ "line": 10,
+ "column": 35
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 296,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 44
+ },
+ "end": {
+ "line": 10,
+ "column": 45
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 297,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 45
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 298,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 46
+ },
+ "end": {
+ "line": 10,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "Keyword",
+ "value": "return",
+ "range": [
+ 303,
+ 309
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 3
+ },
+ "end": {
+ "line": 11,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tooltip",
+ "range": [
+ 310,
+ 317
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ".",
+ "range": [
+ 317,
+ 318
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 17
+ },
+ "end": {
+ "line": 11,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "destroy",
+ "range": [
+ 318,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 325,
+ 326
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 25
+ },
+ "end": {
+ "line": 11,
+ "column": 26
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 329,
+ 330
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 2
+ },
+ "end": {
+ "line": 12,
+ "column": 3
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ";",
+ "range": [
+ 330,
+ 331
+ ],
+ "loc": {
+ "start": {
+ "line": 12,
+ "column": 3
+ },
+ "end": {
+ "line": 12,
+ "column": 4
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 333,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 13,
+ "column": 1
+ },
+ "end": {
+ "line": 13,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 335,
+ 336
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 0
+ },
+ "end": {
+ "line": 14,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 336,
+ 337
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 1
+ },
+ "end": {
+ "line": 14,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "script",
+ "range": [
+ 337,
+ 343
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 2
+ },
+ "end": {
+ "line": 14,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 343,
+ 344
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 8
+ },
+ "end": {
+ "line": 14,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 344,
+ 346
+ ],
+ "loc": {
+ "start": {
+ "line": 14,
+ "column": 9
+ },
+ "end": {
+ "line": 16,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 346,
+ 347
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 0
+ },
+ "end": {
+ "line": 16,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "input",
+ "range": [
+ 347,
+ 352
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 1
+ },
+ "end": {
+ "line": 16,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "bind",
+ "range": [
+ 353,
+ 357
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 7
+ },
+ "end": {
+ "line": 16,
+ "column": 11
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ":",
+ "range": [
+ 357,
+ 358
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 11
+ },
+ "end": {
+ "line": 16,
+ "column": 12
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "value",
+ "range": [
+ 358,
+ 363
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 12
+ },
+ "end": {
+ "line": 16,
+ "column": 17
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "=",
+ "range": [
+ 363,
+ 364
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 17
+ },
+ "end": {
+ "line": 16,
+ "column": 18
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 364,
+ 365
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 18
+ },
+ "end": {
+ "line": 16,
+ "column": 19
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 365,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 19
+ },
+ "end": {
+ "line": 16,
+ "column": 26
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 372,
+ 373
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 26
+ },
+ "end": {
+ "line": 16,
+ "column": 27
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 374,
+ 375
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 28
+ },
+ "end": {
+ "line": 16,
+ "column": 29
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 375,
+ 376
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 29
+ },
+ "end": {
+ "line": 16,
+ "column": 30
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\n",
+ "range": [
+ 376,
+ 378
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 30
+ },
+ "end": {
+ "line": 18,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 378,
+ 379
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 0
+ },
+ "end": {
+ "line": 18,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "Button",
+ "range": [
+ 379,
+ 385
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 1
+ },
+ "end": {
+ "line": 18,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "{",
+ "range": [
+ 386,
+ 387
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 8
+ },
+ "end": {
+ "line": 18,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "MustacheKeyword",
+ "value": "@attach",
+ "range": [
+ 387,
+ 394
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 9
+ },
+ "end": {
+ "line": 18,
+ "column": 16
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "tooltip",
+ "range": [
+ 395,
+ 402
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 17
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "(",
+ "range": [
+ 402,
+ 403
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 24
+ },
+ "end": {
+ "line": 18,
+ "column": 25
+ }
+ }
+ },
+ {
+ "type": "Identifier",
+ "value": "content",
+ "range": [
+ 403,
+ 410
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ")",
+ "range": [
+ 410,
+ 411
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 32
+ },
+ "end": {
+ "line": 18,
+ "column": 33
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "}",
+ "range": [
+ 411,
+ 412
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 33
+ },
+ "end": {
+ "line": 18,
+ "column": 34
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 412,
+ 413
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 34
+ },
+ "end": {
+ "line": 18,
+ "column": 35
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n\t",
+ "range": [
+ 413,
+ 415
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 35
+ },
+ "end": {
+ "line": 19,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "Hover",
+ "range": [
+ 415,
+ 420
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 1
+ },
+ "end": {
+ "line": 19,
+ "column": 6
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": " ",
+ "range": [
+ 420,
+ 421
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 6
+ },
+ "end": {
+ "line": 19,
+ "column": 7
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "me",
+ "range": [
+ 421,
+ 423
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 7
+ },
+ "end": {
+ "line": 19,
+ "column": 9
+ }
+ }
+ },
+ {
+ "type": "HTMLText",
+ "value": "\n",
+ "range": [
+ 423,
+ 424
+ ],
+ "loc": {
+ "start": {
+ "line": 19,
+ "column": 9
+ },
+ "end": {
+ "line": 20,
+ "column": 0
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "<",
+ "range": [
+ 424,
+ 425
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 0
+ },
+ "end": {
+ "line": 20,
+ "column": 1
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": "/",
+ "range": [
+ 425,
+ 426
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 1
+ },
+ "end": {
+ "line": 20,
+ "column": 2
+ }
+ }
+ },
+ {
+ "type": "HTMLIdentifier",
+ "value": "Button",
+ "range": [
+ 426,
+ 432
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 2
+ },
+ "end": {
+ "line": 20,
+ "column": 8
+ }
+ }
+ },
+ {
+ "type": "Punctuator",
+ "value": ">",
+ "range": [
+ 432,
+ 433
+ ],
+ "loc": {
+ "start": {
+ "line": 20,
+ "column": 8
+ },
+ "end": {
+ "line": 20,
+ "column": 9
+ }
+ }
+ }
+ ],
+ "range": [
+ 0,
+ 433
+ ],
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 20,
+ "column": 9
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach04-ts-scope-output.json b/tests/fixtures/parser/ast/svelte5/attach04-ts-scope-output.json
new file mode 100644
index 00000000..12e1396d
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach04-ts-scope-output.json
@@ -0,0 +1,3471 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "$$slots",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$restProps",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$state",
+ "identifiers": [],
+ "defs": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 160,
+ 166
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 6,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ },
+ {
+ "name": "$derived",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$effect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$bindable",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$inspect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$host",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "tippy",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "node": {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "Button",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 58,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 58,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ },
+ "node": {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 58,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ },
+ "range": [
+ 58,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 379,
+ 385
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 1
+ },
+ "end": {
+ "line": 18,
+ "column": 7
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 58,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "Attachment",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ },
+ "node": {
+ "type": "ImportSpecifier",
+ "importKind": "value",
+ "imported": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ },
+ "local": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "content",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'Hello!'",
+ "value": "Hello!",
+ "range": [
+ 167,
+ 175
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 22
+ },
+ "end": {
+ "line": 6,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 160,
+ 166
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 6,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 160,
+ 176
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 6,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 150,
+ 176
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 31
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 365,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 19
+ },
+ "end": {
+ "line": 16,
+ "column": 26
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 403,
+ 410
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 32
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "tooltip",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 189,
+ 196
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "FunctionName",
+ "name": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 189,
+ 196
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ "node": {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 277,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 25
+ },
+ "end": {
+ "line": 10,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 286,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 34
+ },
+ "end": {
+ "line": 10,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 271,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 261,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 255,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 310,
+ 317
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 318,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 310,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 303,
+ 326
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 3
+ },
+ "end": {
+ "line": 11,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 250,
+ 330
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 22
+ },
+ "end": {
+ "line": 12,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 237,
+ 330
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 230,
+ 331
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 2
+ },
+ "end": {
+ "line": 12,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 226,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 47
+ },
+ "end": {
+ "line": 13,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 189,
+ 196
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 206,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 27
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 204,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 25
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 197,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ }
+ ],
+ "returnType": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 213,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 34
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 180,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 1
+ },
+ "end": {
+ "line": 13,
+ "column": 2
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 395,
+ 402
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 17
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 189,
+ 196
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 160,
+ 166
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 6,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 365,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 19
+ },
+ "end": {
+ "line": 16,
+ "column": 26
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 395,
+ 402
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 17
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 189,
+ 196
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 403,
+ 410
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 32
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 379,
+ 385
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 1
+ },
+ "end": {
+ "line": 18,
+ "column": 7
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 58,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "arguments",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "content",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 206,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 27
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 204,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 25
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 197,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "name": {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 206,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 27
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 204,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 25
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 197,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "node": {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 277,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 25
+ },
+ "end": {
+ "line": 10,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 286,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 34
+ },
+ "end": {
+ "line": 10,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 271,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 261,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 255,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 310,
+ 317
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 318,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 310,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 303,
+ 326
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 3
+ },
+ "end": {
+ "line": 11,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 250,
+ 330
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 22
+ },
+ "end": {
+ "line": 12,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 237,
+ 330
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 230,
+ 331
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 2
+ },
+ "end": {
+ "line": 12,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 226,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 47
+ },
+ "end": {
+ "line": 13,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 189,
+ 196
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 206,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 27
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 204,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 25
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 197,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ }
+ ],
+ "returnType": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 213,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 34
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 180,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 1
+ },
+ "end": {
+ "line": 13,
+ "column": 2
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 206,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 27
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 204,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 25
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 197,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "element",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "name": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ },
+ "node": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 277,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 25
+ },
+ "end": {
+ "line": 10,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 286,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 34
+ },
+ "end": {
+ "line": 10,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 271,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 261,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 255,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 310,
+ 317
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 318,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 310,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 303,
+ 326
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 3
+ },
+ "end": {
+ "line": 11,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 250,
+ 330
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 22
+ },
+ "end": {
+ "line": 12,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 237,
+ 330
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 3
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 277,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 25
+ },
+ "end": {
+ "line": 10,
+ "column": 32
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "tooltip",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 277,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 25
+ },
+ "end": {
+ "line": 10,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 286,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 34
+ },
+ "end": {
+ "line": 10,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 271,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 261,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 310,
+ 317
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 277,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 25
+ },
+ "end": {
+ "line": 10,
+ "column": 32
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 206,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 27
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 204,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 25
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 197,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 310,
+ 317
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 206,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 27
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 204,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 25
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 197,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 160,
+ 166
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 6,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": []
+}
\ No newline at end of file
diff --git a/tests/fixtures/parser/ast/svelte5/attach05-ts-scope-output.json b/tests/fixtures/parser/ast/svelte5/attach05-ts-scope-output.json
new file mode 100644
index 00000000..12e1396d
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/attach05-ts-scope-output.json
@@ -0,0 +1,3471 @@
+{
+ "type": "global",
+ "variables": [
+ {
+ "name": "$$slots",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$$restProps",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$state",
+ "identifiers": [],
+ "defs": [],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 160,
+ 166
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 6,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ },
+ {
+ "name": "$derived",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$effect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$props",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$bindable",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$inspect",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "$host",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ }
+ ],
+ "references": [],
+ "childScopes": [
+ {
+ "type": "module",
+ "variables": [
+ {
+ "name": "tippy",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "node": {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ },
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "Button",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 58,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 58,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ },
+ "node": {
+ "type": "ImportDefaultSpecifier",
+ "local": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 58,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ },
+ "range": [
+ 58,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 379,
+ 385
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 1
+ },
+ "end": {
+ "line": 18,
+ "column": 7
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 58,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "Attachment",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "ImportBinding",
+ "name": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ },
+ "node": {
+ "type": "ImportSpecifier",
+ "importKind": "value",
+ "imported": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ },
+ "local": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "content",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Literal",
+ "raw": "'Hello!'",
+ "value": "Hello!",
+ "range": [
+ 167,
+ 175
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 22
+ },
+ "end": {
+ "line": 6,
+ "column": 30
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 160,
+ 166
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 6,
+ "column": 21
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 160,
+ 176
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 6,
+ "column": 31
+ }
+ }
+ },
+ "range": [
+ 150,
+ 176
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 31
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 365,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 19
+ },
+ "end": {
+ "line": 16,
+ "column": 26
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 403,
+ 410
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 32
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "tooltip",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 189,
+ 196
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "FunctionName",
+ "name": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 189,
+ 196
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ "node": {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 277,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 25
+ },
+ "end": {
+ "line": 10,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 286,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 34
+ },
+ "end": {
+ "line": 10,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 271,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 261,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 255,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 310,
+ 317
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 318,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 310,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 303,
+ 326
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 3
+ },
+ "end": {
+ "line": 11,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 250,
+ 330
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 22
+ },
+ "end": {
+ "line": 12,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 237,
+ 330
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 230,
+ 331
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 2
+ },
+ "end": {
+ "line": 12,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 226,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 47
+ },
+ "end": {
+ "line": 13,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 189,
+ 196
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 206,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 27
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 204,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 25
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 197,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ }
+ ],
+ "returnType": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 213,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 34
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 180,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 1
+ },
+ "end": {
+ "line": 13,
+ "column": 2
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 395,
+ 402
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 17
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 189,
+ 196
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ },
+ "from": "module",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 160,
+ 166
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 6,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 365,
+ 372
+ ],
+ "loc": {
+ "start": {
+ "line": 16,
+ "column": 19
+ },
+ "end": {
+ "line": 16,
+ "column": 26
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 395,
+ 402
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 17
+ },
+ "end": {
+ "line": 18,
+ "column": 24
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 189,
+ 196
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 403,
+ 410
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 25
+ },
+ "end": {
+ "line": 18,
+ "column": 32
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 150,
+ 157
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 5
+ },
+ "end": {
+ "line": 6,
+ "column": 12
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 379,
+ 385
+ ],
+ "loc": {
+ "start": {
+ "line": 18,
+ "column": 1
+ },
+ "end": {
+ "line": 18,
+ "column": 7
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Button",
+ "range": [
+ 58,
+ 64
+ ],
+ "loc": {
+ "start": {
+ "line": 3,
+ "column": 8
+ },
+ "end": {
+ "line": 3,
+ "column": 14
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "arguments",
+ "identifiers": [],
+ "defs": [],
+ "references": []
+ },
+ {
+ "name": "content",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 206,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 27
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 204,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 25
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 197,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "name": {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 206,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 27
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 204,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 25
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 197,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "node": {
+ "type": "FunctionDeclaration",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 277,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 25
+ },
+ "end": {
+ "line": 10,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 286,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 34
+ },
+ "end": {
+ "line": 10,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 271,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 261,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 255,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 310,
+ 317
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 318,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 310,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 303,
+ 326
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 3
+ },
+ "end": {
+ "line": 11,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 250,
+ 330
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 22
+ },
+ "end": {
+ "line": 12,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 237,
+ 330
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 3
+ }
+ }
+ },
+ "range": [
+ 230,
+ 331
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 2
+ },
+ "end": {
+ "line": 12,
+ "column": 4
+ }
+ }
+ }
+ ],
+ "range": [
+ 226,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 47
+ },
+ "end": {
+ "line": 13,
+ "column": 2
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 189,
+ 196
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 10
+ },
+ "end": {
+ "line": 8,
+ "column": 17
+ }
+ }
+ },
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 206,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 27
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 204,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 25
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 197,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ }
+ ],
+ "returnType": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSTypeReference",
+ "typeName": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 213,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 34
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 180,
+ 334
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 1
+ },
+ "end": {
+ "line": 13,
+ "column": 2
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 206,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 27
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 204,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 25
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 197,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [
+ {
+ "type": "function",
+ "variables": [
+ {
+ "name": "element",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Parameter",
+ "name": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ },
+ "node": {
+ "type": "ArrowFunctionExpression",
+ "async": false,
+ "body": {
+ "type": "BlockStatement",
+ "body": [
+ {
+ "type": "VariableDeclaration",
+ "kind": "const",
+ "declarations": [
+ {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 277,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 25
+ },
+ "end": {
+ "line": 10,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 286,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 34
+ },
+ "end": {
+ "line": 10,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 271,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 261,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ }
+ ],
+ "range": [
+ 255,
+ 299
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 3
+ },
+ "end": {
+ "line": 10,
+ "column": 47
+ }
+ }
+ },
+ {
+ "type": "ReturnStatement",
+ "argument": {
+ "type": "MemberExpression",
+ "computed": false,
+ "object": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 310,
+ 317
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ "optional": false,
+ "property": {
+ "type": "Identifier",
+ "name": "destroy",
+ "range": [
+ 318,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 18
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 310,
+ 325
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 25
+ }
+ }
+ },
+ "range": [
+ 303,
+ 326
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 3
+ },
+ "end": {
+ "line": 11,
+ "column": 26
+ }
+ }
+ }
+ ],
+ "range": [
+ 250,
+ 330
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 22
+ },
+ "end": {
+ "line": 12,
+ "column": 3
+ }
+ }
+ },
+ "expression": false,
+ "generator": false,
+ "id": null,
+ "params": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ }
+ ],
+ "range": [
+ 237,
+ 330
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 9
+ },
+ "end": {
+ "line": 12,
+ "column": 3
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 277,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 25
+ },
+ "end": {
+ "line": 10,
+ "column": 32
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "tooltip",
+ "identifiers": [
+ {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ }
+ ],
+ "defs": [
+ {
+ "type": "Variable",
+ "name": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ },
+ "node": {
+ "type": "VariableDeclarator",
+ "id": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ },
+ "init": {
+ "type": "CallExpression",
+ "arguments": [
+ {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 277,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 25
+ },
+ "end": {
+ "line": 10,
+ "column": 32
+ }
+ }
+ },
+ {
+ "type": "ObjectExpression",
+ "properties": [
+ {
+ "type": "Property",
+ "kind": "init",
+ "computed": false,
+ "key": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "method": false,
+ "shorthand": true,
+ "value": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ }
+ ],
+ "range": [
+ 286,
+ 297
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 34
+ },
+ "end": {
+ "line": 10,
+ "column": 45
+ }
+ }
+ }
+ ],
+ "callee": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "optional": false,
+ "range": [
+ 271,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ },
+ "range": [
+ 261,
+ 298
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 46
+ }
+ }
+ }
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 310,
+ 317
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "references": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ },
+ "from": "function",
+ "init": true,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 277,
+ 284
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 25
+ },
+ "end": {
+ "line": 10,
+ "column": 32
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "element",
+ "range": [
+ 238,
+ 245
+ ],
+ "loc": {
+ "start": {
+ "line": 9,
+ "column": 10
+ },
+ "end": {
+ "line": 9,
+ "column": 17
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 206,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 27
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 204,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 25
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 197,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 310,
+ 317
+ ],
+ "loc": {
+ "start": {
+ "line": 11,
+ "column": 10
+ },
+ "end": {
+ "line": 11,
+ "column": 17
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tooltip",
+ "range": [
+ 261,
+ 268
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 9
+ },
+ "end": {
+ "line": 10,
+ "column": 16
+ }
+ }
+ }
+ }
+ ],
+ "childScopes": [],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "content",
+ "range": [
+ 288,
+ 295
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 36
+ },
+ "end": {
+ "line": 10,
+ "column": 43
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "content",
+ "typeAnnotation": {
+ "type": "TSTypeAnnotation",
+ "typeAnnotation": {
+ "type": "TSStringKeyword",
+ "range": [
+ 206,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 27
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 204,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 25
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ },
+ "range": [
+ 197,
+ 212
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 18
+ },
+ "end": {
+ "line": 8,
+ "column": 33
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 215,
+ 225
+ ],
+ "loc": {
+ "start": {
+ "line": 8,
+ "column": 36
+ },
+ "end": {
+ "line": 8,
+ "column": 46
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "Attachment",
+ "range": [
+ 104,
+ 114
+ ],
+ "loc": {
+ "start": {
+ "line": 4,
+ "column": 15
+ },
+ "end": {
+ "line": 4,
+ "column": 25
+ }
+ }
+ }
+ },
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 271,
+ 276
+ ],
+ "loc": {
+ "start": {
+ "line": 10,
+ "column": 19
+ },
+ "end": {
+ "line": 10,
+ "column": 24
+ }
+ }
+ },
+ "from": "function",
+ "init": null,
+ "resolved": {
+ "type": "Identifier",
+ "name": "tippy",
+ "range": [
+ 27,
+ 32
+ ],
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 8
+ },
+ "end": {
+ "line": 2,
+ "column": 13
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "through": [
+ {
+ "identifier": {
+ "type": "Identifier",
+ "name": "$state",
+ "range": [
+ 160,
+ 166
+ ],
+ "loc": {
+ "start": {
+ "line": 6,
+ "column": 15
+ },
+ "end": {
+ "line": 6,
+ "column": 21
+ }
+ }
+ },
+ "from": "module",
+ "init": null,
+ "resolved": null
+ }
+ ]
+ }
+ ],
+ "through": []
+}
\ No newline at end of file