From 9b14be2291fe4678d91d542e25fe9dcd8a149ef9 Mon Sep 17 00:00:00 2001 From: Trevor Burnham Date: Fri, 6 Mar 2026 12:13:50 -0500 Subject: [PATCH] feat: export InsertionMode enum from parse5 Closes #531 --- packages/parse5/lib/index.ts | 2 +- packages/parse5/lib/parser/index.test.ts | 11 +++++- packages/parse5/lib/parser/index.ts | 48 ++++++++++++------------ 3 files changed, 35 insertions(+), 26 deletions(-) diff --git a/packages/parse5/lib/index.ts b/packages/parse5/lib/index.ts index 184296e20..e22c676dc 100644 --- a/packages/parse5/lib/index.ts +++ b/packages/parse5/lib/index.ts @@ -20,7 +20,7 @@ export namespace DefaultTreeAdapterTypes { export type DefaultTreeAdapterMap = DefaultTreeAdapter.DefaultTreeAdapterMap; } export type { TreeAdapter, TreeAdapterTypeMap } from './tree-adapters/interface.js'; -export { type ParserOptions, /** @internal */ Parser } from './parser/index.js'; +export { type ParserOptions, /** @internal */ Parser, InsertionMode } from './parser/index.js'; export { serialize, serializeOuter, type SerializerOptions } from './serializer/index.js'; export { ERR as ErrorCodes, type ParserError, type ParserErrorHandler } from './common/error-codes.js'; diff --git a/packages/parse5/lib/parser/index.test.ts b/packages/parse5/lib/parser/index.test.ts index f45a93cf9..4577dabf9 100644 --- a/packages/parse5/lib/parser/index.test.ts +++ b/packages/parse5/lib/parser/index.test.ts @@ -1,5 +1,5 @@ import { it, assert, describe, beforeEach, afterEach, vi, expect } from 'vitest'; -import { parseFragment, parse } from 'parse5'; +import { parseFragment, parse, InsertionMode } from 'parse5'; import type { Element, TextNode } from '../tree-adapters/default.js'; import { generateParsingTests } from 'parse5-test-utils/utils/generate-parsing-tests.js'; import { treeAdapters } from 'parse5-test-utils/utils/common.js'; @@ -152,3 +152,12 @@ describe('parser', () => { }); }); }); + +describe('InsertionMode', () => { + it('should be exported and have stable numeric values', () => { + assert.strictEqual(InsertionMode.INITIAL, 0); + assert.strictEqual(InsertionMode.BEFORE_HTML, 1); + assert.strictEqual(InsertionMode.IN_BODY, 6); + assert.strictEqual(InsertionMode.AFTER_AFTER_FRAMESET, 22); + }); +}); diff --git a/packages/parse5/lib/parser/index.ts b/packages/parse5/lib/parser/index.ts index 9779f68f3..32367bb46 100644 --- a/packages/parse5/lib/parser/index.ts +++ b/packages/parse5/lib/parser/index.ts @@ -38,30 +38,30 @@ const AA_OUTER_LOOP_ITER = 8; const AA_INNER_LOOP_ITER = 3; //Insertion modes -enum InsertionMode { - INITIAL, - BEFORE_HTML, - BEFORE_HEAD, - IN_HEAD, - IN_HEAD_NO_SCRIPT, - AFTER_HEAD, - IN_BODY, - TEXT, - IN_TABLE, - IN_TABLE_TEXT, - IN_CAPTION, - IN_COLUMN_GROUP, - IN_TABLE_BODY, - IN_ROW, - IN_CELL, - IN_SELECT, - IN_SELECT_IN_TABLE, - IN_TEMPLATE, - AFTER_BODY, - IN_FRAMESET, - AFTER_FRAMESET, - AFTER_AFTER_BODY, - AFTER_AFTER_FRAMESET, +export enum InsertionMode { + INITIAL = 0, + BEFORE_HTML = 1, + BEFORE_HEAD = 2, + IN_HEAD = 3, + IN_HEAD_NO_SCRIPT = 4, + AFTER_HEAD = 5, + IN_BODY = 6, + TEXT = 7, + IN_TABLE = 8, + IN_TABLE_TEXT = 9, + IN_CAPTION = 10, + IN_COLUMN_GROUP = 11, + IN_TABLE_BODY = 12, + IN_ROW = 13, + IN_CELL = 14, + IN_SELECT = 15, + IN_SELECT_IN_TABLE = 16, + IN_TEMPLATE = 17, + AFTER_BODY = 18, + IN_FRAMESET = 19, + AFTER_FRAMESET = 20, + AFTER_AFTER_BODY = 21, + AFTER_AFTER_FRAMESET = 22, } const BASE_LOC = {