yansu 0.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +1 -0
  2. package/bin.mjs +18 -0
  3. package/dist/cli.d.mts +2 -0
  4. package/dist/cli.mjs +68 -0
  5. package/dist/dirs.d.mts +4 -0
  6. package/dist/dirs.mjs +6 -0
  7. package/dist/index.d.mts +78 -0
  8. package/dist/index.mjs +121 -0
  9. package/dist/nitro.json +15 -0
  10. package/dist/public/_nuxt/BHIHUtPz.js +4 -0
  11. package/dist/public/_nuxt/CCgOhniq.js +1 -0
  12. package/dist/public/_nuxt/CR6vfq1R.js +1 -0
  13. package/dist/public/_nuxt/DmxzK6E8.js +1 -0
  14. package/dist/public/_nuxt/builds/latest.json +1 -0
  15. package/dist/public/_nuxt/builds/meta/e9079134-f314-434b-b3a7-092c4a1e187d.json +1 -0
  16. package/dist/public/_nuxt/entry.DJ3VOi_0.css +1 -0
  17. package/dist/public/_nuxt/error-404.lC6KBLNm.css +1 -0
  18. package/dist/public/_nuxt/error-500.NtBcR2wE.css +1 -0
  19. package/dist/server/chunks/_/error-500.mjs +9 -0
  20. package/dist/server/chunks/build/_plugin-vue_export-helper-DjsbPc54.mjs +29 -0
  21. package/dist/server/chunks/build/client.precomputed.mjs +3 -0
  22. package/dist/server/chunks/build/error-404-Du0ot2hm.mjs +369 -0
  23. package/dist/server/chunks/build/error-500-Y3RUV6n2.mjs +73 -0
  24. package/dist/server/chunks/build/server.mjs +727 -0
  25. package/dist/server/chunks/nitro/nitro.mjs +5176 -0
  26. package/dist/server/chunks/routes/api/metadata.json.mjs +147 -0
  27. package/dist/server/chunks/routes/api/platform.json.mjs +20 -0
  28. package/dist/server/chunks/routes/renderer.mjs +408 -0
  29. package/dist/server/chunks/virtual/_virtual_spa-template.mjs +3 -0
  30. package/dist/server/index.mjs +9 -0
  31. package/dist/server/node_modules/.nitro/@vue/shared@3.5.25/dist/shared.cjs.prod.js +604 -0
  32. package/dist/server/node_modules/.nitro/@vue/shared@3.5.25/package.json +47 -0
  33. package/dist/server/node_modules/.nitro/@vue/shared@3.5.26/dist/shared.cjs.prod.js +604 -0
  34. package/dist/server/node_modules/.nitro/@vue/shared@3.5.26/package.json +47 -0
  35. package/dist/server/node_modules/@babel/parser/lib/index.js +14662 -0
  36. package/dist/server/node_modules/@babel/parser/package.json +50 -0
  37. package/dist/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6763 -0
  38. package/dist/server/node_modules/@vue/compiler-core/package.json +58 -0
  39. package/dist/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +689 -0
  40. package/dist/server/node_modules/@vue/compiler-dom/package.json +57 -0
  41. package/dist/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1413 -0
  42. package/dist/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  43. package/dist/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1853 -0
  44. package/dist/server/node_modules/@vue/reactivity/package.json +55 -0
  45. package/dist/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6770 -0
  46. package/dist/server/node_modules/@vue/runtime-core/package.json +52 -0
  47. package/dist/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1732 -0
  48. package/dist/server/node_modules/@vue/runtime-dom/package.json +60 -0
  49. package/dist/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +879 -0
  50. package/dist/server/node_modules/@vue/server-renderer/package.json +55 -0
  51. package/dist/server/node_modules/ansis/index.cjs +1 -0
  52. package/dist/server/node_modules/ansis/index.mjs +1 -0
  53. package/dist/server/node_modules/ansis/package.json +25 -0
  54. package/dist/server/node_modules/birpc/dist/index.mjs +173 -0
  55. package/dist/server/node_modules/birpc/package.json +56 -0
  56. package/dist/server/node_modules/consola/dist/chunks/prompt.mjs +280 -0
  57. package/dist/server/node_modules/consola/dist/core.mjs +512 -0
  58. package/dist/server/node_modules/consola/dist/index.mjs +651 -0
  59. package/dist/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
  60. package/dist/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
  61. package/dist/server/node_modules/consola/package.json +136 -0
  62. package/dist/server/node_modules/devalue/index.js +4 -0
  63. package/dist/server/node_modules/devalue/package.json +37 -0
  64. package/dist/server/node_modules/devalue/src/base64.js +110 -0
  65. package/dist/server/node_modules/devalue/src/constants.js +6 -0
  66. package/dist/server/node_modules/devalue/src/parse.js +205 -0
  67. package/dist/server/node_modules/devalue/src/stringify.js +265 -0
  68. package/dist/server/node_modules/devalue/src/uneval.js +407 -0
  69. package/dist/server/node_modules/devalue/src/utils.js +118 -0
  70. package/dist/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  71. package/dist/server/node_modules/entities/dist/commonjs/decode.js +568 -0
  72. package/dist/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  73. package/dist/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  74. package/dist/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  75. package/dist/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  76. package/dist/server/node_modules/entities/dist/commonjs/package.json +3 -0
  77. package/dist/server/node_modules/entities/package.json +113 -0
  78. package/dist/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  79. package/dist/server/node_modules/estree-walker/package.json +37 -0
  80. package/dist/server/node_modules/get-port-please/dist/index.mjs +430 -0
  81. package/dist/server/node_modules/get-port-please/package.json +39 -0
  82. package/dist/server/node_modules/hookable/dist/index.mjs +290 -0
  83. package/dist/server/node_modules/hookable/package.json +49 -0
  84. package/dist/server/node_modules/source-map-js/lib/array-set.js +121 -0
  85. package/dist/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  86. package/dist/server/node_modules/source-map-js/lib/base64.js +67 -0
  87. package/dist/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  88. package/dist/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  89. package/dist/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
  90. package/dist/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  91. package/dist/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  92. package/dist/server/node_modules/source-map-js/lib/source-node.js +413 -0
  93. package/dist/server/node_modules/source-map-js/lib/util.js +594 -0
  94. package/dist/server/node_modules/source-map-js/package.json +71 -0
  95. package/dist/server/node_modules/source-map-js/source-map.js +8 -0
  96. package/dist/server/node_modules/structured-clone-es/dist/index.mjs +285 -0
  97. package/dist/server/node_modules/structured-clone-es/package.json +56 -0
  98. package/dist/server/node_modules/ufo/dist/index.mjs +638 -0
  99. package/dist/server/node_modules/ufo/package.json +47 -0
  100. package/dist/server/node_modules/unhead/dist/index.mjs +9 -0
  101. package/dist/server/node_modules/unhead/dist/parser.mjs +508 -0
  102. package/dist/server/node_modules/unhead/dist/plugins.mjs +101 -0
  103. package/dist/server/node_modules/unhead/dist/scripts.mjs +30 -0
  104. package/dist/server/node_modules/unhead/dist/server.mjs +182 -0
  105. package/dist/server/node_modules/unhead/dist/shared/unhead.B578PsDV.mjs +266 -0
  106. package/dist/server/node_modules/unhead/dist/shared/unhead.BPM0-cfG.mjs +44 -0
  107. package/dist/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +43 -0
  108. package/dist/server/node_modules/unhead/dist/shared/unhead.BpRRHAhY.mjs +194 -0
  109. package/dist/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs +148 -0
  110. package/dist/server/node_modules/unhead/dist/shared/unhead.DH45uomy.mjs +180 -0
  111. package/dist/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
  112. package/dist/server/node_modules/unhead/dist/shared/unhead.DZbvapt-.mjs +70 -0
  113. package/dist/server/node_modules/unhead/dist/shared/unhead.Djo8ep_Y.mjs +166 -0
  114. package/dist/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
  115. package/dist/server/node_modules/unhead/dist/utils.mjs +5 -0
  116. package/dist/server/node_modules/unhead/package.json +105 -0
  117. package/dist/server/node_modules/vue/dist/vue.cjs.js +80 -0
  118. package/dist/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  119. package/dist/server/node_modules/vue/index.js +7 -0
  120. package/dist/server/node_modules/vue/index.mjs +1 -0
  121. package/dist/server/node_modules/vue/package.json +112 -0
  122. package/dist/server/node_modules/vue/server-renderer/index.mjs +1 -0
  123. package/dist/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +301 -0
  124. package/dist/server/node_modules/vue-bundle-renderer/package.json +55 -0
  125. package/dist/server/node_modules/ws/lib/buffer-util.js +131 -0
  126. package/dist/server/node_modules/ws/lib/constants.js +19 -0
  127. package/dist/server/node_modules/ws/lib/event-target.js +292 -0
  128. package/dist/server/node_modules/ws/lib/extension.js +203 -0
  129. package/dist/server/node_modules/ws/lib/limiter.js +55 -0
  130. package/dist/server/node_modules/ws/lib/permessage-deflate.js +528 -0
  131. package/dist/server/node_modules/ws/lib/receiver.js +706 -0
  132. package/dist/server/node_modules/ws/lib/sender.js +602 -0
  133. package/dist/server/node_modules/ws/lib/stream.js +161 -0
  134. package/dist/server/node_modules/ws/lib/subprotocol.js +62 -0
  135. package/dist/server/node_modules/ws/lib/validation.js +152 -0
  136. package/dist/server/node_modules/ws/lib/websocket-server.js +554 -0
  137. package/dist/server/node_modules/ws/lib/websocket.js +1393 -0
  138. package/dist/server/node_modules/ws/package.json +69 -0
  139. package/dist/server/node_modules/ws/wrapper.mjs +8 -0
  140. package/dist/server/package.json +32 -0
  141. package/dist/shared/yansu.DmdNF4qf.mjs +151 -0
  142. package/package.json +50 -0
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BinTrieFlags = void 0;
4
+ /**
5
+ * Bit flags & masks for the binary trie encoding used for entity decoding.
6
+ *
7
+ * Bit layout (16 bits total):
8
+ * 15..14 VALUE_LENGTH (+1 encoding; 0 => no value)
9
+ * 13 FLAG13. If valueLength>0: semicolon required flag (implicit ';').
10
+ * If valueLength==0: compact run flag.
11
+ * 12..7 BRANCH_LENGTH Branch length (0 => single branch in 6..0 if jumpOffset==char) OR run length (when compact run)
12
+ * 6..0 JUMP_TABLE Jump offset (jump table) OR single-branch char code OR first run char
13
+ */
14
+ var BinTrieFlags;
15
+ (function (BinTrieFlags) {
16
+ BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
17
+ BinTrieFlags[BinTrieFlags["FLAG13"] = 8192] = "FLAG13";
18
+ BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
19
+ BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
20
+ })(BinTrieFlags || (exports.BinTrieFlags = BinTrieFlags = {}));
21
+ //# sourceMappingURL=bin-trie-flags.js.map
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeBase64 = decodeBase64;
4
+ /*
5
+ * Shared base64 decode helper for generated decode data.
6
+ * Assumes global atob is available.
7
+ */
8
+ function decodeBase64(input) {
9
+ const binary =
10
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins
11
+ typeof atob === "function"
12
+ ? // Browser (and Node >=16)
13
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins
14
+ atob(input)
15
+ : // Older Node versions (<16)
16
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins
17
+ typeof Buffer.from === "function"
18
+ ? // eslint-disable-next-line n/no-unsupported-features/node-builtins
19
+ Buffer.from(input, "base64").toString("binary")
20
+ : // eslint-disable-next-line unicorn/no-new-buffer, n/no-deprecated-api
21
+ new Buffer(input, "base64").toString("binary");
22
+ const evenLength = binary.length & ~1; // Round down to even length
23
+ const out = new Uint16Array(evenLength / 2);
24
+ for (let index = 0, outIndex = 0; index < evenLength; index += 2) {
25
+ const lo = binary.charCodeAt(index);
26
+ const hi = binary.charCodeAt(index + 1);
27
+ out[outIndex++] = lo | (hi << 8);
28
+ }
29
+ return out;
30
+ }
31
+ //# sourceMappingURL=decode-shared.js.map
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,113 @@
1
+ {
2
+ "name": "entities",
3
+ "version": "7.0.0",
4
+ "description": "Encode & decode XML and HTML entities with ease & speed",
5
+ "keywords": [
6
+ "html entities",
7
+ "entity decoder",
8
+ "entity encoding",
9
+ "html decoding",
10
+ "html encoding",
11
+ "xml decoding",
12
+ "xml encoding"
13
+ ],
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/fb55/entities.git"
17
+ },
18
+ "funding": "https://github.com/fb55/entities?sponsor=1",
19
+ "license": "BSD-2-Clause",
20
+ "author": "Felix Boehm <me@feedic.com>",
21
+ "sideEffects": false,
22
+ "type": "module",
23
+ "exports": {
24
+ ".": {
25
+ "import": {
26
+ "types": "./dist/esm/index.d.ts",
27
+ "default": "./dist/esm/index.js"
28
+ },
29
+ "require": {
30
+ "types": "./dist/commonjs/index.d.ts",
31
+ "default": "./dist/commonjs/index.js"
32
+ }
33
+ },
34
+ "./decode": {
35
+ "import": {
36
+ "types": "./dist/esm/decode.d.ts",
37
+ "default": "./dist/esm/decode.js"
38
+ },
39
+ "require": {
40
+ "types": "./dist/commonjs/decode.d.ts",
41
+ "default": "./dist/commonjs/decode.js"
42
+ }
43
+ },
44
+ "./escape": {
45
+ "import": {
46
+ "types": "./dist/esm/escape.d.ts",
47
+ "default": "./dist/esm/escape.js"
48
+ },
49
+ "require": {
50
+ "types": "./dist/commonjs/escape.d.ts",
51
+ "default": "./dist/commonjs/escape.js"
52
+ }
53
+ }
54
+ },
55
+ "main": "./dist/commonjs/index.js",
56
+ "module": "./dist/esm/index.js",
57
+ "types": "./dist/commonjs/index.d.ts",
58
+ "files": [
59
+ "decode.js",
60
+ "decode.d.ts",
61
+ "escape.js",
62
+ "escape.d.ts",
63
+ "dist",
64
+ "src"
65
+ ],
66
+ "scripts": {
67
+ "build:docs": "typedoc --hideGenerator src/index.ts",
68
+ "build:encode-trie": "node --import=tsx scripts/write-encode-map.ts",
69
+ "build:trie": "node --import=tsx scripts/write-decode-map.ts",
70
+ "format": "npm run format:es && npm run format:biome",
71
+ "format:es": "npm run lint:es -- --fix",
72
+ "format:biome": "biome check --fix .",
73
+ "lint": "npm run lint:es && npm run lint:ts && npm run lint:biome",
74
+ "lint:es": "eslint . --ignore-path .gitignore",
75
+ "lint:biome": "biome check .",
76
+ "lint:ts": "tsc --noEmit",
77
+ "prepublishOnly": "tshy",
78
+ "test": "npm run test:vi && npm run lint",
79
+ "test:vi": "vitest run"
80
+ },
81
+ "devDependencies": {
82
+ "@biomejs/biome": "^2.2.3",
83
+ "@types/node": "^24.3.1",
84
+ "@typescript-eslint/eslint-plugin": "^8.42.0",
85
+ "@typescript-eslint/parser": "^8.33.1",
86
+ "@vitest/coverage-v8": "^3.2.4",
87
+ "eslint": "^8.57.1",
88
+ "eslint-config-biome": "^2.1.3",
89
+ "eslint-plugin-n": "^17.21.3",
90
+ "eslint-plugin-unicorn": "^56.0.1",
91
+ "tshy": "^3.0.2",
92
+ "tsx": "^4.20.5",
93
+ "typedoc": "^0.28.12",
94
+ "typescript": "^5.9.2",
95
+ "vitest": "^3.2.4"
96
+ },
97
+ "engines": {
98
+ "node": ">=0.12"
99
+ },
100
+ "tshy": {
101
+ "exclude": [
102
+ "**/*.spec.ts",
103
+ "**/__fixtures__/*",
104
+ "**/__tests__/*",
105
+ "**/__snapshots__/*"
106
+ ],
107
+ "exports": {
108
+ ".": "./src/index.ts",
109
+ "./decode": "./src/decode.ts",
110
+ "./escape": "./src/escape.ts"
111
+ }
112
+ }
113
+ }
@@ -0,0 +1,344 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
3
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
4
+ (global = global || self, factory(global.estreeWalker = {}));
5
+ }(this, (function (exports) { 'use strict';
6
+
7
+ // @ts-check
8
+ /** @typedef { import('estree').BaseNode} BaseNode */
9
+
10
+ /** @typedef {{
11
+ skip: () => void;
12
+ remove: () => void;
13
+ replace: (node: BaseNode) => void;
14
+ }} WalkerContext */
15
+
16
+ class WalkerBase {
17
+ constructor() {
18
+ /** @type {boolean} */
19
+ this.should_skip = false;
20
+
21
+ /** @type {boolean} */
22
+ this.should_remove = false;
23
+
24
+ /** @type {BaseNode | null} */
25
+ this.replacement = null;
26
+
27
+ /** @type {WalkerContext} */
28
+ this.context = {
29
+ skip: () => (this.should_skip = true),
30
+ remove: () => (this.should_remove = true),
31
+ replace: (node) => (this.replacement = node)
32
+ };
33
+ }
34
+
35
+ /**
36
+ *
37
+ * @param {any} parent
38
+ * @param {string} prop
39
+ * @param {number} index
40
+ * @param {BaseNode} node
41
+ */
42
+ replace(parent, prop, index, node) {
43
+ if (parent) {
44
+ if (index !== null) {
45
+ parent[prop][index] = node;
46
+ } else {
47
+ parent[prop] = node;
48
+ }
49
+ }
50
+ }
51
+
52
+ /**
53
+ *
54
+ * @param {any} parent
55
+ * @param {string} prop
56
+ * @param {number} index
57
+ */
58
+ remove(parent, prop, index) {
59
+ if (parent) {
60
+ if (index !== null) {
61
+ parent[prop].splice(index, 1);
62
+ } else {
63
+ delete parent[prop];
64
+ }
65
+ }
66
+ }
67
+ }
68
+
69
+ // @ts-check
70
+
71
+ /** @typedef { import('estree').BaseNode} BaseNode */
72
+ /** @typedef { import('./walker.js').WalkerContext} WalkerContext */
73
+
74
+ /** @typedef {(
75
+ * this: WalkerContext,
76
+ * node: BaseNode,
77
+ * parent: BaseNode,
78
+ * key: string,
79
+ * index: number
80
+ * ) => void} SyncHandler */
81
+
82
+ class SyncWalker extends WalkerBase {
83
+ /**
84
+ *
85
+ * @param {SyncHandler} enter
86
+ * @param {SyncHandler} leave
87
+ */
88
+ constructor(enter, leave) {
89
+ super();
90
+
91
+ /** @type {SyncHandler} */
92
+ this.enter = enter;
93
+
94
+ /** @type {SyncHandler} */
95
+ this.leave = leave;
96
+ }
97
+
98
+ /**
99
+ *
100
+ * @param {BaseNode} node
101
+ * @param {BaseNode} parent
102
+ * @param {string} [prop]
103
+ * @param {number} [index]
104
+ * @returns {BaseNode}
105
+ */
106
+ visit(node, parent, prop, index) {
107
+ if (node) {
108
+ if (this.enter) {
109
+ const _should_skip = this.should_skip;
110
+ const _should_remove = this.should_remove;
111
+ const _replacement = this.replacement;
112
+ this.should_skip = false;
113
+ this.should_remove = false;
114
+ this.replacement = null;
115
+
116
+ this.enter.call(this.context, node, parent, prop, index);
117
+
118
+ if (this.replacement) {
119
+ node = this.replacement;
120
+ this.replace(parent, prop, index, node);
121
+ }
122
+
123
+ if (this.should_remove) {
124
+ this.remove(parent, prop, index);
125
+ }
126
+
127
+ const skipped = this.should_skip;
128
+ const removed = this.should_remove;
129
+
130
+ this.should_skip = _should_skip;
131
+ this.should_remove = _should_remove;
132
+ this.replacement = _replacement;
133
+
134
+ if (skipped) return node;
135
+ if (removed) return null;
136
+ }
137
+
138
+ for (const key in node) {
139
+ const value = node[key];
140
+
141
+ if (typeof value !== "object") {
142
+ continue;
143
+ } else if (Array.isArray(value)) {
144
+ for (let i = 0; i < value.length; i += 1) {
145
+ if (value[i] !== null && typeof value[i].type === 'string') {
146
+ if (!this.visit(value[i], node, key, i)) {
147
+ // removed
148
+ i--;
149
+ }
150
+ }
151
+ }
152
+ } else if (value !== null && typeof value.type === "string") {
153
+ this.visit(value, node, key, null);
154
+ }
155
+ }
156
+
157
+ if (this.leave) {
158
+ const _replacement = this.replacement;
159
+ const _should_remove = this.should_remove;
160
+ this.replacement = null;
161
+ this.should_remove = false;
162
+
163
+ this.leave.call(this.context, node, parent, prop, index);
164
+
165
+ if (this.replacement) {
166
+ node = this.replacement;
167
+ this.replace(parent, prop, index, node);
168
+ }
169
+
170
+ if (this.should_remove) {
171
+ this.remove(parent, prop, index);
172
+ }
173
+
174
+ const removed = this.should_remove;
175
+
176
+ this.replacement = _replacement;
177
+ this.should_remove = _should_remove;
178
+
179
+ if (removed) return null;
180
+ }
181
+ }
182
+
183
+ return node;
184
+ }
185
+ }
186
+
187
+ // @ts-check
188
+
189
+ /** @typedef { import('estree').BaseNode} BaseNode */
190
+ /** @typedef { import('./walker').WalkerContext} WalkerContext */
191
+
192
+ /** @typedef {(
193
+ * this: WalkerContext,
194
+ * node: BaseNode,
195
+ * parent: BaseNode,
196
+ * key: string,
197
+ * index: number
198
+ * ) => Promise<void>} AsyncHandler */
199
+
200
+ class AsyncWalker extends WalkerBase {
201
+ /**
202
+ *
203
+ * @param {AsyncHandler} enter
204
+ * @param {AsyncHandler} leave
205
+ */
206
+ constructor(enter, leave) {
207
+ super();
208
+
209
+ /** @type {AsyncHandler} */
210
+ this.enter = enter;
211
+
212
+ /** @type {AsyncHandler} */
213
+ this.leave = leave;
214
+ }
215
+
216
+ /**
217
+ *
218
+ * @param {BaseNode} node
219
+ * @param {BaseNode} parent
220
+ * @param {string} [prop]
221
+ * @param {number} [index]
222
+ * @returns {Promise<BaseNode>}
223
+ */
224
+ async visit(node, parent, prop, index) {
225
+ if (node) {
226
+ if (this.enter) {
227
+ const _should_skip = this.should_skip;
228
+ const _should_remove = this.should_remove;
229
+ const _replacement = this.replacement;
230
+ this.should_skip = false;
231
+ this.should_remove = false;
232
+ this.replacement = null;
233
+
234
+ await this.enter.call(this.context, node, parent, prop, index);
235
+
236
+ if (this.replacement) {
237
+ node = this.replacement;
238
+ this.replace(parent, prop, index, node);
239
+ }
240
+
241
+ if (this.should_remove) {
242
+ this.remove(parent, prop, index);
243
+ }
244
+
245
+ const skipped = this.should_skip;
246
+ const removed = this.should_remove;
247
+
248
+ this.should_skip = _should_skip;
249
+ this.should_remove = _should_remove;
250
+ this.replacement = _replacement;
251
+
252
+ if (skipped) return node;
253
+ if (removed) return null;
254
+ }
255
+
256
+ for (const key in node) {
257
+ const value = node[key];
258
+
259
+ if (typeof value !== "object") {
260
+ continue;
261
+ } else if (Array.isArray(value)) {
262
+ for (let i = 0; i < value.length; i += 1) {
263
+ if (value[i] !== null && typeof value[i].type === 'string') {
264
+ if (!(await this.visit(value[i], node, key, i))) {
265
+ // removed
266
+ i--;
267
+ }
268
+ }
269
+ }
270
+ } else if (value !== null && typeof value.type === "string") {
271
+ await this.visit(value, node, key, null);
272
+ }
273
+ }
274
+
275
+ if (this.leave) {
276
+ const _replacement = this.replacement;
277
+ const _should_remove = this.should_remove;
278
+ this.replacement = null;
279
+ this.should_remove = false;
280
+
281
+ await this.leave.call(this.context, node, parent, prop, index);
282
+
283
+ if (this.replacement) {
284
+ node = this.replacement;
285
+ this.replace(parent, prop, index, node);
286
+ }
287
+
288
+ if (this.should_remove) {
289
+ this.remove(parent, prop, index);
290
+ }
291
+
292
+ const removed = this.should_remove;
293
+
294
+ this.replacement = _replacement;
295
+ this.should_remove = _should_remove;
296
+
297
+ if (removed) return null;
298
+ }
299
+ }
300
+
301
+ return node;
302
+ }
303
+ }
304
+
305
+ // @ts-check
306
+
307
+ /** @typedef { import('estree').BaseNode} BaseNode */
308
+ /** @typedef { import('./sync.js').SyncHandler} SyncHandler */
309
+ /** @typedef { import('./async.js').AsyncHandler} AsyncHandler */
310
+
311
+ /**
312
+ *
313
+ * @param {BaseNode} ast
314
+ * @param {{
315
+ * enter?: SyncHandler
316
+ * leave?: SyncHandler
317
+ * }} walker
318
+ * @returns {BaseNode}
319
+ */
320
+ function walk(ast, { enter, leave }) {
321
+ const instance = new SyncWalker(enter, leave);
322
+ return instance.visit(ast, null);
323
+ }
324
+
325
+ /**
326
+ *
327
+ * @param {BaseNode} ast
328
+ * @param {{
329
+ * enter?: AsyncHandler
330
+ * leave?: AsyncHandler
331
+ * }} walker
332
+ * @returns {Promise<BaseNode>}
333
+ */
334
+ async function asyncWalk(ast, { enter, leave }) {
335
+ const instance = new AsyncWalker(enter, leave);
336
+ return await instance.visit(ast, null);
337
+ }
338
+
339
+ exports.asyncWalk = asyncWalk;
340
+ exports.walk = walk;
341
+
342
+ Object.defineProperty(exports, '__esModule', { value: true });
343
+
344
+ })));
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "estree-walker",
3
+ "description": "Traverse an ESTree-compliant AST",
4
+ "version": "2.0.2",
5
+ "private": false,
6
+ "author": "Rich Harris",
7
+ "license": "MIT",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/Rich-Harris/estree-walker"
11
+ },
12
+ "type": "commonjs",
13
+ "main": "./dist/umd/estree-walker.js",
14
+ "module": "./dist/esm/estree-walker.js",
15
+ "exports": {
16
+ "require": "./dist/umd/estree-walker.js",
17
+ "import": "./dist/esm/estree-walker.js"
18
+ },
19
+ "types": "types/index.d.ts",
20
+ "scripts": {
21
+ "prepublishOnly": "npm run build && npm test",
22
+ "build": "tsc && rollup -c",
23
+ "test": "uvu test"
24
+ },
25
+ "devDependencies": {
26
+ "@types/estree": "0.0.42",
27
+ "rollup": "^2.10.9",
28
+ "typescript": "^3.7.5",
29
+ "uvu": "^0.5.1"
30
+ },
31
+ "files": [
32
+ "src",
33
+ "dist",
34
+ "types",
35
+ "README.md"
36
+ ]
37
+ }