openplanr 3.4.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/cli/commands/design.d.ts +3 -0
  3. package/dist/cli/commands/design.d.ts.map +1 -0
  4. package/dist/cli/commands/design.js +137 -0
  5. package/dist/cli/commands/design.js.map +1 -0
  6. package/dist/cli/commands/groups/operations.d.ts.map +1 -1
  7. package/dist/cli/commands/groups/operations.js +2 -0
  8. package/dist/cli/commands/groups/operations.js.map +1 -1
  9. package/dist/dashboard/.vite/manifest.json +1 -1
  10. package/dist/dashboard/assets/{index-CvQAlBy3.js → index-B-l_941W.js} +2 -2
  11. package/dist/dashboard/assets/{index-CvQAlBy3.js.map → index-B-l_941W.js.map} +1 -1
  12. package/dist/dashboard/dashboard-manifest.json +13 -13
  13. package/dist/dashboard/index.html +1 -1
  14. package/dist/services/design-artifact-service.d.ts +22 -0
  15. package/dist/services/design-artifact-service.d.ts.map +1 -1
  16. package/dist/services/design-artifact-service.js +76 -16
  17. package/dist/services/design-artifact-service.js.map +1 -1
  18. package/dist/services/runtime-manager/runtime-package.js +1 -1
  19. package/dist/services/runtime-manager/runtime-package.js.map +1 -1
  20. package/docs/CLI.md +29 -0
  21. package/lib/host-packages/adapter-registry.json +5 -5
  22. package/lib/host-packages/capability-map.json +1 -1
  23. package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
  24. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
  25. package/lib/host-packages/claude/openplanr/.openplanr-content.json +24 -340
  26. package/lib/host-packages/claude/openplanr/README.md +8 -8
  27. package/lib/host-packages/claude/openplanr/skills/artifact/references/design-sharing.md +2 -2
  28. package/lib/host-packages/claude/openplanr/skills/design/SKILL.md +23 -12
  29. package/lib/host-packages/claude/openplanr/skills/design/references/design-system.md +2 -2
  30. package/lib/host-packages/claude/openplanr/skills/design/references/generation.md +3 -3
  31. package/lib/host-packages/claude/openplanr/skills/design/references/hosted-canvas.md +6 -3
  32. package/lib/host-packages/claude/openplanr/skills/design/references/review.md +6 -6
  33. package/lib/host-packages/claude/openplanr/skills/design/references/team-review.md +3 -4
  34. package/lib/host-packages/claude/openplanr/skills/design/references/utilities.md +78 -38
  35. package/lib/host-packages/claude/openplanr/skills/design-loop/SKILL.md +15 -7
  36. package/lib/host-packages/claude/openplanr/skills/design-loop/references/design-system.md +2 -2
  37. package/lib/host-packages/claude/openplanr/skills/design-loop/references/generation.md +3 -3
  38. package/lib/host-packages/claude/openplanr/skills/design-loop/references/review.md +6 -6
  39. package/lib/host-packages/claude/openplanr/skills/design-loop/references/team-review.md +3 -4
  40. package/lib/host-packages/claude/openplanr/skills/design-loop/references/utilities.md +78 -38
  41. package/lib/host-packages/claude/openplanr/skills/design-review/SKILL.md +25 -5
  42. package/lib/host-packages/claude/openplanr/skills/design-review/references/design-system.md +2 -2
  43. package/lib/host-packages/claude/openplanr/skills/design-review/references/generation.md +3 -3
  44. package/lib/host-packages/claude/openplanr/skills/design-review/references/review.md +6 -6
  45. package/lib/host-packages/claude/openplanr/skills/design-review/references/team-review.md +3 -4
  46. package/lib/host-packages/claude/openplanr/skills/design-review/references/utilities.md +78 -38
  47. package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +7 -3
  48. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +23 -339
  49. package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
  50. package/lib/host-packages/cursor/openplanr/rules/planr-artifact/references/design-sharing.md +2 -2
  51. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/design-system.md +2 -2
  52. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/generation.md +3 -3
  53. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/hosted-canvas.md +6 -3
  54. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/review.md +6 -6
  55. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/team-review.md +3 -4
  56. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/utilities.md +78 -38
  57. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/design-system.md +2 -2
  58. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/generation.md +3 -3
  59. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/review.md +6 -6
  60. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/team-review.md +3 -4
  61. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/utilities.md +78 -38
  62. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop.mdc +15 -7
  63. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/design-system.md +2 -2
  64. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/generation.md +3 -3
  65. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/review.md +6 -6
  66. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/team-review.md +3 -4
  67. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/utilities.md +78 -38
  68. package/lib/host-packages/cursor/openplanr/rules/planr-design-review.mdc +25 -5
  69. package/lib/host-packages/cursor/openplanr/rules/planr-design.mdc +23 -12
  70. package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +7 -3
  71. package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
  72. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
  73. package/lib/host-packages/openai/openplanr/.openplanr-content.json +27 -343
  74. package/lib/host-packages/openai/openplanr/skills/artifact/references/design-sharing.md +2 -2
  75. package/lib/host-packages/openai/openplanr/skills/design/SKILL.md +23 -12
  76. package/lib/host-packages/openai/openplanr/skills/design/openplanr.skill.json +0 -11
  77. package/lib/host-packages/openai/openplanr/skills/design/references/design-system.md +2 -2
  78. package/lib/host-packages/openai/openplanr/skills/design/references/generation.md +3 -3
  79. package/lib/host-packages/openai/openplanr/skills/design/references/hosted-canvas.md +6 -3
  80. package/lib/host-packages/openai/openplanr/skills/design/references/review.md +6 -6
  81. package/lib/host-packages/openai/openplanr/skills/design/references/team-review.md +3 -4
  82. package/lib/host-packages/openai/openplanr/skills/design/references/utilities.md +78 -38
  83. package/lib/host-packages/openai/openplanr/skills/design-loop/SKILL.md +15 -7
  84. package/lib/host-packages/openai/openplanr/skills/design-loop/openplanr.skill.json +0 -11
  85. package/lib/host-packages/openai/openplanr/skills/design-loop/references/design-system.md +2 -2
  86. package/lib/host-packages/openai/openplanr/skills/design-loop/references/generation.md +3 -3
  87. package/lib/host-packages/openai/openplanr/skills/design-loop/references/review.md +6 -6
  88. package/lib/host-packages/openai/openplanr/skills/design-loop/references/team-review.md +3 -4
  89. package/lib/host-packages/openai/openplanr/skills/design-loop/references/utilities.md +78 -38
  90. package/lib/host-packages/openai/openplanr/skills/design-review/SKILL.md +25 -5
  91. package/lib/host-packages/openai/openplanr/skills/design-review/openplanr.skill.json +0 -11
  92. package/lib/host-packages/openai/openplanr/skills/design-review/references/design-system.md +2 -2
  93. package/lib/host-packages/openai/openplanr/skills/design-review/references/generation.md +3 -3
  94. package/lib/host-packages/openai/openplanr/skills/design-review/references/review.md +6 -6
  95. package/lib/host-packages/openai/openplanr/skills/design-review/references/team-review.md +3 -4
  96. package/lib/host-packages/openai/openplanr/skills/design-review/references/utilities.md +78 -38
  97. package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +7 -3
  98. package/lib/host-packages/openai/openplanr/skills/plan/openplanr.skill.json +0 -11
  99. package/package.json +2 -2
  100. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-artifact-shell.mjs +0 -1772
  101. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-document.mjs +0 -2937
  102. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-entities.mjs +0 -439
  103. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-handoff.mjs +0 -2370
  104. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-loopback-server.mjs +0 -359
  105. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-parse5-parser.mjs +0 -3970
  106. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-parse5-tokenizer.mjs +0 -3501
  107. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-review-state-store.mjs +0 -45
  108. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-review.mjs +0 -3376
  109. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-runtime-home.mjs +0 -38
  110. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-sandbox-guards.mjs +0 -1102
  111. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share-cli-bridge.mjs +0 -321
  112. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-d707e49b.mjs +0 -1652
  113. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-9f6918b0.mjs +0 -1037
  114. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-design-support-0bac378d.mjs +0 -137
  115. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design.mjs +0 -1500
  116. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +0 -2023
  117. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +0 -2
  118. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/01-module-runtime.js +0 -18
  119. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/02-artifact-review-ui.js +0 -814
  120. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +0 -10
  121. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-artifact-review-ui.js +0 -2568
  122. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +0 -60
  123. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +0 -65
  124. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/enhancements.css +0 -388
  125. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/handoff-center.css +0 -81
  126. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.css +0 -1
  127. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.js +0 -139
  128. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +0 -1159
  129. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/01-module-runtime.js +0 -30
  130. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +0 -900
  131. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js +0 -2261
  132. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/04-react-dom-client-reconciliation-hooks.js +0 -1595
  133. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/05-react-dom-client-render-phases.js +0 -1467
  134. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/06-react-dom-client-commit-effects.js +0 -1860
  135. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/07-react-dom-client-work-loop-scheduling.js +0 -914
  136. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/08-react-dom-client-dom-events-properties-hydration.js +0 -2578
  137. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +0 -582
  138. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/10-react.js +0 -17
  139. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/11-artifact-review-ui.js +0 -12
  140. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +0 -285
  141. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +0 -2773
  142. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-studio-shell.js +0 -134
  143. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +0 -2207
  144. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-design-review-experience.js +0 -16
  145. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-studio-shell.js +0 -8
  146. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/18-interface-primitives.js +0 -3883
  147. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/19-interface-primitives.js +0 -966
  148. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/20-studio-shell.js +0 -520
  149. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +0 -1597
  150. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +0 -311
  151. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +0 -163
  152. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/registries/artifact-theme.json +0 -64
  153. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +0 -90
  154. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +0 -142
  155. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +0 -97
  156. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +0 -584
  157. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +0 -191
  158. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +0 -407
  159. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +0 -106
  160. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-handoff-readiness.schema.json +0 -398
  161. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-implementation-handoff.schema.json +0 -518
  162. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-planning-lineage.schema.json +0 -106
  163. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +0 -107
  164. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.14.0/artifact-theme.schema.json +0 -316
  165. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.16.0/artifact-envelope.schema.json +0 -408
  166. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.16.0/design-review-bundle.schema.json +0 -590
  167. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-document.schema.json +0 -506
  168. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +0 -822
  169. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +0 -346
  170. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +0 -1232
  171. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design.mjs +0 -2611
  172. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +0 -21
  173. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +0 -163
  174. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +0 -97
  175. package/lib/host-packages/claude/openplanr/skills/design/scripts/design.mjs +0 -12
  176. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design.mjs +0 -12
  177. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design.mjs +0 -12
  178. package/lib/host-packages/claude/openplanr/skills/plan/scripts/design.mjs +0 -12
  179. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design.mjs +0 -12
  180. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design.mjs +0 -12
  181. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design.mjs +0 -12
  182. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design.mjs +0 -12
  183. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-artifact-shell.mjs +0 -1772
  184. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-document.mjs +0 -2937
  185. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-entities.mjs +0 -439
  186. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-handoff.mjs +0 -2370
  187. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-loopback-server.mjs +0 -359
  188. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-parse5-parser.mjs +0 -3970
  189. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-parse5-tokenizer.mjs +0 -3501
  190. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-review-state-store.mjs +0 -45
  191. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-review.mjs +0 -3376
  192. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-runtime-home.mjs +0 -38
  193. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-sandbox-guards.mjs +0 -1102
  194. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share-cli-bridge.mjs +0 -321
  195. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-d707e49b.mjs +0 -1652
  196. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-9f6918b0.mjs +0 -1037
  197. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-design-support-0bac378d.mjs +0 -137
  198. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design.mjs +0 -1500
  199. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +0 -2023
  200. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +0 -2
  201. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/01-module-runtime.js +0 -18
  202. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/02-artifact-review-ui.js +0 -814
  203. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +0 -10
  204. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-artifact-review-ui.js +0 -2568
  205. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +0 -60
  206. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +0 -65
  207. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/enhancements.css +0 -388
  208. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/handoff-center.css +0 -81
  209. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.css +0 -1
  210. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.js +0 -139
  211. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +0 -1159
  212. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/01-module-runtime.js +0 -30
  213. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +0 -900
  214. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js +0 -2261
  215. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/04-react-dom-client-reconciliation-hooks.js +0 -1595
  216. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/05-react-dom-client-render-phases.js +0 -1467
  217. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/06-react-dom-client-commit-effects.js +0 -1860
  218. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/07-react-dom-client-work-loop-scheduling.js +0 -914
  219. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/08-react-dom-client-dom-events-properties-hydration.js +0 -2578
  220. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +0 -582
  221. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/10-react.js +0 -17
  222. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/11-artifact-review-ui.js +0 -12
  223. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +0 -285
  224. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +0 -2773
  225. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-studio-shell.js +0 -134
  226. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +0 -2207
  227. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-design-review-experience.js +0 -16
  228. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-studio-shell.js +0 -8
  229. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/18-interface-primitives.js +0 -3883
  230. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/19-interface-primitives.js +0 -966
  231. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/20-studio-shell.js +0 -520
  232. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +0 -1597
  233. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +0 -311
  234. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +0 -163
  235. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/registries/artifact-theme.json +0 -64
  236. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +0 -90
  237. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +0 -142
  238. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +0 -97
  239. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +0 -584
  240. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +0 -191
  241. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +0 -407
  242. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +0 -106
  243. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-handoff-readiness.schema.json +0 -398
  244. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-implementation-handoff.schema.json +0 -518
  245. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-planning-lineage.schema.json +0 -106
  246. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +0 -107
  247. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.14.0/artifact-theme.schema.json +0 -316
  248. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.16.0/artifact-envelope.schema.json +0 -408
  249. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.16.0/design-review-bundle.schema.json +0 -590
  250. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-document.schema.json +0 -506
  251. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +0 -822
  252. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +0 -346
  253. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +0 -1232
  254. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design.mjs +0 -2611
  255. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +0 -21
  256. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +0 -163
  257. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +0 -97
  258. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-artifact-shell.mjs +0 -1772
  259. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-document.mjs +0 -2937
  260. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-entities.mjs +0 -439
  261. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-handoff.mjs +0 -2370
  262. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-loopback-server.mjs +0 -359
  263. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-parse5-parser.mjs +0 -3970
  264. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-parse5-tokenizer.mjs +0 -3501
  265. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-review-state-store.mjs +0 -45
  266. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-review.mjs +0 -3376
  267. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-runtime-home.mjs +0 -38
  268. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-sandbox-guards.mjs +0 -1102
  269. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share-cli-bridge.mjs +0 -321
  270. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-d707e49b.mjs +0 -1652
  271. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-9f6918b0.mjs +0 -1037
  272. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-design-support-0bac378d.mjs +0 -137
  273. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design.mjs +0 -1500
  274. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +0 -2023
  275. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +0 -2
  276. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/01-module-runtime.js +0 -18
  277. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/02-artifact-review-ui.js +0 -814
  278. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +0 -10
  279. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-artifact-review-ui.js +0 -2568
  280. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +0 -60
  281. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +0 -65
  282. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/enhancements.css +0 -388
  283. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/handoff-center.css +0 -81
  284. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.css +0 -1
  285. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.js +0 -139
  286. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +0 -1159
  287. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/01-module-runtime.js +0 -30
  288. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +0 -900
  289. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js +0 -2261
  290. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/04-react-dom-client-reconciliation-hooks.js +0 -1595
  291. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/05-react-dom-client-render-phases.js +0 -1467
  292. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/06-react-dom-client-commit-effects.js +0 -1860
  293. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/07-react-dom-client-work-loop-scheduling.js +0 -914
  294. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/08-react-dom-client-dom-events-properties-hydration.js +0 -2578
  295. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +0 -582
  296. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/10-react.js +0 -17
  297. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/11-artifact-review-ui.js +0 -12
  298. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +0 -285
  299. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +0 -2773
  300. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-studio-shell.js +0 -134
  301. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +0 -2207
  302. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-design-review-experience.js +0 -16
  303. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-studio-shell.js +0 -8
  304. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/18-interface-primitives.js +0 -3883
  305. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/19-interface-primitives.js +0 -966
  306. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/20-studio-shell.js +0 -520
  307. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +0 -1597
  308. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +0 -311
  309. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +0 -163
  310. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/registries/artifact-theme.json +0 -64
  311. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +0 -90
  312. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +0 -142
  313. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +0 -97
  314. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +0 -584
  315. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +0 -191
  316. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +0 -407
  317. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +0 -106
  318. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-handoff-readiness.schema.json +0 -398
  319. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-implementation-handoff.schema.json +0 -518
  320. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-planning-lineage.schema.json +0 -106
  321. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +0 -107
  322. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.14.0/artifact-theme.schema.json +0 -316
  323. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.16.0/artifact-envelope.schema.json +0 -408
  324. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.16.0/design-review-bundle.schema.json +0 -590
  325. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-document.schema.json +0 -506
  326. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +0 -822
  327. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +0 -346
  328. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +0 -1232
  329. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design.mjs +0 -2611
  330. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +0 -21
  331. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +0 -163
  332. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +0 -97
  333. package/lib/host-packages/openai/openplanr/skills/design/scripts/design.mjs +0 -12
  334. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design.mjs +0 -12
  335. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design.mjs +0 -12
  336. package/lib/host-packages/openai/openplanr/skills/plan/scripts/design.mjs +0 -12
