diff --git a/src/column-tracking.test.ts b/src/column-tracking.test.ts index be56fcc..8049cba 100644 --- a/src/column-tracking.test.ts +++ b/src/column-tracking.test.ts @@ -1,6 +1,6 @@ import { describe, test, expect } from 'vitest' import { parse } from './parse' -import { NODE_STYLE_RULE, NODE_DECLARATION, NODE_AT_RULE, NODE_SELECTOR_LIST } from './parse' +import { NODE_STYLE_RULE, NODE_DECLARATION, NODE_AT_RULE, NODE_SELECTOR_LIST } from './constants' describe('Column Tracking', () => { test('should track column for single-line CSS', () => { diff --git a/src/constants.ts b/src/constants.ts new file mode 100644 index 0000000..a6e8559 --- /dev/null +++ b/src/constants.ts @@ -0,0 +1,55 @@ +// Central location for all constants - re-exported from arena +// This breaks the barrel file chain and improves tree-shaking + +export { + NODE_STYLESHEET, + NODE_STYLE_RULE, + NODE_AT_RULE, + NODE_DECLARATION, + NODE_SELECTOR, + NODE_COMMENT, + NODE_BLOCK, + NODE_VALUE_KEYWORD, + NODE_VALUE_NUMBER, + NODE_VALUE_DIMENSION, + NODE_VALUE_STRING, + NODE_VALUE_COLOR, + NODE_VALUE_FUNCTION, + NODE_VALUE_OPERATOR, + NODE_VALUE_PARENTHESIS, + NODE_SELECTOR_LIST, + NODE_SELECTOR_TYPE, + NODE_SELECTOR_CLASS, + NODE_SELECTOR_ID, + NODE_SELECTOR_ATTRIBUTE, + NODE_SELECTOR_PSEUDO_CLASS, + NODE_SELECTOR_PSEUDO_ELEMENT, + NODE_SELECTOR_COMBINATOR, + NODE_SELECTOR_UNIVERSAL, + NODE_SELECTOR_NESTING, + NODE_SELECTOR_NTH, + NODE_SELECTOR_NTH_OF, + NODE_SELECTOR_LANG, + NODE_PRELUDE_MEDIA_QUERY, + NODE_PRELUDE_MEDIA_FEATURE, + NODE_PRELUDE_MEDIA_TYPE, + NODE_PRELUDE_CONTAINER_QUERY, + NODE_PRELUDE_SUPPORTS_QUERY, + NODE_PRELUDE_LAYER_NAME, + NODE_PRELUDE_IDENTIFIER, + NODE_PRELUDE_OPERATOR, + NODE_PRELUDE_IMPORT_URL, + NODE_PRELUDE_IMPORT_LAYER, + NODE_PRELUDE_IMPORT_SUPPORTS, + FLAG_IMPORTANT, + ATTR_OPERATOR_NONE, + ATTR_OPERATOR_EQUAL, + ATTR_OPERATOR_TILDE_EQUAL, + ATTR_OPERATOR_PIPE_EQUAL, + ATTR_OPERATOR_CARET_EQUAL, + ATTR_OPERATOR_DOLLAR_EQUAL, + ATTR_OPERATOR_STAR_EQUAL, + ATTR_FLAG_NONE, + ATTR_FLAG_CASE_INSENSITIVE, + ATTR_FLAG_CASE_SENSITIVE, +} from './arena' diff --git a/src/index.ts b/src/index.ts index b71ae1d..a29d72a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -28,7 +28,8 @@ export { ATTR_FLAG_CASE_SENSITIVE, } from './arena' -// Constants +// Constants - imported from dedicated constants file +// This improves tree-shaking by avoiding the parse module if only constants are needed export { NODE_STYLE_RULE, NODE_AT_RULE, @@ -69,7 +70,7 @@ export { NODE_PRELUDE_IMPORT_LAYER, NODE_PRELUDE_IMPORT_SUPPORTS, FLAG_IMPORTANT, -} from './parse' +} from './constants' export { TOKEN_IDENT, TOKEN_FUNCTION, diff --git a/src/parse.test.ts b/src/parse.test.ts index aa3fb15..44cbbbf 100644 --- a/src/parse.test.ts +++ b/src/parse.test.ts @@ -1,6 +1,6 @@ import { describe, test, expect } from 'vitest' +import { Parser, parse } from './parse' import { - Parser, NODE_STYLESHEET, NODE_STYLE_RULE, NODE_AT_RULE, @@ -12,8 +12,7 @@ import { NODE_SELECTOR_TYPE, NODE_SELECTOR_ATTRIBUTE, NODE_SELECTOR_NESTING, - parse, -} from './parse' +} from './constants' import { ATTR_OPERATOR_PIPE_EQUAL } from './arena' describe('Parser', () => { diff --git a/src/parse.ts b/src/parse.ts index 6756972..bc2a8c6 100644 --- a/src/parse.ts +++ b/src/parse.ts @@ -574,47 +574,3 @@ export function parse(source: string, options?: ParserOptions): CSSNode { const parser = new Parser(source, options) return parser.parse() } - -// Re-export node type constants so consumers don't need to import from arena -export { - NODE_STYLESHEET, - NODE_STYLE_RULE, - NODE_AT_RULE, - NODE_DECLARATION, - NODE_SELECTOR, - NODE_COMMENT, - NODE_BLOCK, - NODE_VALUE_KEYWORD, - NODE_VALUE_NUMBER, - NODE_VALUE_DIMENSION, - NODE_VALUE_STRING, - NODE_VALUE_COLOR, - NODE_VALUE_FUNCTION, - NODE_VALUE_OPERATOR, - NODE_VALUE_PARENTHESIS, - NODE_SELECTOR_LIST, - NODE_SELECTOR_TYPE, - NODE_SELECTOR_CLASS, - NODE_SELECTOR_ID, - NODE_SELECTOR_ATTRIBUTE, - NODE_SELECTOR_PSEUDO_CLASS, - NODE_SELECTOR_PSEUDO_ELEMENT, - NODE_SELECTOR_COMBINATOR, - NODE_SELECTOR_UNIVERSAL, - NODE_SELECTOR_NESTING, - NODE_SELECTOR_NTH, - NODE_SELECTOR_NTH_OF, - NODE_SELECTOR_LANG, - NODE_PRELUDE_MEDIA_QUERY, - NODE_PRELUDE_MEDIA_FEATURE, - NODE_PRELUDE_MEDIA_TYPE, - NODE_PRELUDE_CONTAINER_QUERY, - NODE_PRELUDE_SUPPORTS_QUERY, - NODE_PRELUDE_LAYER_NAME, - NODE_PRELUDE_IDENTIFIER, - NODE_PRELUDE_OPERATOR, - NODE_PRELUDE_IMPORT_URL, - NODE_PRELUDE_IMPORT_LAYER, - NODE_PRELUDE_IMPORT_SUPPORTS, - FLAG_IMPORTANT, -} from './arena' diff --git a/src/walk.test.ts b/src/walk.test.ts index cc2fb5f..15492b9 100644 --- a/src/walk.test.ts +++ b/src/walk.test.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest' +import { Parser } from './parse' import { - Parser, NODE_STYLESHEET, NODE_STYLE_RULE, NODE_SELECTOR_LIST, @@ -10,7 +10,7 @@ import { NODE_VALUE_KEYWORD, NODE_VALUE_NUMBER, NODE_VALUE_DIMENSION, -} from './parse' +} from './constants' import { walk, traverse } from './walk' describe('walk', () => { diff --git a/tsconfig.build.json b/tsconfig.build.json index eaac22b..b9aa892 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -4,7 +4,9 @@ "declaration": true, "emitDeclarationOnly": true, "noEmit": false, - "outDir": "./dist" + "outDir": "./dist", + "rootDir": "./src" }, + "include": ["src/**/*.ts"], "exclude": ["node_modules", "dist", "**/*.test.ts", "benchmark"] } diff --git a/vite.config.ts b/vite.config.ts index 013b4c2..47c925e 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -18,8 +18,9 @@ export default defineConfig({ minify: false, rollupOptions: { output: { - preserveModules: false, + preserveModules: true, entryFileNames: '[name].js', + sourcemap: false, }, }, },