@@ -1,3501 +0,0 @@
1
- import {
2
- DecodingMode,
3
- EntityDecoder,
4
- htmlDecodeTree
5
- } from "./design-entities.mjs";
6
-
7
- // node_modules/parse5/dist/common/unicode.js
8
- var UNDEFINED_CODE_POINTS = /* @__PURE__ */ new Set([
9
- 65534,
10
- 65535,
11
- 131070,
12
- 131071,
13
- 196606,
14
- 196607,
15
- 262142,
16
- 262143,
17
- 327678,
18
- 327679,
19
- 393214,
20
- 393215,
21
- 458750,
22
- 458751,
23
- 524286,
24
- 524287,
25
- 589822,
26
- 589823,
27
- 655358,
28
- 655359,
29
- 720894,
30
- 720895,
31
- 786430,
32
- 786431,
33
- 851966,
34
- 851967,
35
- 917502,
36
- 917503,
37
- 983038,
38
- 983039,
39
- 1048574,
40
- 1048575,
41
- 1114110,
42
- 1114111
43
- ]);
44
- var REPLACEMENT_CHARACTER = "\uFFFD";
45
- var CODE_POINTS;
46
- (function(CODE_POINTS2) {
47
- CODE_POINTS2[CODE_POINTS2["EOF"] = -1] = "EOF";
48
- CODE_POINTS2[CODE_POINTS2["NULL"] = 0] = "NULL";
49
- CODE_POINTS2[CODE_POINTS2["TABULATION"] = 9] = "TABULATION";
50
- CODE_POINTS2[CODE_POINTS2["CARRIAGE_RETURN"] = 13] = "CARRIAGE_RETURN";
51
- CODE_POINTS2[CODE_POINTS2["LINE_FEED"] = 10] = "LINE_FEED";
52
- CODE_POINTS2[CODE_POINTS2["FORM_FEED"] = 12] = "FORM_FEED";
53
- CODE_POINTS2[CODE_POINTS2["SPACE"] = 32] = "SPACE";
54
- CODE_POINTS2[CODE_POINTS2["EXCLAMATION_MARK"] = 33] = "EXCLAMATION_MARK";
55
- CODE_POINTS2[CODE_POINTS2["QUOTATION_MARK"] = 34] = "QUOTATION_MARK";
56
- CODE_POINTS2[CODE_POINTS2["AMPERSAND"] = 38] = "AMPERSAND";
57
- CODE_POINTS2[CODE_POINTS2["APOSTROPHE"] = 39] = "APOSTROPHE";
58
- CODE_POINTS2[CODE_POINTS2["HYPHEN_MINUS"] = 45] = "HYPHEN_MINUS";
59
- CODE_POINTS2[CODE_POINTS2["SOLIDUS"] = 47] = "SOLIDUS";
60
- CODE_POINTS2[CODE_POINTS2["DIGIT_0"] = 48] = "DIGIT_0";
61
- CODE_POINTS2[CODE_POINTS2["DIGIT_9"] = 57] = "DIGIT_9";
62
- CODE_POINTS2[CODE_POINTS2["SEMICOLON"] = 59] = "SEMICOLON";
63
- CODE_POINTS2[CODE_POINTS2["LESS_THAN_SIGN"] = 60] = "LESS_THAN_SIGN";
64
- CODE_POINTS2[CODE_POINTS2["EQUALS_SIGN"] = 61] = "EQUALS_SIGN";
65
- CODE_POINTS2[CODE_POINTS2["GREATER_THAN_SIGN"] = 62] = "GREATER_THAN_SIGN";
66
- CODE_POINTS2[CODE_POINTS2["QUESTION_MARK"] = 63] = "QUESTION_MARK";
67
- CODE_POINTS2[CODE_POINTS2["LATIN_CAPITAL_A"] = 65] = "LATIN_CAPITAL_A";
68
- CODE_POINTS2[CODE_POINTS2["LATIN_CAPITAL_Z"] = 90] = "LATIN_CAPITAL_Z";
69
- CODE_POINTS2[CODE_POINTS2["RIGHT_SQUARE_BRACKET"] = 93] = "RIGHT_SQUARE_BRACKET";
70
- CODE_POINTS2[CODE_POINTS2["GRAVE_ACCENT"] = 96] = "GRAVE_ACCENT";
71
- CODE_POINTS2[CODE_POINTS2["LATIN_SMALL_A"] = 97] = "LATIN_SMALL_A";
72
- CODE_POINTS2[CODE_POINTS2["LATIN_SMALL_Z"] = 122] = "LATIN_SMALL_Z";
73
- })(CODE_POINTS || (CODE_POINTS = {}));
74
- var SEQUENCES = {
75
- DASH_DASH: "--",
76
- CDATA_START: "[CDATA[",
77
- DOCTYPE: "doctype",
78
- SCRIPT: "script",
79
- PUBLIC: "public",
80
- SYSTEM: "system"
81
- };
82
- function isSurrogate(cp) {
83
- return cp >= 55296 && cp <= 57343;
84
- }
85
- function isSurrogatePair(cp) {
86
- return cp >= 56320 && cp <= 57343;
87
- }
88
- function getSurrogatePairCodePoint(cp1, cp2) {
89
- return (cp1 - 55296) * 1024 + 9216 + cp2;
90
- }
91
- function isControlCodePoint(cp) {
92
- return cp !== 32 && cp !== 10 && cp !== 13 && cp !== 9 && cp !== 12 && cp >= 1 && cp <= 31 || cp >= 127 && cp <= 159;
93
- }
94
- function isUndefinedCodePoint(cp) {
95
- return cp >= 64976 && cp <= 65007 || UNDEFINED_CODE_POINTS.has(cp);
96
- }
97
-
98
- // node_modules/parse5/dist/common/error-codes.js
99
- var ERR;
100
- (function(ERR2) {
101
- ERR2["controlCharacterInInputStream"] = "control-character-in-input-stream";
102
- ERR2["noncharacterInInputStream"] = "noncharacter-in-input-stream";
103
- ERR2["surrogateInInputStream"] = "surrogate-in-input-stream";
104
- ERR2["nonVoidHtmlElementStartTagWithTrailingSolidus"] = "non-void-html-element-start-tag-with-trailing-solidus";
105
- ERR2["endTagWithAttributes"] = "end-tag-with-attributes";
106
- ERR2["endTagWithTrailingSolidus"] = "end-tag-with-trailing-solidus";
107
- ERR2["unexpectedSolidusInTag"] = "unexpected-solidus-in-tag";
108
- ERR2["unexpectedNullCharacter"] = "unexpected-null-character";
109
- ERR2["unexpectedQuestionMarkInsteadOfTagName"] = "unexpected-question-mark-instead-of-tag-name";
110
- ERR2["invalidFirstCharacterOfTagName"] = "invalid-first-character-of-tag-name";
111
- ERR2["unexpectedEqualsSignBeforeAttributeName"] = "unexpected-equals-sign-before-attribute-name";
112
- ERR2["missingEndTagName"] = "missing-end-tag-name";
113
- ERR2["unexpectedCharacterInAttributeName"] = "unexpected-character-in-attribute-name";
114
- ERR2["unknownNamedCharacterReference"] = "unknown-named-character-reference";
115
- ERR2["missingSemicolonAfterCharacterReference"] = "missing-semicolon-after-character-reference";
116
- ERR2["unexpectedCharacterAfterDoctypeSystemIdentifier"] = "unexpected-character-after-doctype-system-identifier";
117
- ERR2["unexpectedCharacterInUnquotedAttributeValue"] = "unexpected-character-in-unquoted-attribute-value";
118
- ERR2["eofBeforeTagName"] = "eof-before-tag-name";
119
- ERR2["eofInTag"] = "eof-in-tag";
120
- ERR2["missingAttributeValue"] = "missing-attribute-value";
121
- ERR2["missingWhitespaceBetweenAttributes"] = "missing-whitespace-between-attributes";
122
- ERR2["missingWhitespaceAfterDoctypePublicKeyword"] = "missing-whitespace-after-doctype-public-keyword";
123
- ERR2["missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers"] = "missing-whitespace-between-doctype-public-and-system-identifiers";
124
- ERR2["missingWhitespaceAfterDoctypeSystemKeyword"] = "missing-whitespace-after-doctype-system-keyword";
125
- ERR2["missingQuoteBeforeDoctypePublicIdentifier"] = "missing-quote-before-doctype-public-identifier";
126
- ERR2["missingQuoteBeforeDoctypeSystemIdentifier"] = "missing-quote-before-doctype-system-identifier";
127
- ERR2["missingDoctypePublicIdentifier"] = "missing-doctype-public-identifier";
128
- ERR2["missingDoctypeSystemIdentifier"] = "missing-doctype-system-identifier";
129
- ERR2["abruptDoctypePublicIdentifier"] = "abrupt-doctype-public-identifier";
130
- ERR2["abruptDoctypeSystemIdentifier"] = "abrupt-doctype-system-identifier";
131
- ERR2["cdataInHtmlContent"] = "cdata-in-html-content";
132
- ERR2["incorrectlyOpenedComment"] = "incorrectly-opened-comment";
133
- ERR2["eofInScriptHtmlCommentLikeText"] = "eof-in-script-html-comment-like-text";
134
- ERR2["eofInDoctype"] = "eof-in-doctype";
135
- ERR2["nestedComment"] = "nested-comment";
136
- ERR2["abruptClosingOfEmptyComment"] = "abrupt-closing-of-empty-comment";
137
- ERR2["eofInComment"] = "eof-in-comment";
138
- ERR2["incorrectlyClosedComment"] = "incorrectly-closed-comment";
139
- ERR2["eofInCdata"] = "eof-in-cdata";
140
- ERR2["absenceOfDigitsInNumericCharacterReference"] = "absence-of-digits-in-numeric-character-reference";
141
- ERR2["nullCharacterReference"] = "null-character-reference";
142
- ERR2["surrogateCharacterReference"] = "surrogate-character-reference";
143
- ERR2["characterReferenceOutsideUnicodeRange"] = "character-reference-outside-unicode-range";
144
- ERR2["controlCharacterReference"] = "control-character-reference";
145
- ERR2["noncharacterCharacterReference"] = "noncharacter-character-reference";
146
- ERR2["missingWhitespaceBeforeDoctypeName"] = "missing-whitespace-before-doctype-name";
147
- ERR2["missingDoctypeName"] = "missing-doctype-name";
148
- ERR2["invalidCharacterSequenceAfterDoctypeName"] = "invalid-character-sequence-after-doctype-name";
149
- ERR2["duplicateAttribute"] = "duplicate-attribute";
150
- ERR2["nonConformingDoctype"] = "non-conforming-doctype";
151
- ERR2["missingDoctype"] = "missing-doctype";
152
- ERR2["misplacedDoctype"] = "misplaced-doctype";
153
- ERR2["endTagWithoutMatchingOpenElement"] = "end-tag-without-matching-open-element";
154
- ERR2["closingOfElementWithOpenChildElements"] = "closing-of-element-with-open-child-elements";
155
- ERR2["disallowedContentInNoscriptInHead"] = "disallowed-content-in-noscript-in-head";
156
- ERR2["openElementsLeftAfterEof"] = "open-elements-left-after-eof";
157
- ERR2["abandonedHeadElementChild"] = "abandoned-head-element-child";
158
- ERR2["misplacedStartTagForHeadElement"] = "misplaced-start-tag-for-head-element";
159
- ERR2["nestedNoscriptInHead"] = "nested-noscript-in-head";
160
- ERR2["eofInElementThatCanContainOnlyText"] = "eof-in-element-that-can-contain-only-text";
161
- })(ERR || (ERR = {}));
162
-
163
- // node_modules/parse5/dist/tokenizer/preprocessor.js
164
- var DEFAULT_BUFFER_WATERLINE = 1 << 16;
165
- var Preprocessor = class {
166
- constructor(handler) {
167
- this.handler = handler;
168
- this.html = "";
169
- this.pos = -1;
170
- this.lastGapPos = -2;
171
- this.gapStack = [];
172
- this.skipNextNewLine = false;
173
- this.lastChunkWritten = false;
174
- this.endOfChunkHit = false;
175
- this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;
176
- this.isEol = false;
177
- this.lineStartPos = 0;
178
- this.droppedBufferSize = 0;
179
- this.line = 1;
180
- this.lastErrOffset = -1;
181
- }
182
- /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */
183
- get col() {
184
- return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);
185
- }
186
- get offset() {
187
- return this.droppedBufferSize + this.pos;
188
- }
189
- getError(code, cpOffset) {
190
- const { line, col, offset } = this;
191
- const startCol = col + cpOffset;
192
- const startOffset = offset + cpOffset;
193
- return {
194
- code,
195
- startLine: line,
196
- endLine: line,
197
- startCol,
198
- endCol: startCol,
199
- startOffset,
200
- endOffset: startOffset
201
- };
202
- }
203
- _err(code) {
204
- if (this.handler.onParseError && this.lastErrOffset !== this.offset) {
205
- this.lastErrOffset = this.offset;
206
- this.handler.onParseError(this.getError(code, 0));
207
- }
208
- }
209
- _addGap() {
210
- this.gapStack.push(this.lastGapPos);
211
- this.lastGapPos = this.pos;
212
- }
213
- _processSurrogate(cp) {
214
- if (this.pos !== this.html.length - 1) {
215
- const nextCp = this.html.charCodeAt(this.pos + 1);
216
- if (isSurrogatePair(nextCp)) {
217
- this.pos++;
218
- this._addGap();
219
- return getSurrogatePairCodePoint(cp, nextCp);
220
- }
221
- } else if (!this.lastChunkWritten) {
222
- this.endOfChunkHit = true;
223
- return CODE_POINTS.EOF;
224
- }
225
- this._err(ERR.surrogateInInputStream);
226
- return cp;
227
- }
228
- willDropParsedChunk() {
229
- return this.pos > this.bufferWaterline;
230
- }
231
- dropParsedChunk() {
232
- if (this.willDropParsedChunk()) {
233
- this.html = this.html.substring(this.pos);
234
- this.lineStartPos -= this.pos;
235
- this.droppedBufferSize += this.pos;
236
- this.pos = 0;
237
- this.lastGapPos = -2;
238
- this.gapStack.length = 0;
239
- }
240
- }
241
- write(chunk, isLastChunk) {
242
- if (this.html.length > 0) {
243
- this.html += chunk;
244
- } else {
245
- this.html = chunk;
246
- }
247
- this.endOfChunkHit = false;
248
- this.lastChunkWritten = isLastChunk;
249
- }
250
- insertHtmlAtCurrentPos(chunk) {
251
- this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);
252
- this.endOfChunkHit = false;
253
- }
254
- startsWith(pattern, caseSensitive) {
255
- if (this.pos + pattern.length > this.html.length) {
256
- this.endOfChunkHit = !this.lastChunkWritten;
257
- return false;
258
- }
259
- if (caseSensitive) {
260
- return this.html.startsWith(pattern, this.pos);
261
- }
262
- for (let i = 0; i < pattern.length; i++) {
263
- const cp = this.html.charCodeAt(this.pos + i) | 32;
264
- if (cp !== pattern.charCodeAt(i)) {
265
- return false;
266
- }
267
- }
268
- return true;
269
- }
270
- peek(offset) {
271
- const pos = this.pos + offset;
272
- if (pos >= this.html.length) {
273
- this.endOfChunkHit = !this.lastChunkWritten;
274
- return CODE_POINTS.EOF;
275
- }
276
- const code = this.html.charCodeAt(pos);
277
- return code === CODE_POINTS.CARRIAGE_RETURN ? CODE_POINTS.LINE_FEED : code;
278
- }
279
- advance() {
280
- this.pos++;
281
- if (this.isEol) {
282
- this.isEol = false;
283
- this.line++;
284
- this.lineStartPos = this.pos;
285
- }
286
- if (this.pos >= this.html.length) {
287
- this.endOfChunkHit = !this.lastChunkWritten;
288
- return CODE_POINTS.EOF;
289
- }
290
- let cp = this.html.charCodeAt(this.pos);
291
- if (cp === CODE_POINTS.CARRIAGE_RETURN) {
292
- this.isEol = true;
293
- this.skipNextNewLine = true;
294
- return CODE_POINTS.LINE_FEED;
295
- }
296
- if (cp === CODE_POINTS.LINE_FEED) {
297
- this.isEol = true;
298
- if (this.skipNextNewLine) {
299
- this.line--;
300
- this.skipNextNewLine = false;
301
- this._addGap();
302
- return this.advance();
303
- }
304
- }
305
- this.skipNextNewLine = false;
306
- if (isSurrogate(cp)) {
307
- cp = this._processSurrogate(cp);
308
- }
309
- const isCommonValidRange = this.handler.onParseError === null || cp > 31 && cp < 127 || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.CARRIAGE_RETURN || cp > 159 && cp < 64976;
310
- if (!isCommonValidRange) {
311
- this._checkForProblematicCharacters(cp);
312
- }
313
- return cp;
314
- }
315
- _checkForProblematicCharacters(cp) {
316
- if (isControlCodePoint(cp)) {
317
- this._err(ERR.controlCharacterInInputStream);
318
- } else if (isUndefinedCodePoint(cp)) {
319
- this._err(ERR.noncharacterInInputStream);
320
- }
321
- }
322
- retreat(count) {
323
- this.pos -= count;
324
- while (this.pos < this.lastGapPos) {
325
- this.lastGapPos = this.gapStack.pop();
326
- this.pos--;
327
- }
328
- this.isEol = false;
329
- }
330
- };
331
-
332
- // node_modules/parse5/dist/common/token.js
333
- var TokenType;
334
- (function(TokenType2) {
335
- TokenType2[TokenType2["CHARACTER"] = 0] = "CHARACTER";
336
- TokenType2[TokenType2["NULL_CHARACTER"] = 1] = "NULL_CHARACTER";
337
- TokenType2[TokenType2["WHITESPACE_CHARACTER"] = 2] = "WHITESPACE_CHARACTER";
338
- TokenType2[TokenType2["START_TAG"] = 3] = "START_TAG";
339
- TokenType2[TokenType2["END_TAG"] = 4] = "END_TAG";
340
- TokenType2[TokenType2["COMMENT"] = 5] = "COMMENT";
341
- TokenType2[TokenType2["DOCTYPE"] = 6] = "DOCTYPE";
342
- TokenType2[TokenType2["EOF"] = 7] = "EOF";
343
- TokenType2[TokenType2["HIBERNATION"] = 8] = "HIBERNATION";
344
- })(TokenType || (TokenType = {}));
345
- function getTokenAttr(token, attrName) {
346
- for (let i = token.attrs.length - 1; i >= 0; i--) {
347
- if (token.attrs[i].name === attrName) {
348
- return token.attrs[i].value;
349
- }
350
- }
351
- return null;
352
- }
353
-
354
- // node_modules/parse5/dist/common/html.js
355
- var NS;
356
- (function(NS2) {
357
- NS2["HTML"] = "http://www.w3.org/1999/xhtml";
358
- NS2["MATHML"] = "http://www.w3.org/1998/Math/MathML";
359
- NS2["SVG"] = "http://www.w3.org/2000/svg";
360
- NS2["XLINK"] = "http://www.w3.org/1999/xlink";
361
- NS2["XML"] = "http://www.w3.org/XML/1998/namespace";
362
- NS2["XMLNS"] = "http://www.w3.org/2000/xmlns/";
363
- })(NS || (NS = {}));
364
- var ATTRS;
365
- (function(ATTRS2) {
366
- ATTRS2["TYPE"] = "type";
367
- ATTRS2["ACTION"] = "action";
368
- ATTRS2["ENCODING"] = "encoding";
369
- ATTRS2["PROMPT"] = "prompt";
370
- ATTRS2["NAME"] = "name";
371
- ATTRS2["COLOR"] = "color";
372
- ATTRS2["FACE"] = "face";
373
- ATTRS2["SIZE"] = "size";
374
- })(ATTRS || (ATTRS = {}));
375
- var DOCUMENT_MODE;
376
- (function(DOCUMENT_MODE2) {
377
- DOCUMENT_MODE2["NO_QUIRKS"] = "no-quirks";
378
- DOCUMENT_MODE2["QUIRKS"] = "quirks";
379
- DOCUMENT_MODE2["LIMITED_QUIRKS"] = "limited-quirks";
380
- })(DOCUMENT_MODE || (DOCUMENT_MODE = {}));
381
- var TAG_NAMES;
382
- (function(TAG_NAMES2) {
383
- TAG_NAMES2["A"] = "a";
384
- TAG_NAMES2["ADDRESS"] = "address";
385
- TAG_NAMES2["ANNOTATION_XML"] = "annotation-xml";
386
- TAG_NAMES2["APPLET"] = "applet";
387
- TAG_NAMES2["AREA"] = "area";
388
- TAG_NAMES2["ARTICLE"] = "article";
389
- TAG_NAMES2["ASIDE"] = "aside";
390
- TAG_NAMES2["B"] = "b";
391
- TAG_NAMES2["BASE"] = "base";
392
- TAG_NAMES2["BASEFONT"] = "basefont";
393
- TAG_NAMES2["BGSOUND"] = "bgsound";
394
- TAG_NAMES2["BIG"] = "big";
395
- TAG_NAMES2["BLOCKQUOTE"] = "blockquote";
396
- TAG_NAMES2["BODY"] = "body";
397
- TAG_NAMES2["BR"] = "br";
398
- TAG_NAMES2["BUTTON"] = "button";
399
- TAG_NAMES2["CAPTION"] = "caption";
400
- TAG_NAMES2["CENTER"] = "center";
401
- TAG_NAMES2["CODE"] = "code";
402
- TAG_NAMES2["COL"] = "col";
403
- TAG_NAMES2["COLGROUP"] = "colgroup";
404
- TAG_NAMES2["DD"] = "dd";
405
- TAG_NAMES2["DESC"] = "desc";
406
- TAG_NAMES2["DETAILS"] = "details";
407
- TAG_NAMES2["DIALOG"] = "dialog";
408
- TAG_NAMES2["DIR"] = "dir";
409
- TAG_NAMES2["DIV"] = "div";
410
- TAG_NAMES2["DL"] = "dl";
411
- TAG_NAMES2["DT"] = "dt";
412
- TAG_NAMES2["EM"] = "em";
413
- TAG_NAMES2["EMBED"] = "embed";
414
- TAG_NAMES2["FIELDSET"] = "fieldset";
415
- TAG_NAMES2["FIGCAPTION"] = "figcaption";
416
- TAG_NAMES2["FIGURE"] = "figure";
417
- TAG_NAMES2["FONT"] = "font";
418
- TAG_NAMES2["FOOTER"] = "footer";
419
- TAG_NAMES2["FOREIGN_OBJECT"] = "foreignObject";
420
- TAG_NAMES2["FORM"] = "form";
421
- TAG_NAMES2["FRAME"] = "frame";
422
- TAG_NAMES2["FRAMESET"] = "frameset";
423
- TAG_NAMES2["H1"] = "h1";
424
- TAG_NAMES2["H2"] = "h2";
425
- TAG_NAMES2["H3"] = "h3";
426
- TAG_NAMES2["H4"] = "h4";
427
- TAG_NAMES2["H5"] = "h5";
428
- TAG_NAMES2["H6"] = "h6";
429
- TAG_NAMES2["HEAD"] = "head";
430
- TAG_NAMES2["HEADER"] = "header";
431
- TAG_NAMES2["HGROUP"] = "hgroup";
432
- TAG_NAMES2["HR"] = "hr";
433
- TAG_NAMES2["HTML"] = "html";
434
- TAG_NAMES2["I"] = "i";
435
- TAG_NAMES2["IMG"] = "img";
436
- TAG_NAMES2["IMAGE"] = "image";
437
- TAG_NAMES2["INPUT"] = "input";
438
- TAG_NAMES2["IFRAME"] = "iframe";
439
- TAG_NAMES2["KEYGEN"] = "keygen";
440
- TAG_NAMES2["LABEL"] = "label";
441
- TAG_NAMES2["LI"] = "li";
442
- TAG_NAMES2["LINK"] = "link";
443
- TAG_NAMES2["LISTING"] = "listing";
444
- TAG_NAMES2["MAIN"] = "main";
445
- TAG_NAMES2["MALIGNMARK"] = "malignmark";
446
- TAG_NAMES2["MARQUEE"] = "marquee";
447
- TAG_NAMES2["MATH"] = "math";
448
- TAG_NAMES2["MENU"] = "menu";
449
- TAG_NAMES2["META"] = "meta";
450
- TAG_NAMES2["MGLYPH"] = "mglyph";
451
- TAG_NAMES2["MI"] = "mi";
452
- TAG_NAMES2["MO"] = "mo";
453
- TAG_NAMES2["MN"] = "mn";
454
- TAG_NAMES2["MS"] = "ms";
455
- TAG_NAMES2["MTEXT"] = "mtext";
456
- TAG_NAMES2["NAV"] = "nav";
457
- TAG_NAMES2["NOBR"] = "nobr";
458
- TAG_NAMES2["NOFRAMES"] = "noframes";
459
- TAG_NAMES2["NOEMBED"] = "noembed";
460
- TAG_NAMES2["NOSCRIPT"] = "noscript";
461
- TAG_NAMES2["OBJECT"] = "object";
462
- TAG_NAMES2["OL"] = "ol";
463
- TAG_NAMES2["OPTGROUP"] = "optgroup";
464
- TAG_NAMES2["OPTION"] = "option";
465
- TAG_NAMES2["P"] = "p";
466
- TAG_NAMES2["PARAM"] = "param";
467
- TAG_NAMES2["PLAINTEXT"] = "plaintext";
468
- TAG_NAMES2["PRE"] = "pre";
469
- TAG_NAMES2["RB"] = "rb";
470
- TAG_NAMES2["RP"] = "rp";
471
- TAG_NAMES2["RT"] = "rt";
472
- TAG_NAMES2["RTC"] = "rtc";
473
- TAG_NAMES2["RUBY"] = "ruby";
474
- TAG_NAMES2["S"] = "s";
475
- TAG_NAMES2["SCRIPT"] = "script";
476
- TAG_NAMES2["SEARCH"] = "search";
477
- TAG_NAMES2["SECTION"] = "section";
478
- TAG_NAMES2["SELECT"] = "select";
479
- TAG_NAMES2["SOURCE"] = "source";
480
- TAG_NAMES2["SMALL"] = "small";
481
- TAG_NAMES2["SPAN"] = "span";
482
- TAG_NAMES2["STRIKE"] = "strike";
483
- TAG_NAMES2["STRONG"] = "strong";
484
- TAG_NAMES2["STYLE"] = "style";
485
- TAG_NAMES2["SUB"] = "sub";
486
- TAG_NAMES2["SUMMARY"] = "summary";
487
- TAG_NAMES2["SUP"] = "sup";
488
- TAG_NAMES2["TABLE"] = "table";
489
- TAG_NAMES2["TBODY"] = "tbody";
490
- TAG_NAMES2["TEMPLATE"] = "template";
491
- TAG_NAMES2["TEXTAREA"] = "textarea";
492
- TAG_NAMES2["TFOOT"] = "tfoot";
493
- TAG_NAMES2["TD"] = "td";
494
- TAG_NAMES2["TH"] = "th";
495
- TAG_NAMES2["THEAD"] = "thead";
496
- TAG_NAMES2["TITLE"] = "title";
497
- TAG_NAMES2["TR"] = "tr";
498
- TAG_NAMES2["TRACK"] = "track";
499
- TAG_NAMES2["TT"] = "tt";
500
- TAG_NAMES2["U"] = "u";
501
- TAG_NAMES2["UL"] = "ul";
502
- TAG_NAMES2["SVG"] = "svg";
503
- TAG_NAMES2["VAR"] = "var";
504
- TAG_NAMES2["WBR"] = "wbr";
505
- TAG_NAMES2["XMP"] = "xmp";
506
- })(TAG_NAMES || (TAG_NAMES = {}));
507
- var TAG_ID;
508
- (function(TAG_ID2) {
509
- TAG_ID2[TAG_ID2["UNKNOWN"] = 0] = "UNKNOWN";
510
- TAG_ID2[TAG_ID2["A"] = 1] = "A";
511
- TAG_ID2[TAG_ID2["ADDRESS"] = 2] = "ADDRESS";
512
- TAG_ID2[TAG_ID2["ANNOTATION_XML"] = 3] = "ANNOTATION_XML";
513
- TAG_ID2[TAG_ID2["APPLET"] = 4] = "APPLET";
514
- TAG_ID2[TAG_ID2["AREA"] = 5] = "AREA";
515
- TAG_ID2[TAG_ID2["ARTICLE"] = 6] = "ARTICLE";
516
- TAG_ID2[TAG_ID2["ASIDE"] = 7] = "ASIDE";
517
- TAG_ID2[TAG_ID2["B"] = 8] = "B";
518
- TAG_ID2[TAG_ID2["BASE"] = 9] = "BASE";
519
- TAG_ID2[TAG_ID2["BASEFONT"] = 10] = "BASEFONT";
520
- TAG_ID2[TAG_ID2["BGSOUND"] = 11] = "BGSOUND";
521
- TAG_ID2[TAG_ID2["BIG"] = 12] = "BIG";
522
- TAG_ID2[TAG_ID2["BLOCKQUOTE"] = 13] = "BLOCKQUOTE";
523
- TAG_ID2[TAG_ID2["BODY"] = 14] = "BODY";
524
- TAG_ID2[TAG_ID2["BR"] = 15] = "BR";
525
- TAG_ID2[TAG_ID2["BUTTON"] = 16] = "BUTTON";
526
- TAG_ID2[TAG_ID2["CAPTION"] = 17] = "CAPTION";
527
- TAG_ID2[TAG_ID2["CENTER"] = 18] = "CENTER";
528
- TAG_ID2[TAG_ID2["CODE"] = 19] = "CODE";
529
- TAG_ID2[TAG_ID2["COL"] = 20] = "COL";
530
- TAG_ID2[TAG_ID2["COLGROUP"] = 21] = "COLGROUP";
531
- TAG_ID2[TAG_ID2["DD"] = 22] = "DD";
532
- TAG_ID2[TAG_ID2["DESC"] = 23] = "DESC";
533
- TAG_ID2[TAG_ID2["DETAILS"] = 24] = "DETAILS";
534
- TAG_ID2[TAG_ID2["DIALOG"] = 25] = "DIALOG";
535
- TAG_ID2[TAG_ID2["DIR"] = 26] = "DIR";
536
- TAG_ID2[TAG_ID2["DIV"] = 27] = "DIV";
537
- TAG_ID2[TAG_ID2["DL"] = 28] = "DL";
538
- TAG_ID2[TAG_ID2["DT"] = 29] = "DT";
539
- TAG_ID2[TAG_ID2["EM"] = 30] = "EM";
540
- TAG_ID2[TAG_ID2["EMBED"] = 31] = "EMBED";
541
- TAG_ID2[TAG_ID2["FIELDSET"] = 32] = "FIELDSET";
542
- TAG_ID2[TAG_ID2["FIGCAPTION"] = 33] = "FIGCAPTION";
543
- TAG_ID2[TAG_ID2["FIGURE"] = 34] = "FIGURE";
544
- TAG_ID2[TAG_ID2["FONT"] = 35] = "FONT";
545
- TAG_ID2[TAG_ID2["FOOTER"] = 36] = "FOOTER";
546
- TAG_ID2[TAG_ID2["FOREIGN_OBJECT"] = 37] = "FOREIGN_OBJECT";
547
- TAG_ID2[TAG_ID2["FORM"] = 38] = "FORM";
548
- TAG_ID2[TAG_ID2["FRAME"] = 39] = "FRAME";
549
- TAG_ID2[TAG_ID2["FRAMESET"] = 40] = "FRAMESET";
550
- TAG_ID2[TAG_ID2["H1"] = 41] = "H1";
551
- TAG_ID2[TAG_ID2["H2"] = 42] = "H2";
552
- TAG_ID2[TAG_ID2["H3"] = 43] = "H3";
553
- TAG_ID2[TAG_ID2["H4"] = 44] = "H4";
554
- TAG_ID2[TAG_ID2["H5"] = 45] = "H5";
555
- TAG_ID2[TAG_ID2["H6"] = 46] = "H6";
556
- TAG_ID2[TAG_ID2["HEAD"] = 47] = "HEAD";
557
- TAG_ID2[TAG_ID2["HEADER"] = 48] = "HEADER";
558
- TAG_ID2[TAG_ID2["HGROUP"] = 49] = "HGROUP";
559
- TAG_ID2[TAG_ID2["HR"] = 50] = "HR";
560
- TAG_ID2[TAG_ID2["HTML"] = 51] = "HTML";
561
- TAG_ID2[TAG_ID2["I"] = 52] = "I";
562
- TAG_ID2[TAG_ID2["IMG"] = 53] = "IMG";
563
- TAG_ID2[TAG_ID2["IMAGE"] = 54] = "IMAGE";
564
- TAG_ID2[TAG_ID2["INPUT"] = 55] = "INPUT";
565
- TAG_ID2[TAG_ID2["IFRAME"] = 56] = "IFRAME";
566
- TAG_ID2[TAG_ID2["KEYGEN"] = 57] = "KEYGEN";
567
- TAG_ID2[TAG_ID2["LABEL"] = 58] = "LABEL";
568
- TAG_ID2[TAG_ID2["LI"] = 59] = "LI";
569
- TAG_ID2[TAG_ID2["LINK"] = 60] = "LINK";
570
- TAG_ID2[TAG_ID2["LISTING"] = 61] = "LISTING";
571
- TAG_ID2[TAG_ID2["MAIN"] = 62] = "MAIN";
572
- TAG_ID2[TAG_ID2["MALIGNMARK"] = 63] = "MALIGNMARK";
573
- TAG_ID2[TAG_ID2["MARQUEE"] = 64] = "MARQUEE";
574
- TAG_ID2[TAG_ID2["MATH"] = 65] = "MATH";
575
- TAG_ID2[TAG_ID2["MENU"] = 66] = "MENU";
576
- TAG_ID2[TAG_ID2["META"] = 67] = "META";
577
- TAG_ID2[TAG_ID2["MGLYPH"] = 68] = "MGLYPH";
578
- TAG_ID2[TAG_ID2["MI"] = 69] = "MI";
579
- TAG_ID2[TAG_ID2["MO"] = 70] = "MO";
580
- TAG_ID2[TAG_ID2["MN"] = 71] = "MN";
581
- TAG_ID2[TAG_ID2["MS"] = 72] = "MS";
582
- TAG_ID2[TAG_ID2["MTEXT"] = 73] = "MTEXT";
583
- TAG_ID2[TAG_ID2["NAV"] = 74] = "NAV";
584
- TAG_ID2[TAG_ID2["NOBR"] = 75] = "NOBR";
585
- TAG_ID2[TAG_ID2["NOFRAMES"] = 76] = "NOFRAMES";
586
- TAG_ID2[TAG_ID2["NOEMBED"] = 77] = "NOEMBED";
587
- TAG_ID2[TAG_ID2["NOSCRIPT"] = 78] = "NOSCRIPT";
588
- TAG_ID2[TAG_ID2["OBJECT"] = 79] = "OBJECT";
589
- TAG_ID2[TAG_ID2["OL"] = 80] = "OL";
590
- TAG_ID2[TAG_ID2["OPTGROUP"] = 81] = "OPTGROUP";
591
- TAG_ID2[TAG_ID2["OPTION"] = 82] = "OPTION";
592
- TAG_ID2[TAG_ID2["P"] = 83] = "P";
593
- TAG_ID2[TAG_ID2["PARAM"] = 84] = "PARAM";
594
- TAG_ID2[TAG_ID2["PLAINTEXT"] = 85] = "PLAINTEXT";
595
- TAG_ID2[TAG_ID2["PRE"] = 86] = "PRE";
596
- TAG_ID2[TAG_ID2["RB"] = 87] = "RB";
597
- TAG_ID2[TAG_ID2["RP"] = 88] = "RP";
598
- TAG_ID2[TAG_ID2["RT"] = 89] = "RT";
599
- TAG_ID2[TAG_ID2["RTC"] = 90] = "RTC";
600
- TAG_ID2[TAG_ID2["RUBY"] = 91] = "RUBY";
601
- TAG_ID2[TAG_ID2["S"] = 92] = "S";
602
- TAG_ID2[TAG_ID2["SCRIPT"] = 93] = "SCRIPT";
603
- TAG_ID2[TAG_ID2["SEARCH"] = 94] = "SEARCH";
604
- TAG_ID2[TAG_ID2["SECTION"] = 95] = "SECTION";
605
- TAG_ID2[TAG_ID2["SELECT"] = 96] = "SELECT";
606
- TAG_ID2[TAG_ID2["SOURCE"] = 97] = "SOURCE";
607
- TAG_ID2[TAG_ID2["SMALL"] = 98] = "SMALL";
608
- TAG_ID2[TAG_ID2["SPAN"] = 99] = "SPAN";
609
- TAG_ID2[TAG_ID2["STRIKE"] = 100] = "STRIKE";
610
- TAG_ID2[TAG_ID2["STRONG"] = 101] = "STRONG";
611
- TAG_ID2[TAG_ID2["STYLE"] = 102] = "STYLE";
612
- TAG_ID2[TAG_ID2["SUB"] = 103] = "SUB";
613
- TAG_ID2[TAG_ID2["SUMMARY"] = 104] = "SUMMARY";
614
- TAG_ID2[TAG_ID2["SUP"] = 105] = "SUP";
615
- TAG_ID2[TAG_ID2["TABLE"] = 106] = "TABLE";
616
- TAG_ID2[TAG_ID2["TBODY"] = 107] = "TBODY";
617
- TAG_ID2[TAG_ID2["TEMPLATE"] = 108] = "TEMPLATE";
618
- TAG_ID2[TAG_ID2["TEXTAREA"] = 109] = "TEXTAREA";
619
- TAG_ID2[TAG_ID2["TFOOT"] = 110] = "TFOOT";
620
- TAG_ID2[TAG_ID2["TD"] = 111] = "TD";
621
- TAG_ID2[TAG_ID2["TH"] = 112] = "TH";
622
- TAG_ID2[TAG_ID2["THEAD"] = 113] = "THEAD";
623
- TAG_ID2[TAG_ID2["TITLE"] = 114] = "TITLE";
624
- TAG_ID2[TAG_ID2["TR"] = 115] = "TR";
625
- TAG_ID2[TAG_ID2["TRACK"] = 116] = "TRACK";
626
- TAG_ID2[TAG_ID2["TT"] = 117] = "TT";
627
- TAG_ID2[TAG_ID2["U"] = 118] = "U";
628
- TAG_ID2[TAG_ID2["UL"] = 119] = "UL";
629
- TAG_ID2[TAG_ID2["SVG"] = 120] = "SVG";
630
- TAG_ID2[TAG_ID2["VAR"] = 121] = "VAR";
631
- TAG_ID2[TAG_ID2["WBR"] = 122] = "WBR";
632
- TAG_ID2[TAG_ID2["XMP"] = 123] = "XMP";
633
- })(TAG_ID || (TAG_ID = {}));
634
- var TAG_NAME_TO_ID = /* @__PURE__ */ new Map([
635
- [TAG_NAMES.A, TAG_ID.A],
636
- [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],
637
- [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],
638
- [TAG_NAMES.APPLET, TAG_ID.APPLET],
639
- [TAG_NAMES.AREA, TAG_ID.AREA],
640
- [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],
641
- [TAG_NAMES.ASIDE, TAG_ID.ASIDE],
642
- [TAG_NAMES.B, TAG_ID.B],
643
- [TAG_NAMES.BASE, TAG_ID.BASE],
644
- [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],
645
- [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],
646
- [TAG_NAMES.BIG, TAG_ID.BIG],
647
- [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],
648
- [TAG_NAMES.BODY, TAG_ID.BODY],
649
- [TAG_NAMES.BR, TAG_ID.BR],
650
- [TAG_NAMES.BUTTON, TAG_ID.BUTTON],
651
- [TAG_NAMES.CAPTION, TAG_ID.CAPTION],
652
- [TAG_NAMES.CENTER, TAG_ID.CENTER],
653
- [TAG_NAMES.CODE, TAG_ID.CODE],
654
- [TAG_NAMES.COL, TAG_ID.COL],
655
- [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],
656
- [TAG_NAMES.DD, TAG_ID.DD],
657
- [TAG_NAMES.DESC, TAG_ID.DESC],
658
- [TAG_NAMES.DETAILS, TAG_ID.DETAILS],
659
- [TAG_NAMES.DIALOG, TAG_ID.DIALOG],
660
- [TAG_NAMES.DIR, TAG_ID.DIR],
661
- [TAG_NAMES.DIV, TAG_ID.DIV],
662
- [TAG_NAMES.DL, TAG_ID.DL],
663
- [TAG_NAMES.DT, TAG_ID.DT],
664
- [TAG_NAMES.EM, TAG_ID.EM],
665
- [TAG_NAMES.EMBED, TAG_ID.EMBED],
666
- [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],
667
- [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],
668
- [TAG_NAMES.FIGURE, TAG_ID.FIGURE],
669
- [TAG_NAMES.FONT, TAG_ID.FONT],
670
- [TAG_NAMES.FOOTER, TAG_ID.FOOTER],
671
- [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],
672
- [TAG_NAMES.FORM, TAG_ID.FORM],
673
- [TAG_NAMES.FRAME, TAG_ID.FRAME],
674
- [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],
675
- [TAG_NAMES.H1, TAG_ID.H1],
676
- [TAG_NAMES.H2, TAG_ID.H2],
677
- [TAG_NAMES.H3, TAG_ID.H3],
678
- [TAG_NAMES.H4, TAG_ID.H4],
679
- [TAG_NAMES.H5, TAG_ID.H5],
680
- [TAG_NAMES.H6, TAG_ID.H6],
681
- [TAG_NAMES.HEAD, TAG_ID.HEAD],
682
- [TAG_NAMES.HEADER, TAG_ID.HEADER],
683
- [TAG_NAMES.HGROUP, TAG_ID.HGROUP],
684
- [TAG_NAMES.HR, TAG_ID.HR],
685
- [TAG_NAMES.HTML, TAG_ID.HTML],
686
- [TAG_NAMES.I, TAG_ID.I],
687
- [TAG_NAMES.IMG, TAG_ID.IMG],
688
- [TAG_NAMES.IMAGE, TAG_ID.IMAGE],
689
- [TAG_NAMES.INPUT, TAG_ID.INPUT],
690
- [TAG_NAMES.IFRAME, TAG_ID.IFRAME],
691
- [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],
692
- [TAG_NAMES.LABEL, TAG_ID.LABEL],
693
- [TAG_NAMES.LI, TAG_ID.LI],
694
- [TAG_NAMES.LINK, TAG_ID.LINK],
695
- [TAG_NAMES.LISTING, TAG_ID.LISTING],
696
- [TAG_NAMES.MAIN, TAG_ID.MAIN],
697
- [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],
698
- [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],
699
- [TAG_NAMES.MATH, TAG_ID.MATH],
700
- [TAG_NAMES.MENU, TAG_ID.MENU],
701
- [TAG_NAMES.META, TAG_ID.META],
702
- [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],
703
- [TAG_NAMES.MI, TAG_ID.MI],
704
- [TAG_NAMES.MO, TAG_ID.MO],
705
- [TAG_NAMES.MN, TAG_ID.MN],
706
- [TAG_NAMES.MS, TAG_ID.MS],
707
- [TAG_NAMES.MTEXT, TAG_ID.MTEXT],
708
- [TAG_NAMES.NAV, TAG_ID.NAV],
709
- [TAG_NAMES.NOBR, TAG_ID.NOBR],
710
- [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],
711
- [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],
712
- [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],
713
- [TAG_NAMES.OBJECT, TAG_ID.OBJECT],
714
- [TAG_NAMES.OL, TAG_ID.OL],
715
- [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],
716
- [TAG_NAMES.OPTION, TAG_ID.OPTION],
717
- [TAG_NAMES.P, TAG_ID.P],
718
- [TAG_NAMES.PARAM, TAG_ID.PARAM],
719
- [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],
720
- [TAG_NAMES.PRE, TAG_ID.PRE],
721
- [TAG_NAMES.RB, TAG_ID.RB],
722
- [TAG_NAMES.RP, TAG_ID.RP],
723
- [TAG_NAMES.RT, TAG_ID.RT],
724
- [TAG_NAMES.RTC, TAG_ID.RTC],
725
- [TAG_NAMES.RUBY, TAG_ID.RUBY],
726
- [TAG_NAMES.S, TAG_ID.S],
727
- [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],
728
- [TAG_NAMES.SEARCH, TAG_ID.SEARCH],
729
- [TAG_NAMES.SECTION, TAG_ID.SECTION],
730
- [TAG_NAMES.SELECT, TAG_ID.SELECT],
731
- [TAG_NAMES.SOURCE, TAG_ID.SOURCE],
732
- [TAG_NAMES.SMALL, TAG_ID.SMALL],
733
- [TAG_NAMES.SPAN, TAG_ID.SPAN],
734
- [TAG_NAMES.STRIKE, TAG_ID.STRIKE],
735
- [TAG_NAMES.STRONG, TAG_ID.STRONG],
736
- [TAG_NAMES.STYLE, TAG_ID.STYLE],
737
- [TAG_NAMES.SUB, TAG_ID.SUB],
738
- [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],
739
- [TAG_NAMES.SUP, TAG_ID.SUP],
740
- [TAG_NAMES.TABLE, TAG_ID.TABLE],
741
- [TAG_NAMES.TBODY, TAG_ID.TBODY],
742
- [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],
743
- [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],
744
- [TAG_NAMES.TFOOT, TAG_ID.TFOOT],
745
- [TAG_NAMES.TD, TAG_ID.TD],
746
- [TAG_NAMES.TH, TAG_ID.TH],
747
- [TAG_NAMES.THEAD, TAG_ID.THEAD],
748
- [TAG_NAMES.TITLE, TAG_ID.TITLE],
749
- [TAG_NAMES.TR, TAG_ID.TR],
750
- [TAG_NAMES.TRACK, TAG_ID.TRACK],
751
- [TAG_NAMES.TT, TAG_ID.TT],
752
- [TAG_NAMES.U, TAG_ID.U],
753
- [TAG_NAMES.UL, TAG_ID.UL],
754
- [TAG_NAMES.SVG, TAG_ID.SVG],
755
- [TAG_NAMES.VAR, TAG_ID.VAR],
756
- [TAG_NAMES.WBR, TAG_ID.WBR],
757
- [TAG_NAMES.XMP, TAG_ID.XMP]
758
- ]);
759
- function getTagID(tagName) {
760
- var _a;
761
- return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;
762
- }
763
- var $ = TAG_ID;
764
- var SPECIAL_ELEMENTS = {
765
- [NS.HTML]: /* @__PURE__ */ new Set([
766
- $.ADDRESS,
767
- $.APPLET,
768
- $.AREA,
769
- $.ARTICLE,
770
- $.ASIDE,
771
- $.BASE,
772
- $.BASEFONT,
773
- $.BGSOUND,
774
- $.BLOCKQUOTE,
775
- $.BODY,
776
- $.BR,
777
- $.BUTTON,
778
- $.CAPTION,
779
- $.CENTER,
780
- $.COL,
781
- $.COLGROUP,
782
- $.DD,
783
- $.DETAILS,
784
- $.DIR,
785
- $.DIV,
786
- $.DL,
787
- $.DT,
788
- $.EMBED,
789
- $.FIELDSET,
790
- $.FIGCAPTION,
791
- $.FIGURE,
792
- $.FOOTER,
793
- $.FORM,
794
- $.FRAME,
795
- $.FRAMESET,
796
- $.H1,
797
- $.H2,
798
- $.H3,
799
- $.H4,
800
- $.H5,
801
- $.H6,
802
- $.HEAD,
803
- $.HEADER,
804
- $.HGROUP,
805
- $.HR,
806
- $.HTML,
807
- $.IFRAME,
808
- $.IMG,
809
- $.INPUT,
810
- $.LI,
811
- $.LINK,
812
- $.LISTING,
813
- $.MAIN,
814
- $.MARQUEE,
815
- $.MENU,
816
- $.META,
817
- $.NAV,
818
- $.NOEMBED,
819
- $.NOFRAMES,
820
- $.NOSCRIPT,
821
- $.OBJECT,
822
- $.OL,
823
- $.P,
824
- $.PARAM,
825
- $.PLAINTEXT,
826
- $.PRE,
827
- $.SCRIPT,
828
- $.SECTION,
829
- $.SELECT,
830
- $.SOURCE,
831
- $.STYLE,
832
- $.SUMMARY,
833
- $.TABLE,
834
- $.TBODY,
835
- $.TD,
836
- $.TEMPLATE,
837
- $.TEXTAREA,
838
- $.TFOOT,
839
- $.TH,
840
- $.THEAD,
841
- $.TITLE,
842
- $.TR,
843
- $.TRACK,
844
- $.UL,
845
- $.WBR,
846
- $.XMP
847
- ]),
848
- [NS.MATHML]: /* @__PURE__ */ new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),
849
- [NS.SVG]: /* @__PURE__ */ new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),
850
- [NS.XLINK]: /* @__PURE__ */ new Set(),
851
- [NS.XML]: /* @__PURE__ */ new Set(),
852
- [NS.XMLNS]: /* @__PURE__ */ new Set()
853
- };
854
- var NUMBERED_HEADERS = /* @__PURE__ */ new Set([$.H1, $.H2, $.H3, $.H4, $.H5, $.H6]);
855
- var UNESCAPED_TEXT = /* @__PURE__ */ new Set([
856
- TAG_NAMES.STYLE,
857
- TAG_NAMES.SCRIPT,
858
- TAG_NAMES.XMP,
859
- TAG_NAMES.IFRAME,
860
- TAG_NAMES.NOEMBED,
861
- TAG_NAMES.NOFRAMES,
862
- TAG_NAMES.PLAINTEXT
863
- ]);
864
- function hasUnescapedText(tn, scriptingEnabled) {
865
- return UNESCAPED_TEXT.has(tn) || scriptingEnabled && tn === TAG_NAMES.NOSCRIPT;
866
- }
867
-
868
- // node_modules/parse5/dist/tokenizer/index.js
869
- var State;
870
- (function(State2) {
871
- State2[State2["DATA"] = 0] = "DATA";
872
- State2[State2["RCDATA"] = 1] = "RCDATA";
873
- State2[State2["RAWTEXT"] = 2] = "RAWTEXT";
874
- State2[State2["SCRIPT_DATA"] = 3] = "SCRIPT_DATA";
875
- State2[State2["PLAINTEXT"] = 4] = "PLAINTEXT";
876
- State2[State2["TAG_OPEN"] = 5] = "TAG_OPEN";
877
- State2[State2["END_TAG_OPEN"] = 6] = "END_TAG_OPEN";
878
- State2[State2["TAG_NAME"] = 7] = "TAG_NAME";
879
- State2[State2["RCDATA_LESS_THAN_SIGN"] = 8] = "RCDATA_LESS_THAN_SIGN";
880
- State2[State2["RCDATA_END_TAG_OPEN"] = 9] = "RCDATA_END_TAG_OPEN";
881
- State2[State2["RCDATA_END_TAG_NAME"] = 10] = "RCDATA_END_TAG_NAME";
882
- State2[State2["RAWTEXT_LESS_THAN_SIGN"] = 11] = "RAWTEXT_LESS_THAN_SIGN";
883
- State2[State2["RAWTEXT_END_TAG_OPEN"] = 12] = "RAWTEXT_END_TAG_OPEN";
884
- State2[State2["RAWTEXT_END_TAG_NAME"] = 13] = "RAWTEXT_END_TAG_NAME";
885
- State2[State2["SCRIPT_DATA_LESS_THAN_SIGN"] = 14] = "SCRIPT_DATA_LESS_THAN_SIGN";
886
- State2[State2["SCRIPT_DATA_END_TAG_OPEN"] = 15] = "SCRIPT_DATA_END_TAG_OPEN";
887
- State2[State2["SCRIPT_DATA_END_TAG_NAME"] = 16] = "SCRIPT_DATA_END_TAG_NAME";
888
- State2[State2["SCRIPT_DATA_ESCAPE_START"] = 17] = "SCRIPT_DATA_ESCAPE_START";
889
- State2[State2["SCRIPT_DATA_ESCAPE_START_DASH"] = 18] = "SCRIPT_DATA_ESCAPE_START_DASH";
890
- State2[State2["SCRIPT_DATA_ESCAPED"] = 19] = "SCRIPT_DATA_ESCAPED";
891
- State2[State2["SCRIPT_DATA_ESCAPED_DASH"] = 20] = "SCRIPT_DATA_ESCAPED_DASH";
892
- State2[State2["SCRIPT_DATA_ESCAPED_DASH_DASH"] = 21] = "SCRIPT_DATA_ESCAPED_DASH_DASH";
893
- State2[State2["SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"] = 22] = "SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN";
894
- State2[State2["SCRIPT_DATA_ESCAPED_END_TAG_OPEN"] = 23] = "SCRIPT_DATA_ESCAPED_END_TAG_OPEN";
895
- State2[State2["SCRIPT_DATA_ESCAPED_END_TAG_NAME"] = 24] = "SCRIPT_DATA_ESCAPED_END_TAG_NAME";
896
- State2[State2["SCRIPT_DATA_DOUBLE_ESCAPE_START"] = 25] = "SCRIPT_DATA_DOUBLE_ESCAPE_START";
897
- State2[State2["SCRIPT_DATA_DOUBLE_ESCAPED"] = 26] = "SCRIPT_DATA_DOUBLE_ESCAPED";
898
- State2[State2["SCRIPT_DATA_DOUBLE_ESCAPED_DASH"] = 27] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH";
899
- State2[State2["SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"] = 28] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH";
900
- State2[State2["SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"] = 29] = "SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN";
901
- State2[State2["SCRIPT_DATA_DOUBLE_ESCAPE_END"] = 30] = "SCRIPT_DATA_DOUBLE_ESCAPE_END";
902
- State2[State2["BEFORE_ATTRIBUTE_NAME"] = 31] = "BEFORE_ATTRIBUTE_NAME";
903
- State2[State2["ATTRIBUTE_NAME"] = 32] = "ATTRIBUTE_NAME";
904
- State2[State2["AFTER_ATTRIBUTE_NAME"] = 33] = "AFTER_ATTRIBUTE_NAME";
905
- State2[State2["BEFORE_ATTRIBUTE_VALUE"] = 34] = "BEFORE_ATTRIBUTE_VALUE";
906
- State2[State2["ATTRIBUTE_VALUE_DOUBLE_QUOTED"] = 35] = "ATTRIBUTE_VALUE_DOUBLE_QUOTED";
907
- State2[State2["ATTRIBUTE_VALUE_SINGLE_QUOTED"] = 36] = "ATTRIBUTE_VALUE_SINGLE_QUOTED";
908
- State2[State2["ATTRIBUTE_VALUE_UNQUOTED"] = 37] = "ATTRIBUTE_VALUE_UNQUOTED";
909
- State2[State2["AFTER_ATTRIBUTE_VALUE_QUOTED"] = 38] = "AFTER_ATTRIBUTE_VALUE_QUOTED";
910
- State2[State2["SELF_CLOSING_START_TAG"] = 39] = "SELF_CLOSING_START_TAG";
911
- State2[State2["BOGUS_COMMENT"] = 40] = "BOGUS_COMMENT";
912
- State2[State2["MARKUP_DECLARATION_OPEN"] = 41] = "MARKUP_DECLARATION_OPEN";
913
- State2[State2["COMMENT_START"] = 42] = "COMMENT_START";
914
- State2[State2["COMMENT_START_DASH"] = 43] = "COMMENT_START_DASH";
915
- State2[State2["COMMENT"] = 44] = "COMMENT";
916
- State2[State2["COMMENT_LESS_THAN_SIGN"] = 45] = "COMMENT_LESS_THAN_SIGN";
917
- State2[State2["COMMENT_LESS_THAN_SIGN_BANG"] = 46] = "COMMENT_LESS_THAN_SIGN_BANG";
918
- State2[State2["COMMENT_LESS_THAN_SIGN_BANG_DASH"] = 47] = "COMMENT_LESS_THAN_SIGN_BANG_DASH";
919
- State2[State2["COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"] = 48] = "COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH";
920
- State2[State2["COMMENT_END_DASH"] = 49] = "COMMENT_END_DASH";
921
- State2[State2["COMMENT_END"] = 50] = "COMMENT_END";
922
- State2[State2["COMMENT_END_BANG"] = 51] = "COMMENT_END_BANG";
923
- State2[State2["DOCTYPE"] = 52] = "DOCTYPE";
924
- State2[State2["BEFORE_DOCTYPE_NAME"] = 53] = "BEFORE_DOCTYPE_NAME";
925
- State2[State2["DOCTYPE_NAME"] = 54] = "DOCTYPE_NAME";
926
- State2[State2["AFTER_DOCTYPE_NAME"] = 55] = "AFTER_DOCTYPE_NAME";
927
- State2[State2["AFTER_DOCTYPE_PUBLIC_KEYWORD"] = 56] = "AFTER_DOCTYPE_PUBLIC_KEYWORD";
928
- State2[State2["BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"] = 57] = "BEFORE_DOCTYPE_PUBLIC_IDENTIFIER";
929
- State2[State2["DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"] = 58] = "DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED";
930
- State2[State2["DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"] = 59] = "DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED";
931
- State2[State2["AFTER_DOCTYPE_PUBLIC_IDENTIFIER"] = 60] = "AFTER_DOCTYPE_PUBLIC_IDENTIFIER";
932
- State2[State2["BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"] = 61] = "BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS";
933
- State2[State2["AFTER_DOCTYPE_SYSTEM_KEYWORD"] = 62] = "AFTER_DOCTYPE_SYSTEM_KEYWORD";
934
- State2[State2["BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"] = 63] = "BEFORE_DOCTYPE_SYSTEM_IDENTIFIER";
935
- State2[State2["DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"] = 64] = "DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED";
936
- State2[State2["DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"] = 65] = "DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED";
937
- State2[State2["AFTER_DOCTYPE_SYSTEM_IDENTIFIER"] = 66] = "AFTER_DOCTYPE_SYSTEM_IDENTIFIER";
938
- State2[State2["BOGUS_DOCTYPE"] = 67] = "BOGUS_DOCTYPE";
939
- State2[State2["CDATA_SECTION"] = 68] = "CDATA_SECTION";
940
- State2[State2["CDATA_SECTION_BRACKET"] = 69] = "CDATA_SECTION_BRACKET";
941
- State2[State2["CDATA_SECTION_END"] = 70] = "CDATA_SECTION_END";
942
- State2[State2["CHARACTER_REFERENCE"] = 71] = "CHARACTER_REFERENCE";
943
- State2[State2["AMBIGUOUS_AMPERSAND"] = 72] = "AMBIGUOUS_AMPERSAND";
944
- })(State || (State = {}));
945
- var TokenizerMode = {
946
- DATA: State.DATA,
947
- RCDATA: State.RCDATA,
948
- RAWTEXT: State.RAWTEXT,
949
- SCRIPT_DATA: State.SCRIPT_DATA,
950
- PLAINTEXT: State.PLAINTEXT,
951
- CDATA_SECTION: State.CDATA_SECTION
952
- };
953
- function isAsciiDigit(cp) {
954
- return cp >= CODE_POINTS.DIGIT_0 && cp <= CODE_POINTS.DIGIT_9;
955
- }
956
- function isAsciiUpper(cp) {
957
- return cp >= CODE_POINTS.LATIN_CAPITAL_A && cp <= CODE_POINTS.LATIN_CAPITAL_Z;
958
- }
959
- function isAsciiLower(cp) {
960
- return cp >= CODE_POINTS.LATIN_SMALL_A && cp <= CODE_POINTS.LATIN_SMALL_Z;
961
- }
962
- function isAsciiLetter(cp) {
963
- return isAsciiLower(cp) || isAsciiUpper(cp);
964
- }
965
- function isAsciiAlphaNumeric(cp) {
966
- return isAsciiLetter(cp) || isAsciiDigit(cp);
967
- }
968
- function toAsciiLower(cp) {
969
- return cp + 32;
970
- }
971
- function isWhitespace(cp) {
972
- return cp === CODE_POINTS.SPACE || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.TABULATION || cp === CODE_POINTS.FORM_FEED;
973
- }
974
- function isScriptDataDoubleEscapeSequenceEnd(cp) {
975
- return isWhitespace(cp) || cp === CODE_POINTS.SOLIDUS || cp === CODE_POINTS.GREATER_THAN_SIGN;
976
- }
977
- function getErrorForNumericCharacterReference(code) {
978
- if (code === CODE_POINTS.NULL) {
979
- return ERR.nullCharacterReference;
980
- } else if (code > 1114111) {
981
- return ERR.characterReferenceOutsideUnicodeRange;
982
- } else if (isSurrogate(code)) {
983
- return ERR.surrogateCharacterReference;
984
- } else if (isUndefinedCodePoint(code)) {
985
- return ERR.noncharacterCharacterReference;
986
- } else if (isControlCodePoint(code) || code === CODE_POINTS.CARRIAGE_RETURN) {
987
- return ERR.controlCharacterReference;
988
- }
989
- return null;
990
- }
991
- var Tokenizer = class {
992
- constructor(options, handler) {
993
- this.options = options;
994
- this.handler = handler;
995
- this.paused = false;
996
- this.inLoop = false;
997
- this.inForeignNode = false;
998
- this.lastStartTagName = "";
999
- this.active = false;
1000
- this.state = State.DATA;
1001
- this.returnState = State.DATA;
1002
- this.entityStartPos = 0;
1003
- this.consumedAfterSnapshot = -1;
1004
- this.currentCharacterToken = null;
1005
- this.currentToken = null;
1006
- this.currentAttr = { name: "", value: "" };
1007
- this.preprocessor = new Preprocessor(handler);
1008
- this.currentLocation = this.getCurrentLocation(-1);
1009
- this.entityDecoder = new EntityDecoder(htmlDecodeTree, (cp, consumed) => {
1010
- this.preprocessor.pos = this.entityStartPos + consumed - 1;
1011
- this._flushCodePointConsumedAsCharacterReference(cp);
1012
- }, handler.onParseError ? {
1013
- missingSemicolonAfterCharacterReference: () => {
1014
- this._err(ERR.missingSemicolonAfterCharacterReference, 1);
1015
- },
1016
- absenceOfDigitsInNumericCharacterReference: (consumed) => {
1017
- this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed);
1018
- },
1019
- validateNumericCharacterReference: (code) => {
1020
- const error = getErrorForNumericCharacterReference(code);
1021
- if (error)
1022
- this._err(error, 1);
1023
- }
1024
- } : void 0);
1025
- }
1026
- //Errors
1027
- _err(code, cpOffset = 0) {
1028
- var _a, _b;
1029
- (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code, cpOffset));
1030
- }
1031
- // NOTE: `offset` may never run across line boundaries.
1032
- getCurrentLocation(offset) {
1033
- if (!this.options.sourceCodeLocationInfo) {
1034
- return null;
1035
- }
1036
- return {
1037
- startLine: this.preprocessor.line,
1038
- startCol: this.preprocessor.col - offset,
1039
- startOffset: this.preprocessor.offset - offset,
1040
- endLine: -1,
1041
- endCol: -1,
1042
- endOffset: -1
1043
- };
1044
- }
1045
- _runParsingLoop() {
1046
- if (this.inLoop)
1047
- return;
1048
- this.inLoop = true;
1049
- while (this.active && !this.paused) {
1050
- this.consumedAfterSnapshot = 0;
1051
- const cp = this._consume();
1052
- if (!this._ensureHibernation()) {
1053
- this._callState(cp);
1054
- }
1055
- }
1056
- this.inLoop = false;
1057
- }
1058
- //API
1059
- pause() {
1060
- this.paused = true;
1061
- }
1062
- resume(writeCallback) {
1063
- if (!this.paused) {
1064
- throw new Error("Parser was already resumed");
1065
- }
1066
- this.paused = false;
1067
- if (this.inLoop)
1068
- return;
1069
- this._runParsingLoop();
1070
- if (!this.paused) {
1071
- writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();
1072
- }
1073
- }
1074
- write(chunk, isLastChunk, writeCallback) {
1075
- this.active = true;
1076
- this.preprocessor.write(chunk, isLastChunk);
1077
- this._runParsingLoop();
1078
- if (!this.paused) {
1079
- writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();
1080
- }
1081
- }
1082
- insertHtmlAtCurrentPos(chunk) {
1083
- this.active = true;
1084
- this.preprocessor.insertHtmlAtCurrentPos(chunk);
1085
- this._runParsingLoop();
1086
- }
1087
- //Hibernation
1088
- _ensureHibernation() {
1089
- if (this.preprocessor.endOfChunkHit) {
1090
- this.preprocessor.retreat(this.consumedAfterSnapshot);
1091
- this.consumedAfterSnapshot = 0;
1092
- this.active = false;
1093
- return true;
1094
- }
1095
- return false;
1096
- }
1097
- //Consumption
1098
- _consume() {
1099
- this.consumedAfterSnapshot++;
1100
- return this.preprocessor.advance();
1101
- }
1102
- _advanceBy(count) {
1103
- this.consumedAfterSnapshot += count;
1104
- for (let i = 0; i < count; i++) {
1105
- this.preprocessor.advance();
1106
- }
1107
- }
1108
- _consumeSequenceIfMatch(pattern, caseSensitive) {
1109
- if (this.preprocessor.startsWith(pattern, caseSensitive)) {
1110
- this._advanceBy(pattern.length - 1);
1111
- return true;
1112
- }
1113
- return false;
1114
- }
1115
- //Token creation
1116
- _createStartTagToken() {
1117
- this.currentToken = {
1118
- type: TokenType.START_TAG,
1119
- tagName: "",
1120
- tagID: TAG_ID.UNKNOWN,
1121
- selfClosing: false,
1122
- ackSelfClosing: false,
1123
- attrs: [],
1124
- location: this.getCurrentLocation(1)
1125
- };
1126
- }
1127
- _createEndTagToken() {
1128
- this.currentToken = {
1129
- type: TokenType.END_TAG,
1130
- tagName: "",
1131
- tagID: TAG_ID.UNKNOWN,
1132
- selfClosing: false,
1133
- ackSelfClosing: false,
1134
- attrs: [],
1135
- location: this.getCurrentLocation(2)
1136
- };
1137
- }
1138
- _createCommentToken(offset) {
1139
- this.currentToken = {
1140
- type: TokenType.COMMENT,
1141
- data: "",
1142
- location: this.getCurrentLocation(offset)
1143
- };
1144
- }
1145
- _createDoctypeToken(initialName) {
1146
- this.currentToken = {
1147
- type: TokenType.DOCTYPE,
1148
- name: initialName,
1149
- forceQuirks: false,
1150
- publicId: null,
1151
- systemId: null,
1152
- location: this.currentLocation
1153
- };
1154
- }
1155
- _createCharacterToken(type, chars) {
1156
- this.currentCharacterToken = {
1157
- type,
1158
- chars,
1159
- location: this.currentLocation
1160
- };
1161
- }
1162
- //Tag attributes
1163
- _createAttr(attrNameFirstCh) {
1164
- this.currentAttr = {
1165
- name: attrNameFirstCh,
1166
- value: ""
1167
- };
1168
- this.currentLocation = this.getCurrentLocation(0);
1169
- }
1170
- _leaveAttrName() {
1171
- var _a;
1172
- var _b;
1173
- const token = this.currentToken;
1174
- if (getTokenAttr(token, this.currentAttr.name) === null) {
1175
- token.attrs.push(this.currentAttr);
1176
- if (token.location && this.currentLocation) {
1177
- const attrLocations = (_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : _b.attrs = /* @__PURE__ */ Object.create(null);
1178
- attrLocations[this.currentAttr.name] = this.currentLocation;
1179
- this._leaveAttrValue();
1180
- }
1181
- } else {
1182
- this._err(ERR.duplicateAttribute);
1183
- }
1184
- }
1185
- _leaveAttrValue() {
1186
- if (this.currentLocation) {
1187
- this.currentLocation.endLine = this.preprocessor.line;
1188
- this.currentLocation.endCol = this.preprocessor.col;
1189
- this.currentLocation.endOffset = this.preprocessor.offset;
1190
- }
1191
- }
1192
- //Token emission
1193
- prepareToken(ct) {
1194
- this._emitCurrentCharacterToken(ct.location);
1195
- this.currentToken = null;
1196
- if (ct.location) {
1197
- ct.location.endLine = this.preprocessor.line;
1198
- ct.location.endCol = this.preprocessor.col + 1;
1199
- ct.location.endOffset = this.preprocessor.offset + 1;
1200
- }
1201
- this.currentLocation = this.getCurrentLocation(-1);
1202
- }
1203
- emitCurrentTagToken() {
1204
- const ct = this.currentToken;
1205
- this.prepareToken(ct);
1206
- ct.tagID = getTagID(ct.tagName);
1207
- if (ct.type === TokenType.START_TAG) {
1208
- this.lastStartTagName = ct.tagName;
1209
- this.handler.onStartTag(ct);
1210
- } else {
1211
- if (ct.attrs.length > 0) {
1212
- this._err(ERR.endTagWithAttributes);
1213
- }
1214
- if (ct.selfClosing) {
1215
- this._err(ERR.endTagWithTrailingSolidus);
1216
- }
1217
- this.handler.onEndTag(ct);
1218
- }
1219
- this.preprocessor.dropParsedChunk();
1220
- }
1221
- emitCurrentComment(ct) {
1222
- this.prepareToken(ct);
1223
- this.handler.onComment(ct);
1224
- this.preprocessor.dropParsedChunk();
1225
- }
1226
- emitCurrentDoctype(ct) {
1227
- this.prepareToken(ct);
1228
- this.handler.onDoctype(ct);
1229
- this.preprocessor.dropParsedChunk();
1230
- }
1231
- _emitCurrentCharacterToken(nextLocation) {
1232
- if (this.currentCharacterToken) {
1233
- if (nextLocation && this.currentCharacterToken.location) {
1234
- this.currentCharacterToken.location.endLine = nextLocation.startLine;
1235
- this.currentCharacterToken.location.endCol = nextLocation.startCol;
1236
- this.currentCharacterToken.location.endOffset = nextLocation.startOffset;
1237
- }
1238
- switch (this.currentCharacterToken.type) {
1239
- case TokenType.CHARACTER: {
1240
- this.handler.onCharacter(this.currentCharacterToken);
1241
- break;
1242
- }
1243
- case TokenType.NULL_CHARACTER: {
1244
- this.handler.onNullCharacter(this.currentCharacterToken);
1245
- break;
1246
- }
1247
- case TokenType.WHITESPACE_CHARACTER: {
1248
- this.handler.onWhitespaceCharacter(this.currentCharacterToken);
1249
- break;
1250
- }
1251
- }
1252
- this.currentCharacterToken = null;
1253
- }
1254
- }
1255
- _emitEOFToken() {
1256
- const location = this.getCurrentLocation(0);
1257
- if (location) {
1258
- location.endLine = location.startLine;
1259
- location.endCol = location.startCol;
1260
- location.endOffset = location.startOffset;
1261
- }
1262
- this._emitCurrentCharacterToken(location);
1263
- this.handler.onEof({ type: TokenType.EOF, location });
1264
- this.active = false;
1265
- }
1266
- //Characters emission
1267
- //OPTIMIZATION: The specification uses only one type of character token (one token per character).
1268
- //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.
1269
- //If we have a sequence of characters that belong to the same group, the parser can process it
1270
- //as a single solid character token.
1271
- //So, there are 3 types of character tokens in parse5:
1272
- //1)TokenType.NULL_CHARACTER - \u0000-character sequences (e.g. '\u0000\u0000\u0000')
1273
- //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\n \r\t \f')
1274
- //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')
1275
- _appendCharToCurrentCharacterToken(type, ch) {
1276
- if (this.currentCharacterToken) {
1277
- if (this.currentCharacterToken.type === type) {
1278
- this.currentCharacterToken.chars += ch;
1279
- return;
1280
- } else {
1281
- this.currentLocation = this.getCurrentLocation(0);
1282
- this._emitCurrentCharacterToken(this.currentLocation);
1283
- this.preprocessor.dropParsedChunk();
1284
- }
1285
- }
1286
- this._createCharacterToken(type, ch);
1287
- }
1288
- _emitCodePoint(cp) {
1289
- const type = isWhitespace(cp) ? TokenType.WHITESPACE_CHARACTER : cp === CODE_POINTS.NULL ? TokenType.NULL_CHARACTER : TokenType.CHARACTER;
1290
- this._appendCharToCurrentCharacterToken(type, cp < 65536 ? String.fromCharCode(cp) : String.fromCodePoint(cp));
1291
- }
1292
- //NOTE: used when we emit characters explicitly.
1293
- //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.
1294
- _emitChars(ch) {
1295
- this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);
1296
- }
1297
- // Character reference helpers
1298
- _startCharacterReference() {
1299
- this.returnState = this.state;
1300
- this.state = State.CHARACTER_REFERENCE;
1301
- this.entityStartPos = this.preprocessor.pos;
1302
- this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? DecodingMode.Attribute : DecodingMode.Legacy);
1303
- }
1304
- _isCharacterReferenceInAttribute() {
1305
- return this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED || this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED || this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED;
1306
- }
1307
- _flushCodePointConsumedAsCharacterReference(cp) {
1308
- if (this._isCharacterReferenceInAttribute()) {
1309
- this.currentAttr.value += String.fromCodePoint(cp);
1310
- } else {
1311
- this._emitCodePoint(cp);
1312
- }
1313
- }
1314
- // Calling states this way turns out to be much faster than any other approach.
1315
- _callState(cp) {
1316
- switch (this.state) {
1317
- case State.DATA: {
1318
- this._stateData(cp);
1319
- break;
1320
- }
1321
- case State.RCDATA: {
1322
- this._stateRcdata(cp);
1323
- break;
1324
- }
1325
- case State.RAWTEXT: {
1326
- this._stateRawtext(cp);
1327
- break;
1328
- }
1329
- case State.SCRIPT_DATA: {
1330
- this._stateScriptData(cp);
1331
- break;
1332
- }
1333
- case State.PLAINTEXT: {
1334
- this._statePlaintext(cp);
1335
- break;
1336
- }
1337
- case State.TAG_OPEN: {
1338
- this._stateTagOpen(cp);
1339
- break;
1340
- }
1341
- case State.END_TAG_OPEN: {
1342
- this._stateEndTagOpen(cp);
1343
- break;
1344
- }
1345
- case State.TAG_NAME: {
1346
- this._stateTagName(cp);
1347
- break;
1348
- }
1349
- case State.RCDATA_LESS_THAN_SIGN: {
1350
- this._stateRcdataLessThanSign(cp);
1351
- break;
1352
- }
1353
- case State.RCDATA_END_TAG_OPEN: {
1354
- this._stateRcdataEndTagOpen(cp);
1355
- break;
1356
- }
1357
- case State.RCDATA_END_TAG_NAME: {
1358
- this._stateRcdataEndTagName(cp);
1359
- break;
1360
- }
1361
- case State.RAWTEXT_LESS_THAN_SIGN: {
1362
- this._stateRawtextLessThanSign(cp);
1363
- break;
1364
- }
1365
- case State.RAWTEXT_END_TAG_OPEN: {
1366
- this._stateRawtextEndTagOpen(cp);
1367
- break;
1368
- }
1369
- case State.RAWTEXT_END_TAG_NAME: {
1370
- this._stateRawtextEndTagName(cp);
1371
- break;
1372
- }
1373
- case State.SCRIPT_DATA_LESS_THAN_SIGN: {
1374
- this._stateScriptDataLessThanSign(cp);
1375
- break;
1376
- }
1377
- case State.SCRIPT_DATA_END_TAG_OPEN: {
1378
- this._stateScriptDataEndTagOpen(cp);
1379
- break;
1380
- }
1381
- case State.SCRIPT_DATA_END_TAG_NAME: {
1382
- this._stateScriptDataEndTagName(cp);
1383
- break;
1384
- }
1385
- case State.SCRIPT_DATA_ESCAPE_START: {
1386
- this._stateScriptDataEscapeStart(cp);
1387
- break;
1388
- }
1389
- case State.SCRIPT_DATA_ESCAPE_START_DASH: {
1390
- this._stateScriptDataEscapeStartDash(cp);
1391
- break;
1392
- }
1393
- case State.SCRIPT_DATA_ESCAPED: {
1394
- this._stateScriptDataEscaped(cp);
1395
- break;
1396
- }
1397
- case State.SCRIPT_DATA_ESCAPED_DASH: {
1398
- this._stateScriptDataEscapedDash(cp);
1399
- break;
1400
- }
1401
- case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {
1402
- this._stateScriptDataEscapedDashDash(cp);
1403
- break;
1404
- }
1405
- case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {
1406
- this._stateScriptDataEscapedLessThanSign(cp);
1407
- break;
1408
- }
1409
- case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {
1410
- this._stateScriptDataEscapedEndTagOpen(cp);
1411
- break;
1412
- }
1413
- case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {
1414
- this._stateScriptDataEscapedEndTagName(cp);
1415
- break;
1416
- }
1417
- case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {
1418
- this._stateScriptDataDoubleEscapeStart(cp);
1419
- break;
1420
- }
1421
- case State.SCRIPT_DATA_DOUBLE_ESCAPED: {
1422
- this._stateScriptDataDoubleEscaped(cp);
1423
- break;
1424
- }
1425
- case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {
1426
- this._stateScriptDataDoubleEscapedDash(cp);
1427
- break;
1428
- }
1429
- case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {
1430
- this._stateScriptDataDoubleEscapedDashDash(cp);
1431
- break;
1432
- }
1433
- case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {
1434
- this._stateScriptDataDoubleEscapedLessThanSign(cp);
1435
- break;
1436
- }
1437
- case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {
1438
- this._stateScriptDataDoubleEscapeEnd(cp);
1439
- break;
1440
- }
1441
- case State.BEFORE_ATTRIBUTE_NAME: {
1442
- this._stateBeforeAttributeName(cp);
1443
- break;
1444
- }
1445
- case State.ATTRIBUTE_NAME: {
1446
- this._stateAttributeName(cp);
1447
- break;
1448
- }
1449
- case State.AFTER_ATTRIBUTE_NAME: {
1450
- this._stateAfterAttributeName(cp);
1451
- break;
1452
- }
1453
- case State.BEFORE_ATTRIBUTE_VALUE: {
1454
- this._stateBeforeAttributeValue(cp);
1455
- break;
1456
- }
1457
- case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {
1458
- this._stateAttributeValueDoubleQuoted(cp);
1459
- break;
1460
- }
1461
- case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {
1462
- this._stateAttributeValueSingleQuoted(cp);
1463
- break;
1464
- }
1465
- case State.ATTRIBUTE_VALUE_UNQUOTED: {
1466
- this._stateAttributeValueUnquoted(cp);
1467
- break;
1468
- }
1469
- case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {
1470
- this._stateAfterAttributeValueQuoted(cp);
1471
- break;
1472
- }
1473
- case State.SELF_CLOSING_START_TAG: {
1474
- this._stateSelfClosingStartTag(cp);
1475
- break;
1476
- }
1477
- case State.BOGUS_COMMENT: {
1478
- this._stateBogusComment(cp);
1479
- break;
1480
- }
1481
- case State.MARKUP_DECLARATION_OPEN: {
1482
- this._stateMarkupDeclarationOpen(cp);
1483
- break;
1484
- }
1485
- case State.COMMENT_START: {
1486
- this._stateCommentStart(cp);
1487
- break;
1488
- }
1489
- case State.COMMENT_START_DASH: {
1490
- this._stateCommentStartDash(cp);
1491
- break;
1492
- }
1493
- case State.COMMENT: {
1494
- this._stateComment(cp);
1495
- break;
1496
- }
1497
- case State.COMMENT_LESS_THAN_SIGN: {
1498
- this._stateCommentLessThanSign(cp);
1499
- break;
1500
- }
1501
- case State.COMMENT_LESS_THAN_SIGN_BANG: {
1502
- this._stateCommentLessThanSignBang(cp);
1503
- break;
1504
- }
1505
- case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {
1506
- this._stateCommentLessThanSignBangDash(cp);
1507
- break;
1508
- }
1509
- case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {
1510
- this._stateCommentLessThanSignBangDashDash(cp);
1511
- break;
1512
- }
1513
- case State.COMMENT_END_DASH: {
1514
- this._stateCommentEndDash(cp);
1515
- break;
1516
- }
1517
- case State.COMMENT_END: {
1518
- this._stateCommentEnd(cp);
1519
- break;
1520
- }
1521
- case State.COMMENT_END_BANG: {
1522
- this._stateCommentEndBang(cp);
1523
- break;
1524
- }
1525
- case State.DOCTYPE: {
1526
- this._stateDoctype(cp);
1527
- break;
1528
- }
1529
- case State.BEFORE_DOCTYPE_NAME: {
1530
- this._stateBeforeDoctypeName(cp);
1531
- break;
1532
- }
1533
- case State.DOCTYPE_NAME: {
1534
- this._stateDoctypeName(cp);
1535
- break;
1536
- }
1537
- case State.AFTER_DOCTYPE_NAME: {
1538
- this._stateAfterDoctypeName(cp);
1539
- break;
1540
- }
1541
- case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {
1542
- this._stateAfterDoctypePublicKeyword(cp);
1543
- break;
1544
- }
1545
- case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {
1546
- this._stateBeforeDoctypePublicIdentifier(cp);
1547
- break;
1548
- }
1549
- case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {
1550
- this._stateDoctypePublicIdentifierDoubleQuoted(cp);
1551
- break;
1552
- }
1553
- case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {
1554
- this._stateDoctypePublicIdentifierSingleQuoted(cp);
1555
- break;
1556
- }
1557
- case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {
1558
- this._stateAfterDoctypePublicIdentifier(cp);
1559
- break;
1560
- }
1561
- case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {
1562
- this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);
1563
- break;
1564
- }
1565
- case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {
1566
- this._stateAfterDoctypeSystemKeyword(cp);
1567
- break;
1568
- }
1569
- case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {
1570
- this._stateBeforeDoctypeSystemIdentifier(cp);
1571
- break;
1572
- }
1573
- case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {
1574
- this._stateDoctypeSystemIdentifierDoubleQuoted(cp);
1575
- break;
1576
- }
1577
- case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {
1578
- this._stateDoctypeSystemIdentifierSingleQuoted(cp);
1579
- break;
1580
- }
1581
- case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {
1582
- this._stateAfterDoctypeSystemIdentifier(cp);
1583
- break;
1584
- }
1585
- case State.BOGUS_DOCTYPE: {
1586
- this._stateBogusDoctype(cp);
1587
- break;
1588
- }
1589
- case State.CDATA_SECTION: {
1590
- this._stateCdataSection(cp);
1591
- break;
1592
- }
1593
- case State.CDATA_SECTION_BRACKET: {
1594
- this._stateCdataSectionBracket(cp);
1595
- break;
1596
- }
1597
- case State.CDATA_SECTION_END: {
1598
- this._stateCdataSectionEnd(cp);
1599
- break;
1600
- }
1601
- case State.CHARACTER_REFERENCE: {
1602
- this._stateCharacterReference();
1603
- break;
1604
- }
1605
- case State.AMBIGUOUS_AMPERSAND: {
1606
- this._stateAmbiguousAmpersand(cp);
1607
- break;
1608
- }
1609
- default: {
1610
- throw new Error("Unknown state");
1611
- }
1612
- }
1613
- }
1614
- // State machine
1615
- // Data state
1616
- //------------------------------------------------------------------
1617
- _stateData(cp) {
1618
- switch (cp) {
1619
- case CODE_POINTS.LESS_THAN_SIGN: {
1620
- this.state = State.TAG_OPEN;
1621
- break;
1622
- }
1623
- case CODE_POINTS.AMPERSAND: {
1624
- this._startCharacterReference();
1625
- break;
1626
- }
1627
- case CODE_POINTS.NULL: {
1628
- this._err(ERR.unexpectedNullCharacter);
1629
- this._emitCodePoint(cp);
1630
- break;
1631
- }
1632
- case CODE_POINTS.EOF: {
1633
- this._emitEOFToken();
1634
- break;
1635
- }
1636
- default: {
1637
- this._emitCodePoint(cp);
1638
- }
1639
- }
1640
- }
1641
- // RCDATA state
1642
- //------------------------------------------------------------------
1643
- _stateRcdata(cp) {
1644
- switch (cp) {
1645
- case CODE_POINTS.AMPERSAND: {
1646
- this._startCharacterReference();
1647
- break;
1648
- }
1649
- case CODE_POINTS.LESS_THAN_SIGN: {
1650
- this.state = State.RCDATA_LESS_THAN_SIGN;
1651
- break;
1652
- }
1653
- case CODE_POINTS.NULL: {
1654
- this._err(ERR.unexpectedNullCharacter);
1655
- this._emitChars(REPLACEMENT_CHARACTER);
1656
- break;
1657
- }
1658
- case CODE_POINTS.EOF: {
1659
- this._emitEOFToken();
1660
- break;
1661
- }
1662
- default: {
1663
- this._emitCodePoint(cp);
1664
- }
1665
- }
1666
- }
1667
- // RAWTEXT state
1668
- //------------------------------------------------------------------
1669
- _stateRawtext(cp) {
1670
- switch (cp) {
1671
- case CODE_POINTS.LESS_THAN_SIGN: {
1672
- this.state = State.RAWTEXT_LESS_THAN_SIGN;
1673
- break;
1674
- }
1675
- case CODE_POINTS.NULL: {
1676
- this._err(ERR.unexpectedNullCharacter);
1677
- this._emitChars(REPLACEMENT_CHARACTER);
1678
- break;
1679
- }
1680
- case CODE_POINTS.EOF: {
1681
- this._emitEOFToken();
1682
- break;
1683
- }
1684
- default: {
1685
- this._emitCodePoint(cp);
1686
- }
1687
- }
1688
- }
1689
- // Script data state
1690
- //------------------------------------------------------------------
1691
- _stateScriptData(cp) {
1692
- switch (cp) {
1693
- case CODE_POINTS.LESS_THAN_SIGN: {
1694
- this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;
1695
- break;
1696
- }
1697
- case CODE_POINTS.NULL: {
1698
- this._err(ERR.unexpectedNullCharacter);
1699
- this._emitChars(REPLACEMENT_CHARACTER);
1700
- break;
1701
- }
1702
- case CODE_POINTS.EOF: {
1703
- this._emitEOFToken();
1704
- break;
1705
- }
1706
- default: {
1707
- this._emitCodePoint(cp);
1708
- }
1709
- }
1710
- }
1711
- // PLAINTEXT state
1712
- //------------------------------------------------------------------
1713
- _statePlaintext(cp) {
1714
- switch (cp) {
1715
- case CODE_POINTS.NULL: {
1716
- this._err(ERR.unexpectedNullCharacter);
1717
- this._emitChars(REPLACEMENT_CHARACTER);
1718
- break;
1719
- }
1720
- case CODE_POINTS.EOF: {
1721
- this._emitEOFToken();
1722
- break;
1723
- }
1724
- default: {
1725
- this._emitCodePoint(cp);
1726
- }
1727
- }
1728
- }
1729
- // Tag open state
1730
- //------------------------------------------------------------------
1731
- _stateTagOpen(cp) {
1732
- if (isAsciiLetter(cp)) {
1733
- this._createStartTagToken();
1734
- this.state = State.TAG_NAME;
1735
- this._stateTagName(cp);
1736
- } else
1737
- switch (cp) {
1738
- case CODE_POINTS.EXCLAMATION_MARK: {
1739
- this.state = State.MARKUP_DECLARATION_OPEN;
1740
- break;
1741
- }
1742
- case CODE_POINTS.SOLIDUS: {
1743
- this.state = State.END_TAG_OPEN;
1744
- break;
1745
- }
1746
- case CODE_POINTS.QUESTION_MARK: {
1747
- this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);
1748
- this._createCommentToken(1);
1749
- this.state = State.BOGUS_COMMENT;
1750
- this._stateBogusComment(cp);
1751
- break;
1752
- }
1753
- case CODE_POINTS.EOF: {
1754
- this._err(ERR.eofBeforeTagName);
1755
- this._emitChars("<");
1756
- this._emitEOFToken();
1757
- break;
1758
- }
1759
- default: {
1760
- this._err(ERR.invalidFirstCharacterOfTagName);
1761
- this._emitChars("<");
1762
- this.state = State.DATA;
1763
- this._stateData(cp);
1764
- }
1765
- }
1766
- }
1767
- // End tag open state
1768
- //------------------------------------------------------------------
1769
- _stateEndTagOpen(cp) {
1770
- if (isAsciiLetter(cp)) {
1771
- this._createEndTagToken();
1772
- this.state = State.TAG_NAME;
1773
- this._stateTagName(cp);
1774
- } else
1775
- switch (cp) {
1776
- case CODE_POINTS.GREATER_THAN_SIGN: {
1777
- this._err(ERR.missingEndTagName);
1778
- this.state = State.DATA;
1779
- break;
1780
- }
1781
- case CODE_POINTS.EOF: {
1782
- this._err(ERR.eofBeforeTagName);
1783
- this._emitChars("</");
1784
- this._emitEOFToken();
1785
- break;
1786
- }
1787
- default: {
1788
- this._err(ERR.invalidFirstCharacterOfTagName);
1789
- this._createCommentToken(2);
1790
- this.state = State.BOGUS_COMMENT;
1791
- this._stateBogusComment(cp);
1792
- }
1793
- }
1794
- }
1795
- // Tag name state
1796
- //------------------------------------------------------------------
1797
- _stateTagName(cp) {
1798
- const token = this.currentToken;
1799
- switch (cp) {
1800
- case CODE_POINTS.SPACE:
1801
- case CODE_POINTS.LINE_FEED:
1802
- case CODE_POINTS.TABULATION:
1803
- case CODE_POINTS.FORM_FEED: {
1804
- this.state = State.BEFORE_ATTRIBUTE_NAME;
1805
- break;
1806
- }
1807
- case CODE_POINTS.SOLIDUS: {
1808
- this.state = State.SELF_CLOSING_START_TAG;
1809
- break;
1810
- }
1811
- case CODE_POINTS.GREATER_THAN_SIGN: {
1812
- this.state = State.DATA;
1813
- this.emitCurrentTagToken();
1814
- break;
1815
- }
1816
- case CODE_POINTS.NULL: {
1817
- this._err(ERR.unexpectedNullCharacter);
1818
- token.tagName += REPLACEMENT_CHARACTER;
1819
- break;
1820
- }
1821
- case CODE_POINTS.EOF: {
1822
- this._err(ERR.eofInTag);
1823
- this._emitEOFToken();
1824
- break;
1825
- }
1826
- default: {
1827
- token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);
1828
- }
1829
- }
1830
- }
1831
- // RCDATA less-than sign state
1832
- //------------------------------------------------------------------
1833
- _stateRcdataLessThanSign(cp) {
1834
- if (cp === CODE_POINTS.SOLIDUS) {
1835
- this.state = State.RCDATA_END_TAG_OPEN;
1836
- } else {
1837
- this._emitChars("<");
1838
- this.state = State.RCDATA;
1839
- this._stateRcdata(cp);
1840
- }
1841
- }
1842
- // RCDATA end tag open state
1843
- //------------------------------------------------------------------
1844
- _stateRcdataEndTagOpen(cp) {
1845
- if (isAsciiLetter(cp)) {
1846
- this.state = State.RCDATA_END_TAG_NAME;
1847
- this._stateRcdataEndTagName(cp);
1848
- } else {
1849
- this._emitChars("</");
1850
- this.state = State.RCDATA;
1851
- this._stateRcdata(cp);
1852
- }
1853
- }
1854
- handleSpecialEndTag(_cp) {
1855
- if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {
1856
- return !this._ensureHibernation();
1857
- }
1858
- this._createEndTagToken();
1859
- const token = this.currentToken;
1860
- token.tagName = this.lastStartTagName;
1861
- const cp = this.preprocessor.peek(this.lastStartTagName.length);
1862
- switch (cp) {
1863
- case CODE_POINTS.SPACE:
1864
- case CODE_POINTS.LINE_FEED:
1865
- case CODE_POINTS.TABULATION:
1866
- case CODE_POINTS.FORM_FEED: {
1867
- this._advanceBy(this.lastStartTagName.length);
1868
- this.state = State.BEFORE_ATTRIBUTE_NAME;
1869
- return false;
1870
- }
1871
- case CODE_POINTS.SOLIDUS: {
1872
- this._advanceBy(this.lastStartTagName.length);
1873
- this.state = State.SELF_CLOSING_START_TAG;
1874
- return false;
1875
- }
1876
- case CODE_POINTS.GREATER_THAN_SIGN: {
1877
- this._advanceBy(this.lastStartTagName.length);
1878
- this.emitCurrentTagToken();
1879
- this.state = State.DATA;
1880
- return false;
1881
- }
1882
- default: {
1883
- return !this._ensureHibernation();
1884
- }
1885
- }
1886
- }
1887
- // RCDATA end tag name state
1888
- //------------------------------------------------------------------
1889
- _stateRcdataEndTagName(cp) {
1890
- if (this.handleSpecialEndTag(cp)) {
1891
- this._emitChars("</");
1892
- this.state = State.RCDATA;
1893
- this._stateRcdata(cp);
1894
- }
1895
- }
1896
- // RAWTEXT less-than sign state
1897
- //------------------------------------------------------------------
1898
- _stateRawtextLessThanSign(cp) {
1899
- if (cp === CODE_POINTS.SOLIDUS) {
1900
- this.state = State.RAWTEXT_END_TAG_OPEN;
1901
- } else {
1902
- this._emitChars("<");
1903
- this.state = State.RAWTEXT;
1904
- this._stateRawtext(cp);
1905
- }
1906
- }
1907
- // RAWTEXT end tag open state
1908
- //------------------------------------------------------------------
1909
- _stateRawtextEndTagOpen(cp) {
1910
- if (isAsciiLetter(cp)) {
1911
- this.state = State.RAWTEXT_END_TAG_NAME;
1912
- this._stateRawtextEndTagName(cp);
1913
- } else {
1914
- this._emitChars("</");
1915
- this.state = State.RAWTEXT;
1916
- this._stateRawtext(cp);
1917
- }
1918
- }
1919
- // RAWTEXT end tag name state
1920
- //------------------------------------------------------------------
1921
- _stateRawtextEndTagName(cp) {
1922
- if (this.handleSpecialEndTag(cp)) {
1923
- this._emitChars("</");
1924
- this.state = State.RAWTEXT;
1925
- this._stateRawtext(cp);
1926
- }
1927
- }
1928
- // Script data less-than sign state
1929
- //------------------------------------------------------------------
1930
- _stateScriptDataLessThanSign(cp) {
1931
- switch (cp) {
1932
- case CODE_POINTS.SOLIDUS: {
1933
- this.state = State.SCRIPT_DATA_END_TAG_OPEN;
1934
- break;
1935
- }
1936
- case CODE_POINTS.EXCLAMATION_MARK: {
1937
- this.state = State.SCRIPT_DATA_ESCAPE_START;
1938
- this._emitChars("<!");
1939
- break;
1940
- }
1941
- default: {
1942
- this._emitChars("<");
1943
- this.state = State.SCRIPT_DATA;
1944
- this._stateScriptData(cp);
1945
- }
1946
- }
1947
- }
1948
- // Script data end tag open state
1949
- //------------------------------------------------------------------
1950
- _stateScriptDataEndTagOpen(cp) {
1951
- if (isAsciiLetter(cp)) {
1952
- this.state = State.SCRIPT_DATA_END_TAG_NAME;
1953
- this._stateScriptDataEndTagName(cp);
1954
- } else {
1955
- this._emitChars("</");
1956
- this.state = State.SCRIPT_DATA;
1957
- this._stateScriptData(cp);
1958
- }
1959
- }
1960
- // Script data end tag name state
1961
- //------------------------------------------------------------------
1962
- _stateScriptDataEndTagName(cp) {
1963
- if (this.handleSpecialEndTag(cp)) {
1964
- this._emitChars("</");
1965
- this.state = State.SCRIPT_DATA;
1966
- this._stateScriptData(cp);
1967
- }
1968
- }
1969
- // Script data escape start state
1970
- //------------------------------------------------------------------
1971
- _stateScriptDataEscapeStart(cp) {
1972
- if (cp === CODE_POINTS.HYPHEN_MINUS) {
1973
- this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;
1974
- this._emitChars("-");
1975
- } else {
1976
- this.state = State.SCRIPT_DATA;
1977
- this._stateScriptData(cp);
1978
- }
1979
- }
1980
- // Script data escape start dash state
1981
- //------------------------------------------------------------------
1982
- _stateScriptDataEscapeStartDash(cp) {
1983
- if (cp === CODE_POINTS.HYPHEN_MINUS) {
1984
- this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;
1985
- this._emitChars("-");
1986
- } else {
1987
- this.state = State.SCRIPT_DATA;
1988
- this._stateScriptData(cp);
1989
- }
1990
- }
1991
- // Script data escaped state
1992
- //------------------------------------------------------------------
1993
- _stateScriptDataEscaped(cp) {
1994
- switch (cp) {
1995
- case CODE_POINTS.HYPHEN_MINUS: {
1996
- this.state = State.SCRIPT_DATA_ESCAPED_DASH;
1997
- this._emitChars("-");
1998
- break;
1999
- }
2000
- case CODE_POINTS.LESS_THAN_SIGN: {
2001
- this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;
2002
- break;
2003
- }
2004
- case CODE_POINTS.NULL: {
2005
- this._err(ERR.unexpectedNullCharacter);
2006
- this._emitChars(REPLACEMENT_CHARACTER);
2007
- break;
2008
- }
2009
- case CODE_POINTS.EOF: {
2010
- this._err(ERR.eofInScriptHtmlCommentLikeText);
2011
- this._emitEOFToken();
2012
- break;
2013
- }
2014
- default: {
2015
- this._emitCodePoint(cp);
2016
- }
2017
- }
2018
- }
2019
- // Script data escaped dash state
2020
- //------------------------------------------------------------------
2021
- _stateScriptDataEscapedDash(cp) {
2022
- switch (cp) {
2023
- case CODE_POINTS.HYPHEN_MINUS: {
2024
- this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;
2025
- this._emitChars("-");
2026
- break;
2027
- }
2028
- case CODE_POINTS.LESS_THAN_SIGN: {
2029
- this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;
2030
- break;
2031
- }
2032
- case CODE_POINTS.NULL: {
2033
- this._err(ERR.unexpectedNullCharacter);
2034
- this.state = State.SCRIPT_DATA_ESCAPED;
2035
- this._emitChars(REPLACEMENT_CHARACTER);
2036
- break;
2037
- }
2038
- case CODE_POINTS.EOF: {
2039
- this._err(ERR.eofInScriptHtmlCommentLikeText);
2040
- this._emitEOFToken();
2041
- break;
2042
- }
2043
- default: {
2044
- this.state = State.SCRIPT_DATA_ESCAPED;
2045
- this._emitCodePoint(cp);
2046
- }
2047
- }
2048
- }
2049
- // Script data escaped dash dash state
2050
- //------------------------------------------------------------------
2051
- _stateScriptDataEscapedDashDash(cp) {
2052
- switch (cp) {
2053
- case CODE_POINTS.HYPHEN_MINUS: {
2054
- this._emitChars("-");
2055
- break;
2056
- }
2057
- case CODE_POINTS.LESS_THAN_SIGN: {
2058
- this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;
2059
- break;
2060
- }
2061
- case CODE_POINTS.GREATER_THAN_SIGN: {
2062
- this.state = State.SCRIPT_DATA;
2063
- this._emitChars(">");
2064
- break;
2065
- }
2066
- case CODE_POINTS.NULL: {
2067
- this._err(ERR.unexpectedNullCharacter);
2068
- this.state = State.SCRIPT_DATA_ESCAPED;
2069
- this._emitChars(REPLACEMENT_CHARACTER);
2070
- break;
2071
- }
2072
- case CODE_POINTS.EOF: {
2073
- this._err(ERR.eofInScriptHtmlCommentLikeText);
2074
- this._emitEOFToken();
2075
- break;
2076
- }
2077
- default: {
2078
- this.state = State.SCRIPT_DATA_ESCAPED;
2079
- this._emitCodePoint(cp);
2080
- }
2081
- }
2082
- }
2083
- // Script data escaped less-than sign state
2084
- //------------------------------------------------------------------
2085
- _stateScriptDataEscapedLessThanSign(cp) {
2086
- if (cp === CODE_POINTS.SOLIDUS) {
2087
- this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;
2088
- } else if (isAsciiLetter(cp)) {
2089
- this._emitChars("<");
2090
- this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;
2091
- this._stateScriptDataDoubleEscapeStart(cp);
2092
- } else {
2093
- this._emitChars("<");
2094
- this.state = State.SCRIPT_DATA_ESCAPED;
2095
- this._stateScriptDataEscaped(cp);
2096
- }
2097
- }
2098
- // Script data escaped end tag open state
2099
- //------------------------------------------------------------------
2100
- _stateScriptDataEscapedEndTagOpen(cp) {
2101
- if (isAsciiLetter(cp)) {
2102
- this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;
2103
- this._stateScriptDataEscapedEndTagName(cp);
2104
- } else {
2105
- this._emitChars("</");
2106
- this.state = State.SCRIPT_DATA_ESCAPED;
2107
- this._stateScriptDataEscaped(cp);
2108
- }
2109
- }
2110
- // Script data escaped end tag name state
2111
- //------------------------------------------------------------------
2112
- _stateScriptDataEscapedEndTagName(cp) {
2113
- if (this.handleSpecialEndTag(cp)) {
2114
- this._emitChars("</");
2115
- this.state = State.SCRIPT_DATA_ESCAPED;
2116
- this._stateScriptDataEscaped(cp);
2117
- }
2118
- }
2119
- // Script data double escape start state
2120
- //------------------------------------------------------------------
2121
- _stateScriptDataDoubleEscapeStart(cp) {
2122
- if (this.preprocessor.startsWith(SEQUENCES.SCRIPT, false) && isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(SEQUENCES.SCRIPT.length))) {
2123
- this._emitCodePoint(cp);
2124
- for (let i = 0; i < SEQUENCES.SCRIPT.length; i++) {
2125
- this._emitCodePoint(this._consume());
2126
- }
2127
- this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;
2128
- } else if (!this._ensureHibernation()) {
2129
- this.state = State.SCRIPT_DATA_ESCAPED;
2130
- this._stateScriptDataEscaped(cp);
2131
- }
2132
- }
2133
- // Script data double escaped state
2134
- //------------------------------------------------------------------
2135
- _stateScriptDataDoubleEscaped(cp) {
2136
- switch (cp) {
2137
- case CODE_POINTS.HYPHEN_MINUS: {
2138
- this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;
2139
- this._emitChars("-");
2140
- break;
2141
- }
2142
- case CODE_POINTS.LESS_THAN_SIGN: {
2143
- this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;
2144
- this._emitChars("<");
2145
- break;
2146
- }
2147
- case CODE_POINTS.NULL: {
2148
- this._err(ERR.unexpectedNullCharacter);
2149
- this._emitChars(REPLACEMENT_CHARACTER);
2150
- break;
2151
- }
2152
- case CODE_POINTS.EOF: {
2153
- this._err(ERR.eofInScriptHtmlCommentLikeText);
2154
- this._emitEOFToken();
2155
- break;
2156
- }
2157
- default: {
2158
- this._emitCodePoint(cp);
2159
- }
2160
- }
2161
- }
2162
- // Script data double escaped dash state
2163
- //------------------------------------------------------------------
2164
- _stateScriptDataDoubleEscapedDash(cp) {
2165
- switch (cp) {
2166
- case CODE_POINTS.HYPHEN_MINUS: {
2167
- this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;
2168
- this._emitChars("-");
2169
- break;
2170
- }
2171
- case CODE_POINTS.LESS_THAN_SIGN: {
2172
- this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;
2173
- this._emitChars("<");
2174
- break;
2175
- }
2176
- case CODE_POINTS.NULL: {
2177
- this._err(ERR.unexpectedNullCharacter);
2178
- this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;
2179
- this._emitChars(REPLACEMENT_CHARACTER);
2180
- break;
2181
- }
2182
- case CODE_POINTS.EOF: {
2183
- this._err(ERR.eofInScriptHtmlCommentLikeText);
2184
- this._emitEOFToken();
2185
- break;
2186
- }
2187
- default: {
2188
- this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;
2189
- this._emitCodePoint(cp);
2190
- }
2191
- }
2192
- }
2193
- // Script data double escaped dash dash state
2194
- //------------------------------------------------------------------
2195
- _stateScriptDataDoubleEscapedDashDash(cp) {
2196
- switch (cp) {
2197
- case CODE_POINTS.HYPHEN_MINUS: {
2198
- this._emitChars("-");
2199
- break;
2200
- }
2201
- case CODE_POINTS.LESS_THAN_SIGN: {
2202
- this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;
2203
- this._emitChars("<");
2204
- break;
2205
- }
2206
- case CODE_POINTS.GREATER_THAN_SIGN: {
2207
- this.state = State.SCRIPT_DATA;
2208
- this._emitChars(">");
2209
- break;
2210
- }
2211
- case CODE_POINTS.NULL: {
2212
- this._err(ERR.unexpectedNullCharacter);
2213
- this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;
2214
- this._emitChars(REPLACEMENT_CHARACTER);
2215
- break;
2216
- }
2217
- case CODE_POINTS.EOF: {
2218
- this._err(ERR.eofInScriptHtmlCommentLikeText);
2219
- this._emitEOFToken();
2220
- break;
2221
- }
2222
- default: {
2223
- this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;
2224
- this._emitCodePoint(cp);
2225
- }
2226
- }
2227
- }
2228
- // Script data double escaped less-than sign state
2229
- //------------------------------------------------------------------
2230
- _stateScriptDataDoubleEscapedLessThanSign(cp) {
2231
- if (cp === CODE_POINTS.SOLIDUS) {
2232
- this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;
2233
- this._emitChars("/");
2234
- } else {
2235
- this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;
2236
- this._stateScriptDataDoubleEscaped(cp);
2237
- }
2238
- }
2239
- // Script data double escape end state
2240
- //------------------------------------------------------------------
2241
- _stateScriptDataDoubleEscapeEnd(cp) {
2242
- if (this.preprocessor.startsWith(SEQUENCES.SCRIPT, false) && isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(SEQUENCES.SCRIPT.length))) {
2243
- this._emitCodePoint(cp);
2244
- for (let i = 0; i < SEQUENCES.SCRIPT.length; i++) {
2245
- this._emitCodePoint(this._consume());
2246
- }
2247
- this.state = State.SCRIPT_DATA_ESCAPED;
2248
- } else if (!this._ensureHibernation()) {
2249
- this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;
2250
- this._stateScriptDataDoubleEscaped(cp);
2251
- }
2252
- }
2253
- // Before attribute name state
2254
- //------------------------------------------------------------------
2255
- _stateBeforeAttributeName(cp) {
2256
- switch (cp) {
2257
- case CODE_POINTS.SPACE:
2258
- case CODE_POINTS.LINE_FEED:
2259
- case CODE_POINTS.TABULATION:
2260
- case CODE_POINTS.FORM_FEED: {
2261
- break;
2262
- }
2263
- case CODE_POINTS.SOLIDUS:
2264
- case CODE_POINTS.GREATER_THAN_SIGN:
2265
- case CODE_POINTS.EOF: {
2266
- this.state = State.AFTER_ATTRIBUTE_NAME;
2267
- this._stateAfterAttributeName(cp);
2268
- break;
2269
- }
2270
- case CODE_POINTS.EQUALS_SIGN: {
2271
- this._err(ERR.unexpectedEqualsSignBeforeAttributeName);
2272
- this._createAttr("=");
2273
- this.state = State.ATTRIBUTE_NAME;
2274
- break;
2275
- }
2276
- default: {
2277
- this._createAttr("");
2278
- this.state = State.ATTRIBUTE_NAME;
2279
- this._stateAttributeName(cp);
2280
- }
2281
- }
2282
- }
2283
- // Attribute name state
2284
- //------------------------------------------------------------------
2285
- _stateAttributeName(cp) {
2286
- switch (cp) {
2287
- case CODE_POINTS.SPACE:
2288
- case CODE_POINTS.LINE_FEED:
2289
- case CODE_POINTS.TABULATION:
2290
- case CODE_POINTS.FORM_FEED:
2291
- case CODE_POINTS.SOLIDUS:
2292
- case CODE_POINTS.GREATER_THAN_SIGN:
2293
- case CODE_POINTS.EOF: {
2294
- this._leaveAttrName();
2295
- this.state = State.AFTER_ATTRIBUTE_NAME;
2296
- this._stateAfterAttributeName(cp);
2297
- break;
2298
- }
2299
- case CODE_POINTS.EQUALS_SIGN: {
2300
- this._leaveAttrName();
2301
- this.state = State.BEFORE_ATTRIBUTE_VALUE;
2302
- break;
2303
- }
2304
- case CODE_POINTS.QUOTATION_MARK:
2305
- case CODE_POINTS.APOSTROPHE:
2306
- case CODE_POINTS.LESS_THAN_SIGN: {
2307
- this._err(ERR.unexpectedCharacterInAttributeName);
2308
- this.currentAttr.name += String.fromCodePoint(cp);
2309
- break;
2310
- }
2311
- case CODE_POINTS.NULL: {
2312
- this._err(ERR.unexpectedNullCharacter);
2313
- this.currentAttr.name += REPLACEMENT_CHARACTER;
2314
- break;
2315
- }
2316
- default: {
2317
- this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);
2318
- }
2319
- }
2320
- }
2321
- // After attribute name state
2322
- //------------------------------------------------------------------
2323
- _stateAfterAttributeName(cp) {
2324
- switch (cp) {
2325
- case CODE_POINTS.SPACE:
2326
- case CODE_POINTS.LINE_FEED:
2327
- case CODE_POINTS.TABULATION:
2328
- case CODE_POINTS.FORM_FEED: {
2329
- break;
2330
- }
2331
- case CODE_POINTS.SOLIDUS: {
2332
- this.state = State.SELF_CLOSING_START_TAG;
2333
- break;
2334
- }
2335
- case CODE_POINTS.EQUALS_SIGN: {
2336
- this.state = State.BEFORE_ATTRIBUTE_VALUE;
2337
- break;
2338
- }
2339
- case CODE_POINTS.GREATER_THAN_SIGN: {
2340
- this.state = State.DATA;
2341
- this.emitCurrentTagToken();
2342
- break;
2343
- }
2344
- case CODE_POINTS.EOF: {
2345
- this._err(ERR.eofInTag);
2346
- this._emitEOFToken();
2347
- break;
2348
- }
2349
- default: {
2350
- this._createAttr("");
2351
- this.state = State.ATTRIBUTE_NAME;
2352
- this._stateAttributeName(cp);
2353
- }
2354
- }
2355
- }
2356
- // Before attribute value state
2357
- //------------------------------------------------------------------
2358
- _stateBeforeAttributeValue(cp) {
2359
- switch (cp) {
2360
- case CODE_POINTS.SPACE:
2361
- case CODE_POINTS.LINE_FEED:
2362
- case CODE_POINTS.TABULATION:
2363
- case CODE_POINTS.FORM_FEED: {
2364
- break;
2365
- }
2366
- case CODE_POINTS.QUOTATION_MARK: {
2367
- this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;
2368
- break;
2369
- }
2370
- case CODE_POINTS.APOSTROPHE: {
2371
- this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;
2372
- break;
2373
- }
2374
- case CODE_POINTS.GREATER_THAN_SIGN: {
2375
- this._err(ERR.missingAttributeValue);
2376
- this.state = State.DATA;
2377
- this.emitCurrentTagToken();
2378
- break;
2379
- }
2380
- default: {
2381
- this.state = State.ATTRIBUTE_VALUE_UNQUOTED;
2382
- this._stateAttributeValueUnquoted(cp);
2383
- }
2384
- }
2385
- }
2386
- // Attribute value (double-quoted) state
2387
- //------------------------------------------------------------------
2388
- _stateAttributeValueDoubleQuoted(cp) {
2389
- switch (cp) {
2390
- case CODE_POINTS.QUOTATION_MARK: {
2391
- this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;
2392
- break;
2393
- }
2394
- case CODE_POINTS.AMPERSAND: {
2395
- this._startCharacterReference();
2396
- break;
2397
- }
2398
- case CODE_POINTS.NULL: {
2399
- this._err(ERR.unexpectedNullCharacter);
2400
- this.currentAttr.value += REPLACEMENT_CHARACTER;
2401
- break;
2402
- }
2403
- case CODE_POINTS.EOF: {
2404
- this._err(ERR.eofInTag);
2405
- this._emitEOFToken();
2406
- break;
2407
- }
2408
- default: {
2409
- this.currentAttr.value += String.fromCodePoint(cp);
2410
- }
2411
- }
2412
- }
2413
- // Attribute value (single-quoted) state
2414
- //------------------------------------------------------------------
2415
- _stateAttributeValueSingleQuoted(cp) {
2416
- switch (cp) {
2417
- case CODE_POINTS.APOSTROPHE: {
2418
- this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;
2419
- break;
2420
- }
2421
- case CODE_POINTS.AMPERSAND: {
2422
- this._startCharacterReference();
2423
- break;
2424
- }
2425
- case CODE_POINTS.NULL: {
2426
- this._err(ERR.unexpectedNullCharacter);
2427
- this.currentAttr.value += REPLACEMENT_CHARACTER;
2428
- break;
2429
- }
2430
- case CODE_POINTS.EOF: {
2431
- this._err(ERR.eofInTag);
2432
- this._emitEOFToken();
2433
- break;
2434
- }
2435
- default: {
2436
- this.currentAttr.value += String.fromCodePoint(cp);
2437
- }
2438
- }
2439
- }
2440
- // Attribute value (unquoted) state
2441
- //------------------------------------------------------------------
2442
- _stateAttributeValueUnquoted(cp) {
2443
- switch (cp) {
2444
- case CODE_POINTS.SPACE:
2445
- case CODE_POINTS.LINE_FEED:
2446
- case CODE_POINTS.TABULATION:
2447
- case CODE_POINTS.FORM_FEED: {
2448
- this._leaveAttrValue();
2449
- this.state = State.BEFORE_ATTRIBUTE_NAME;
2450
- break;
2451
- }
2452
- case CODE_POINTS.AMPERSAND: {
2453
- this._startCharacterReference();
2454
- break;
2455
- }
2456
- case CODE_POINTS.GREATER_THAN_SIGN: {
2457
- this._leaveAttrValue();
2458
- this.state = State.DATA;
2459
- this.emitCurrentTagToken();
2460
- break;
2461
- }
2462
- case CODE_POINTS.NULL: {
2463
- this._err(ERR.unexpectedNullCharacter);
2464
- this.currentAttr.value += REPLACEMENT_CHARACTER;
2465
- break;
2466
- }
2467
- case CODE_POINTS.QUOTATION_MARK:
2468
- case CODE_POINTS.APOSTROPHE:
2469
- case CODE_POINTS.LESS_THAN_SIGN:
2470
- case CODE_POINTS.EQUALS_SIGN:
2471
- case CODE_POINTS.GRAVE_ACCENT: {
2472
- this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);
2473
- this.currentAttr.value += String.fromCodePoint(cp);
2474
- break;
2475
- }
2476
- case CODE_POINTS.EOF: {
2477
- this._err(ERR.eofInTag);
2478
- this._emitEOFToken();
2479
- break;
2480
- }
2481
- default: {
2482
- this.currentAttr.value += String.fromCodePoint(cp);
2483
- }
2484
- }
2485
- }
2486
- // After attribute value (quoted) state
2487
- //------------------------------------------------------------------
2488
- _stateAfterAttributeValueQuoted(cp) {
2489
- switch (cp) {
2490
- case CODE_POINTS.SPACE:
2491
- case CODE_POINTS.LINE_FEED:
2492
- case CODE_POINTS.TABULATION:
2493
- case CODE_POINTS.FORM_FEED: {
2494
- this._leaveAttrValue();
2495
- this.state = State.BEFORE_ATTRIBUTE_NAME;
2496
- break;
2497
- }
2498
- case CODE_POINTS.SOLIDUS: {
2499
- this._leaveAttrValue();
2500
- this.state = State.SELF_CLOSING_START_TAG;
2501
- break;
2502
- }
2503
- case CODE_POINTS.GREATER_THAN_SIGN: {
2504
- this._leaveAttrValue();
2505
- this.state = State.DATA;
2506
- this.emitCurrentTagToken();
2507
- break;
2508
- }
2509
- case CODE_POINTS.EOF: {
2510
- this._err(ERR.eofInTag);
2511
- this._emitEOFToken();
2512
- break;
2513
- }
2514
- default: {
2515
- this._err(ERR.missingWhitespaceBetweenAttributes);
2516
- this.state = State.BEFORE_ATTRIBUTE_NAME;
2517
- this._stateBeforeAttributeName(cp);
2518
- }
2519
- }
2520
- }
2521
- // Self-closing start tag state
2522
- //------------------------------------------------------------------
2523
- _stateSelfClosingStartTag(cp) {
2524
- switch (cp) {
2525
- case CODE_POINTS.GREATER_THAN_SIGN: {
2526
- const token = this.currentToken;
2527
- token.selfClosing = true;
2528
- this.state = State.DATA;
2529
- this.emitCurrentTagToken();
2530
- break;
2531
- }
2532
- case CODE_POINTS.EOF: {
2533
- this._err(ERR.eofInTag);
2534
- this._emitEOFToken();
2535
- break;
2536
- }
2537
- default: {
2538
- this._err(ERR.unexpectedSolidusInTag);
2539
- this.state = State.BEFORE_ATTRIBUTE_NAME;
2540
- this._stateBeforeAttributeName(cp);
2541
- }
2542
- }
2543
- }
2544
- // Bogus comment state
2545
- //------------------------------------------------------------------
2546
- _stateBogusComment(cp) {
2547
- const token = this.currentToken;
2548
- switch (cp) {
2549
- case CODE_POINTS.GREATER_THAN_SIGN: {
2550
- this.state = State.DATA;
2551
- this.emitCurrentComment(token);
2552
- break;
2553
- }
2554
- case CODE_POINTS.EOF: {
2555
- this.emitCurrentComment(token);
2556
- this._emitEOFToken();
2557
- break;
2558
- }
2559
- case CODE_POINTS.NULL: {
2560
- this._err(ERR.unexpectedNullCharacter);
2561
- token.data += REPLACEMENT_CHARACTER;
2562
- break;
2563
- }
2564
- default: {
2565
- token.data += String.fromCodePoint(cp);
2566
- }
2567
- }
2568
- }
2569
- // Markup declaration open state
2570
- //------------------------------------------------------------------
2571
- _stateMarkupDeclarationOpen(cp) {
2572
- if (this._consumeSequenceIfMatch(SEQUENCES.DASH_DASH, true)) {
2573
- this._createCommentToken(SEQUENCES.DASH_DASH.length + 1);
2574
- this.state = State.COMMENT_START;
2575
- } else if (this._consumeSequenceIfMatch(SEQUENCES.DOCTYPE, false)) {
2576
- this.currentLocation = this.getCurrentLocation(SEQUENCES.DOCTYPE.length + 1);
2577
- this.state = State.DOCTYPE;
2578
- } else if (this._consumeSequenceIfMatch(SEQUENCES.CDATA_START, true)) {
2579
- if (this.inForeignNode) {
2580
- this.state = State.CDATA_SECTION;
2581
- } else {
2582
- this._err(ERR.cdataInHtmlContent);
2583
- this._createCommentToken(SEQUENCES.CDATA_START.length + 1);
2584
- this.currentToken.data = "[CDATA[";
2585
- this.state = State.BOGUS_COMMENT;
2586
- }
2587
- } else if (!this._ensureHibernation()) {
2588
- this._err(ERR.incorrectlyOpenedComment);
2589
- this._createCommentToken(2);
2590
- this.state = State.BOGUS_COMMENT;
2591
- this._stateBogusComment(cp);
2592
- }
2593
- }
2594
- // Comment start state
2595
- //------------------------------------------------------------------
2596
- _stateCommentStart(cp) {
2597
- switch (cp) {
2598
- case CODE_POINTS.HYPHEN_MINUS: {
2599
- this.state = State.COMMENT_START_DASH;
2600
- break;
2601
- }
2602
- case CODE_POINTS.GREATER_THAN_SIGN: {
2603
- this._err(ERR.abruptClosingOfEmptyComment);
2604
- this.state = State.DATA;
2605
- const token = this.currentToken;
2606
- this.emitCurrentComment(token);
2607
- break;
2608
- }
2609
- default: {
2610
- this.state = State.COMMENT;
2611
- this._stateComment(cp);
2612
- }
2613
- }
2614
- }
2615
- // Comment start dash state
2616
- //------------------------------------------------------------------
2617
- _stateCommentStartDash(cp) {
2618
- const token = this.currentToken;
2619
- switch (cp) {
2620
- case CODE_POINTS.HYPHEN_MINUS: {
2621
- this.state = State.COMMENT_END;
2622
- break;
2623
- }
2624
- case CODE_POINTS.GREATER_THAN_SIGN: {
2625
- this._err(ERR.abruptClosingOfEmptyComment);
2626
- this.state = State.DATA;
2627
- this.emitCurrentComment(token);
2628
- break;
2629
- }
2630
- case CODE_POINTS.EOF: {
2631
- this._err(ERR.eofInComment);
2632
- this.emitCurrentComment(token);
2633
- this._emitEOFToken();
2634
- break;
2635
- }
2636
- default: {
2637
- token.data += "-";
2638
- this.state = State.COMMENT;
2639
- this._stateComment(cp);
2640
- }
2641
- }
2642
- }
2643
- // Comment state
2644
- //------------------------------------------------------------------
2645
- _stateComment(cp) {
2646
- const token = this.currentToken;
2647
- switch (cp) {
2648
- case CODE_POINTS.HYPHEN_MINUS: {
2649
- this.state = State.COMMENT_END_DASH;
2650
- break;
2651
- }
2652
- case CODE_POINTS.LESS_THAN_SIGN: {
2653
- token.data += "<";
2654
- this.state = State.COMMENT_LESS_THAN_SIGN;
2655
- break;
2656
- }
2657
- case CODE_POINTS.NULL: {
2658
- this._err(ERR.unexpectedNullCharacter);
2659
- token.data += REPLACEMENT_CHARACTER;
2660
- break;
2661
- }
2662
- case CODE_POINTS.EOF: {
2663
- this._err(ERR.eofInComment);
2664
- this.emitCurrentComment(token);
2665
- this._emitEOFToken();
2666
- break;
2667
- }
2668
- default: {
2669
- token.data += String.fromCodePoint(cp);
2670
- }
2671
- }
2672
- }
2673
- // Comment less-than sign state
2674
- //------------------------------------------------------------------
2675
- _stateCommentLessThanSign(cp) {
2676
- const token = this.currentToken;
2677
- switch (cp) {
2678
- case CODE_POINTS.EXCLAMATION_MARK: {
2679
- token.data += "!";
2680
- this.state = State.COMMENT_LESS_THAN_SIGN_BANG;
2681
- break;
2682
- }
2683
- case CODE_POINTS.LESS_THAN_SIGN: {
2684
- token.data += "<";
2685
- break;
2686
- }
2687
- default: {
2688
- this.state = State.COMMENT;
2689
- this._stateComment(cp);
2690
- }
2691
- }
2692
- }
2693
- // Comment less-than sign bang state
2694
- //------------------------------------------------------------------
2695
- _stateCommentLessThanSignBang(cp) {
2696
- if (cp === CODE_POINTS.HYPHEN_MINUS) {
2697
- this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;
2698
- } else {
2699
- this.state = State.COMMENT;
2700
- this._stateComment(cp);
2701
- }
2702
- }
2703
- // Comment less-than sign bang dash state
2704
- //------------------------------------------------------------------
2705
- _stateCommentLessThanSignBangDash(cp) {
2706
- if (cp === CODE_POINTS.HYPHEN_MINUS) {
2707
- this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;
2708
- } else {
2709
- this.state = State.COMMENT_END_DASH;
2710
- this._stateCommentEndDash(cp);
2711
- }
2712
- }
2713
- // Comment less-than sign bang dash dash state
2714
- //------------------------------------------------------------------
2715
- _stateCommentLessThanSignBangDashDash(cp) {
2716
- if (cp !== CODE_POINTS.GREATER_THAN_SIGN && cp !== CODE_POINTS.EOF) {
2717
- this._err(ERR.nestedComment);
2718
- }
2719
- this.state = State.COMMENT_END;
2720
- this._stateCommentEnd(cp);
2721
- }
2722
- // Comment end dash state
2723
- //------------------------------------------------------------------
2724
- _stateCommentEndDash(cp) {
2725
- const token = this.currentToken;
2726
- switch (cp) {
2727
- case CODE_POINTS.HYPHEN_MINUS: {
2728
- this.state = State.COMMENT_END;
2729
- break;
2730
- }
2731
- case CODE_POINTS.EOF: {
2732
- this._err(ERR.eofInComment);
2733
- this.emitCurrentComment(token);
2734
- this._emitEOFToken();
2735
- break;
2736
- }
2737
- default: {
2738
- token.data += "-";
2739
- this.state = State.COMMENT;
2740
- this._stateComment(cp);
2741
- }
2742
- }
2743
- }
2744
- // Comment end state
2745
- //------------------------------------------------------------------
2746
- _stateCommentEnd(cp) {
2747
- const token = this.currentToken;
2748
- switch (cp) {
2749
- case CODE_POINTS.GREATER_THAN_SIGN: {
2750
- this.state = State.DATA;
2751
- this.emitCurrentComment(token);
2752
- break;
2753
- }
2754
- case CODE_POINTS.EXCLAMATION_MARK: {
2755
- this.state = State.COMMENT_END_BANG;
2756
- break;
2757
- }
2758
- case CODE_POINTS.HYPHEN_MINUS: {
2759
- token.data += "-";
2760
- break;
2761
- }
2762
- case CODE_POINTS.EOF: {
2763
- this._err(ERR.eofInComment);
2764
- this.emitCurrentComment(token);
2765
- this._emitEOFToken();
2766
- break;
2767
- }
2768
- default: {
2769
- token.data += "--";
2770
- this.state = State.COMMENT;
2771
- this._stateComment(cp);
2772
- }
2773
- }
2774
- }
2775
- // Comment end bang state
2776
- //------------------------------------------------------------------
2777
- _stateCommentEndBang(cp) {
2778
- const token = this.currentToken;
2779
- switch (cp) {
2780
- case CODE_POINTS.HYPHEN_MINUS: {
2781
- token.data += "--!";
2782
- this.state = State.COMMENT_END_DASH;
2783
- break;
2784
- }
2785
- case CODE_POINTS.GREATER_THAN_SIGN: {
2786
- this._err(ERR.incorrectlyClosedComment);
2787
- this.state = State.DATA;
2788
- this.emitCurrentComment(token);
2789
- break;
2790
- }
2791
- case CODE_POINTS.EOF: {
2792
- this._err(ERR.eofInComment);
2793
- this.emitCurrentComment(token);
2794
- this._emitEOFToken();
2795
- break;
2796
- }
2797
- default: {
2798
- token.data += "--!";
2799
- this.state = State.COMMENT;
2800
- this._stateComment(cp);
2801
- }
2802
- }
2803
- }
2804
- // DOCTYPE state
2805
- //------------------------------------------------------------------
2806
- _stateDoctype(cp) {
2807
- switch (cp) {
2808
- case CODE_POINTS.SPACE:
2809
- case CODE_POINTS.LINE_FEED:
2810
- case CODE_POINTS.TABULATION:
2811
- case CODE_POINTS.FORM_FEED: {
2812
- this.state = State.BEFORE_DOCTYPE_NAME;
2813
- break;
2814
- }
2815
- case CODE_POINTS.GREATER_THAN_SIGN: {
2816
- this.state = State.BEFORE_DOCTYPE_NAME;
2817
- this._stateBeforeDoctypeName(cp);
2818
- break;
2819
- }
2820
- case CODE_POINTS.EOF: {
2821
- this._err(ERR.eofInDoctype);
2822
- this._createDoctypeToken(null);
2823
- const token = this.currentToken;
2824
- token.forceQuirks = true;
2825
- this.emitCurrentDoctype(token);
2826
- this._emitEOFToken();
2827
- break;
2828
- }
2829
- default: {
2830
- this._err(ERR.missingWhitespaceBeforeDoctypeName);
2831
- this.state = State.BEFORE_DOCTYPE_NAME;
2832
- this._stateBeforeDoctypeName(cp);
2833
- }
2834
- }
2835
- }
2836
- // Before DOCTYPE name state
2837
- //------------------------------------------------------------------
2838
- _stateBeforeDoctypeName(cp) {
2839
- if (isAsciiUpper(cp)) {
2840
- this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));
2841
- this.state = State.DOCTYPE_NAME;
2842
- } else
2843
- switch (cp) {
2844
- case CODE_POINTS.SPACE:
2845
- case CODE_POINTS.LINE_FEED:
2846
- case CODE_POINTS.TABULATION:
2847
- case CODE_POINTS.FORM_FEED: {
2848
- break;
2849
- }
2850
- case CODE_POINTS.NULL: {
2851
- this._err(ERR.unexpectedNullCharacter);
2852
- this._createDoctypeToken(REPLACEMENT_CHARACTER);
2853
- this.state = State.DOCTYPE_NAME;
2854
- break;
2855
- }
2856
- case CODE_POINTS.GREATER_THAN_SIGN: {
2857
- this._err(ERR.missingDoctypeName);
2858
- this._createDoctypeToken(null);
2859
- const token = this.currentToken;
2860
- token.forceQuirks = true;
2861
- this.emitCurrentDoctype(token);
2862
- this.state = State.DATA;
2863
- break;
2864
- }
2865
- case CODE_POINTS.EOF: {
2866
- this._err(ERR.eofInDoctype);
2867
- this._createDoctypeToken(null);
2868
- const token = this.currentToken;
2869
- token.forceQuirks = true;
2870
- this.emitCurrentDoctype(token);
2871
- this._emitEOFToken();
2872
- break;
2873
- }
2874
- default: {
2875
- this._createDoctypeToken(String.fromCodePoint(cp));
2876
- this.state = State.DOCTYPE_NAME;
2877
- }
2878
- }
2879
- }
2880
- // DOCTYPE name state
2881
- //------------------------------------------------------------------
2882
- _stateDoctypeName(cp) {
2883
- const token = this.currentToken;
2884
- switch (cp) {
2885
- case CODE_POINTS.SPACE:
2886
- case CODE_POINTS.LINE_FEED:
2887
- case CODE_POINTS.TABULATION:
2888
- case CODE_POINTS.FORM_FEED: {
2889
- this.state = State.AFTER_DOCTYPE_NAME;
2890
- break;
2891
- }
2892
- case CODE_POINTS.GREATER_THAN_SIGN: {
2893
- this.state = State.DATA;
2894
- this.emitCurrentDoctype(token);
2895
- break;
2896
- }
2897
- case CODE_POINTS.NULL: {
2898
- this._err(ERR.unexpectedNullCharacter);
2899
- token.name += REPLACEMENT_CHARACTER;
2900
- break;
2901
- }
2902
- case CODE_POINTS.EOF: {
2903
- this._err(ERR.eofInDoctype);
2904
- token.forceQuirks = true;
2905
- this.emitCurrentDoctype(token);
2906
- this._emitEOFToken();
2907
- break;
2908
- }
2909
- default: {
2910
- token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);
2911
- }
2912
- }
2913
- }
2914
- // After DOCTYPE name state
2915
- //------------------------------------------------------------------
2916
- _stateAfterDoctypeName(cp) {
2917
- const token = this.currentToken;
2918
- switch (cp) {
2919
- case CODE_POINTS.SPACE:
2920
- case CODE_POINTS.LINE_FEED:
2921
- case CODE_POINTS.TABULATION:
2922
- case CODE_POINTS.FORM_FEED: {
2923
- break;
2924
- }
2925
- case CODE_POINTS.GREATER_THAN_SIGN: {
2926
- this.state = State.DATA;
2927
- this.emitCurrentDoctype(token);
2928
- break;
2929
- }
2930
- case CODE_POINTS.EOF: {
2931
- this._err(ERR.eofInDoctype);
2932
- token.forceQuirks = true;
2933
- this.emitCurrentDoctype(token);
2934
- this._emitEOFToken();
2935
- break;
2936
- }
2937
- default: {
2938
- if (this._consumeSequenceIfMatch(SEQUENCES.PUBLIC, false)) {
2939
- this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;
2940
- } else if (this._consumeSequenceIfMatch(SEQUENCES.SYSTEM, false)) {
2941
- this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;
2942
- } else if (!this._ensureHibernation()) {
2943
- this._err(ERR.invalidCharacterSequenceAfterDoctypeName);
2944
- token.forceQuirks = true;
2945
- this.state = State.BOGUS_DOCTYPE;
2946
- this._stateBogusDoctype(cp);
2947
- }
2948
- }
2949
- }
2950
- }
2951
- // After DOCTYPE public keyword state
2952
- //------------------------------------------------------------------
2953
- _stateAfterDoctypePublicKeyword(cp) {
2954
- const token = this.currentToken;
2955
- switch (cp) {
2956
- case CODE_POINTS.SPACE:
2957
- case CODE_POINTS.LINE_FEED:
2958
- case CODE_POINTS.TABULATION:
2959
- case CODE_POINTS.FORM_FEED: {
2960
- this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;
2961
- break;
2962
- }
2963
- case CODE_POINTS.QUOTATION_MARK: {
2964
- this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);
2965
- token.publicId = "";
2966
- this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;
2967
- break;
2968
- }
2969
- case CODE_POINTS.APOSTROPHE: {
2970
- this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);
2971
- token.publicId = "";
2972
- this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;
2973
- break;
2974
- }
2975
- case CODE_POINTS.GREATER_THAN_SIGN: {
2976
- this._err(ERR.missingDoctypePublicIdentifier);
2977
- token.forceQuirks = true;
2978
- this.state = State.DATA;
2979
- this.emitCurrentDoctype(token);
2980
- break;
2981
- }
2982
- case CODE_POINTS.EOF: {
2983
- this._err(ERR.eofInDoctype);
2984
- token.forceQuirks = true;
2985
- this.emitCurrentDoctype(token);
2986
- this._emitEOFToken();
2987
- break;
2988
- }
2989
- default: {
2990
- this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);
2991
- token.forceQuirks = true;
2992
- this.state = State.BOGUS_DOCTYPE;
2993
- this._stateBogusDoctype(cp);
2994
- }
2995
- }
2996
- }
2997
- // Before DOCTYPE public identifier state
2998
- //------------------------------------------------------------------
2999
- _stateBeforeDoctypePublicIdentifier(cp) {
3000
- const token = this.currentToken;
3001
- switch (cp) {
3002
- case CODE_POINTS.SPACE:
3003
- case CODE_POINTS.LINE_FEED:
3004
- case CODE_POINTS.TABULATION:
3005
- case CODE_POINTS.FORM_FEED: {
3006
- break;
3007
- }
3008
- case CODE_POINTS.QUOTATION_MARK: {
3009
- token.publicId = "";
3010
- this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;
3011
- break;
3012
- }
3013
- case CODE_POINTS.APOSTROPHE: {
3014
- token.publicId = "";
3015
- this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;
3016
- break;
3017
- }
3018
- case CODE_POINTS.GREATER_THAN_SIGN: {
3019
- this._err(ERR.missingDoctypePublicIdentifier);
3020
- token.forceQuirks = true;
3021
- this.state = State.DATA;
3022
- this.emitCurrentDoctype(token);
3023
- break;
3024
- }
3025
- case CODE_POINTS.EOF: {
3026
- this._err(ERR.eofInDoctype);
3027
- token.forceQuirks = true;
3028
- this.emitCurrentDoctype(token);
3029
- this._emitEOFToken();
3030
- break;
3031
- }
3032
- default: {
3033
- this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);
3034
- token.forceQuirks = true;
3035
- this.state = State.BOGUS_DOCTYPE;
3036
- this._stateBogusDoctype(cp);
3037
- }
3038
- }
3039
- }
3040
- // DOCTYPE public identifier (double-quoted) state
3041
- //------------------------------------------------------------------
3042
- _stateDoctypePublicIdentifierDoubleQuoted(cp) {
3043
- const token = this.currentToken;
3044
- switch (cp) {
3045
- case CODE_POINTS.QUOTATION_MARK: {
3046
- this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;
3047
- break;
3048
- }
3049
- case CODE_POINTS.NULL: {
3050
- this._err(ERR.unexpectedNullCharacter);
3051
- token.publicId += REPLACEMENT_CHARACTER;
3052
- break;
3053
- }
3054
- case CODE_POINTS.GREATER_THAN_SIGN: {
3055
- this._err(ERR.abruptDoctypePublicIdentifier);
3056
- token.forceQuirks = true;
3057
- this.emitCurrentDoctype(token);
3058
- this.state = State.DATA;
3059
- break;
3060
- }
3061
- case CODE_POINTS.EOF: {
3062
- this._err(ERR.eofInDoctype);
3063
- token.forceQuirks = true;
3064
- this.emitCurrentDoctype(token);
3065
- this._emitEOFToken();
3066
- break;
3067
- }
3068
- default: {
3069
- token.publicId += String.fromCodePoint(cp);
3070
- }
3071
- }
3072
- }
3073
- // DOCTYPE public identifier (single-quoted) state
3074
- //------------------------------------------------------------------
3075
- _stateDoctypePublicIdentifierSingleQuoted(cp) {
3076
- const token = this.currentToken;
3077
- switch (cp) {
3078
- case CODE_POINTS.APOSTROPHE: {
3079
- this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;
3080
- break;
3081
- }
3082
- case CODE_POINTS.NULL: {
3083
- this._err(ERR.unexpectedNullCharacter);
3084
- token.publicId += REPLACEMENT_CHARACTER;
3085
- break;
3086
- }
3087
- case CODE_POINTS.GREATER_THAN_SIGN: {
3088
- this._err(ERR.abruptDoctypePublicIdentifier);
3089
- token.forceQuirks = true;
3090
- this.emitCurrentDoctype(token);
3091
- this.state = State.DATA;
3092
- break;
3093
- }
3094
- case CODE_POINTS.EOF: {
3095
- this._err(ERR.eofInDoctype);
3096
- token.forceQuirks = true;
3097
- this.emitCurrentDoctype(token);
3098
- this._emitEOFToken();
3099
- break;
3100
- }
3101
- default: {
3102
- token.publicId += String.fromCodePoint(cp);
3103
- }
3104
- }
3105
- }
3106
- // After DOCTYPE public identifier state
3107
- //------------------------------------------------------------------
3108
- _stateAfterDoctypePublicIdentifier(cp) {
3109
- const token = this.currentToken;
3110
- switch (cp) {
3111
- case CODE_POINTS.SPACE:
3112
- case CODE_POINTS.LINE_FEED:
3113
- case CODE_POINTS.TABULATION:
3114
- case CODE_POINTS.FORM_FEED: {
3115
- this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;
3116
- break;
3117
- }
3118
- case CODE_POINTS.GREATER_THAN_SIGN: {
3119
- this.state = State.DATA;
3120
- this.emitCurrentDoctype(token);
3121
- break;
3122
- }
3123
- case CODE_POINTS.QUOTATION_MARK: {
3124
- this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);
3125
- token.systemId = "";
3126
- this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;
3127
- break;
3128
- }
3129
- case CODE_POINTS.APOSTROPHE: {
3130
- this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);
3131
- token.systemId = "";
3132
- this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;
3133
- break;
3134
- }
3135
- case CODE_POINTS.EOF: {
3136
- this._err(ERR.eofInDoctype);
3137
- token.forceQuirks = true;
3138
- this.emitCurrentDoctype(token);
3139
- this._emitEOFToken();
3140
- break;
3141
- }
3142
- default: {
3143
- this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);
3144
- token.forceQuirks = true;
3145
- this.state = State.BOGUS_DOCTYPE;
3146
- this._stateBogusDoctype(cp);
3147
- }
3148
- }
3149
- }
3150
- // Between DOCTYPE public and system identifiers state
3151
- //------------------------------------------------------------------
3152
- _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {
3153
- const token = this.currentToken;
3154
- switch (cp) {
3155
- case CODE_POINTS.SPACE:
3156
- case CODE_POINTS.LINE_FEED:
3157
- case CODE_POINTS.TABULATION:
3158
- case CODE_POINTS.FORM_FEED: {
3159
- break;
3160
- }
3161
- case CODE_POINTS.GREATER_THAN_SIGN: {
3162
- this.emitCurrentDoctype(token);
3163
- this.state = State.DATA;
3164
- break;
3165
- }
3166
- case CODE_POINTS.QUOTATION_MARK: {
3167
- token.systemId = "";
3168
- this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;
3169
- break;
3170
- }
3171
- case CODE_POINTS.APOSTROPHE: {
3172
- token.systemId = "";
3173
- this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;
3174
- break;
3175
- }
3176
- case CODE_POINTS.EOF: {
3177
- this._err(ERR.eofInDoctype);
3178
- token.forceQuirks = true;
3179
- this.emitCurrentDoctype(token);
3180
- this._emitEOFToken();
3181
- break;
3182
- }
3183
- default: {
3184
- this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);
3185
- token.forceQuirks = true;
3186
- this.state = State.BOGUS_DOCTYPE;
3187
- this._stateBogusDoctype(cp);
3188
- }
3189
- }
3190
- }
3191
- // After DOCTYPE system keyword state
3192
- //------------------------------------------------------------------
3193
- _stateAfterDoctypeSystemKeyword(cp) {
3194
- const token = this.currentToken;
3195
- switch (cp) {
3196
- case CODE_POINTS.SPACE:
3197
- case CODE_POINTS.LINE_FEED:
3198
- case CODE_POINTS.TABULATION:
3199
- case CODE_POINTS.FORM_FEED: {
3200
- this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;
3201
- break;
3202
- }
3203
- case CODE_POINTS.QUOTATION_MARK: {
3204
- this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);
3205
- token.systemId = "";
3206
- this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;
3207
- break;
3208
- }
3209
- case CODE_POINTS.APOSTROPHE: {
3210
- this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);
3211
- token.systemId = "";
3212
- this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;
3213
- break;
3214
- }
3215
- case CODE_POINTS.GREATER_THAN_SIGN: {
3216
- this._err(ERR.missingDoctypeSystemIdentifier);
3217
- token.forceQuirks = true;
3218
- this.state = State.DATA;
3219
- this.emitCurrentDoctype(token);
3220
- break;
3221
- }
3222
- case CODE_POINTS.EOF: {
3223
- this._err(ERR.eofInDoctype);
3224
- token.forceQuirks = true;
3225
- this.emitCurrentDoctype(token);
3226
- this._emitEOFToken();
3227
- break;
3228
- }
3229
- default: {
3230
- this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);
3231
- token.forceQuirks = true;
3232
- this.state = State.BOGUS_DOCTYPE;
3233
- this._stateBogusDoctype(cp);
3234
- }
3235
- }
3236
- }
3237
- // Before DOCTYPE system identifier state
3238
- //------------------------------------------------------------------
3239
- _stateBeforeDoctypeSystemIdentifier(cp) {
3240
- const token = this.currentToken;
3241
- switch (cp) {
3242
- case CODE_POINTS.SPACE:
3243
- case CODE_POINTS.LINE_FEED:
3244
- case CODE_POINTS.TABULATION:
3245
- case CODE_POINTS.FORM_FEED: {
3246
- break;
3247
- }
3248
- case CODE_POINTS.QUOTATION_MARK: {
3249
- token.systemId = "";
3250
- this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;
3251
- break;
3252
- }
3253
- case CODE_POINTS.APOSTROPHE: {
3254
- token.systemId = "";
3255
- this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;
3256
- break;
3257
- }
3258
- case CODE_POINTS.GREATER_THAN_SIGN: {
3259
- this._err(ERR.missingDoctypeSystemIdentifier);
3260
- token.forceQuirks = true;
3261
- this.state = State.DATA;
3262
- this.emitCurrentDoctype(token);
3263
- break;
3264
- }
3265
- case CODE_POINTS.EOF: {
3266
- this._err(ERR.eofInDoctype);
3267
- token.forceQuirks = true;
3268
- this.emitCurrentDoctype(token);
3269
- this._emitEOFToken();
3270
- break;
3271
- }
3272
- default: {
3273
- this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);
3274
- token.forceQuirks = true;
3275
- this.state = State.BOGUS_DOCTYPE;
3276
- this._stateBogusDoctype(cp);
3277
- }
3278
- }
3279
- }
3280
- // DOCTYPE system identifier (double-quoted) state
3281
- //------------------------------------------------------------------
3282
- _stateDoctypeSystemIdentifierDoubleQuoted(cp) {
3283
- const token = this.currentToken;
3284
- switch (cp) {
3285
- case CODE_POINTS.QUOTATION_MARK: {
3286
- this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;
3287
- break;
3288
- }
3289
- case CODE_POINTS.NULL: {
3290
- this._err(ERR.unexpectedNullCharacter);
3291
- token.systemId += REPLACEMENT_CHARACTER;
3292
- break;
3293
- }
3294
- case CODE_POINTS.GREATER_THAN_SIGN: {
3295
- this._err(ERR.abruptDoctypeSystemIdentifier);
3296
- token.forceQuirks = true;
3297
- this.emitCurrentDoctype(token);
3298
- this.state = State.DATA;
3299
- break;
3300
- }
3301
- case CODE_POINTS.EOF: {
3302
- this._err(ERR.eofInDoctype);
3303
- token.forceQuirks = true;
3304
- this.emitCurrentDoctype(token);
3305
- this._emitEOFToken();
3306
- break;
3307
- }
3308
- default: {
3309
- token.systemId += String.fromCodePoint(cp);
3310
- }
3311
- }
3312
- }
3313
- // DOCTYPE system identifier (single-quoted) state
3314
- //------------------------------------------------------------------
3315
- _stateDoctypeSystemIdentifierSingleQuoted(cp) {
3316
- const token = this.currentToken;
3317
- switch (cp) {
3318
- case CODE_POINTS.APOSTROPHE: {
3319
- this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;
3320
- break;
3321
- }
3322
- case CODE_POINTS.NULL: {
3323
- this._err(ERR.unexpectedNullCharacter);
3324
- token.systemId += REPLACEMENT_CHARACTER;
3325
- break;
3326
- }
3327
- case CODE_POINTS.GREATER_THAN_SIGN: {
3328
- this._err(ERR.abruptDoctypeSystemIdentifier);
3329
- token.forceQuirks = true;
3330
- this.emitCurrentDoctype(token);
3331
- this.state = State.DATA;
3332
- break;
3333
- }
3334
- case CODE_POINTS.EOF: {
3335
- this._err(ERR.eofInDoctype);
3336
- token.forceQuirks = true;
3337
- this.emitCurrentDoctype(token);
3338
- this._emitEOFToken();
3339
- break;
3340
- }
3341
- default: {
3342
- token.systemId += String.fromCodePoint(cp);
3343
- }
3344
- }
3345
- }
3346
- // After DOCTYPE system identifier state
3347
- //------------------------------------------------------------------
3348
- _stateAfterDoctypeSystemIdentifier(cp) {
3349
- const token = this.currentToken;
3350
- switch (cp) {
3351
- case CODE_POINTS.SPACE:
3352
- case CODE_POINTS.LINE_FEED:
3353
- case CODE_POINTS.TABULATION:
3354
- case CODE_POINTS.FORM_FEED: {
3355
- break;
3356
- }
3357
- case CODE_POINTS.GREATER_THAN_SIGN: {
3358
- this.emitCurrentDoctype(token);
3359
- this.state = State.DATA;
3360
- break;
3361
- }
3362
- case CODE_POINTS.EOF: {
3363
- this._err(ERR.eofInDoctype);
3364
- token.forceQuirks = true;
3365
- this.emitCurrentDoctype(token);
3366
- this._emitEOFToken();
3367
- break;
3368
- }
3369
- default: {
3370
- this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);
3371
- this.state = State.BOGUS_DOCTYPE;
3372
- this._stateBogusDoctype(cp);
3373
- }
3374
- }
3375
- }
3376
- // Bogus DOCTYPE state
3377
- //------------------------------------------------------------------
3378
- _stateBogusDoctype(cp) {
3379
- const token = this.currentToken;
3380
- switch (cp) {
3381
- case CODE_POINTS.GREATER_THAN_SIGN: {
3382
- this.emitCurrentDoctype(token);
3383
- this.state = State.DATA;
3384
- break;
3385
- }
3386
- case CODE_POINTS.NULL: {
3387
- this._err(ERR.unexpectedNullCharacter);
3388
- break;
3389
- }
3390
- case CODE_POINTS.EOF: {
3391
- this.emitCurrentDoctype(token);
3392
- this._emitEOFToken();
3393
- break;
3394
- }
3395
- default:
3396
- }
3397
- }
3398
- // CDATA section state
3399
- //------------------------------------------------------------------
3400
- _stateCdataSection(cp) {
3401
- switch (cp) {
3402
- case CODE_POINTS.RIGHT_SQUARE_BRACKET: {
3403
- this.state = State.CDATA_SECTION_BRACKET;
3404
- break;
3405
- }
3406
- case CODE_POINTS.EOF: {
3407
- this._err(ERR.eofInCdata);
3408
- this._emitEOFToken();
3409
- break;
3410
- }
3411
- default: {
3412
- this._emitCodePoint(cp);
3413
- }
3414
- }
3415
- }
3416
- // CDATA section bracket state
3417
- //------------------------------------------------------------------
3418
- _stateCdataSectionBracket(cp) {
3419
- if (cp === CODE_POINTS.RIGHT_SQUARE_BRACKET) {
3420
- this.state = State.CDATA_SECTION_END;
3421
- } else {
3422
- this._emitChars("]");
3423
- this.state = State.CDATA_SECTION;
3424
- this._stateCdataSection(cp);
3425
- }
3426
- }
3427
- // CDATA section end state
3428
- //------------------------------------------------------------------
3429
- _stateCdataSectionEnd(cp) {
3430
- switch (cp) {
3431
- case CODE_POINTS.GREATER_THAN_SIGN: {
3432
- this.state = State.DATA;
3433
- break;
3434
- }
3435
- case CODE_POINTS.RIGHT_SQUARE_BRACKET: {
3436
- this._emitChars("]");
3437
- break;
3438
- }
3439
- default: {
3440
- this._emitChars("]]");
3441
- this.state = State.CDATA_SECTION;
3442
- this._stateCdataSection(cp);
3443
- }
3444
- }
3445
- }
3446
- // Character reference state
3447
- //------------------------------------------------------------------
3448
- _stateCharacterReference() {
3449
- let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos);
3450
- if (length < 0) {
3451
- if (this.preprocessor.lastChunkWritten) {
3452
- length = this.entityDecoder.end();
3453
- } else {
3454
- this.active = false;
3455
- this.preprocessor.pos = this.preprocessor.html.length - 1;
3456
- this.consumedAfterSnapshot = 0;
3457
- this.preprocessor.endOfChunkHit = true;
3458
- return;
3459
- }
3460
- }
3461
- if (length === 0) {
3462
- this.preprocessor.pos = this.entityStartPos;
3463
- this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);
3464
- this.state = !this._isCharacterReferenceInAttribute() && isAsciiAlphaNumeric(this.preprocessor.peek(1)) ? State.AMBIGUOUS_AMPERSAND : this.returnState;
3465
- } else {
3466
- this.state = this.returnState;
3467
- }
3468
- }
3469
- // Ambiguos ampersand state
3470
- //------------------------------------------------------------------
3471
- _stateAmbiguousAmpersand(cp) {
3472
- if (isAsciiAlphaNumeric(cp)) {
3473
- this._flushCodePointConsumedAsCharacterReference(cp);
3474
- } else {
3475
- if (cp === CODE_POINTS.SEMICOLON) {
3476
- this._err(ERR.unknownNamedCharacterReference);
3477
- }
3478
- this.state = this.returnState;
3479
- this._callState(cp);
3480
- }
3481
- }
3482
- };
3483
-
3484
- export {
3485
- REPLACEMENT_CHARACTER,
3486
- CODE_POINTS,
3487
- ERR,
3488
- TokenType,
3489
- getTokenAttr,
3490
- NS,
3491
- ATTRS,
3492
- DOCUMENT_MODE,
3493
- TAG_NAMES,
3494
- TAG_ID,
3495
- getTagID,
3496
- SPECIAL_ELEMENTS,
3497
- NUMBERED_HEADERS,
3498
- hasUnescapedText,
3499
- TokenizerMode,
3500
- Tokenizer
3501
- };