Conversation
🦋 Changeset detectedLatest commit: d840ee2 The changes in this PR will be included in the next version bump. This PR includes changesets to release 15 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
WalkthroughThis pull request implements extensive configuration and dependency updates across the repository. It introduces new GitHub Actions for caching and skipping steps, augments CI workflows with additional jobs and environment variables, and restructures multiple TypeScript configurations across packages and examples. VSCode settings, ESLint/Prettier configurations, and Yarn settings have been updated, while many dependency versions and build scripts have been revised. Overall, the changes streamline build processes, enforce stricter type checking, and improve dependency management across the monorepo. Changes
Sequence Diagram(s)sequenceDiagram
participant Repo as Repository
participant PreJob as Pre-job Step
participant CI as CI Workflow
participant Cache as Cache Action
participant Build as Build Job
Repo->>PreJob: Trigger Pre-job
PreJob-->>CI: Return output "should_skip"
alt Output is not 'true'
CI->>Cache: Run Cache Dir Action
CI->>Build: Execute Build Job (with strict: false)
else Output is 'true'
CI->>CI: Skip subsequent jobs
end
Suggested labels
Poem
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
yarn install v1.22.22 Tip ⚡💬 Agentic Chat (Pro Plan, General Availability)
✨ Finishing Touches
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
|
Triggered from #182 by @black7375. Checking if we can fast forward Target branch ( commit 871e38ae97311961dfd3adc543279459a70c5f68 (HEAD -> main, origin/main)
Author: alstjr7375 <alstjr7375@daum.net>
Date: Sat Apr 5 23:52:25 2025 +0900
Chore: Disable minify optionPull request ( commit 3ccfdc5d23de3594098fd7f65ba17dc9b11fc39e (pull_request/build-system)
Author: alstjr7375 <alstjr7375@daum.net>
Date: Mon Apr 14 05:57:58 2025 +0900
Chore: Distribution CI #181It is possible to fast forward |
|
Triggered from #182 by @black7375. Checking if we can fast forward Target branch ( commit 871e38ae97311961dfd3adc543279459a70c5f68 (HEAD -> main, origin/main)
Author: alstjr7375 <alstjr7375@daum.net>
Date: Sat Apr 5 23:52:25 2025 +0900
Chore: Disable minify optionPull request ( commit 20246a134b5b9a6d9bdb011ff8943cf6cb4e59a8 (pull_request/build-system)
Author: alstjr7375 <alstjr7375@daum.net>
Date: Mon Apr 14 06:05:10 2025 +0900
Chore: Distribution CI #181It is possible to fast forward |
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (24)
tsconfig.node.json (1)
7-11: Include Array Specification
The "include" array explicitly adds key configuration files (yarn.config.cjs, eslint.config.js, vitest.workspace.ts) to the compilation list. Verify that these files are indeed intended for type checking/build processes. If you later find additional files need to be included or some of these become unnecessary, consider updating this list accordingly.tsconfig.json (1)
5-41: Project References Configuration
The "references" array comprehensively lists all dependent package configurations and examples. This modular structure should help with incremental builds and aligns with the broader restructuring of TypeScript configurations. Ensure that each referenced path correctly points to a valid TS project to avoid potential compilation issues.packages/css-additional-types/tsconfig.codegen.json (1)
1-18: Review of JSON Configuration & FormattingThe configuration establishes the code generation settings clearly. However, a static analysis tool reported an error at lines 17–18 ("Expected a property but instead found '}'"). Although the JSON structure appears correct at a glance, please double-check that the closing of the
"exclude"array (and the overall object) conforms strictly to JSON syntax (e.g., ensuring no stray commas or missing tokens).🧰 Tools
🪛 Biome (1.9.4)
[error] 17-18: Expected a property but instead found '}'.
Expected a property here.
(parse)
.github/actions/node-setup/action.yml (1)
2-8: Clarify the Input Parameter DescriptionThe new input parameter
strictis introduced with a default value of"true". However, its description ("Paths to cache") does not align with its behavior, which is to conditionally enforce strict installation rules (e.g., using additional Yarn flags and running constraints). Consider updating the description to something like "Enforce strict installation rules during package setup" for better clarity..vscode/settings.json (1)
1-34: Ensure JSONC Compatibility for VSCode Settings
This new settings file is well organized with clear configuration values for VS Code. Note that inline comments (e.g., on lines 8–10) are allowed in VS Code’s JSONC format; however, if any strict JSON validators are applied to this file, these comments might cause issues. Consider confirming that your tools support JSONC, or remove the comments if strict JSON is required.examples/react-swc/tsconfig.app.json (1)
1-33: Consider Removing Inline Comments for Strict JSON Parsing
This TypeScript configuration for the React application is comprehensive. However, the inline block comments on lines 13 and 22 (and any elsewhere, if present) are not valid according to the JSON standard and can trigger errors in strict JSON validators. You may consider either renaming the file with a.jsoncextension (if supported) or removing these comments to ensure full compatibility with tools that expect strict JSON.🧰 Tools
🪛 Biome (1.9.4)
[error] 13-13: JSON standard does not allow comments.
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 14-14: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 14-14: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 14-14: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 15-15: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 15-15: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 15-15: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 15-15: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 16-16: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 16-16: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 16-16: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 16-16: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 17-17: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 17-17: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 17-17: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 17-17: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 18-18: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 18-18: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 18-18: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 18-18: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 19-19: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 19-19: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 19-19: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 19-19: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 20-20: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 20-20: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 20-20: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 20-22: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 22-22: JSON standard does not allow comments.
(parse)
[error] 23-23: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 23-23: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 23-23: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 23-23: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 24-24: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 24-24: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 24-24: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 24-24: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 25-25: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 25-25: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 25-25: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 25-25: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 26-26: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 26-26: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 26-26: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 26-26: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 27-27: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 27-27: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 27-27: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 28-28: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 29-29: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 29-29: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 29-31: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 31-32: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
examples/react-babel/tsconfig.app.json (1)
12-12: Usage of JSON Comments
The comment/* Bundler mode */is acceptable if your tooling supports JSON with comments (JSONC). If strict JSON compliance is required, consider removing it.examples/react-babel/tsconfig.json (1)
4-21: Clear and Organized Package ReferencesThe addition of new references to
../../packages/css,../../packages/integration,../../packages/react, and../../packages/viteis well structured. This modular approach helps maintain a cohesive TypeScript configuration across the monorepo..vscode/launch.json (2)
1-25: Configuration: Debug Current Test FileThe first debug configuration is set up appropriately to run Vitest in watch mode. The use of
${input:GIT_ROOT}for the program path and the inclusion of key arguments (e.g., disabling isolation and file parallelism) are well done.
However, note that trailing commas (e.g., after"cwd": "${workspaceRoot}",) may trigger some linters—even though VS Code typically supports JSON with comments (JSONC). Please verify that your environment accepts these commas, or consider removing them if strict JSON compliance is needed.🧰 Tools
🪛 Biome (1.9.4)
[error] 25-25: Expected a property but instead found '}'.
Expected a property here.
(parse)
26-46: Configuration: Debug Current Test File with Remote DebuggerThe remote debugger configuration is almost identical to the first configuration, with the addition of inspection flags. Double-check whether both
--inspect-brkand--inspectare necessary concurrently, as they might conflict or be redundant.🧰 Tools
🪛 Biome (1.9.4)
[error] 46-46: Expected a property but instead found '}'.
Expected a property here.
(parse)
packages/babel/tsconfig.node.json (1)
2-6: Base Configuration and Build Paths UpdateExtending from
"tsconfig-custom/tsconfig.node.json"is a good move for unifying node-specific TypeScript settings. The specifiedtsBuildInfoFileandoutDirpaths are clear.
Please verify that the cache directory (i.e.,.cache) is excluded from version control to avoid polluting the repository.packages/debug-log/tsconfig.node.json (1)
3-6: Compiler Options ConsistencyThe compiler options (
tsBuildInfoFileandoutDir) in this file mirror the settings used in other packages, which is encouraging. However, ensure that extending from the base configuration does not inadvertently change expected build behaviors compared to the node-specific configuration.packages/css-additional-types/tsconfig.node.json (1)
2-14: Consistent Node TS Configuration & Caching Setup
The update to extend"tsconfig-custom/tsconfig.node.json"along with the newcompilerOptionsfortsBuildInfoFileandoutDiris well aligned with the new build-caching strategy. Theincludeandexcludearrays clearly delineate which files are relevant and which directories (likedistand_release) should be omitted from compilation.Suggestion: Confirm that the
.cachedirectory (and its subdirectories) are properly excluded from version control (e.g., listed in.gitignore).packages/vite/tsconfig.node.json (1)
2-14: Updated Node-Specific TS Build Options for Vite
This configuration now extends"tsconfig-custom/tsconfig.node.json"and adds specificcompilerOptions(tsBuildInfoFileandoutDir) to manage TypeScript build outputs and caching. Theincludeandexcludearrays are properly defined, mirroring the strategy used in similar packages.Suggestion: Ensure that artifacts in the
.cachedirectory are ignored in version control to prevent accidental commits..github/actions/cache-dir/action.yml (1)
21-27: Review: Cache Step ConfigurationThe configuration of
actions/cache@v4is robust. Constructing the cache key with the runner’s OS, the provided key, a hash of allyarn.lockfiles, and the current day ensures uniqueness and proper invalidation. Consider whether additional restore keys might improve cache hit rates under varying conditions.configs/tsconfig-custom/tsconfig.base.json (1)
53-60: Review: Base TypeScript Configuration – Emit SettingsThe modifications in the "Emit" section—enabling
"declaration": trueand"emitDeclarationOnly": true—ensure that declaration files are generated without emitting JavaScript. This can streamline distribution in projects where only type declarations are needed. Note that the file still contains several commented-out configurations; this is acceptable if your tooling supports JSONC (JSON with comments). However, be aware that some static analysis tools may flag these as errors.🧰 Tools
🪛 Biome (1.9.4)
[error] 53-53: JSON standard does not allow comments.
(parse)
[error] 54-54: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 54-54: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 54-54: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 54-55: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 54-54: JSON standard does not allow comments.
(parse)
[error] 56-56: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 56-56: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 56-56: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 56-56: JSON standard does not allow comments.
(parse)
packages/css-additional-types/codegen/index.ts (3)
22-25: Revisit comma detection logic.
isCommachecks if a CSS syntax includes “, ” or “#”. While many syntaxes with commas or color references (“#fff”) may pass, consider verifying edge cases—there could be CSS functions or unusual syntaxes also containing commas or#that might be misclassified.
27-37: Enhance space syntax detection.
isSpaceusesspaceRegexplus checks for&&,||,*,+,?. Modern CSS might have more complex or nested syntax patterns. Consider expanding the regex or adding more robust detection methods if future MDN data evolves to include more intricate syntax.
170-194: Consider more expressive error handling and logging.
While the currenttry/catchblocks handle common filesystem errors, it might be beneficial to log or throw more descriptive error messages, especially during directory creation and file writing. This can improve debugging if the code generation fails on certain CI environments.configs/vite-config-custom/index.js (2)
38-38: Ensure consistent naming for build environment checks.
isCImight eventually differ fromisGithubCI; consider clarifying if more CI environments will be supported.
117-119: Optional friction check for “cjs” format selection.
You are conditionally adding"cjs"only outside GitHub CI. If you still need a CommonJS build for other CI or local development, verify no build pipeline steps rely on it in GitHub CI.Also applies to: 123-124
packages/css-additional-types/src/index.ts (3)
101-215: Well-structured keys for spacing-based CSS properties.
Be mindful that some modern properties (e.g.,containerType,containerName) can evolve rapidly. Periodically confirm that these keys match the latest CSS specs.Would you like a script to cross-check these properties against a reference MDN JSON to ensure completeness?
217-305: Comma-separated properties listing.
These property lists are large. Grouping them under one type is valid, but consider segmenting them or auto-generating from an authoritative source to minimize human error and keep them current.
307-506: Shorthand properties dictionary.
The mapping is quite comprehensive. If you plan to expand it further, evaluate an approach to programmatically generate or validate these mappings (e.g., from MDN data) to reduce manual overhead.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (71)
.github/actions/cache-dir/action.yml(1 hunks).github/actions/node-setup/action.yml(2 hunks).github/actions/skip-action/action.yml(1 hunks).github/workflows/ci.yml(2 hunks).github/workflows/fast-forward.yml(1 hunks).vscode/extensions.json(1 hunks).vscode/launch.json(1 hunks).vscode/settings.json(1 hunks).yarnrc.yml(1 hunks)configs/eslint-config-custom/eslint.config.base.js(1 hunks)configs/eslint-config-custom/package.json(1 hunks)configs/prettier-config-custom/prettier.config.js(1 hunks)configs/tsconfig-custom/package.json(1 hunks)configs/tsconfig-custom/tsconfig.base.json(2 hunks)configs/tsconfig-custom/tsconfig.node.json(1 hunks)configs/vite-config-custom/index.js(5 hunks)examples/react-babel/package.json(1 hunks)examples/react-babel/tsconfig.app.json(2 hunks)examples/react-babel/tsconfig.json(1 hunks)examples/react-babel/tsconfig.node.json(1 hunks)examples/react-babel/vite.config.ts(0 hunks)examples/react-swc/eslint.config.js(4 hunks)examples/react-swc/package.json(2 hunks)examples/react-swc/tsconfig.app.json(1 hunks)examples/react-swc/tsconfig.json(1 hunks)examples/react-swc/tsconfig.node.json(1 hunks)package.json(1 hunks)packages/babel/package.json(1 hunks)packages/babel/tsconfig.json(1 hunks)packages/babel/tsconfig.lib.json(1 hunks)packages/babel/tsconfig.node.json(1 hunks)packages/css-additional-types/codegen/index.ts(1 hunks)packages/css-additional-types/package.json(2 hunks)packages/css-additional-types/src/index.ts(1 hunks)packages/css-additional-types/tsconfig.codegen.json(1 hunks)packages/css-additional-types/tsconfig.json(1 hunks)packages/css-additional-types/tsconfig.lib.json(1 hunks)packages/css-additional-types/tsconfig.node.json(1 hunks)packages/css/package.json(1 hunks)packages/css/src/css/index.ts(1 hunks)packages/css/tsconfig.json(1 hunks)packages/css/tsconfig.lib.json(1 hunks)packages/css/tsconfig.node.json(1 hunks)packages/debug-log/tsconfig.json(1 hunks)packages/debug-log/tsconfig.lib.json(1 hunks)packages/debug-log/tsconfig.node.json(1 hunks)packages/esbuild/package.json(1 hunks)packages/esbuild/tsconfig.json(1 hunks)packages/esbuild/tsconfig.lib.json(1 hunks)packages/esbuild/tsconfig.node.json(1 hunks)packages/integration/package.json(1 hunks)packages/integration/tsconfig.json(1 hunks)packages/integration/tsconfig.lib.json(1 hunks)packages/integration/tsconfig.node.json(1 hunks)packages/react/package.json(1 hunks)packages/react/tsconfig.json(1 hunks)packages/react/tsconfig.lib.json(1 hunks)packages/react/tsconfig.node.json(1 hunks)packages/transform-to-vanilla/package.json(1 hunks)packages/transform-to-vanilla/tsconfig.json(1 hunks)packages/transform-to-vanilla/tsconfig.lib.json(1 hunks)packages/transform-to-vanilla/tsconfig.node.json(1 hunks)packages/vite/package.json(1 hunks)packages/vite/tsconfig.json(1 hunks)packages/vite/tsconfig.lib.json(1 hunks)packages/vite/tsconfig.node.json(1 hunks)tsconfig.json(1 hunks)tsconfig.node.json(1 hunks)turbo.json(3 hunks)vitest.workspace.ts(1 hunks)yarn.config.cjs(1 hunks)
💤 Files with no reviewable changes (1)
- examples/react-babel/vite.config.ts
🧰 Additional context used
🧬 Code Graph Analysis (1)
packages/css-additional-types/codegen/index.ts (2)
packages/css-additional-types/codegen/utils.ts (4)
kebabToCamel(2-13)isArray(15-17)removeFirstString(23-25)stringify(19-21)packages/css-additional-types/codegen/simple-pseudo.ts (1)
camelPseudo(102-104)
🪛 Biome (1.9.4)
packages/css-additional-types/tsconfig.codegen.json
[error] 17-18: Expected a property but instead found '}'.
Expected a property here.
(parse)
.vscode/launch.json
[error] 25-25: Expected a property but instead found '}'.
Expected a property here.
(parse)
[error] 46-46: Expected a property but instead found '}'.
Expected a property here.
(parse)
examples/react-babel/tsconfig.app.json
[error] 13-13: JSON standard does not allow comments.
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 35-35: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 37-37: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 37-37: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 37-37: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 38-38: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 39-39: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 39-39: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 39-41: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
configs/tsconfig-custom/tsconfig.base.json
[error] 54-54: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 54-54: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 54-54: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 54-55: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 54-54: JSON standard does not allow comments.
(parse)
[error] 56-56: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 56-56: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 56-56: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 56-56: JSON standard does not allow comments.
(parse)
examples/react-swc/tsconfig.app.json
[error] 13-13: JSON standard does not allow comments.
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 17-17: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 17-17: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 17-17: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 17-17: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 19-19: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 19-19: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 19-19: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 19-19: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 20-20: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 20-20: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 20-20: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 20-22: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 22-22: JSON standard does not allow comments.
(parse)
[error] 23-23: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 23-23: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 23-23: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 23-23: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 24-24: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 24-24: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 24-24: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 24-24: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 25-25: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 25-25: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 25-25: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 25-25: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 26-26: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 26-26: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 26-26: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 26-26: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 27-27: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 27-27: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 27-27: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 28-28: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-31: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 31-32: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
examples/react-babel/tsconfig.node.json
[error] 6-6: JSON standard does not allow comments.
(parse)
[error] 7-7: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 7-7: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 7-7: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 7-7: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 10-10: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 10-10: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 10-10: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 10-12: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 12-12: JSON standard does not allow comments.
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 17-17: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 17-17: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 17-17: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 17-17: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 20-20: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 20-20: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 20-20: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 20-20: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 21-21: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 21-21: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 21-21: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
examples/react-swc/tsconfig.node.json
[error] 6-6: JSON standard does not allow comments.
(parse)
[error] 7-7: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 7-7: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 7-7: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 7-7: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 10-10: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 10-10: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 10-10: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 10-12: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 12-12: JSON standard does not allow comments.
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 17-17: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 17-17: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 17-17: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 17-17: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 20-20: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 20-20: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 20-20: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 20-20: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 21-21: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 21-21: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 21-21: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
🔇 Additional comments (108)
examples/react-swc/tsconfig.json (1)
1-15: Simplified TypeScript Configuration & Updated Project ReferencesThe removal of the explicit
compilerOptionssection indicates that compiler settings are now expected to be inherited from one or more of the referenced tsconfig files. Please verify that all essential TypeScript options (like target, module, and strict settings) are now correctly defined in those configurations. Also, setting"files": []might have implications on implicit file inclusion, so ensure this change aligns with your project's build and type-checking strategy.vitest.workspace.ts (1)
1-4: New Vitest Workspace ConfigurationThe addition of this file cleanly sets up a Vitest workspace that includes all packages in the
packagesdirectory. This should help streamline testing across your monorepo. Confirm that this configuration integrates well with your overall TypeScript and CI build setups.packages/css/package.json (1)
75-75: Updated Dependency Version for@fastify/deepmergeThe dependency upgrade to
@fastify/deepmerge@^3.1.0helps to keep packages up to date. Please ensure that this new version is fully compatible with your project’s usage patterns and does not introduce breaking changes to the CSS processing/transformations. Running integration tests focusing on areas that use this package is recommended..github/actions/skip-action/action.yml (1)
1-13: Enhanced Action DocumentationAdding the
descriptionfield ("Skip action if the same content was already run") improves the self-documentation of the GitHub Action, making its behavior clearer to maintainers and external contributors. This is a helpful enhancement..yarnrc.yml (1)
9-10: New Yarn Hardened Mode SettingThe introduction of
enableHardenedMode: falseis a notable change. Hardened mode enforces stricter package resolution and integrity, so please double-check that disabling it is intentional and aligns with your broader CI and dependency management strategies..github/workflows/fast-forward.yml (1)
130-130: LGTM! Environment variable for publication control added.Adding the
PACKAGE_PUBLISHenvironment variable with value"true"provides explicit control over the package publishing behavior in the release process, which aligns well with the Distribution CI improvements targeted by this PR.packages/transform-to-vanilla/package.json (1)
71-71:Details
❓ Verification inconclusive
Major version update for @fastify/deepmerge dependency.
The dependency has been updated from
^2.0.2to^3.1.0, which is a major version bump that may include breaking changes. This appears to be part of a coordinated effort to update this dependency across multiple packages in the project.
🌐 Web query:
What are the breaking changes between @fastify/deepmerge v2 and v3?💡 Result:
The key breaking changes between @fastify/deepmerge v2 and v3 are:
1. Dropped Support for Older Node.js Versions
- Node.js 16 and 18 are no longer supported in v3[1][7]. Projects using these Node.js versions must upgrade to newer releases to use v3.
2. TypeScript Interface Updates
- Added
cloneProtoObjectto theOptionsinterface[1][7]. This optional property allows cloning objects with prototypes (e.g.,Date, custom classes) during merges. While this is backward-compatible for most users, TypeScript projects extending theOptionsinterface may need updates if they implement custom type definitions.
These changes reflect a focus on modern Node.js environments and enhanced TypeScript support. Users should ensure their Node.js environment meets the new requirements before upgrading[1][7].
Citations:
- 1: https://github.com/fastify/deepmerge/releases
- 2: https://microfluidics.utoronto.ca/gitlab/help/tutorials/dependency_scanning.md
- 3: https://seek-oss.github.io/skuba/CHANGELOG.html
- 4: https://fastify.io/docs/v3.29.x/Guides/Migration-Guide-V3/
- 5: https://code.osdec.gov.my/mamirul47/example-fastify-prisma/-/blob/0452b7c646d36dea147fdf49a6067ca586d7da47/package-lock.json
- 6: https://www.elastic.co/guide/en/cloud-enterprise/current/ece-dependencies.html
- 7: https://github.com/fastify/deepmerge
- 8: https://debricked.com/select/package/pypi-mergedeep
- 9: https://www.cisco.com/c/dam/en_us/about/doing_business/open_source/docs/Firepower-Backdraft-RM-770-1739896779.pdf
- 10: https://www.npmjs.com/package/@fastify/deepmerge/v/1.0.0
Major update for @fastify/deepmerge dependency – please verify compatibility.
The dependency has been updated from
^2.0.2to^3.1.0, which introduces two key breaking changes that may impact the project:
- Node.js Version Support: Version 3 drops support for Node.js 16 and 18. Ensure the project is running on a supported Node.js version.
- TypeScript Interface Adjustment: A new optional property
cloneProtoObjecthas been added to the Options interface. Verify that any custom TypeScript definitions or integrations relying on deepmerge are updated accordingly.This change appears to be part of a coordinated update across multiple packages. However, please validate that these breaking changes have been thoroughly tested and that your environment complies with the new requirements.
configs/tsconfig-custom/package.json (1)
5-8: Improved TypeScript configuration modularity.Splitting the TypeScript configuration into base and node-specific files (
tsconfig.base.jsonandtsconfig.node.json) enhances modularity and reusability. This is a best practice for TypeScript projects, especially monorepos, as it allows for more flexible and maintainable configurations across different package types.configs/eslint-config-custom/eslint.config.base.js (1)
25-26: Optimized linting by ignoring cache directory.Adding
.cacheto the ESLint ignore patterns is a good optimization that prevents unnecessary linting of temporary cache files. This improvement aligns with the CI enhancements in this PR and will help make the linting process more efficient, especially in continuous integration environments.tsconfig.node.json (1)
1-6: Extends and Compiler Options Configuration
This configuration correctly extends the custom node configuration and sets specific paths for the TypeScript build info and output directory. The use of a dedicated cache folder (./.cache) is a good practice for improving build efficiency.configs/tsconfig-custom/tsconfig.node.json (1)
1-10: Compiler Options and Extension of Base Configuration
This file extends the base TS configuration and clearly sets important compiler options like disabling composite builds and declarations with "noEmit": true. The explicit empty "paths" mapping is acceptable if no module aliasing is required. Double-check that “noEmit” aligns with your intended build workflow..vscode/extensions.json (1)
1-15: VS Code Extensions Recommendations
The workspace recommendations are well defined and include popular extensions for linting, formatting, and testing. This improves the developer experience across the team. Consider periodically verifying that these extensions remain current and relevant to your tech stack.packages/css/tsconfig.lib.json (2)
3-9: Compiler Options for the CSS Package
This configuration specifies a clear source root (./src) and sets output directories and build info locations. The alignment of "outDir" and "declarationDir" ensures that compiled files are organized properly.
10-17: File Inclusion and Exclusion Strategy
The "include" and "exclude" arrays accurately target source and test files while omitting build artifacts. This approach minimizes accidental inclusion of generated files during development and type checking.tsconfig.json (1)
1-4: General TSConfig Setup
The global tsconfig file correctly references a JSON schema and uses an empty "files" array in favor of managing the project through references. This setup is typical and supports TypeScript’s project references mechanism.packages/vite/tsconfig.lib.json (1)
1-19: Configuration Consistency & ClarityThis TypeScript configuration is well structured and consistent with the project’s base configuration. All compiler options, include, and exclude directives are clearly defined. No issues were found with the syntax or intended output directories.
packages/css-additional-types/tsconfig.lib.json (1)
1-20: Enhanced TS Config for Additional TypesThe file appropriately extends the base configuration and includes the additional
"global.d.ts"file alongside the source and test files. The output and build info paths are consistent with project conventions. Everything looks well organized and correct.packages/integration/tsconfig.lib.json (1)
1-19: Integration Package TS ConfigurationThis configuration file mirrors other similar setups across the project. It correctly specifies the source, build info, output, and declaration directories, and the include/exclude settings are clear and consistent with project standards.
.github/actions/node-setup/action.yml (1)
29-35: Conditional Installation Logic VerificationThe
Package Installstep is implemented correctly. The conditional block checks ifinputs.strictequals"true"and then runs the enhanced installation command with flags (--immutable,--check-resolutions, and--refresh-lockfile) followed byyarn constraints. If not, it defaults to a standardyarn install. This approach effectively differentiates between strict and non-strict modes.packages/babel/tsconfig.lib.json (1)
1-19: New TypeScript configuration is correctly set up for ESM outputThis new configuration file properly extends the base configuration and sets up the TypeScript compiler options for ESM output. The configuration correctly defines source directories, output paths, and includes/excludes appropriate files.
The structure aligns with the PR's goal of enhancing CI for type building and specifically testing using ECMAScript Modules.
packages/transform-to-vanilla/tsconfig.lib.json (1)
1-18: Consistent TypeScript configuration maintained across packagesThis configuration follows the same pattern established in other packages, which is excellent for maintainability. It correctly configures TypeScript compilation for ESM output and properly sets up paths for build artifacts.
The consistent structure across packages will help with ongoing maintenance and CI processes.
packages/react/tsconfig.lib.json (1)
1-18: TypeScript configuration maintains consistency with other packagesThe React package follows the same TypeScript configuration pattern as other packages in the monorepo. This consistency is excellent for maintainability and aligns with the PR objective of improving build processes.
All compiler options are appropriately set for ESM output and type generation.
packages/css/src/css/index.ts (2)
14-14: Import added for improved type safetyAdding the
GlobalStyleRuletype import from vanilla-extract helps improve type safety in the package.
19-19: Type assertion improves compatibility with vanilla-extractThe added type assertion ensures that the transform output conforms to the
GlobalStyleRuletype expected by vanilla-extract'sgStylefunction. This enhances type safety and prevents potential type errors during compilation.This change aligns with the PR's focus on improving type building checks and package constraints.
packages/esbuild/tsconfig.lib.json (1)
1-19: Solid TypeScript Library Configuration
The tsconfig file properly extends the base configuration and establishes compilerOptions that organize source files and outputs for the ES module build. The include and exclude patterns are correctly defined. No issues detected.packages/esbuild/package.json (1)
53-58: Dependency Version Updates Verified
The dependency updates on lines 55–57 (updating@vanilla-extract/esbuild-plugin,@vanilla-extract/integration, andesbuild) reflect a coordinated upgrade. Ensure that these versions are compatible with other packages in the monorepo and any peer dependency requirements..github/workflows/ci.yml (4)
23-51: New "checks" Job Integration
A new CI job namedcheckshas been added. It correctly depends on thepre_joband triggers only when the skip condition is not met. The job properly sets up the repository checkout, environment, caching, and executes both type checking and linting commands. This addition enhances the CI process by ensuring code quality before deeper build steps.
61-65: Review of Node Setup Parameter
In thebuildjob, thenode-setupaction is now called withstrict: false. This change allows a more flexible installation process. Please verify that relaxing the strictness does not permit unintended dependency resolutions in production builds.
66-70: Cache Key Consistency in Build Job
The updated cache key (build-and-test) for the additional cache action is a positive move toward optimizing CI performance. Double-check that this key naming scheme remains consistent with other workflows to ensure predictable cache hits.
71-73: Simplified Test Command
Changing the test command fromyarn test:alltoyarn teststreamlines the testing phase. Ensure that the underlying test scripts are updated accordingly to reflect this change.configs/prettier-config-custom/prettier.config.js (1)
4-24: Well-structured prettier configuration using the overrides approachThis change reorganizes Prettier configuration by using the
overridesarray to apply specific formatting rules to different file types. The configuration now explicitly targets JavaScript and TypeScript files while maintaining the same actual formatting rules that were previously applied globally.This approach provides better organization and more explicit control over which file types receive specific formatting rules.
turbo.json (2)
19-25: Improved caching strategy for lint taskThe lint task has been restructured to use a more efficient caching strategy:
- Removing explicit dependencies in favor of global dependency tracking
- Adding explicit outputs that can be cached
- Using
$TURBO_HASH_GLOBAL_DEPSensures the task is invalidated when any global dependency changesThis will improve build times by better utilizing Turborepo's caching capabilities.
32-34: Enhanced TypeScript caching implementationChanging the output path from the default
tsconfig.tsbuildinfoto.cache/typescript/*aligns with modern TypeScript project references approach and provides better organization of build artifacts.packages/babel/tsconfig.json (1)
1-11:Details
✅ Verification successful
Improved TypeScript project structure using Project References
This change adopts TypeScript Project References, a recommended approach for organizing complex TypeScript projects. By splitting configuration into separate files (node and lib) and using
references, you get:
- Better incremental builds
- Clearer separation of concerns
- More maintainable type checking
The empty
filesarray is appropriate for a solution file that only references other configurations.
🏁 Script executed:
#!/bin/bash # Verify that the referenced tsconfig files exist if [ -f "packages/babel/tsconfig.node.json" ] && [ -f "packages/babel/tsconfig.lib.json" ]; then echo "✅ Referenced tsconfig files exist" else echo "❌ One or more referenced tsconfig files are missing" [ ! -f "packages/babel/tsconfig.node.json" ] && echo "Missing: packages/babel/tsconfig.node.json" [ ! -f "packages/babel/tsconfig.lib.json" ] && echo "Missing: packages/babel/tsconfig.lib.json" fiLength of output: 169
Verified Project Reference Configuration
The adoption of TypeScript Project References in this change is confirmed. Splitting the configuration into separate files—
tsconfig.node.jsonandtsconfig.lib.json—ensures better incremental builds, clearer separation of concerns, and more maintainable type checking. The presence of the referenced files has been verified, and the empty"files"array is appropriate for a solution file that solely aggregates these references.yarn.config.cjs (1)
1-32:Details
✅ Verification successful
Well-structured Yarn constraints for dependency management
This new configuration file establishes important rules for dependency management:
- Enforces consistent dependencies across workspaces
- Prioritizes workspace dependencies when available
- Ensures that important tools like TypeScript, ESLint, Prettier, and Vite are properly declared as peer dependencies
These constraints will help prevent dependency-related issues and ensure consistency across the monorepo, which aligns well with the PR's objective of improving CI processes.
🏁 Script executed:
#!/bin/bash # Verify that yarn-constraints-rules package is properly installed if grep -q "yarn-constraints-rules" package.json; then echo "✅ yarn-constraints-rules package is listed in dependencies" else echo "⚠️ yarn-constraints-rules package might be missing from dependencies" echo "Please ensure it's included in package.json, possibly as a devDependency" fiLength of output: 172
Configuration Verified: Yarn Constraints in yarn.config.cjs Are Correctly Implemented
The updated configuration in
yarn.config.cjssuccessfully enforces several important dependency management rules:
- Consistent Dependency Management: Ensures both workspace and external dependencies follow the defined consistency rules.
- Priority on Workspace Dependencies: Automatically opts for workspace dependencies when available.
- Enforcement of Essential Peer Dependencies: Specifically confirms that critical tools (Vite, TypeScript, ESLint, and Prettier) are declared as peer dependencies.
Additionally, the verification script confirmed that the
yarn-constraints-rulespackage is correctly listed inpackage.json.Overall, these changes align well with the PR's objective of improving CI processes by mitigating dependency-related issues.
examples/react-babel/tsconfig.app.json (4)
5-9: Improved "lib" Array Formatting
The multi-line array enhances readability without altering functionality.
15-15: Added "resolveJsonModule" Option
Enabling"resolveJsonModule": trueallows the import of JSON files, which is useful if your codebase depends on JSON modules. Verify that downstream tooling fully supports this feature.🧰 Tools
🪛 Biome (1.9.4)
[error] 15-15: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 15-15: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 15-15: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 15-15: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
35-37: Updated Build Caching Path
The"tsBuildInfoFile"has been updated to"./.cache/typescript/tsbuildinfo-app", aligning with the new caching strategy. Ensure that all build scripts and CI processes reference this new path.🧰 Tools
🪛 Biome (1.9.4)
[error] 35-35: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 37-37: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 37-37: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 37-37: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
39-41: Reformatted "include" Array
The multi-line format for"include": [ "src" ]improves clarity and maintainability.🧰 Tools
🪛 Biome (1.9.4)
[error] 39-39: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 39-39: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 39-41: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
packages/react/tsconfig.node.json (4)
2-2: Updated "extends" Property
The file now correctly extends"tsconfig-custom/tsconfig.node.json", ensuring consistency with the project’s Node TypeScript configurations.
3-6: Refined Compiler Options for Caching
Setting"tsBuildInfoFile": "./.cache/typescript/tsbuildinfo-node"and"outDir": "./.cache/tsbuild-node"aligns with the enhanced caching strategy. This change should streamline incremental builds.
7-10: Clarified "include" Paths
Explicitly including"vite.config.ts"and"eslint.config.js"helps ensure these vital configuration files are processed correctly.
11-14: Proper Exclusion of Build Directories
Adding the"exclude"array with"dist"and"_release"prevents extraneous files from interfering with compilation.packages/debug-log/tsconfig.lib.json (4)
2-2: Extends Base Configuration
Extending"tsconfig-custom/tsconfig.base.json"promotes uniform TypeScript settings across packages.
3-9: Well-Configured Compiler Options
The settings for"rootDir","baseUrl","tsBuildInfoFile","outDir", and"declarationDir"are properly defined to support incremental builds and manage output directories as intended.
10-14: Comprehensive Include Patterns
Including all TypeScript files fromsrcand__tests__, along withimportMeta.d.ts, ensures full coverage of source and test files.
15-18: Exclusion of Build Artifacts
Excluding"dist"and"_release"prevents build outputs from being recompiled, keeping the source tree clean.packages/integration/package.json (1)
54-58: Upgraded Dependency Versions
The dependencies have been updated as follows:
"@babel/core"to^7.26.10"@babel/plugin-syntax-jsx"to^7.25.9"@vanilla-extract/integration"to^8.0.1"esbuild"to^0.25.2Please ensure these new versions are compatible with your codebase and are verified in the CI process.
packages/css/tsconfig.node.json (4)
2-2: Aligned "extends" Property for CSS Package
The configuration now extends"tsconfig-custom/tsconfig.node.json", ensuring consistency with other package configurations.
3-6: Updated Compiler Options for Build Caching
The new settings for"tsBuildInfoFile": "./.cache/typescript/tsbuildinfo-node"and"outDir": "./.cache/tsbuild-node"are consistent with the project-wide caching strategy.
7-10: Clear "Include" Declarations
The clear inclusion of"vite.config.ts"and"eslint.config.js"aids in precise configuration management during builds.
11-14: Excluding Non-Source Directories
Explicit exclusion of"dist"and"_release"prevents unwanted files from affecting the compilation process..vscode/launch.json (2)
49-61: Git Root Input ConfigurationThe new input block for
GIT_ROOTusing a shell command is a neat solution to dynamically determine the Git repository root. Just ensure that all team members have installed theaugustocdias.tasks-shell-inputextension as noted in the comment.
25-25: Static Analysis: Trailing Comma WarningStatic analysis tools flagged lines 25 and 46 for trailing commas. Confirm that these commas are acceptable under your JSONC settings or adjust them to comply with strict JSON standards if necessary.
Also applies to: 46-46
🧰 Tools
🪛 Biome (1.9.4)
[error] 25-25: Expected a property but instead found '}'.
Expected a property here.
(parse)
packages/react/tsconfig.json (1)
1-15: Modular TypeScript Configuration for React PackageThe configuration has been restructured to use an empty
"files"array and a"references"array that points to../css,./tsconfig.node.json, and./tsconfig.lib.json. This aligns with the new modular approach across the project.
If the empty"files": []is intentional, no further action is needed; otherwise, consider adding a comment or files if applicable.packages/babel/tsconfig.node.json (2)
7-10: Include Array CheckIncluding
"vite.config.ts"and"eslint.config.js"ensures that important configuration files are part of the compilation process.
11-14: Exclusion of Unnecessary DirectoriesThe exclusion list correctly omits directories like
"dist"and"_release"from the TypeScript build process.packages/debug-log/tsconfig.node.json (2)
7-10: Include Array ValidationThe inclusion of
"vite.config.ts"and"eslint.config.js"appears correct and consistent with other node configurations.
11-14: Exclusion Array VerificationExcluding the
"dist"and"_release"directories is appropriate and helps prevent build artifacts from affecting the compilation process.packages/transform-to-vanilla/tsconfig.json (1)
2-13: Modularizing TS Configuration via References
Replacing previous direct file inclusions with an empty"files"array and a structured"references"array enhances modularity. This approach facilitates clearer dependency management and decoupling of compiler configurations across packages.Action: Please verify that all referenced paths (e.g.,
"../css-additional-types","./tsconfig.node.json", and"./tsconfig.lib.json") are correct relative to the project’s directory structure.packages/vite/tsconfig.json (1)
2-19: Enhanced Modularity in Vite’s TS Setup
The reconfiguration to an empty"files"array coupled with a detailed"references"array matches the overall refactoring strategy. This refactoring supports better maintainability by clearly delineating dependencies and shared settings among packages.Action: Double-check that each reference (e.g.,
"../css","../integration","../transform-to-vanilla","./tsconfig.node.json", and"./tsconfig.lib.json") accurately reflects the intended project structure.packages/transform-to-vanilla/tsconfig.node.json (1)
2-14: Standardized Node Configuration for Transform-to-Vanilla
This file follows the same pattern as other packages by extending"tsconfig-custom/tsconfig.node.json"and setting upcompilerOptionsfor build caching and output management. The inclusion of"vite.config.ts"and"eslint.config.js"alongside the exclusion ofdistand_releaseensures that only the necessary files are considered during compilation.Action: Verify that these configuration settings integrate seamlessly with the overall project build and CI strategies.
.github/actions/cache-dir/action.yml (3)
1-3: Review: File Header and DescriptionThe action’s header clearly defines the name ("Cache Dir") and provides a concise description. This sets a solid context for the rest of the file.
4-12: Review: Inputs DefinitionThe inputs are defined cleanly: the required
keyand the optionalpathswith a default value of "**/.cache" are appropriately specified. This design will allow for flexible cache key customization.
13-20: Review: "Get Current Day" StepThe step that retrieves the current day using
date +%Y-%jand appends it to$GITHUB_OUTPUTis well implemented. This provides a dynamic component to the cache key that changes daily.packages/css/tsconfig.json (1)
1-15: Review: TypeScript Configuration (packages/css)The new configuration—with an empty
filesarray and an updatedreferencesarray that points to../transform-to-vanilla,./tsconfig.node.json, and./tsconfig.lib.json—reflects a modular approach aligned with project references. Please ensure that this change correctly covers all source files through the referenced configurations.packages/debug-log/tsconfig.json (1)
1-12: Review: TypeScript Configuration (packages/debug-log)Transitioning to a configuration with an empty
filesarray and usingreferencesfor./tsconfig.node.jsonand./tsconfig.lib.jsonis concise and promotes modularity. Verify that all necessary TypeScript sources are now correctly encompassed via these references.packages/esbuild/tsconfig.node.json (1)
1-16: Review: Node-Specific TypeScript Configuration for esbuildThe changes update the
extendsproperty to"tsconfig-custom/tsconfig.node.json"and introduce specificcompilerOptions—includingtsBuildInfoFileandoutDir—as well as anexcludearray for"dist"and"_release". These modifications enhance build caching and output management. Please double-check that the provided paths align with your project’s caching and directory structure.packages/integration/tsconfig.json (1)
2-13: Confirm references are picking up all necessary files.
Having"files": []means that this config will not directly include any source files. This approach can work if the actual source files are all triggered through the project references in"references". As a best practice, please verify that these references include all intended entry points for the integration package’s compilation.packages/integration/tsconfig.node.json (1)
2-14: Validate extension path and ensure the base config exists.
The"extends": "tsconfig-custom/tsconfig.node.json"path is crucial for inheriting the correct Node compilation settings. Confirm that this file is accessible and that the correct compiler options (such astarget,module) are included in the base config.packages/esbuild/tsconfig.json (1)
2-13: Check the reference to the integration package.
Including"../integration"in the references can help ensure cross-package type relationships. However, confirm that referencing another package from withinesbuildis intentional and doesn't risk circular dependency.packages/css-additional-types/codegen/index.ts (1)
130-147: Verify correctness of nested property derivation.
This function matches CSS properties that start with<key>-, potentially generating nested keys. If there are exceptions (e.g., vendor prefixes or unique property names), it could skip some items or produce collisions. Ensure that this approach correctly identifies, maps, and merges nested properties for all CSS data.packages/css-additional-types/tsconfig.json (1)
2-13: Restructured TypeScript Configuration.
The removal of the"extends"and explicit use of the"references"array improves modularity and clarity. However, please verify that an empty"files"array is intentional since it affects which files are compiled by TypeScript.configs/eslint-config-custom/package.json (1)
20-27: Updated Dependency Versions.
The updates indevDependencies(e.g.,@eslint/js,@typescript-eslint/parser,eslint-config-prettier,eslint-plugin-prettier,globals, andtypescript-eslint) bring in the latest fixes and features. Please ensure that these new versions are fully compatible with your ESLint configurations and the overall monorepo setup.packages/react/package.json (1)
65-73: Workspace Dependency and React Version Upgrade.
Switching"@mincho-js/css"from"workspace:*"to"workspace:^"and bumping the versions for both React and its type definitions suggests a move toward stricter versioning and leveraging updated features. Verify that these changes do not introduce breaking changes in consuming projects, especially given the jump to React 19.packages/babel/package.json (1)
56-65: Babel Dependencies Updated.
The upgraded versions for@babel/core,@babel/helper-module-imports,@babel/preset-typescript, and@babel/traverse—along with the corresponding updated type definitions—are consistent with modern Babel releases. Please confirm that these changes integrate smoothly with your custom Babel configurations and that all tests pass.packages/css-additional-types/package.json (3)
26-28: Build path structure improvements aligned with ESM/CJS dual packagingThe updated output paths for typings, main, and module fields properly differentiate between ESM and CJS formats, which is essential for modern dual-package support. This change aligns well with the PR's focus on distribution and build process improvements.
31-38: Enhanced exports configuration for better module resolutionThe restructured exports configuration now provides more explicit type definitions for both import and require scenarios. This improvement ensures proper type resolution across different module systems and enhances compatibility with tools like TypeScript.
50-50: Build script enhancement for comprehensive build processThe updated build script now includes codegen, fix, and build steps in the correct sequence, improving the overall build pipeline. This change supports the PR's objective of enhancing the CI process with proper type building checks.
examples/react-swc/eslint.config.js (5)
3-3: Added cwd import for consistent path resolutionAdding the current working directory import allows for more reliable path resolution in the ESLint configuration, especially important for TypeScript project references.
17-19: Improved TypeScript parser configurationThe simplified project array and the addition of tsconfigRootDir and projectService options enhance TypeScript integration with ESLint. The projectService option enables more efficient type checking by leveraging TypeScript's project service.
28-30: Consistent TypeScript configuration across parser optionsApplying the same TypeScript configuration improvements to the parser options for .ts/.tsx files ensures consistency across all TypeScript file types.
39-39: Simplified React Hooks plugin configurationThe direct use of reactHooksPlugin simplifies the configuration and eliminates unnecessary wrapper functions, making the config more maintainable.
50-50: Extended JavaScript file patterns for comprehensive lintingAdding *.cjs and *.mjs to the files array ensures that all modern JavaScript module formats are properly linted, which supports the PR's focus on ESM testing.
packages/vite/package.json (5)
55-55: Updated Babel core dependencyThe Babel core update to version 7.26.10 brings in the latest features and fixes, supporting the build process improvements in the PR.
60-60: Updated vanilla-extract integration dependencyThe significant version bump from 6.0.0 to 8.0.1 for @vanilla-extract/integration ensures compatibility with the latest vanilla-extract ecosystem, which is important for the build pipeline.
63-66: Updated and added development dependenciesThe updated typings and development dependencies, particularly the addition of @vanilla-extract/css, support the enhanced type checking capabilities targeted by this PR.
70-70: TypeScript dependency update with more flexible versioningChanging from ~5.3.3 (patch updates only) to ^5.8.3 (minor updates allowed) provides access to newer TypeScript features while maintaining a reasonable version constraint.
73-74: Added peer dependency for vanilla-extract/cssAdding @vanilla-extract/css as a peer dependency with wildcard version ensures proper integration with the vanilla-extract ecosystem while allowing flexibility in consumer version selection.
examples/react-babel/tsconfig.node.json (4)
3-3: Updated TypeScript target to ESNextChanging the target from ES2022 to ESNext ensures that the latest JavaScript features are available, which aligns with the focus on modern module support.
9-9: Changed to allowSyntheticDefaultImports for better module compatibilityReplacing allowImportingTsExtensions with allowSyntheticDefaultImports improves compatibility with libraries that don't have proper default exports, enhancing the build process.
🧰 Tools
🪛 Biome (1.9.4)
[error] 9-9: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 9-9: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 9-9: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 9-9: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
17-18: Added side effect checking and enabled skipLibCheckThe addition of noUncheckedSideEffectImports enhances build optimization by ensuring proper tracking of side effects. Enabling skipLibCheck can significantly improve build performance, especially in large projects.
🧰 Tools
🪛 Biome (1.9.4)
[error] 17-17: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 17-17: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 17-17: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 17-17: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 18-18: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 18-18: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 18-18: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 18-18: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
20-21: Improved build cache organizationThe updated tsBuildInfoFile and new outDir paths move build artifacts to a dedicated .cache directory, improving project organization and supporting better caching strategies for CI.
🧰 Tools
🪛 Biome (1.9.4)
[error] 20-20: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 20-20: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 20-20: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 20-20: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 21-21: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 21-21: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 21-21: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
configs/vite-config-custom/index.js (5)
5-5: Consider verifying environment usage.
Usingenvfrom"node:process"is acceptable, but ensure that environment variables are sanitized and validated to prevent accidental misconfigurations.Would you like a script to confirm no unintended or sensitive environment variables are used in the codebase?
32-36: Good extraction of build paths.
DefiningpackageRoot,entryRoot,entryFile,outEsmDir, andoutCjsDirhere improves maintainability and clarity.
134-136: Great use of custom cache directory.
Storing cached artifacts in".cache/vite"helps separate them from other ephemeral outputs.
173-182:isGithubCIfunction usage.
The logic is straightforward. Validate the environment variable conditions if additional CI stages use these flags.Would you like a script that checks if
PACKAGE_PUBLISHorGITHUB_ACTIONSis referenced elsewhere in the code to confirm consistent usage?
40-78:Details
✅ Verification successful
Conditional DTS plugin logic looks correct.
Skipping the DTS plugin in CI can save time. Ensure your pipeline still tests type definitions where necessary.To confirm everything is as intended, you can run:
🏁 Script executed:
#!/bin/bash # Search for references to the dts plugin in the codebase to confirm usage is fully conditional rg "vite-plugin-dts"Length of output: 398
Conditional DTS plugin logic verified – implementation looks solid.
The conditional activation of the DTS plugin (enabled only when not in a CI environment) is confirmed by the repository search results. Make sure your CI pipeline still verifies type definitions separately to prevent any potential issues.packages/css-additional-types/src/index.ts (1)
4-99: Extensive pseudo-class coverage.
DefiningCamelPseudosenumerations enforces strong typings. Double-check for duplicates or commonly missed prefixes (e.g.,::-webkit-scrollbar-cornermight differ from__WebkitScrollbarCorner).examples/react-swc/package.json (2)
8-9: Separation of build and type-check steps.
Moving type checking frombuildto a dedicated"check": "tsc"script can speed up production builds while preserving type safety.
18-18: Dependency updates appear consistent.
Ensure that updating ESLint, React, and TypeScript packages doesn’t introduce version mismatches. Particularly check React 19.x features for backward compatibility in your code.Also applies to: 20-23, 28-28, 31-34
package.json (5)
12-18: Enhanced Task Runner Scripts
You've introduced a centralized task runner using Turbo with a custom cache directory along with updated commands for cleaning, building, linting, and fixing. This unified approach improves consistency and may reduce CI build times.
20-27: New Project Check and Sync Commands
The addition of commands such ascheck,check:all,sync,sync:check,test,test:all,coverage, andcoverage:allprovides a robust interface for project validation and workspace synchronization. Verify that the integration with the TypeScript project references tool (workspaces-to-typescript-project-references) works as expected across all environments.
33-33: Consistent Directory Context for g: Commands*
The modifiedg:clean(line 33),g:codegen(line 36), andg:lint(line 40) scripts now prepend commands withcd $INIT_CWD, ensuring they execute from the correct base directory. Please confirm that the$INIT_CWDenvironment variable is reliably set in your CI and local development environments.Also applies to: 36-36, 40-40
45-45: Prettier Configuration Alignment
Theprettierfield now points to"prettier-config-custom", which centralizes style configuration. Double-check that the custom config aligns with your team’s formatting standards and is appropriately version controlled.
50-52: DevDependencies Version Updates
Several devDependency versions have been updated:
- Added/updated tools like
@monorepo-utils/workspaces-to-typescript-project-referencesand@yarnpkg/types.- Updated type definitions (e.g.,
@types/nodenow at "^22.14.1").- Upgraded core tooling (
eslintto "^9.24.0",turboto "^2.5.0",typescriptto "^5.8.3",viteto "^6.2.6", andvitestto "^3.1.1").Ensure these updates are compatible throughout your codebase and CI configuration.
Also applies to: 56-58, 61-61, 65-68, 70-71
examples/react-babel/package.json (2)
14-35: Updated Dependencies for React-Babel
The dependency versions have been updated for critical packages:
- Babel packages (
@babel/coreand@babel/preset-typescript) now use newer versions.- Workspace dependencies (
@mincho-js/css,@mincho-js/integration,@mincho-js/react, and@mincho-js/vite) now point to the workspace version.- Upgrades for styling tools (
@vanilla-extract/cssand@vanilla-extract/css-utils), caching (lru-cache), media query parsing (media-query-parser), and React itself (react,react-dom, andscheduler) help ensure modern compatibility.Please verify that these version bumps do not introduce breaking changes in your application or tooling.
38-51: Enhanced DevDependencies for React-Babel
The devDependencies have also seen coordinated updates:
- Tooling improvements with the new version of
@eslint/jsand updated TypeScript-related packages (e.g.,typescript,typescript-eslint).- Updates to ESLint plugins and type definitions for React further streamline the development experience.
Review your ESLint and TypeScript configurations to ensure smooth integration with the updated versions.
| }, | ||
| "globalDependencies": [ | ||
| "packages.json" | ||
| ] |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Verify package.json filename in globalDependencies
There might be a typo in the global dependencies configuration.
🏁 Script executed:
#!/bin/bash
# Check if "packages.json" file exists at the root level
if [ -f "./packages.json" ]; then
echo "✅ packages.json file exists"
else
echo "❌ packages.json file does not exist"
echo "Note: The standard filename is 'package.json' - please verify if the filename is intentional"
# Check if package.json exists
if [ -f "./package.json" ]; then
echo "✅ package.json file exists"
fi
fiLength of output: 401
Global Dependencies Filename Mismatch in turbo.json
Our verification confirms that "packages.json" does not exist while "package.json" is present. This indicates a potential typo in the "globalDependencies" array. Please update the reference in turbo.json (lines 79-82) to "package.json" if that is indeed the intended file.
| { | ||
| "extends": "tsconfig-custom/tsconfig.json", | ||
| "include": ["vite.config.ts", "eslint.config.js"], | ||
| "extends": "tsconfig-custom/tsconfig.base.json", |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Inconsistent Base Configuration Extension
Unlike the Babel configuration, this file extends from "tsconfig-custom/tsconfig.base.json" instead of "tsconfig-custom/tsconfig.node.json". Please verify whether this is an intentional difference for the debug-log package. Consistency across packages is typically desired.
Below is a shell script to help verify the configuration references. It searches for all configuration files that extend a tsconfig from the "tsconfig-custom" package and lists any Babel configuration files (which might reference a different tsconfig file). This can help us determine whether the use of "tsconfig-custom/tsconfig.base.json" in packages/debug-log/tsconfig.node.json is intentional or a potential inconsistency compared to the Babel configuration.
Once you run this script and review its output, we can better assess whether the difference in base configuration is intentional or if it requires adjustment.
🏁 Script executed:
#!/bin/bash
echo "Searching for all tsconfig extension references across the repository:"
rg '"extends": "tsconfig-custom/tsconfig' -n .
echo ""
echo "Listing Babel configuration files (if any):"
find . -type f -name "babel.config*"
echo ""
echo "If Babel configuration files are found, please review their 'extends' values to check for consistency."Length of output: 2552
Critical: Inconsistent tsconfig Extension in Debug-Log Package
The file packages/debug-log/tsconfig.node.json currently extends "tsconfig-custom/tsconfig.base.json", whereas nearly all other packages (for example, packages/babel/tsconfig.node.json) extend "tsconfig-custom/tsconfig.node.json". This inconsistency suggests that the Node-specific configuration for debug-log may not be aligning with our standard configuration across packages.
- Location:
packages/debug-log/tsconfig.node.json(Lines 1-2) - Observed Difference:
- Debug-Log:
{ "extends": "tsconfig-custom/tsconfig.base.json", - Babel (as a reference):
{ "extends": "tsconfig-custom/tsconfig.node.json",
- Debug-Log:
Please verify if this deviation is intentional. If not, I recommend updating the debug-log Node configuration to extend "tsconfig-custom/tsconfig.node.json" for consistency.
| "compilerOptions": { | ||
| "composite": true, | ||
| "skipLibCheck": true, | ||
| "target": "ESNext", | ||
| "module": "ESNext", | ||
|
|
||
| /* Bundler mode */ | ||
| "moduleResolution": "bundler", | ||
| "isolatedModules": true, | ||
| "allowSyntheticDefaultImports": true, | ||
| "preserveSymlinks": true, | ||
| "noEmit": true, | ||
|
|
||
| /* Linting */ | ||
| "strict": true, | ||
| "paths": { | ||
| "vite": ["./node_modules/vite"] | ||
| } | ||
| "noUnusedLocals": true, | ||
| "noUnusedParameters": true, | ||
| "noFallthroughCasesInSwitch": true, | ||
| "noUncheckedSideEffectImports": true, | ||
| "skipLibCheck": true, | ||
|
|
||
| "tsBuildInfoFile": "./.cache/typescript/tsbuildinfo-node", | ||
| "outDir": "./.cache/tsbuild-node" | ||
| }, | ||
| "include": ["vite.config.ts"] | ||
| } |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Invalid JSON Comments Detected and Config Update.
The updated TypeScript compiler options (e.g., "target": "ESNext", updated tsBuildInfoFile, and added outDir) are beneficial. However, the file contains comments (such as /* Bundler mode */ and /* Linting */), which are not permitted in standard JSON and will cause parse errors. Please remove these comments to ensure the configuration file is valid.
- /* Bundler mode */
- /* Linting */📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "compilerOptions": { | |
| "composite": true, | |
| "skipLibCheck": true, | |
| "target": "ESNext", | |
| "module": "ESNext", | |
| /* Bundler mode */ | |
| "moduleResolution": "bundler", | |
| "isolatedModules": true, | |
| "allowSyntheticDefaultImports": true, | |
| "preserveSymlinks": true, | |
| "noEmit": true, | |
| /* Linting */ | |
| "strict": true, | |
| "paths": { | |
| "vite": ["./node_modules/vite"] | |
| } | |
| "noUnusedLocals": true, | |
| "noUnusedParameters": true, | |
| "noFallthroughCasesInSwitch": true, | |
| "noUncheckedSideEffectImports": true, | |
| "skipLibCheck": true, | |
| "tsBuildInfoFile": "./.cache/typescript/tsbuildinfo-node", | |
| "outDir": "./.cache/tsbuild-node" | |
| }, | |
| "include": ["vite.config.ts"] | |
| } | |
| { | |
| "compilerOptions": { | |
| "target": "ESNext", | |
| "module": "ESNext", | |
| "moduleResolution": "bundler", | |
| "isolatedModules": true, | |
| "allowSyntheticDefaultImports": true, | |
| "noEmit": true, | |
| "strict": true, | |
| "noUnusedLocals": true, | |
| "noUnusedParameters": true, | |
| "noFallthroughCasesInSwitch": true, | |
| "noUncheckedSideEffectImports": true, | |
| "skipLibCheck": true, | |
| "tsBuildInfoFile": "./.cache/typescript/tsbuildinfo-node", | |
| "outDir": "./.cache/tsbuild-node" | |
| }, | |
| "include": ["vite.config.ts"] | |
| } |
🧰 Tools
🪛 Biome (1.9.4)
[error] 6-6: JSON standard does not allow comments.
(parse)
[error] 7-7: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 7-7: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 7-7: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 7-7: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 8-8: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 9-9: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 10-10: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 10-10: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 10-10: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 10-12: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 12-12: JSON standard does not allow comments.
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 13-13: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 14-14: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 15-15: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 16-16: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 17-17: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 17-17: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 17-17: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 17-17: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 18-18: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 20-20: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 20-20: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 20-20: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 20-20: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 21-21: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 21-21: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 21-21: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 22-22: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 23-23: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 23-23: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 23-23: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 23-24: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
| export const nestedPropertiesMap: NestedPropertiesMap = { | ||
| msContentZoomLimit: { | ||
| Max: "msContentZoomLimitMax", | ||
| Min: "msContentZoomLimitMin" | ||
| }, | ||
| msContentZoomSnap: { | ||
| Points: "msContentZoomSnapPoints", | ||
| Type: "msContentZoomSnapType" | ||
| }, | ||
| msScrollLimit: { | ||
| XMax: "msScrollLimitXMax", | ||
| XMin: "msScrollLimitXMin", | ||
| YMax: "msScrollLimitYMax", | ||
| YMin: "msScrollLimitYMin" | ||
| }, | ||
| MozOutlineRadius: { | ||
| Bottomleft: "MozOutlineRadiusBottomleft", | ||
| Bottomright: "MozOutlineRadiusBottomright", | ||
| Topleft: "MozOutlineRadiusTopleft", | ||
| Topright: "MozOutlineRadiusTopright" | ||
| }, | ||
| WebkitBorderBefore: { | ||
| Color: "WebkitBorderBeforeColor", | ||
| Style: "WebkitBorderBeforeStyle", | ||
| Width: "WebkitBorderBeforeWidth" | ||
| }, | ||
| WebkitMask: { | ||
| Attachment: "WebkitMaskAttachment", | ||
| Clip: "WebkitMaskClip", | ||
| Composite: "WebkitMaskComposite", | ||
| Image: "WebkitMaskImage", | ||
| Origin: "WebkitMaskOrigin", | ||
| Position: "WebkitMaskPosition", | ||
| PositionX: "WebkitMaskPositionX", | ||
| PositionY: "WebkitMaskPositionY", | ||
| Repeat: "WebkitMaskRepeat", | ||
| RepeatX: "WebkitMaskRepeatX", | ||
| RepeatY: "WebkitMaskRepeatY", | ||
| Size: "WebkitMaskSize" | ||
| }, | ||
| WebkitMaskPosition: { | ||
| X: "WebkitMaskPositionX", | ||
| Y: "WebkitMaskPositionY" | ||
| }, | ||
| WebkitMaskRepeat: { | ||
| X: "WebkitMaskRepeatX", | ||
| Y: "WebkitMaskRepeatY" | ||
| }, | ||
| WebkitTextStroke: { | ||
| Color: "WebkitTextStrokeColor", | ||
| Width: "WebkitTextStrokeWidth" | ||
| }, | ||
| animation: { | ||
| Composition: "animationComposition", | ||
| Delay: "animationDelay", | ||
| Direction: "animationDirection", | ||
| Duration: "animationDuration", | ||
| FillMode: "animationFillMode", | ||
| IterationCount: "animationIterationCount", | ||
| Name: "animationName", | ||
| PlayState: "animationPlayState", | ||
| Range: "animationRange", | ||
| RangeEnd: "animationRangeEnd", | ||
| RangeStart: "animationRangeStart", | ||
| TimingFunction: "animationTimingFunction", | ||
| Timeline: "animationTimeline" | ||
| }, | ||
| animationRange: { | ||
| End: "animationRangeEnd", | ||
| Start: "animationRangeStart" | ||
| }, | ||
| background: { | ||
| Attachment: "backgroundAttachment", | ||
| BlendMode: "backgroundBlendMode", | ||
| Clip: "backgroundClip", | ||
| Color: "backgroundColor", | ||
| Image: "backgroundImage", | ||
| Origin: "backgroundOrigin", | ||
| Position: "backgroundPosition", | ||
| PositionX: "backgroundPositionX", | ||
| PositionY: "backgroundPositionY", | ||
| Repeat: "backgroundRepeat", | ||
| Size: "backgroundSize" | ||
| }, | ||
| backgroundPosition: { | ||
| X: "backgroundPositionX", | ||
| Y: "backgroundPositionY" | ||
| }, | ||
| border: { | ||
| Block: "borderBlock", | ||
| BlockColor: "borderBlockColor", | ||
| BlockStyle: "borderBlockStyle", | ||
| BlockWidth: "borderBlockWidth", | ||
| BlockEnd: "borderBlockEnd", | ||
| BlockEndColor: "borderBlockEndColor", | ||
| BlockEndStyle: "borderBlockEndStyle", | ||
| BlockEndWidth: "borderBlockEndWidth", | ||
| BlockStart: "borderBlockStart", | ||
| BlockStartColor: "borderBlockStartColor", | ||
| BlockStartStyle: "borderBlockStartStyle", | ||
| BlockStartWidth: "borderBlockStartWidth", | ||
| Bottom: "borderBottom", | ||
| BottomColor: "borderBottomColor", | ||
| BottomLeftRadius: "borderBottomLeftRadius", | ||
| BottomRightRadius: "borderBottomRightRadius", | ||
| BottomStyle: "borderBottomStyle", | ||
| BottomWidth: "borderBottomWidth", | ||
| Collapse: "borderCollapse", | ||
| Color: "borderColor", | ||
| EndEndRadius: "borderEndEndRadius", | ||
| EndStartRadius: "borderEndStartRadius", | ||
| Image: "borderImage", | ||
| ImageOutset: "borderImageOutset", | ||
| ImageRepeat: "borderImageRepeat", | ||
| ImageSlice: "borderImageSlice", | ||
| ImageSource: "borderImageSource", | ||
| ImageWidth: "borderImageWidth", | ||
| Inline: "borderInline", | ||
| InlineEnd: "borderInlineEnd", | ||
| InlineColor: "borderInlineColor", | ||
| InlineStyle: "borderInlineStyle", | ||
| InlineWidth: "borderInlineWidth", | ||
| InlineEndColor: "borderInlineEndColor", | ||
| InlineEndStyle: "borderInlineEndStyle", | ||
| InlineEndWidth: "borderInlineEndWidth", | ||
| InlineStart: "borderInlineStart", | ||
| InlineStartColor: "borderInlineStartColor", | ||
| InlineStartStyle: "borderInlineStartStyle", | ||
| InlineStartWidth: "borderInlineStartWidth", | ||
| Left: "borderLeft", | ||
| LeftColor: "borderLeftColor", | ||
| LeftStyle: "borderLeftStyle", | ||
| LeftWidth: "borderLeftWidth", | ||
| Radius: "borderRadius", | ||
| Right: "borderRight", | ||
| RightColor: "borderRightColor", | ||
| RightStyle: "borderRightStyle", | ||
| RightWidth: "borderRightWidth", | ||
| Spacing: "borderSpacing", | ||
| StartEndRadius: "borderStartEndRadius", | ||
| StartStartRadius: "borderStartStartRadius", | ||
| Style: "borderStyle", | ||
| Top: "borderTop", | ||
| TopColor: "borderTopColor", | ||
| TopLeftRadius: "borderTopLeftRadius", | ||
| TopRightRadius: "borderTopRightRadius", | ||
| TopStyle: "borderTopStyle", | ||
| TopWidth: "borderTopWidth", | ||
| Width: "borderWidth" | ||
| }, | ||
| borderBlock: { | ||
| Color: "borderBlockColor", | ||
| Style: "borderBlockStyle", | ||
| Width: "borderBlockWidth", | ||
| End: "borderBlockEnd", | ||
| EndColor: "borderBlockEndColor", | ||
| EndStyle: "borderBlockEndStyle", | ||
| EndWidth: "borderBlockEndWidth", | ||
| Start: "borderBlockStart", | ||
| StartColor: "borderBlockStartColor", | ||
| StartStyle: "borderBlockStartStyle", | ||
| StartWidth: "borderBlockStartWidth" | ||
| }, | ||
| borderBlockEnd: { | ||
| Color: "borderBlockEndColor", | ||
| Style: "borderBlockEndStyle", | ||
| Width: "borderBlockEndWidth" | ||
| }, | ||
| borderBlockStart: { | ||
| Color: "borderBlockStartColor", | ||
| Style: "borderBlockStartStyle", | ||
| Width: "borderBlockStartWidth" | ||
| }, | ||
| borderBottom: { | ||
| Color: "borderBottomColor", | ||
| LeftRadius: "borderBottomLeftRadius", | ||
| RightRadius: "borderBottomRightRadius", | ||
| Style: "borderBottomStyle", | ||
| Width: "borderBottomWidth" | ||
| }, | ||
| borderImage: { | ||
| Outset: "borderImageOutset", | ||
| Repeat: "borderImageRepeat", | ||
| Slice: "borderImageSlice", | ||
| Source: "borderImageSource", | ||
| Width: "borderImageWidth" | ||
| }, | ||
| borderInline: { | ||
| End: "borderInlineEnd", | ||
| Color: "borderInlineColor", | ||
| Style: "borderInlineStyle", | ||
| Width: "borderInlineWidth", | ||
| EndColor: "borderInlineEndColor", | ||
| EndStyle: "borderInlineEndStyle", | ||
| EndWidth: "borderInlineEndWidth", | ||
| Start: "borderInlineStart", | ||
| StartColor: "borderInlineStartColor", | ||
| StartStyle: "borderInlineStartStyle", | ||
| StartWidth: "borderInlineStartWidth" | ||
| }, | ||
| borderInlineEnd: { | ||
| Color: "borderInlineEndColor", | ||
| Style: "borderInlineEndStyle", | ||
| Width: "borderInlineEndWidth" | ||
| }, | ||
| borderInlineStart: { | ||
| Color: "borderInlineStartColor", | ||
| Style: "borderInlineStartStyle", | ||
| Width: "borderInlineStartWidth" | ||
| }, | ||
| borderLeft: { | ||
| Color: "borderLeftColor", | ||
| Style: "borderLeftStyle", | ||
| Width: "borderLeftWidth" | ||
| }, | ||
| borderRight: { | ||
| Color: "borderRightColor", | ||
| Style: "borderRightStyle", | ||
| Width: "borderRightWidth" | ||
| }, | ||
| borderTop: { | ||
| Color: "borderTopColor", | ||
| LeftRadius: "borderTopLeftRadius", | ||
| RightRadius: "borderTopRightRadius", | ||
| Style: "borderTopStyle", | ||
| Width: "borderTopWidth" | ||
| }, | ||
| boxFlex: { | ||
| Group: "boxFlexGroup" | ||
| }, | ||
| caret: { | ||
| Color: "caretColor", | ||
| Shape: "caretShape" | ||
| }, | ||
| clip: { | ||
| Path: "clipPath" | ||
| }, | ||
| color: { | ||
| Scheme: "colorScheme" | ||
| }, | ||
| columnRule: { | ||
| Color: "columnRuleColor", | ||
| Style: "columnRuleStyle", | ||
| Width: "columnRuleWidth" | ||
| }, | ||
| contain: { | ||
| IntrinsicSize: "containIntrinsicSize", | ||
| IntrinsicBlockSize: "containIntrinsicBlockSize", | ||
| IntrinsicHeight: "containIntrinsicHeight", | ||
| IntrinsicInlineSize: "containIntrinsicInlineSize", | ||
| IntrinsicWidth: "containIntrinsicWidth" | ||
| }, | ||
| container: { | ||
| Name: "containerName", | ||
| Type: "containerType" | ||
| }, | ||
| content: { | ||
| Visibility: "contentVisibility" | ||
| }, | ||
| flex: { | ||
| Basis: "flexBasis", | ||
| Direction: "flexDirection", | ||
| Flow: "flexFlow", | ||
| Grow: "flexGrow", | ||
| Shrink: "flexShrink", | ||
| Wrap: "flexWrap" | ||
| }, | ||
| font: { | ||
| Family: "fontFamily", | ||
| FeatureSettings: "fontFeatureSettings", | ||
| Kerning: "fontKerning", | ||
| LanguageOverride: "fontLanguageOverride", | ||
| OpticalSizing: "fontOpticalSizing", | ||
| Palette: "fontPalette", | ||
| VariationSettings: "fontVariationSettings", | ||
| Size: "fontSize", | ||
| SizeAdjust: "fontSizeAdjust", | ||
| Smooth: "fontSmooth", | ||
| Stretch: "fontStretch", | ||
| Style: "fontStyle", | ||
| Synthesis: "fontSynthesis", | ||
| SynthesisPosition: "fontSynthesisPosition", | ||
| SynthesisSmallCaps: "fontSynthesisSmallCaps", | ||
| SynthesisStyle: "fontSynthesisStyle", | ||
| SynthesisWeight: "fontSynthesisWeight", | ||
| Variant: "fontVariant", | ||
| VariantAlternates: "fontVariantAlternates", | ||
| VariantCaps: "fontVariantCaps", | ||
| VariantEastAsian: "fontVariantEastAsian", | ||
| VariantEmoji: "fontVariantEmoji", | ||
| VariantLigatures: "fontVariantLigatures", | ||
| VariantNumeric: "fontVariantNumeric", | ||
| VariantPosition: "fontVariantPosition", | ||
| Weight: "fontWeight" | ||
| }, | ||
| fontSize: { | ||
| Adjust: "fontSizeAdjust" | ||
| }, | ||
| fontSynthesis: { | ||
| Position: "fontSynthesisPosition", | ||
| SmallCaps: "fontSynthesisSmallCaps", | ||
| Style: "fontSynthesisStyle", | ||
| Weight: "fontSynthesisWeight" | ||
| }, | ||
| fontVariant: { | ||
| Alternates: "fontVariantAlternates", | ||
| Caps: "fontVariantCaps", | ||
| EastAsian: "fontVariantEastAsian", | ||
| Emoji: "fontVariantEmoji", | ||
| Ligatures: "fontVariantLigatures", | ||
| Numeric: "fontVariantNumeric", | ||
| Position: "fontVariantPosition" | ||
| }, | ||
| grid: { | ||
| Area: "gridArea", | ||
| AutoColumns: "gridAutoColumns", | ||
| AutoFlow: "gridAutoFlow", | ||
| AutoRows: "gridAutoRows", | ||
| Column: "gridColumn", | ||
| ColumnEnd: "gridColumnEnd", | ||
| ColumnGap: "gridColumnGap", | ||
| ColumnStart: "gridColumnStart", | ||
| Gap: "gridGap", | ||
| Row: "gridRow", | ||
| RowEnd: "gridRowEnd", | ||
| RowGap: "gridRowGap", | ||
| RowStart: "gridRowStart", | ||
| Template: "gridTemplate", | ||
| TemplateAreas: "gridTemplateAreas", | ||
| TemplateColumns: "gridTemplateColumns", | ||
| TemplateRows: "gridTemplateRows" | ||
| }, | ||
| gridColumn: { | ||
| End: "gridColumnEnd", | ||
| Gap: "gridColumnGap", | ||
| Start: "gridColumnStart" | ||
| }, | ||
| gridRow: { | ||
| End: "gridRowEnd", | ||
| Gap: "gridRowGap", | ||
| Start: "gridRowStart" | ||
| }, | ||
| gridTemplate: { | ||
| Areas: "gridTemplateAreas", | ||
| Columns: "gridTemplateColumns", | ||
| Rows: "gridTemplateRows" | ||
| }, | ||
| initialLetter: { | ||
| Align: "initialLetterAlign" | ||
| }, | ||
| inset: { | ||
| Block: "insetBlock", | ||
| BlockEnd: "insetBlockEnd", | ||
| BlockStart: "insetBlockStart", | ||
| Inline: "insetInline", | ||
| InlineEnd: "insetInlineEnd", | ||
| InlineStart: "insetInlineStart" | ||
| }, | ||
| insetBlock: { | ||
| End: "insetBlockEnd", | ||
| Start: "insetBlockStart" | ||
| }, | ||
| insetInline: { | ||
| End: "insetInlineEnd", | ||
| Start: "insetInlineStart" | ||
| }, | ||
| lineHeight: { | ||
| Step: "lineHeightStep" | ||
| }, | ||
| listStyle: { | ||
| Image: "listStyleImage", | ||
| Position: "listStylePosition", | ||
| Type: "listStyleType" | ||
| }, | ||
| margin: { | ||
| Block: "marginBlock", | ||
| BlockEnd: "marginBlockEnd", | ||
| BlockStart: "marginBlockStart", | ||
| Bottom: "marginBottom", | ||
| Inline: "marginInline", | ||
| InlineEnd: "marginInlineEnd", | ||
| InlineStart: "marginInlineStart", | ||
| Left: "marginLeft", | ||
| Right: "marginRight", | ||
| Top: "marginTop", | ||
| Trim: "marginTrim" | ||
| }, | ||
| marginBlock: { | ||
| End: "marginBlockEnd", | ||
| Start: "marginBlockStart" | ||
| }, | ||
| marginInline: { | ||
| End: "marginInlineEnd", | ||
| Start: "marginInlineStart" | ||
| }, | ||
| mask: { | ||
| Border: "maskBorder", | ||
| BorderMode: "maskBorderMode", | ||
| BorderOutset: "maskBorderOutset", | ||
| BorderRepeat: "maskBorderRepeat", | ||
| BorderSlice: "maskBorderSlice", | ||
| BorderSource: "maskBorderSource", | ||
| BorderWidth: "maskBorderWidth", | ||
| Clip: "maskClip", | ||
| Composite: "maskComposite", | ||
| Image: "maskImage", | ||
| Mode: "maskMode", | ||
| Origin: "maskOrigin", | ||
| Position: "maskPosition", | ||
| Repeat: "maskRepeat", | ||
| Size: "maskSize", | ||
| Type: "maskType" | ||
| }, | ||
| maskBorder: { | ||
| Mode: "maskBorderMode", | ||
| Outset: "maskBorderOutset", | ||
| Repeat: "maskBorderRepeat", | ||
| Slice: "maskBorderSlice", | ||
| Source: "maskBorderSource", | ||
| Width: "maskBorderWidth" | ||
| }, | ||
| offset: { | ||
| Anchor: "offsetAnchor", | ||
| Distance: "offsetDistance", | ||
| Path: "offsetPath", | ||
| Position: "offsetPosition", | ||
| Rotate: "offsetRotate" | ||
| }, | ||
| outline: { | ||
| Color: "outlineColor", | ||
| Offset: "outlineOffset", | ||
| Style: "outlineStyle", | ||
| Width: "outlineWidth" | ||
| }, | ||
| overflow: { | ||
| Anchor: "overflowAnchor", | ||
| Block: "overflowBlock", | ||
| ClipBox: "overflowClipBox", | ||
| ClipMargin: "overflowClipMargin", | ||
| Inline: "overflowInline", | ||
| Wrap: "overflowWrap", | ||
| X: "overflowX", | ||
| Y: "overflowY" | ||
| }, | ||
| overscrollBehavior: { | ||
| Block: "overscrollBehaviorBlock", | ||
| Inline: "overscrollBehaviorInline", | ||
| X: "overscrollBehaviorX", | ||
| Y: "overscrollBehaviorY" | ||
| }, | ||
| padding: { | ||
| Block: "paddingBlock", | ||
| BlockEnd: "paddingBlockEnd", | ||
| BlockStart: "paddingBlockStart", | ||
| Bottom: "paddingBottom", | ||
| Inline: "paddingInline", | ||
| InlineEnd: "paddingInlineEnd", | ||
| InlineStart: "paddingInlineStart", | ||
| Left: "paddingLeft", | ||
| Right: "paddingRight", | ||
| Top: "paddingTop" | ||
| }, | ||
| paddingBlock: { | ||
| End: "paddingBlockEnd", | ||
| Start: "paddingBlockStart" | ||
| }, | ||
| paddingInline: { | ||
| End: "paddingInlineEnd", | ||
| Start: "paddingInlineStart" | ||
| }, | ||
| page: { | ||
| BreakAfter: "pageBreakAfter", | ||
| BreakBefore: "pageBreakBefore", | ||
| BreakInside: "pageBreakInside" | ||
| }, | ||
| perspective: { | ||
| Origin: "perspectiveOrigin" | ||
| }, | ||
| scrollMargin: { | ||
| Block: "scrollMarginBlock", | ||
| BlockStart: "scrollMarginBlockStart", | ||
| BlockEnd: "scrollMarginBlockEnd", | ||
| Bottom: "scrollMarginBottom", | ||
| Inline: "scrollMarginInline", | ||
| InlineStart: "scrollMarginInlineStart", | ||
| InlineEnd: "scrollMarginInlineEnd", | ||
| Left: "scrollMarginLeft", | ||
| Right: "scrollMarginRight", | ||
| Top: "scrollMarginTop" | ||
| }, | ||
| scrollMarginBlock: { | ||
| Start: "scrollMarginBlockStart", | ||
| End: "scrollMarginBlockEnd" | ||
| }, | ||
| scrollMarginInline: { | ||
| Start: "scrollMarginInlineStart", | ||
| End: "scrollMarginInlineEnd" | ||
| }, | ||
| scrollPadding: { | ||
| Block: "scrollPaddingBlock", | ||
| BlockStart: "scrollPaddingBlockStart", | ||
| BlockEnd: "scrollPaddingBlockEnd", | ||
| Bottom: "scrollPaddingBottom", | ||
| Inline: "scrollPaddingInline", | ||
| InlineStart: "scrollPaddingInlineStart", | ||
| InlineEnd: "scrollPaddingInlineEnd", | ||
| Left: "scrollPaddingLeft", | ||
| Right: "scrollPaddingRight", | ||
| Top: "scrollPaddingTop" | ||
| }, | ||
| scrollPaddingBlock: { | ||
| Start: "scrollPaddingBlockStart", | ||
| End: "scrollPaddingBlockEnd" | ||
| }, | ||
| scrollPaddingInline: { | ||
| Start: "scrollPaddingInlineStart", | ||
| End: "scrollPaddingInlineEnd" | ||
| }, | ||
| scrollSnapType: { | ||
| X: "scrollSnapTypeX", | ||
| Y: "scrollSnapTypeY" | ||
| }, | ||
| scrollTimeline: { | ||
| Axis: "scrollTimelineAxis", | ||
| Name: "scrollTimelineName" | ||
| }, | ||
| textAlign: { | ||
| Last: "textAlignLast" | ||
| }, | ||
| textDecoration: { | ||
| Color: "textDecorationColor", | ||
| Line: "textDecorationLine", | ||
| Skip: "textDecorationSkip", | ||
| SkipInk: "textDecorationSkipInk", | ||
| Style: "textDecorationStyle", | ||
| Thickness: "textDecorationThickness" | ||
| }, | ||
| textDecorationSkip: { | ||
| Ink: "textDecorationSkipInk" | ||
| }, | ||
| textEmphasis: { | ||
| Color: "textEmphasisColor", | ||
| Position: "textEmphasisPosition", | ||
| Style: "textEmphasisStyle" | ||
| }, | ||
| transform: { | ||
| Box: "transformBox", | ||
| Origin: "transformOrigin", | ||
| Style: "transformStyle" | ||
| }, | ||
| transition: { | ||
| Behavior: "transitionBehavior", | ||
| Delay: "transitionDelay", | ||
| Duration: "transitionDuration", | ||
| Property: "transitionProperty", | ||
| TimingFunction: "transitionTimingFunction" | ||
| }, | ||
| viewTimeline: { | ||
| Axis: "viewTimelineAxis", | ||
| Inset: "viewTimelineInset", | ||
| Name: "viewTimelineName" | ||
| }, | ||
| whiteSpace: { | ||
| Collapse: "whiteSpaceCollapse", | ||
| Trim: "whiteSpaceTrim" | ||
| } | ||
|
|
||
| const stream = createWriteStream(savePath); | ||
| stream.write(result); | ||
| stream.end(); | ||
| } | ||
|
|
||
| main(); | ||
| }; | ||
| export type NestedPropertiesMap = { | ||
| msContentZoomLimit: { | ||
| Max: "msContentZoomLimitMax"; | ||
| Min: "msContentZoomLimitMin"; | ||
| }; | ||
| msContentZoomSnap: { | ||
| Points: "msContentZoomSnapPoints"; | ||
| Type: "msContentZoomSnapType"; | ||
| }; | ||
| msScrollLimit: { | ||
| XMax: "msScrollLimitXMax"; | ||
| XMin: "msScrollLimitXMin"; | ||
| YMax: "msScrollLimitYMax"; | ||
| YMin: "msScrollLimitYMin"; | ||
| }; | ||
| MozOutlineRadius: { | ||
| Bottomleft: "MozOutlineRadiusBottomleft"; | ||
| Bottomright: "MozOutlineRadiusBottomright"; | ||
| Topleft: "MozOutlineRadiusTopleft"; | ||
| Topright: "MozOutlineRadiusTopright"; | ||
| }; | ||
| WebkitBorderBefore: { | ||
| Color: "WebkitBorderBeforeColor"; | ||
| Style: "WebkitBorderBeforeStyle"; | ||
| Width: "WebkitBorderBeforeWidth"; | ||
| }; | ||
| WebkitMask: { | ||
| Attachment: "WebkitMaskAttachment"; | ||
| Clip: "WebkitMaskClip"; | ||
| Composite: "WebkitMaskComposite"; | ||
| Image: "WebkitMaskImage"; | ||
| Origin: "WebkitMaskOrigin"; | ||
| Position: "WebkitMaskPosition"; | ||
| PositionX: "WebkitMaskPositionX"; | ||
| PositionY: "WebkitMaskPositionY"; | ||
| Repeat: "WebkitMaskRepeat"; | ||
| RepeatX: "WebkitMaskRepeatX"; | ||
| RepeatY: "WebkitMaskRepeatY"; | ||
| Size: "WebkitMaskSize"; | ||
| }; | ||
| WebkitMaskPosition: { | ||
| X: "WebkitMaskPositionX"; | ||
| Y: "WebkitMaskPositionY"; | ||
| }; | ||
| WebkitMaskRepeat: { | ||
| X: "WebkitMaskRepeatX"; | ||
| Y: "WebkitMaskRepeatY"; | ||
| }; | ||
| WebkitTextStroke: { | ||
| Color: "WebkitTextStrokeColor"; | ||
| Width: "WebkitTextStrokeWidth"; | ||
| }; | ||
| animation: { | ||
| Composition: "animationComposition"; | ||
| Delay: "animationDelay"; | ||
| Direction: "animationDirection"; | ||
| Duration: "animationDuration"; | ||
| FillMode: "animationFillMode"; | ||
| IterationCount: "animationIterationCount"; | ||
| Name: "animationName"; | ||
| PlayState: "animationPlayState"; | ||
| Range: "animationRange"; | ||
| RangeEnd: "animationRangeEnd"; | ||
| RangeStart: "animationRangeStart"; | ||
| TimingFunction: "animationTimingFunction"; | ||
| Timeline: "animationTimeline"; | ||
| }; | ||
| animationRange: { | ||
| End: "animationRangeEnd"; | ||
| Start: "animationRangeStart"; | ||
| }; | ||
| background: { | ||
| Attachment: "backgroundAttachment"; | ||
| BlendMode: "backgroundBlendMode"; | ||
| Clip: "backgroundClip"; | ||
| Color: "backgroundColor"; | ||
| Image: "backgroundImage"; | ||
| Origin: "backgroundOrigin"; | ||
| Position: "backgroundPosition"; | ||
| PositionX: "backgroundPositionX"; | ||
| PositionY: "backgroundPositionY"; | ||
| Repeat: "backgroundRepeat"; | ||
| Size: "backgroundSize"; | ||
| }; | ||
| backgroundPosition: { | ||
| X: "backgroundPositionX"; | ||
| Y: "backgroundPositionY"; | ||
| }; | ||
| border: { | ||
| Block: "borderBlock"; | ||
| BlockColor: "borderBlockColor"; | ||
| BlockStyle: "borderBlockStyle"; | ||
| BlockWidth: "borderBlockWidth"; | ||
| BlockEnd: "borderBlockEnd"; | ||
| BlockEndColor: "borderBlockEndColor"; | ||
| BlockEndStyle: "borderBlockEndStyle"; | ||
| BlockEndWidth: "borderBlockEndWidth"; | ||
| BlockStart: "borderBlockStart"; | ||
| BlockStartColor: "borderBlockStartColor"; | ||
| BlockStartStyle: "borderBlockStartStyle"; | ||
| BlockStartWidth: "borderBlockStartWidth"; | ||
| Bottom: "borderBottom"; | ||
| BottomColor: "borderBottomColor"; | ||
| BottomLeftRadius: "borderBottomLeftRadius"; | ||
| BottomRightRadius: "borderBottomRightRadius"; | ||
| BottomStyle: "borderBottomStyle"; | ||
| BottomWidth: "borderBottomWidth"; | ||
| Collapse: "borderCollapse"; | ||
| Color: "borderColor"; | ||
| EndEndRadius: "borderEndEndRadius"; | ||
| EndStartRadius: "borderEndStartRadius"; | ||
| Image: "borderImage"; | ||
| ImageOutset: "borderImageOutset"; | ||
| ImageRepeat: "borderImageRepeat"; | ||
| ImageSlice: "borderImageSlice"; | ||
| ImageSource: "borderImageSource"; | ||
| ImageWidth: "borderImageWidth"; | ||
| Inline: "borderInline"; | ||
| InlineEnd: "borderInlineEnd"; | ||
| InlineColor: "borderInlineColor"; | ||
| InlineStyle: "borderInlineStyle"; | ||
| InlineWidth: "borderInlineWidth"; | ||
| InlineEndColor: "borderInlineEndColor"; | ||
| InlineEndStyle: "borderInlineEndStyle"; | ||
| InlineEndWidth: "borderInlineEndWidth"; | ||
| InlineStart: "borderInlineStart"; | ||
| InlineStartColor: "borderInlineStartColor"; | ||
| InlineStartStyle: "borderInlineStartStyle"; | ||
| InlineStartWidth: "borderInlineStartWidth"; | ||
| Left: "borderLeft"; | ||
| LeftColor: "borderLeftColor"; | ||
| LeftStyle: "borderLeftStyle"; | ||
| LeftWidth: "borderLeftWidth"; | ||
| Radius: "borderRadius"; | ||
| Right: "borderRight"; | ||
| RightColor: "borderRightColor"; | ||
| RightStyle: "borderRightStyle"; | ||
| RightWidth: "borderRightWidth"; | ||
| Spacing: "borderSpacing"; | ||
| StartEndRadius: "borderStartEndRadius"; | ||
| StartStartRadius: "borderStartStartRadius"; | ||
| Style: "borderStyle"; | ||
| Top: "borderTop"; | ||
| TopColor: "borderTopColor"; | ||
| TopLeftRadius: "borderTopLeftRadius"; | ||
| TopRightRadius: "borderTopRightRadius"; | ||
| TopStyle: "borderTopStyle"; | ||
| TopWidth: "borderTopWidth"; | ||
| Width: "borderWidth"; | ||
| }; | ||
| borderBlock: { | ||
| Color: "borderBlockColor"; | ||
| Style: "borderBlockStyle"; | ||
| Width: "borderBlockWidth"; | ||
| End: "borderBlockEnd"; | ||
| EndColor: "borderBlockEndColor"; | ||
| EndStyle: "borderBlockEndStyle"; | ||
| EndWidth: "borderBlockEndWidth"; | ||
| Start: "borderBlockStart"; | ||
| StartColor: "borderBlockStartColor"; | ||
| StartStyle: "borderBlockStartStyle"; | ||
| StartWidth: "borderBlockStartWidth"; | ||
| }; | ||
| borderBlockEnd: { | ||
| Color: "borderBlockEndColor"; | ||
| Style: "borderBlockEndStyle"; | ||
| Width: "borderBlockEndWidth"; | ||
| }; | ||
| borderBlockStart: { | ||
| Color: "borderBlockStartColor"; | ||
| Style: "borderBlockStartStyle"; | ||
| Width: "borderBlockStartWidth"; | ||
| }; | ||
| borderBottom: { | ||
| Color: "borderBottomColor"; | ||
| LeftRadius: "borderBottomLeftRadius"; | ||
| RightRadius: "borderBottomRightRadius"; | ||
| Style: "borderBottomStyle"; | ||
| Width: "borderBottomWidth"; | ||
| }; | ||
| borderImage: { | ||
| Outset: "borderImageOutset"; | ||
| Repeat: "borderImageRepeat"; | ||
| Slice: "borderImageSlice"; | ||
| Source: "borderImageSource"; | ||
| Width: "borderImageWidth"; | ||
| }; | ||
| borderInline: { | ||
| End: "borderInlineEnd"; | ||
| Color: "borderInlineColor"; | ||
| Style: "borderInlineStyle"; | ||
| Width: "borderInlineWidth"; | ||
| EndColor: "borderInlineEndColor"; | ||
| EndStyle: "borderInlineEndStyle"; | ||
| EndWidth: "borderInlineEndWidth"; | ||
| Start: "borderInlineStart"; | ||
| StartColor: "borderInlineStartColor"; | ||
| StartStyle: "borderInlineStartStyle"; | ||
| StartWidth: "borderInlineStartWidth"; | ||
| }; | ||
| borderInlineEnd: { | ||
| Color: "borderInlineEndColor"; | ||
| Style: "borderInlineEndStyle"; | ||
| Width: "borderInlineEndWidth"; | ||
| }; | ||
| borderInlineStart: { | ||
| Color: "borderInlineStartColor"; | ||
| Style: "borderInlineStartStyle"; | ||
| Width: "borderInlineStartWidth"; | ||
| }; | ||
| borderLeft: { | ||
| Color: "borderLeftColor"; | ||
| Style: "borderLeftStyle"; | ||
| Width: "borderLeftWidth"; | ||
| }; | ||
| borderRight: { | ||
| Color: "borderRightColor"; | ||
| Style: "borderRightStyle"; | ||
| Width: "borderRightWidth"; | ||
| }; | ||
| borderTop: { | ||
| Color: "borderTopColor"; | ||
| LeftRadius: "borderTopLeftRadius"; | ||
| RightRadius: "borderTopRightRadius"; | ||
| Style: "borderTopStyle"; | ||
| Width: "borderTopWidth"; | ||
| }; | ||
| boxFlex: { | ||
| Group: "boxFlexGroup"; | ||
| }; | ||
| caret: { | ||
| Color: "caretColor"; | ||
| Shape: "caretShape"; | ||
| }; | ||
| clip: { | ||
| Path: "clipPath"; | ||
| }; | ||
| color: { | ||
| Scheme: "colorScheme"; | ||
| }; | ||
| columnRule: { | ||
| Color: "columnRuleColor"; | ||
| Style: "columnRuleStyle"; | ||
| Width: "columnRuleWidth"; | ||
| }; | ||
| contain: { | ||
| IntrinsicSize: "containIntrinsicSize"; | ||
| IntrinsicBlockSize: "containIntrinsicBlockSize"; | ||
| IntrinsicHeight: "containIntrinsicHeight"; | ||
| IntrinsicInlineSize: "containIntrinsicInlineSize"; | ||
| IntrinsicWidth: "containIntrinsicWidth"; | ||
| }; | ||
| container: { | ||
| Name: "containerName"; | ||
| Type: "containerType"; | ||
| }; | ||
| content: { | ||
| Visibility: "contentVisibility"; | ||
| }; | ||
| flex: { | ||
| Basis: "flexBasis"; | ||
| Direction: "flexDirection"; | ||
| Flow: "flexFlow"; | ||
| Grow: "flexGrow"; | ||
| Shrink: "flexShrink"; | ||
| Wrap: "flexWrap"; | ||
| }; | ||
| font: { | ||
| Family: "fontFamily"; | ||
| FeatureSettings: "fontFeatureSettings"; | ||
| Kerning: "fontKerning"; | ||
| LanguageOverride: "fontLanguageOverride"; | ||
| OpticalSizing: "fontOpticalSizing"; | ||
| Palette: "fontPalette"; | ||
| VariationSettings: "fontVariationSettings"; | ||
| Size: "fontSize"; | ||
| SizeAdjust: "fontSizeAdjust"; | ||
| Smooth: "fontSmooth"; | ||
| Stretch: "fontStretch"; | ||
| Style: "fontStyle"; | ||
| Synthesis: "fontSynthesis"; | ||
| SynthesisPosition: "fontSynthesisPosition"; | ||
| SynthesisSmallCaps: "fontSynthesisSmallCaps"; | ||
| SynthesisStyle: "fontSynthesisStyle"; | ||
| SynthesisWeight: "fontSynthesisWeight"; | ||
| Variant: "fontVariant"; | ||
| VariantAlternates: "fontVariantAlternates"; | ||
| VariantCaps: "fontVariantCaps"; | ||
| VariantEastAsian: "fontVariantEastAsian"; | ||
| VariantEmoji: "fontVariantEmoji"; | ||
| VariantLigatures: "fontVariantLigatures"; | ||
| VariantNumeric: "fontVariantNumeric"; | ||
| VariantPosition: "fontVariantPosition"; | ||
| Weight: "fontWeight"; | ||
| }; | ||
| fontSize: { | ||
| Adjust: "fontSizeAdjust"; | ||
| }; | ||
| fontSynthesis: { | ||
| Position: "fontSynthesisPosition"; | ||
| SmallCaps: "fontSynthesisSmallCaps"; | ||
| Style: "fontSynthesisStyle"; | ||
| Weight: "fontSynthesisWeight"; | ||
| }; | ||
| fontVariant: { | ||
| Alternates: "fontVariantAlternates"; | ||
| Caps: "fontVariantCaps"; | ||
| EastAsian: "fontVariantEastAsian"; | ||
| Emoji: "fontVariantEmoji"; | ||
| Ligatures: "fontVariantLigatures"; | ||
| Numeric: "fontVariantNumeric"; | ||
| Position: "fontVariantPosition"; | ||
| }; | ||
| grid: { | ||
| Area: "gridArea"; | ||
| AutoColumns: "gridAutoColumns"; | ||
| AutoFlow: "gridAutoFlow"; | ||
| AutoRows: "gridAutoRows"; | ||
| Column: "gridColumn"; | ||
| ColumnEnd: "gridColumnEnd"; | ||
| ColumnGap: "gridColumnGap"; | ||
| ColumnStart: "gridColumnStart"; | ||
| Gap: "gridGap"; | ||
| Row: "gridRow"; | ||
| RowEnd: "gridRowEnd"; | ||
| RowGap: "gridRowGap"; | ||
| RowStart: "gridRowStart"; | ||
| Template: "gridTemplate"; | ||
| TemplateAreas: "gridTemplateAreas"; | ||
| TemplateColumns: "gridTemplateColumns"; | ||
| TemplateRows: "gridTemplateRows"; | ||
| }; | ||
| gridColumn: { | ||
| End: "gridColumnEnd"; | ||
| Gap: "gridColumnGap"; | ||
| Start: "gridColumnStart"; | ||
| }; | ||
| gridRow: { | ||
| End: "gridRowEnd"; | ||
| Gap: "gridRowGap"; | ||
| Start: "gridRowStart"; | ||
| }; | ||
| gridTemplate: { | ||
| Areas: "gridTemplateAreas"; | ||
| Columns: "gridTemplateColumns"; | ||
| Rows: "gridTemplateRows"; | ||
| }; | ||
| initialLetter: { | ||
| Align: "initialLetterAlign"; | ||
| }; | ||
| inset: { | ||
| Block: "insetBlock"; | ||
| BlockEnd: "insetBlockEnd"; | ||
| BlockStart: "insetBlockStart"; | ||
| Inline: "insetInline"; | ||
| InlineEnd: "insetInlineEnd"; | ||
| InlineStart: "insetInlineStart"; | ||
| }; | ||
| insetBlock: { | ||
| End: "insetBlockEnd"; | ||
| Start: "insetBlockStart"; | ||
| }; | ||
| insetInline: { | ||
| End: "insetInlineEnd"; | ||
| Start: "insetInlineStart"; | ||
| }; | ||
| lineHeight: { | ||
| Step: "lineHeightStep"; | ||
| }; | ||
| listStyle: { | ||
| Image: "listStyleImage"; | ||
| Position: "listStylePosition"; | ||
| Type: "listStyleType"; | ||
| }; | ||
| margin: { | ||
| Block: "marginBlock"; | ||
| BlockEnd: "marginBlockEnd"; | ||
| BlockStart: "marginBlockStart"; | ||
| Bottom: "marginBottom"; | ||
| Inline: "marginInline"; | ||
| InlineEnd: "marginInlineEnd"; | ||
| InlineStart: "marginInlineStart"; | ||
| Left: "marginLeft"; | ||
| Right: "marginRight"; | ||
| Top: "marginTop"; | ||
| Trim: "marginTrim"; | ||
| }; | ||
| marginBlock: { | ||
| End: "marginBlockEnd"; | ||
| Start: "marginBlockStart"; | ||
| }; | ||
| marginInline: { | ||
| End: "marginInlineEnd"; | ||
| Start: "marginInlineStart"; | ||
| }; | ||
| mask: { | ||
| Border: "maskBorder"; | ||
| BorderMode: "maskBorderMode"; | ||
| BorderOutset: "maskBorderOutset"; | ||
| BorderRepeat: "maskBorderRepeat"; | ||
| BorderSlice: "maskBorderSlice"; | ||
| BorderSource: "maskBorderSource"; | ||
| BorderWidth: "maskBorderWidth"; | ||
| Clip: "maskClip"; | ||
| Composite: "maskComposite"; | ||
| Image: "maskImage"; | ||
| Mode: "maskMode"; | ||
| Origin: "maskOrigin"; | ||
| Position: "maskPosition"; | ||
| Repeat: "maskRepeat"; | ||
| Size: "maskSize"; | ||
| Type: "maskType"; | ||
| }; | ||
| maskBorder: { | ||
| Mode: "maskBorderMode"; | ||
| Outset: "maskBorderOutset"; | ||
| Repeat: "maskBorderRepeat"; | ||
| Slice: "maskBorderSlice"; | ||
| Source: "maskBorderSource"; | ||
| Width: "maskBorderWidth"; | ||
| }; | ||
| offset: { | ||
| Anchor: "offsetAnchor"; | ||
| Distance: "offsetDistance"; | ||
| Path: "offsetPath"; | ||
| Position: "offsetPosition"; | ||
| Rotate: "offsetRotate"; | ||
| }; | ||
| outline: { | ||
| Color: "outlineColor"; | ||
| Offset: "outlineOffset"; | ||
| Style: "outlineStyle"; | ||
| Width: "outlineWidth"; | ||
| }; | ||
| overflow: { | ||
| Anchor: "overflowAnchor"; | ||
| Block: "overflowBlock"; | ||
| ClipBox: "overflowClipBox"; | ||
| ClipMargin: "overflowClipMargin"; | ||
| Inline: "overflowInline"; | ||
| Wrap: "overflowWrap"; | ||
| X: "overflowX"; | ||
| Y: "overflowY"; | ||
| }; | ||
| overscrollBehavior: { | ||
| Block: "overscrollBehaviorBlock"; | ||
| Inline: "overscrollBehaviorInline"; | ||
| X: "overscrollBehaviorX"; | ||
| Y: "overscrollBehaviorY"; | ||
| }; | ||
| padding: { | ||
| Block: "paddingBlock"; | ||
| BlockEnd: "paddingBlockEnd"; | ||
| BlockStart: "paddingBlockStart"; | ||
| Bottom: "paddingBottom"; | ||
| Inline: "paddingInline"; | ||
| InlineEnd: "paddingInlineEnd"; | ||
| InlineStart: "paddingInlineStart"; | ||
| Left: "paddingLeft"; | ||
| Right: "paddingRight"; | ||
| Top: "paddingTop"; | ||
| }; | ||
| paddingBlock: { | ||
| End: "paddingBlockEnd"; | ||
| Start: "paddingBlockStart"; | ||
| }; | ||
| paddingInline: { | ||
| End: "paddingInlineEnd"; | ||
| Start: "paddingInlineStart"; | ||
| }; | ||
| page: { | ||
| BreakAfter: "pageBreakAfter"; | ||
| BreakBefore: "pageBreakBefore"; | ||
| BreakInside: "pageBreakInside"; | ||
| }; | ||
| perspective: { | ||
| Origin: "perspectiveOrigin"; | ||
| }; | ||
| scrollMargin: { | ||
| Block: "scrollMarginBlock"; | ||
| BlockStart: "scrollMarginBlockStart"; | ||
| BlockEnd: "scrollMarginBlockEnd"; | ||
| Bottom: "scrollMarginBottom"; | ||
| Inline: "scrollMarginInline"; | ||
| InlineStart: "scrollMarginInlineStart"; | ||
| InlineEnd: "scrollMarginInlineEnd"; | ||
| Left: "scrollMarginLeft"; | ||
| Right: "scrollMarginRight"; | ||
| Top: "scrollMarginTop"; | ||
| }; | ||
| scrollMarginBlock: { | ||
| Start: "scrollMarginBlockStart"; | ||
| End: "scrollMarginBlockEnd"; | ||
| }; | ||
| scrollMarginInline: { | ||
| Start: "scrollMarginInlineStart"; | ||
| End: "scrollMarginInlineEnd"; | ||
| }; | ||
| scrollPadding: { | ||
| Block: "scrollPaddingBlock"; | ||
| BlockStart: "scrollPaddingBlockStart"; | ||
| BlockEnd: "scrollPaddingBlockEnd"; | ||
| Bottom: "scrollPaddingBottom"; | ||
| Inline: "scrollPaddingInline"; | ||
| InlineStart: "scrollPaddingInlineStart"; | ||
| InlineEnd: "scrollPaddingInlineEnd"; | ||
| Left: "scrollPaddingLeft"; | ||
| Right: "scrollPaddingRight"; | ||
| Top: "scrollPaddingTop"; | ||
| }; | ||
| scrollPaddingBlock: { | ||
| Start: "scrollPaddingBlockStart"; | ||
| End: "scrollPaddingBlockEnd"; | ||
| }; | ||
| scrollPaddingInline: { | ||
| Start: "scrollPaddingInlineStart"; | ||
| End: "scrollPaddingInlineEnd"; | ||
| }; | ||
| scrollSnapType: { | ||
| X: "scrollSnapTypeX"; | ||
| Y: "scrollSnapTypeY"; | ||
| }; | ||
| scrollTimeline: { | ||
| Axis: "scrollTimelineAxis"; | ||
| Name: "scrollTimelineName"; | ||
| }; | ||
| textAlign: { | ||
| Last: "textAlignLast"; | ||
| }; | ||
| textDecoration: { | ||
| Color: "textDecorationColor"; | ||
| Line: "textDecorationLine"; | ||
| Skip: "textDecorationSkip"; | ||
| SkipInk: "textDecorationSkipInk"; | ||
| Style: "textDecorationStyle"; | ||
| Thickness: "textDecorationThickness"; | ||
| }; | ||
| textDecorationSkip: { | ||
| Ink: "textDecorationSkipInk"; | ||
| }; | ||
| textEmphasis: { | ||
| Color: "textEmphasisColor"; | ||
| Position: "textEmphasisPosition"; | ||
| Style: "textEmphasisStyle"; | ||
| }; | ||
| transform: { | ||
| Box: "transformBox"; | ||
| Origin: "transformOrigin"; | ||
| Style: "transformStyle"; | ||
| }; | ||
| transition: { | ||
| Behavior: "transitionBehavior"; | ||
| Delay: "transitionDelay"; | ||
| Duration: "transitionDuration"; | ||
| Property: "transitionProperty"; | ||
| TimingFunction: "transitionTimingFunction"; | ||
| }; | ||
| viewTimeline: { | ||
| Axis: "viewTimelineAxis"; | ||
| Inset: "viewTimelineInset"; | ||
| Name: "viewTimelineName"; | ||
| }; | ||
| whiteSpace: { | ||
| Collapse: "whiteSpaceCollapse"; | ||
| Trim: "whiteSpaceTrim"; | ||
| }; | ||
| }; |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Large nested properties map.
It covers numerous CSS expansions in detail. Consider splitting it into multiple files or auto-generating for better maintainability, especially if future specs add more properties.
|
Triggered from #182 by @black7375. Checking if we can fast forward Target branch ( commit 871e38ae97311961dfd3adc543279459a70c5f68 (HEAD -> main, origin/main)
Author: alstjr7375 <alstjr7375@daum.net>
Date: Sat Apr 5 23:52:25 2025 +0900
Chore: Disable minify optionPull request ( commit af10c2e14966cfe08fd237dca3345c13b2be575e (pull_request/build-system)
Author: alstjr7375 <alstjr7375@daum.net>
Date: Sun Apr 20 02:03:21 2025 +0900
Chore: Internal resolution error at node16 packagesIt is possible to fast forward |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (9)
.changeset/bitter-hornets-beg.md (2)
19-19: Convert emphasis to a proper Markdown heading
Using**Big Changes**could be replaced with a heading for better markdown semantics and to satisfy markdownlint rules. For example:## Big Changes🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
19-19: Emphasis used instead of a heading
null(MD036, no-emphasis-as-heading)
20-21: Rephrase bullet points for clarity
The bullet text could be refined for grammar and clarity. For example:- co-location: [@sangkukbae](https://github.com/sangkukbae)'s work, It's still experimental. - packages: `node16` supports + Experimental co-location feature contributed by [@sangkukbae](https://github.com/sangkukbae). + Add support for Node.js 16 in all packages.packages/react/src/index.ts (1)
78-82: Consider updating the error message to be more specific.This error message mentions build configuration issues, but given the PR's focus on distribution CI and ESM, it might be helpful to provide more specific guidance on what could be causing this function to be improperly included in the final bundle.
- throw new Error( - "This function shouldn't be there in your final code. If you're seeing this, there is probably some issue with your build config." - ); + throw new Error( + "This function should not appear in your final code. It should be replaced during the build process. If you're seeing this error, check your ESM configuration and ensure proper tree-shaking is enabled." + );packages/css-additional-types/codegen/index.ts (6)
27-30: Consider adding tests for theisCommafunctionThis function identifies comma-separated syntaxes by looking for specific patterns, but lacks comprehensive test coverage. Consider adding tests to verify it correctly identifies all comma-separated syntaxes in MDN data.
102-102: Remove or explain debugging commentThe comment "For debugging" doesn't provide clear context on what's being debugged or why the syntax is preserved. Either remove the comment if it's no longer needed or provide more explanation about its purpose.
- acc[0][kebabToCamel(key)] = [syntax]; // For debugging + acc[0][kebabToCamel(key)] = [syntax]; // Store original syntax for verification purposes
119-121: Consider using template literals for better readabilityThe
arrayKeyTypesfunction currently uses string concatenation which can be hard to read. Template literals would improve code clarity.-function arrayKeyTypes(arr: string[]) { - return arr.map((key) => `"${key}"`).join("\n | "); -} +function arrayKeyTypes(arr: string[]) { + return arr.map((key) => `"${key}"`).join("\n | "); +}
135-137: Add validation formakeNestedKeyfunctionThis function assumes that nested keys always follow the pattern
parentKey-nestedPart. Consider adding validation to handle unexpected formats or edge cases.function makeNestedKey(originKey: string, shorthandKey: string) { + if (!originKey.startsWith(`${shorthandKey}-`)) { + console.warn(`Expected ${originKey} to start with ${shorthandKey}-`); + return kebabToCamel(originKey); + } return kebabToCamel(removeFirstString(originKey, shorthandKey)); }
160-161: Add more context to theDeepWriteabletypeThe comment links to Stack Overflow but doesn't explain why this utility type is needed in this context. Consider adding a more specific explanation of its purpose here.
-// https://stackoverflow.com/questions/42999983/typescript-removing-readonly-modifier +// Utility type to remove readonly modifiers from nested objects +// Used for ShorthandProperties to allow modification in certain contexts +// See: https://stackoverflow.com/questions/42999983/typescript-removing-readonly-modifier type DeepWriteable<T> = { -readonly [P in keyof T]: DeepWriteable<T[P]> };
179-194: Simplify directory creation with recursive optionThe error handling for directory creation is overly complex. Consider using the recursive option of
mkdirSyncto simplify the code.function main() { - try { - accessSync(saveDir); - } catch (error) { - const err = error as FileError; - if (err.code === "ENOENT") { - try { - mkdirSync(saveDir); - } catch (error) { - const err = error as FileError; - if (err.code !== "EEXIST") { - throw err; - } - } - } - } + try { + // Create directory if it doesn't exist + mkdirSync(saveDir, { recursive: true }); + } catch (error) { + const err = error as FileError; + if (err.code !== "EEXIST") { + throw err; + } + }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (34)
.changeset/bitter-hornets-beg.md(1 hunks)configs/tsconfig-custom/tsconfig.base.json(6 hunks)configs/vite-config-custom/index.js(5 hunks)configs/vite-config-custom/package.json(1 hunks)packages/babel/src/index.ts(2 hunks)packages/babel/src/styled.ts(1 hunks)packages/babel/src/transforms/callExpression.ts(1 hunks)packages/babel/src/transforms/postprocess.ts(1 hunks)packages/babel/src/transforms/preprocess.ts(1 hunks)packages/babel/src/utils.ts(1 hunks)packages/css-additional-types/codegen/index.ts(1 hunks)packages/css-additional-types/codegen/simple-pseudo.ts(1 hunks)packages/css/src/css/index.ts(1 hunks)packages/css/src/index.ts(2 hunks)packages/css/src/rules/createRuntimeFn.ts(1 hunks)packages/css/src/rules/index.ts(2 hunks)packages/css/src/rules/utils.ts(1 hunks)packages/integration/src/index.ts(1 hunks)packages/react/src/index.ts(1 hunks)packages/transform-to-vanilla/src/index.ts(1 hunks)packages/transform-to-vanilla/src/transform-keys/at-rules.ts(1 hunks)packages/transform-to-vanilla/src/transform-keys/complex-selectors.ts(1 hunks)packages/transform-to-vanilla/src/transform-keys/css-var.ts(1 hunks)packages/transform-to-vanilla/src/transform-keys/simple-pseudo-selectors.ts(1 hunks)packages/transform-to-vanilla/src/transform-object/index.ts(1 hunks)packages/transform-to-vanilla/src/transform-object/rule-context.ts(1 hunks)packages/transform-to-vanilla/src/transform-object/variant-reference.ts(1 hunks)packages/transform-to-vanilla/src/transform-values/css-var.ts(1 hunks)packages/transform-to-vanilla/src/transform-values/property-reference.ts(1 hunks)packages/transform-to-vanilla/src/transform.ts(1 hunks)packages/transform-to-vanilla/src/types/fontface-rule.ts(1 hunks)packages/transform-to-vanilla/src/types/simple-pseudo.ts(1 hunks)packages/transform-to-vanilla/src/types/style-rule.ts(1 hunks)packages/vite/src/index.ts(1 hunks)
✅ Files skipped from review due to trivial changes (24)
- packages/babel/src/transforms/callExpression.ts
- packages/babel/src/utils.ts
- packages/transform-to-vanilla/src/types/fontface-rule.ts
- packages/babel/src/transforms/preprocess.ts
- packages/transform-to-vanilla/src/transform-keys/css-var.ts
- packages/transform-to-vanilla/src/transform-keys/complex-selectors.ts
- packages/babel/src/transforms/postprocess.ts
- packages/css/src/index.ts
- packages/transform-to-vanilla/src/types/simple-pseudo.ts
- packages/css-additional-types/codegen/simple-pseudo.ts
- packages/transform-to-vanilla/src/transform-object/variant-reference.ts
- packages/css/src/rules/utils.ts
- packages/css/src/rules/createRuntimeFn.ts
- packages/transform-to-vanilla/src/transform-keys/at-rules.ts
- packages/integration/src/index.ts
- packages/transform-to-vanilla/src/transform-values/property-reference.ts
- packages/babel/src/styled.ts
- packages/transform-to-vanilla/src/index.ts
- packages/transform-to-vanilla/src/transform-values/css-var.ts
- packages/transform-to-vanilla/src/transform-object/rule-context.ts
- packages/transform-to-vanilla/src/transform.ts
- packages/css/src/rules/index.ts
- packages/babel/src/index.ts
- packages/transform-to-vanilla/src/transform-object/index.ts
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/css/src/css/index.ts
🧰 Additional context used
🧬 Code Graph Analysis (1)
packages/css-additional-types/codegen/index.ts (2)
packages/css-additional-types/codegen/utils.ts (4)
kebabToCamel(2-13)isArray(15-17)removeFirstString(23-25)stringify(19-21)packages/css-additional-types/codegen/simple-pseudo.ts (1)
camelPseudo(102-104)
🪛 markdownlint-cli2 (0.17.2)
.changeset/bitter-hornets-beg.md
19-19: Emphasis used instead of a heading
null
(MD036, no-emphasis-as-heading)
🪛 Biome (1.9.4)
configs/tsconfig-custom/tsconfig.base.json
[error] 26-26: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 26-26: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 26-26: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 26-28: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 26-26: JSON standard does not allow comments.
(parse)
[error] 28-28: JSON standard does not allow comments.
(parse)
[error] 29-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-30: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-29: JSON standard does not allow comments.
(parse)
[error] 31-31: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 31-31: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 31-31: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 31-31: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 31-31: JSON standard does not allow comments.
(parse)
[error] 46-46: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 46-46: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 46-46: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 46-50: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 46-46: JSON standard does not allow comments.
(parse)
[error] 51-51: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 51-51: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 51-51: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 51-51: JSON standard does not allow comments.
(parse)
[error] 61-61: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 61-61: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 61-61: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 61-62: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 61-61: JSON standard does not allow comments.
(parse)
[error] 63-63: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 63-63: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 63-63: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 63-63: JSON standard does not allow comments.
(parse)
[error] 85-85: JSON standard does not allow comments.
(parse)
[error] 86-86: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 86-86: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 86-86: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 86-89: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 86-86: JSON standard does not allow comments.
(parse)
[error] 119-119: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 119-119: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 119-119: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 119-119: JSON standard does not allow comments.
(parse)
🔇 Additional comments (19)
packages/vite/src/index.ts (1)
4-5: Good update to use the node: protocol for built-in modules!Using the
node:prefix for importing Node.js core modules is a recommended best practice that:
- Makes it explicit that these are Node.js built-in modules
- Ensures consistent behavior between CommonJS and ESM modules
- Improves module resolution performance
- Aligns with your PR objective for ESM testing
This change follows modern Node.js conventions and contributes to the project's overall module resolution consistency improvements.
.changeset/bitter-hornets-beg.md (1)
1-17: Well-documented version bumps
The changeset correctly lists all updated packages with minor version bumps and uses the standard front-matter separators.packages/transform-to-vanilla/src/transform-keys/simple-pseudo-selectors.ts (1)
1-3: Module path updates align with ESM requirements.The addition of
.jsextensions to import paths is a necessary change for ECMAScript Modules (ESM) compatibility. This aligns with the PR objective of enhancing CI processes and testing with ESM.packages/transform-to-vanilla/src/types/style-rule.ts (1)
14-15: Module path updates align with ESM requirements.The addition of
.jsextensions to import paths is a necessary change for ECMAScript Modules (ESM) compatibility. This aligns with the PR objective of enhancing CI processes and testing with ESM.packages/react/src/index.ts (1)
20-20:Details
❓ Verification inconclusive
API surface narrowed and updated for ESM compatibility.
The export statement has been changed to only expose the
$$stylednamed export instead of potentially exporting all symbols from the runtime module. The.jsextension has also been added to comply with ESM module resolution standards.
🏁 Script executed:
#!/bin/bash # Check if this change might break existing imports in the codebase echo "Checking for potential breaking imports from runtime..." rg -i --no-filename "import \{(?:.+,\s*)(?!.*\$\$styled)(.*?)(?:,\s*.+)?\} from ['\"]@mincho-js/react/(?:.*?/)?runtime['\"]" --glob "*.{js,jsx,ts,tsx}" echo "Checking for direct star imports that might be affected..." rg -i --no-filename "import \* as .+ from ['\"]@mincho-js/react/(?:.*?/)?runtime['\"]" --glob "*.{js,jsx,ts,tsx}"Length of output: 844
Verify runtime imports after narrowing ESM export
You’ve updatedpackages/react/src/index.tsto only export$$styled(instead of all symbols) and added the.jsextension for ESM compliance. This may break any existing imports of other runtime symbols.• Check for any named imports from
@mincho-js/react/runtime(aside from$$styled).
• Check for any star imports (e.g.import * as runtime from '…/runtime').
• Ensure all runtime import paths now include the.jsextension.configs/tsconfig-custom/tsconfig.base.json (1)
26-26: Strong improvements for Node.js ESM compatibility and declaration generationThe updated TypeScript configuration significantly improves the project's module resolution strategy:
moduleDetection: "force"ensures consistent module treatment across files- The switch to
module: "NodeNext"andmoduleResolution: "nodenext"provides proper Node.js ESM/CJS interoperabilityrewriteRelativeImportExtensions: trueensures declaration files correctly reference JS extension equivalents- Setting
declaration: trueandemitDeclarationOnly: truealigns with the PR objective of focusing on type generationThese changes properly support the distribution CI improvements mentioned in the PR objectives by optimizing the TypeScript configuration for declaration file generation and modern module compatibility.
Also applies to: 29-31, 46-50, 61-63, 66-66, 82-82, 87-89
🧰 Tools
🪛 Biome (1.9.4)
[error] 26-26: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 26-26: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 26-26: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 26-28: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 26-26: JSON standard does not allow comments.
(parse)
configs/vite-config-custom/package.json (1)
18-21: Added dependency for concurrent processingThe addition of
@supercharge/promise-poolas a runtime dependency is appropriate. This library will be used in theindex.jsfile for concurrent processing of declaration files, which improves build performance.configs/vite-config-custom/index.js (9)
3-7: Appropriate updates to importsSwitching to async filesystem operations from
fs/promisesand adding thePromisePoolimport properly supports the new async declaration file processing functionality.
33-40: Good refactoring with explicit path variablesExtracting explicit path variables and adding CI detection improves code maintainability. The clear naming of path variables (packageRoot, entryRoot, entryFile, outEsmDir, outCjsDir) makes the configuration more understandable and easier to maintain.
41-75: Well-structured conditional plugin configurationThe conditional plugin configuration based on CI environment is well-implemented:
- DTS plugins are skipped in CI to improve performance where type declaration files aren't needed
- The separate configurations for ESM and CJS output directories are clear and well-structured
- The afterBuild hook properly handles CJS declaration file renaming
This optimization aligns perfectly with the PR's goal of enhancing distribution CI by conditionally applying type-building steps.
111-118: Effective build target optimization for CIThe changes to the build configuration are well-considered:
- Using explicit entry file assignment
- Conditionally limiting formats to just ESM in CI environments
- Setting a specific ES2020 target
- Disabling minification
These changes align with the PR's focus on optimizing the CI process while maintaining compatibility.
128-130: Added cache directory configurationAdding cache directory configuration to the common builder improves build performance through effective caching. This aligns with the PR objective of enhancing the CI process.
167-186: Well-implemented async declaration file processorThe
renameDeclarationFilesfunction implements robust error handling and logging for the declaration file renaming process. The concurrency control with PromisePool is an excellent approach to improve performance while avoiding excessive system resource usage.
188-216: Efficient recursive file collection with concurrencyThe
collectDeclarationFilesfunction efficiently traverses directories to collect declaration files using a concurrent approach. The error handling is robust, and the function maintains the file list even if errors occur in some directories.
218-228: Thorough declaration file processingThe
processCtsFilefunction correctly:
- Modifies import paths from .js to .cjs
- Renames files from .d.ts to .d.cts
- Preserves file content encoding
This ensures proper CommonJS compatibility for declaration files.
230-239: Robust CI environment detection with overrideThe
isGithubCIfunction properly detects GitHub CI environments while providing an override through thePACKAGE_PUBLISHenvironment variable. This flexibility allows for running the full build process when needed, even in CI environments.packages/css-additional-types/codegen/index.ts (3)
5-5:Details
✅ Verification successful
Be aware of browser compatibility for import assertions
The
with { type: "json" }import assertion is a newer ECMAScript feature that may cause compatibility issues with older TypeScript versions or build systems. Ensure your toolchain supports this syntax.
🏁 Script executed:
#!/bin/bash # Verify TypeScript version and Node.js version for import assertion support node -v npx tsc --version grep -r "\"typescript\":" package.jsonLength of output: 731
No action needed: import assertions supported by Node v22.9.0 and TypeScript ^5.8.3
We’ve verified that this code runs in a Node‐based codegen script on Node v22.9.0 (which natively supports JSON import assertions) and that your project uses TypeScript ^5.8.3 (which also supports
import … with { type: "json" }). No further changes are required.
32-42:Details
❓ Verification inconclusive
The
spaceRegexpattern may be too genericThe regular expression
spaceRegexis used to identify space-separated syntaxes, but the pattern/<?\w-+>? <?\w-+>?/might match unexpected cases. Consider strengthening this pattern with more specific constraints or adding additional validation.
🏁 Script executed:
#!/bin/bash # Check for potential false positives in space syntax detection echo "Examining unique syntax patterns in MDN data:" node -e " const syntaxes = require('mdn-data/css/syntaxes.json'); const spaceRegex = /<?[\\w-]+>? <?[\\w-]+>?/; const matches = []; const nonMatches = []; for (const [key, value] of Object.entries(syntaxes)) { if (spaceRegex.test(value.syntax) && !value.syntax.includes('&&') && !value.syntax.includes('||') && !value.syntax.includes('*') && !value.syntax.includes('+') && !value.syntax.includes('?')) { matches.push({ key, syntax: value.syntax }); } else if (!spaceRegex.test(value.syntax) && (value.syntax.includes(' ') && !value.syntax.includes(', '))) { nonMatches.push({ key, syntax: value.syntax }); } } console.log('=== Potential false positives (spaceRegex matches but no other indicators) ==='); console.log(JSON.stringify(matches, null, 2)); console.log('\n=== Potential false negatives (has spaces but spaceRegex misses) ==='); console.log(JSON.stringify(nonMatches, null, 2)); "Length of output: 1901
The
mdn-datamodule wasn’t found in your sandbox, so the regex‐validation script couldn’t run. Please manually verify that:
mdn-datais installed underpackages/css-additional-types/node_modules/mdn-data- You’re pointing to the correct
css/syntaxes.jsonpath when requiring it- Re‑run the check to collect any false positives/negatives for
spaceRegexOnce you have the MDN syntaxes loaded, examine the outputs and strengthen the pattern (e.g. anchor it, require one or more space‑separated tokens, restrict allowed characters) to avoid unintended matches.
68-88:Details
❓ Verification inconclusive
Watch for potential stack overflows in recursive
syntaxFilterThe
syntaxFilterfunction uses recursion to expand syntax dependencies. With deeply nested syntaxes, this could potentially cause stack overflow issues. Consider adding a depth limit or converting to an iterative approach.
🏁 Script executed:
#!/bin/bash # Check recursion depth in syntax filter echo "Analyzing recursion depth in syntaxFilter:" node -e " const syntaxes = require('mdn-data/css/syntaxes.json'); const properties = require('mdn-data/css/properties.json'); function countReferences(syntaxName, visited = new Set()) { if (visited.has(syntaxName)) return { depth: 0, circular: true }; const newVisited = new Set([...visited, syntaxName]); const syntax = syntaxes[syntaxName]?.syntax; if (!syntax) return { depth: 0, circular: false }; const references = []; const refRegex = /<([^>]+)>/g; let match; while ((match = refRegex.exec(syntax)) !== null) { const ref = match[1]; if (syntaxes[ref]) { references.push(ref); } } if (references.length === 0) { return { depth: 1, circular: false }; } const results = references.map(ref => countReferences(ref, newVisited)); const maxDepth = Math.max(...results.map(r => r.depth)); const hasCircular = results.some(r => r.circular); return { depth: maxDepth + 1, circular: hasCircular }; } const depths = []; for (const key of Object.keys(syntaxes)) { const result = countReferences(key); depths.push({ syntax: key, depth: result.depth, circular: result.circular }); } // Sort by depth (highest first) depths.sort((a, b) => b.depth - a.depth); console.log('Top 10 deepest syntax references:'); console.log(depths.slice(0, 10)); console.log('\nCircular references:'); console.log(depths.filter(d => d.circular)); "Length of output: 2307
Review recursion safety in
syntaxFilterI couldn’t load the CSS syntax dataset in this environment to measure how deep the dependency graph can go, so please manually verify the maximum recursion depth of
syntaxFilter. If there’s any risk of very deep or circular chains, consider:
- Introducing a maximum‑depth parameter (e.g.
syntaxFilter(syntaxes, seen, depth = 0)).- Refactoring the recursion into an iterative loop (e.g. using a stack or queue) to avoid potential stack overflows.
| export const nestedPropertiesMap: NestedPropertiesMap = ${stringifyNested}; | ||
| export type NestedPropertiesMap = ${stringifyNested}; |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Reuse type definition to avoid duplication
The nestedPropertiesMap is defined both as a constant and then as a type using the same structure. This creates maintenance issues if the structure changes. Consider using typeof to derive the type from the constant.
export const nestedPropertiesMap: NestedPropertiesMap = ${stringifyNested};
-export type NestedPropertiesMap = ${stringifyNested};
+export type NestedPropertiesMap = typeof nestedPropertiesMap;📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| export const nestedPropertiesMap: NestedPropertiesMap = ${stringifyNested}; | |
| export type NestedPropertiesMap = ${stringifyNested}; | |
| export const nestedPropertiesMap: NestedPropertiesMap = ${stringifyNested}; | |
| export type NestedPropertiesMap = typeof nestedPropertiesMap; |
| const stream = createWriteStream(savePath); | ||
| stream.write(result); | ||
| stream.end(); |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Add error handling for file writing
The code has error handling for directory creation but not for file writing. Consider adding a try-catch block around the file writing operations and logging any errors.
- const stream = createWriteStream(savePath);
- stream.write(result);
- stream.end();
+ try {
+ const stream = createWriteStream(savePath);
+ stream.write(result);
+ stream.end();
+ console.log(`Successfully wrote types to ${savePath}`);
+ } catch (error) {
+ console.error(`Failed to write types to ${savePath}:`, error);
+ throw error;
+ }📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| const stream = createWriteStream(savePath); | |
| stream.write(result); | |
| stream.end(); | |
| try { | |
| const stream = createWriteStream(savePath); | |
| stream.write(result); | |
| stream.end(); | |
| console.log(`Successfully wrote types to ${savePath}`); | |
| } catch (error) { | |
| console.error(`Failed to write types to ${savePath}:`, error); | |
| throw error; | |
| } |
|
Triggered from #182 by @black7375. Checking if we can fast forward Target branch ( commit 871e38ae97311961dfd3adc543279459a70c5f68 (HEAD -> main, origin/main)
Author: alstjr7375 <alstjr7375@daum.net>
Date: Sat Apr 5 23:52:25 2025 +0900
Chore: Disable minify optionPull request ( commit 58881db1fa8cd3f8ff0e0a3284a80279f9a6d3fd (pull_request/build-system)
Author: alstjr7375 <alstjr7375@daum.net>
Date: Sun Apr 20 02:09:02 2025 +0900
Chore: Internal resolution error at node16 packagesIt is possible to fast forward |
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
.changeset/bitter-hornets-beg.md (1)
19-21: Consider using proper markdown heading syntaxWhile the content is clear, using proper markdown heading syntax (e.g.,
## Big Changes) would be more semantically correct than bold text.-**Big Changes** +## Big Changes🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
19-19: Emphasis used instead of a heading
null(MD036, no-emphasis-as-heading)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (35)
.changeset/bitter-hornets-beg.md(1 hunks)configs/tsconfig-custom/tsconfig.base.json(6 hunks)configs/vite-config-custom/index.js(5 hunks)configs/vite-config-custom/package.json(1 hunks)packages/babel/src/index.ts(2 hunks)packages/babel/src/styled.ts(1 hunks)packages/babel/src/transforms/callExpression.ts(1 hunks)packages/babel/src/transforms/postprocess.ts(1 hunks)packages/babel/src/transforms/preprocess.ts(1 hunks)packages/babel/src/utils.ts(1 hunks)packages/css-additional-types/codegen/index.ts(1 hunks)packages/css-additional-types/codegen/simple-pseudo.ts(1 hunks)packages/css/src/css/index.ts(1 hunks)packages/css/src/index.ts(2 hunks)packages/css/src/rules/createRuntimeFn.ts(1 hunks)packages/css/src/rules/index.ts(2 hunks)packages/css/src/rules/utils.ts(1 hunks)packages/integration/src/index.ts(1 hunks)packages/react/src/index.ts(1 hunks)packages/transform-to-vanilla/src/index.ts(1 hunks)packages/transform-to-vanilla/src/transform-keys/at-rules.ts(1 hunks)packages/transform-to-vanilla/src/transform-keys/complex-selectors.ts(1 hunks)packages/transform-to-vanilla/src/transform-keys/css-var.ts(1 hunks)packages/transform-to-vanilla/src/transform-keys/simple-pseudo-selectors.ts(1 hunks)packages/transform-to-vanilla/src/transform-object/index.ts(1 hunks)packages/transform-to-vanilla/src/transform-object/rule-context.ts(1 hunks)packages/transform-to-vanilla/src/transform-object/variant-reference.ts(1 hunks)packages/transform-to-vanilla/src/transform-values/css-var.ts(1 hunks)packages/transform-to-vanilla/src/transform-values/property-reference.ts(1 hunks)packages/transform-to-vanilla/src/transform.ts(3 hunks)packages/transform-to-vanilla/src/types/fontface-rule.ts(1 hunks)packages/transform-to-vanilla/src/types/simple-pseudo.ts(1 hunks)packages/transform-to-vanilla/src/types/style-rule.ts(1 hunks)packages/vite/src/index.ts(1 hunks)turbo.json(3 hunks)
✅ Files skipped from review due to trivial changes (13)
- packages/transform-to-vanilla/src/transform-keys/css-var.ts
- packages/transform-to-vanilla/src/types/simple-pseudo.ts
- packages/transform-to-vanilla/src/transform-values/css-var.ts
- packages/transform-to-vanilla/src/transform-object/variant-reference.ts
- packages/babel/src/transforms/postprocess.ts
- packages/transform-to-vanilla/src/types/fontface-rule.ts
- packages/babel/src/transforms/callExpression.ts
- packages/transform-to-vanilla/src/transform-keys/at-rules.ts
- packages/transform-to-vanilla/src/transform.ts
- packages/css/src/rules/index.ts
- packages/transform-to-vanilla/src/transform-object/index.ts
- packages/transform-to-vanilla/src/transform-keys/complex-selectors.ts
- packages/babel/src/index.ts
🚧 Files skipped from review as they are similar to previous changes (19)
- packages/css/src/rules/createRuntimeFn.ts
- packages/babel/src/utils.ts
- packages/transform-to-vanilla/src/types/style-rule.ts
- packages/babel/src/transforms/preprocess.ts
- packages/css/src/rules/utils.ts
- packages/transform-to-vanilla/src/transform-values/property-reference.ts
- packages/babel/src/styled.ts
- packages/transform-to-vanilla/src/transform-keys/simple-pseudo-selectors.ts
- packages/vite/src/index.ts
- packages/react/src/index.ts
- packages/transform-to-vanilla/src/index.ts
- packages/integration/src/index.ts
- packages/css-additional-types/codegen/simple-pseudo.ts
- configs/vite-config-custom/package.json
- packages/transform-to-vanilla/src/transform-object/rule-context.ts
- packages/css/src/css/index.ts
- turbo.json
- packages/css/src/index.ts
- packages/css-additional-types/codegen/index.ts
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
.changeset/bitter-hornets-beg.md
19-19: Emphasis used instead of a heading
null
(MD036, no-emphasis-as-heading)
🪛 Biome (1.9.4)
configs/tsconfig-custom/tsconfig.base.json
[error] 26-26: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 26-26: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 26-26: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 26-28: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 26-26: JSON standard does not allow comments.
(parse)
[error] 28-28: JSON standard does not allow comments.
(parse)
[error] 29-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-30: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-29: JSON standard does not allow comments.
(parse)
[error] 31-31: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 31-31: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 31-31: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 31-31: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 31-31: JSON standard does not allow comments.
(parse)
[error] 46-46: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 46-46: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 46-46: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 46-50: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 46-46: JSON standard does not allow comments.
(parse)
[error] 51-51: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 51-51: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 51-51: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 51-51: JSON standard does not allow comments.
(parse)
[error] 61-61: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 61-61: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 61-61: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 61-62: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 61-61: JSON standard does not allow comments.
(parse)
[error] 63-63: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 63-63: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 63-63: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 63-63: JSON standard does not allow comments.
(parse)
[error] 85-85: JSON standard does not allow comments.
(parse)
[error] 86-86: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 86-86: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 86-86: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 86-89: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 86-86: JSON standard does not allow comments.
(parse)
[error] 119-119: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 119-119: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 119-119: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 119-119: JSON standard does not allow comments.
(parse)
🔇 Additional comments (12)
configs/tsconfig-custom/tsconfig.base.json (4)
26-26: Good addition ofmoduleDetection: "force"This setting ensures all files are treated as modules, providing consistent module behavior throughout the codebase.
🧰 Tools
🪛 Biome (1.9.4)
[error] 26-26: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 26-26: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 26-26: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 26-28: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 26-26: JSON standard does not allow comments.
(parse)
29-31: Appropriate module settings for Node.js ESM compatibilityThe shift to
"module": "NodeNext"and"moduleResolution": "nodenext"aligns with modern Node.js ESM practices, ensuring proper resolution of ESM and CJS modules based on file extensions and package.json configuration.🧰 Tools
🪛 Biome (1.9.4)
[error] 29-29: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 29-29: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 29-29: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 29-30: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 29-29: JSON standard does not allow comments.
(parse)
[error] 31-31: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 31-31: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 31-31: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 31-31: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 31-31: JSON standard does not allow comments.
(parse)
46-46: Good use ofrewriteRelativeImportExtensionsThis option automatically handles the rewriting of TypeScript file extensions in relative imports to their JavaScript equivalents in output files, which is essential for ESM compatibility where extensions are required.
🧰 Tools
🪛 Biome (1.9.4)
[error] 46-46: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 46-46: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 46-46: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 46-50: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 46-46: JSON standard does not allow comments.
(parse)
61-63: Declaration-only output is aligned with CI optimizationEnabling
declarationandemitDeclarationOnlysupports the PR objective of focusing on type building without full compilation, which is efficient for CI processes that only need to validate types.🧰 Tools
🪛 Biome (1.9.4)
[error] 61-61: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 61-61: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 61-61: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 61-62: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 61-61: JSON standard does not allow comments.
(parse)
[error] 63-63: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 63-63: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 63-63: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 63-63: JSON standard does not allow comments.
(parse)
configs/vite-config-custom/index.js (7)
3-7: Good migration to asynchronous file operationsSwitching from synchronous
fsmethods to asynchronousfs/promisesAPIs and incorporatingPromisePoolimproves performance by avoiding blocking operations during file processing.
33-38: Clear path variable definitions improve maintainabilityExplicitly defining path variables for package root, entry points, and output directories makes the configuration more readable and maintainable.
39-73: Smarter conditional DTS generation based on environmentThe CI-aware approach to TypeScript declaration generation is efficient - skipping unnecessary steps in CI environments while maintaining full functionality in development/publishing workflows.
113-118: CI-optimized build configurationLimiting to ESM-only builds in CI and explicitly disabling minification speeds up the build process while still verifying essential functionality.
128-130: Good caching strategyAdding a dedicated cache directory for Vite improves build performance across runs, especially in CI environments.
167-228: Well-implemented declaration file processingThe implementation of concurrent declaration file processing with error handling and proper import path adjustments is robust. The use of
PromisePoolwith controlled concurrency is particularly good for handling large numbers of files efficiently.
230-239: Clear CI detection logicThe
isGithubCIfunction provides a clear, centralized way to detect the execution environment with appropriate handling of thePACKAGE_PUBLISHoverride..changeset/bitter-hornets-beg.md (1)
1-17: Comprehensive version updates documentedThe changeset correctly documents minor version updates across multiple packages, which is essential for proper versioning and release management.
|
Triggered from #182 by @black7375. Checking if we can fast forward Target branch ( commit 871e38ae97311961dfd3adc543279459a70c5f68 (HEAD -> main, origin/main)
Author: alstjr7375 <alstjr7375@daum.net>
Date: Sat Apr 5 23:52:25 2025 +0900
Chore: Disable minify optionPull request ( commit d840ee2979fe23a0ddd97b9e182638b94ccf0d98 (pull_request/build-system)
Author: alstjr7375 <alstjr7375@daum.net>
Date: Sun Apr 20 02:13:21 2025 +0900
Chore: Internal resolution error at node16 packages #184It is possible to fast forward |
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (2)
packages/css-additional-types/codegen/index.ts (2)
171-172: Reuse type definition to avoid duplicationThe nestedPropertiesMap is defined both as a constant and then as a type using the same structure. This creates maintenance issues if the structure changes. Consider using
typeofto derive the type from the constant.export const nestedPropertiesMap: NestedPropertiesMap = ${stringifyNested}; -export type NestedPropertiesMap = ${stringifyNested}; +export type NestedPropertiesMap = typeof nestedPropertiesMap;
196-198: Add error handling for file writingThe code has error handling for directory creation but not for file writing. Consider adding a try-catch block around the file writing operations and logging any errors.
- const stream = createWriteStream(savePath); - stream.write(result); - stream.end(); + try { + const stream = createWriteStream(savePath); + stream.write(result); + stream.end(); + console.log(`Successfully wrote types to ${savePath}`); + } catch (error) { + console.error(`Failed to write types to ${savePath}:`, error); + throw error; + }
🧹 Nitpick comments (6)
configs/tsconfig-custom/tsconfig.base.json (1)
87-89: Consider enabling verbatimModuleSyntax for more precise ESM output.These commented options could provide additional type safety. While keeping them commented is fine for now,
verbatimModuleSyntax: truecould be especially valuable to ensure ESM syntax is preserved exactly as written in the output.- // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */🧰 Tools
🪛 Biome (1.9.4)
[error] 86-89: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
configs/vite-config-custom/index.js (1)
167-186: Consider improved error handling for declaration file processing.While errors during declaration file processing are logged, the build process continues even if multiple errors occur. This could lead to incomplete type definitions.
Consider throwing an error to fail the build when a significant number of errors occur:
if (errors.length > 0) { console.error(`${errors.length} files failed to process`); + if (errors.length > 5) { + throw new Error(`Failed to process ${errors.length} declaration files, aborting build`); + } }.changeset/bitter-hornets-beg.md (1)
19-21: Improve markdown formatting and feature documentation.The "Big Changes" section should use a proper heading format instead of bold text. Additionally, the experimental co-location feature would benefit from more detailed documentation.
-**Big Changes** +## Big Changes - co-location: [@sangkukbae](https://github.com/sangkukbae)'s work, It's still experimental. + - *[Consider adding a brief explanation of what co-location is and how to use it]* - packages: `node16` supports🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
19-19: Emphasis used instead of a heading
null(MD036, no-emphasis-as-heading)
packages/css-additional-types/codegen/index.ts (3)
68-88: Consider adding recursion safeguards for thesyntaxFilterfunctionThe recursive
syntaxFilterfunction could potentially encounter performance issues or stack overflow with deeply nested syntax dependencies. Consider adding a maximum recursion depth or iteration count to prevent unexpected behavior with complex CSS definitions.-function syntaxFilter(syntaxes: string[], syntaxSet = new Set<string>()) { +function syntaxFilter(syntaxes: string[], syntaxSet = new Set<string>(), depth = 0, maxDepth = 100) { const newSyntaxes = new Set([...syntaxSet, ...syntaxes]); const result = syntaxes.reduce((acc: string[], syntax) => { // existing code... return acc; }, [] as string[]); - if (result.length > 0) { + if (result.length > 0 && depth < maxDepth) { - return syntaxFilter(result, newSyntaxes); + return syntaxFilter(result, newSyntaxes, depth + 1, maxDepth); } else { return [...newSyntaxes, ...result]; } }
27-42: Consider adding JSDoc comments for the syntax classification functionsThe
isCommaandisSpacefunctions implement important logic for classifying CSS syntax patterns. Adding JSDoc comments would make their purpose and behavior more clear for future maintainers.+/** + * Determines if a CSS syntax uses comma-separated values or the hash notation (#) + * @param syntax The CSS syntax to check + * @returns True if the syntax uses comma separation + */ function isComma(syntax: string) { // https://developer.mozilla.org/en-US/docs/Web/CSS/Value_definition_syntax return syntax.includes(", ") || syntax.includes("#"); } const spaceRegex = /<?[\w-]+>? <?[\w-]+>?/; +/** + * Determines if a CSS syntax uses space-separated values or other combinators + * @param syntax The CSS syntax to check + * @returns True if the syntax uses space separation or combinators + */ function isSpace(syntax: string) { return ( syntax.includes("&&") || syntax.includes("||") || syntax.includes("*") || syntax.includes("+") || syntax.includes("?") || spaceRegex.test(syntax) ); }
155-158: Consider making output paths configurableThe output path is hardcoded relative to the current working directory. Consider making this configurable through environment variables or command-line arguments to improve flexibility.
-const saveDir = join(cwd(), "src"); -const savePath = join(saveDir, "index.ts"); +const saveDir = process.env.OUTPUT_DIR || join(cwd(), "src"); +const savePath = process.env.OUTPUT_FILE || join(saveDir, "index.ts");
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (36)
.changeset/bitter-hornets-beg.md(1 hunks).github/actions/cache-dir/action.yml(1 hunks)configs/tsconfig-custom/tsconfig.base.json(6 hunks)configs/vite-config-custom/index.js(5 hunks)configs/vite-config-custom/package.json(1 hunks)packages/babel/src/index.ts(2 hunks)packages/babel/src/styled.ts(1 hunks)packages/babel/src/transforms/callExpression.ts(1 hunks)packages/babel/src/transforms/postprocess.ts(1 hunks)packages/babel/src/transforms/preprocess.ts(1 hunks)packages/babel/src/utils.ts(1 hunks)packages/css-additional-types/codegen/index.ts(1 hunks)packages/css-additional-types/codegen/simple-pseudo.ts(1 hunks)packages/css/src/css/index.ts(1 hunks)packages/css/src/index.ts(2 hunks)packages/css/src/rules/createRuntimeFn.ts(1 hunks)packages/css/src/rules/index.ts(2 hunks)packages/css/src/rules/utils.ts(1 hunks)packages/integration/src/index.ts(1 hunks)packages/react/src/index.ts(1 hunks)packages/transform-to-vanilla/src/index.ts(1 hunks)packages/transform-to-vanilla/src/transform-keys/at-rules.ts(1 hunks)packages/transform-to-vanilla/src/transform-keys/complex-selectors.ts(1 hunks)packages/transform-to-vanilla/src/transform-keys/css-var.ts(1 hunks)packages/transform-to-vanilla/src/transform-keys/simple-pseudo-selectors.ts(1 hunks)packages/transform-to-vanilla/src/transform-object/index.ts(1 hunks)packages/transform-to-vanilla/src/transform-object/rule-context.ts(1 hunks)packages/transform-to-vanilla/src/transform-object/variant-reference.ts(1 hunks)packages/transform-to-vanilla/src/transform-values/css-var.ts(1 hunks)packages/transform-to-vanilla/src/transform-values/property-reference.ts(1 hunks)packages/transform-to-vanilla/src/transform.ts(3 hunks)packages/transform-to-vanilla/src/types/fontface-rule.ts(1 hunks)packages/transform-to-vanilla/src/types/simple-pseudo.ts(1 hunks)packages/transform-to-vanilla/src/types/style-rule.ts(1 hunks)packages/vite/src/index.ts(1 hunks)turbo.json(3 hunks)
✅ Files skipped from review due to trivial changes (14)
- packages/transform-to-vanilla/src/transform-keys/css-var.ts
- packages/transform-to-vanilla/src/types/simple-pseudo.ts
- packages/transform-to-vanilla/src/types/style-rule.ts
- packages/babel/src/styled.ts
- packages/transform-to-vanilla/src/transform-values/css-var.ts
- packages/css/src/rules/createRuntimeFn.ts
- packages/transform-to-vanilla/src/transform-values/property-reference.ts
- packages/transform-to-vanilla/src/transform-keys/complex-selectors.ts
- packages/transform-to-vanilla/src/transform.ts
- packages/transform-to-vanilla/src/transform-keys/at-rules.ts
- packages/transform-to-vanilla/src/transform-object/rule-context.ts
- packages/babel/src/index.ts
- packages/css/src/rules/index.ts
- packages/css/src/rules/utils.ts
🚧 Files skipped from review as they are similar to previous changes (18)
- packages/transform-to-vanilla/src/types/fontface-rule.ts
- packages/transform-to-vanilla/src/transform-keys/simple-pseudo-selectors.ts
- packages/babel/src/transforms/postprocess.ts
- configs/vite-config-custom/package.json
- packages/css/src/index.ts
- packages/css-additional-types/codegen/simple-pseudo.ts
- packages/integration/src/index.ts
- packages/react/src/index.ts
- packages/babel/src/transforms/preprocess.ts
- packages/transform-to-vanilla/src/index.ts
- packages/babel/src/utils.ts
- packages/transform-to-vanilla/src/transform-object/variant-reference.ts
- packages/vite/src/index.ts
- packages/css/src/css/index.ts
- turbo.json
- .github/actions/cache-dir/action.yml
- packages/transform-to-vanilla/src/transform-object/index.ts
- packages/babel/src/transforms/callExpression.ts
🧰 Additional context used
🧬 Code Graph Analysis (1)
packages/css-additional-types/codegen/index.ts (2)
packages/css-additional-types/codegen/utils.ts (4)
kebabToCamel(2-13)isArray(15-17)removeFirstString(23-25)stringify(19-21)packages/css-additional-types/codegen/simple-pseudo.ts (1)
camelPseudo(102-104)
🪛 markdownlint-cli2 (0.17.2)
.changeset/bitter-hornets-beg.md
19-19: Emphasis used instead of a heading
null
(MD036, no-emphasis-as-heading)
🪛 Biome (1.9.4)
configs/tsconfig-custom/tsconfig.base.json
[error] 26-26: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 26-26: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 26-26: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 26-28: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 26-26: JSON standard does not allow comments.
(parse)
[error] 28-28: JSON standard does not allow comments.
(parse)
[error] 29-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-29: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-30: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 29-29: JSON standard does not allow comments.
(parse)
[error] 31-31: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 31-31: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 31-31: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 31-31: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 31-31: JSON standard does not allow comments.
(parse)
[error] 46-46: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 46-46: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 46-46: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 46-50: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 46-46: JSON standard does not allow comments.
(parse)
[error] 51-51: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 51-51: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 51-51: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 51-51: JSON standard does not allow comments.
(parse)
[error] 61-61: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 61-61: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 61-61: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 61-62: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 61-61: JSON standard does not allow comments.
(parse)
[error] 63-63: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 63-63: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 63-63: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 63-63: JSON standard does not allow comments.
(parse)
[error] 85-85: JSON standard does not allow comments.
(parse)
[error] 86-86: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 86-86: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 86-86: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 86-89: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 86-86: JSON standard does not allow comments.
(parse)
[error] 119-119: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 119-119: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 119-119: End of file expected
Use an array for a sequence of values: [1, 2]
(parse)
[error] 119-119: JSON standard does not allow comments.
(parse)
🔇 Additional comments (14)
configs/tsconfig-custom/tsconfig.base.json (4)
26-26: Improved module detection for consistent ESM behavior.Setting
moduleDetectiontoforceensures TypeScript treats all files as modules regardless of imports/exports presence, which is essential for reliable ESM builds.🧰 Tools
🪛 Biome (1.9.4)
[error] 26-26: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 26-26: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 26-26: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 26-28: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 26-26: JSON standard does not allow comments.
(parse)
29-31: Good update to Node.js-compatible module settings.Switching to
NodeNextfor module andnodenextfor moduleResolution provides better compatibility with Node.js's ESM implementation, ensuring proper resolution of imports in both TypeScript and JavaScript.🧰 Tools
🪛 Biome (1.9.4)
[error] 29-29: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 29-29: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 29-29: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 29-30: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 29-29: JSON standard does not allow comments.
(parse)
[error] 31-31: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 31-31: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 31-31: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 31-31: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 31-31: JSON standard does not allow comments.
(parse)
46-50: Essential extension rewriting for ESM compatibility.The
rewriteRelativeImportExtensions: truesetting correctly converts TypeScript extensions (.ts) to JavaScript extensions (.js) in emitted declaration files, which is critical for ESM imports to work properly at runtime.🧰 Tools
🪛 Biome (1.9.4)
[error] 46-46: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 46-46: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 46-46: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 46-50: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 46-46: JSON standard does not allow comments.
(parse)
61-63: Appropriate declaration settings for efficient type generation.Enabling
declaration: truewithemitDeclarationOnly: trueensures the build process generates only the necessary .d.ts files without JavaScript output, which is optimal for type-only builds in the CI pipeline.🧰 Tools
🪛 Biome (1.9.4)
[error] 61-61: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 61-61: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 61-61: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 61-62: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 61-61: JSON standard does not allow comments.
(parse)
[error] 63-63: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 63-63: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 63-63: End of file expected
Use an array for a sequence of values:
[1, 2](parse)
[error] 63-63: JSON standard does not allow comments.
(parse)
configs/vite-config-custom/index.js (7)
3-7: Good switch to asynchronous file operations and concurrency.Replacing synchronous fs methods with their async counterparts from
fs/promisesand addingPromisePoolfor concurrency improves build performance, especially when processing many files.
33-39: Clear path structure improves maintainability.Defining explicit path variables for package root, source entry, and output directories makes the configuration more maintainable and easier to understand.
41-73: Optimize CI performance by conditionally generating type declarations.The conditional generation of declaration files only when not in CI environment is a good optimization, as it avoids unnecessary work during CI builds while ensuring developers have declaration files locally.
113-118: Efficient build configuration for CI.Limiting to ESM format only in CI and explicitly disabling minification improves build speed. This is a good approach for CI where build artifacts aren't deployed directly.
176-178: Excellent use of PromisePool for concurrent file processing.Using PromisePool with appropriate concurrency limits (10) is a great approach to efficiently process files without overwhelming the system.
218-228: Well-implemented declaration file transformation for CJS compatibility.The
processCtsFilefunction properly handles both the content modification (changing import extensions) and file renaming, ensuring correct CommonJS declaration files.
230-239: Good CI detection with publication exception.The
isGithubCIfunction correctly handles both standard CI detection and the special case for package publishing, which ensures appropriate build configuration in all environments.packages/css-additional-types/codegen/index.ts (3)
1-12: LGTM! Well-structured importsThe imports are well-organized, properly separating Node.js built-ins, third-party packages, and local imports. The use of
.jsextension in imports is appropriate for ECMAScript modules.
14-17: LGTM! Good setup for processing CSS dataThe setup of CSS properties and syntax data is clear and well-structured, making the subsequent processing steps easier to follow.
5-5:Details
❓ Verification inconclusive
Ensure compatibility with bundlers and older TypeScript versions
The import statement uses the new import attributes syntax with
with { type: "json" }. This is a modern ECMAScript feature that might not be supported by all bundlers or TypeScript versions.
🌐 Web query:
What TypeScript versions support import attributes with { type: "json" }?💡 Result:
TypeScript Support for Import Attributes with
{ type: "json" }TypeScript 5.3 and Later
TypeScript added support for the modern import attributes syntax (using the
withkeyword, e.g.,import obj from "./something.json" with { type: "json" };) in TypeScript 5.3[1].This support aligns with the latest updates to the [import attributes proposal][1], enabling use of import attributes such as
{ type: "json" }in both static imports and dynamic imports:// Static import with attribute import data from "./data.json" with { type: "json" }; // Dynamic import with attribute const data = await import("./data.json", { with: { type: "json" } });Prior to TypeScript 5.3, TypeScript supported only import assertions using the
assertkeyword (e.g.,import obj from "./something.json" assert { type: "json" };), introduced in TypeScript 4.5[1][5]. Theassertsyntax is now considered legacy as the community and specification favor thewithkeyword for new projects.Key Differences
Feature TypeScript 4.5 – 5.2 TypeScript 5.3+ Import assertions Supported ( assertkeyword)Legacy Import attributes Not supported Supported ( withkeyword){ type: "json" }viawithNot supported Supported
- TypeScript 5.3 is the first version to support the
with { type: "json" }syntax in both static and dynamic imports and to preserve these attributes for compatible runtimes and bundlers[1][5][6].Additional Notes
- TypeScript does not itself parse or validate the contents of the import attributes; it simply preserves them for the JavaScript runtime, which is responsible for enforcing the correct module type[1][5].
- Runtime support (Node.js, Deno, browsers) for import attributes may lag behind TypeScript support. Ensure your target environment recognizes import attributes before relying on them in production[5][3].
Summary Table
TypeScript Version Import Assertions ( assert)Import Attributes ( with)≤ 4.4 ❌ Not supported ❌ Not supported 4.5 – 5.2 ✅ Supported ❌ Not supported 5.3+ 🟡 Legacy ✅ Supported In summary:
- Use TypeScript 5.3 or later for first-class support of import attributes with
{ type: "json" }using thewithkeyword[1][5][6].- For older TypeScript versions, use import assertions with
assert { type: "json" }, but this syntax is deprecated in favor of import attributes[1][5].Citations:
- 1: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-3.html
- 2: https://www.typescriptlang.org/docs/handbook/modules/reference.html
- 3: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import/with
- 4: microsoft/TypeScript#60724
- 5: https://blog.logrocket.com/import-attributes-typescript-javascript/
- 6: https://typescript.tv/hands-on/loading-json-files-dynamically-in-typescript
- 7: https://github.com/tc39/proposal-import-attributes
- 8: https://fullystacked.net/import-attributes/
- 9: https://2ality.com/2025/01/import-attributes.html
- 10: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
Ensure TypeScript 5.3+ and bundler support for import attributes
This file uses the modern import‐attributes syntax withwith { type: "json" }, which is only supported in TypeScript 5.3 and later. If any consumers of this package still run TS 4.5–5.2, you’ll need to either upgrade their compiler or fall back to the legacy import‐assertions syntax:// Fallback for TS 4.5–5.2 import syntaxes from "mdn-data/css/syntaxes.json" assert { type: "json" };You should also confirm that your bundler (e.g. Webpack ≥5.88, esbuild 0.17+, Rollup with the right plugin) preserves import attributes at build time.
• Location: packages/css-additional-types/codegen/index.ts:5
| const err = error as FileError; | ||
| if (err.code === "ENOENT") { |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Improve error type handling
The code uses type assertions to convert errors to FileError without validation. This could lead to runtime errors if the caught error doesn't match the expected structure.
} catch (error) {
- const err = error as FileError;
+ const err = error as unknown;
+ if (typeof err === 'object' && err && 'code' in err) {
if (err.code === "ENOENT") {
// ...
}
+ } else {
+ console.error('Unexpected error type:', error);
+ throw error;
+ }
}Also applies to: 188-189
|
/fast-forward |
|
Triggered from #182 (comment) by @black7375. Trying to fast forward Target branch ( commit 871e38ae97311961dfd3adc543279459a70c5f68 (HEAD -> main, origin/main)
Author: alstjr7375 <alstjr7375@daum.net>
Date: Sat Apr 5 23:52:25 2025 +0900
Chore: Disable minify optionPull request ( commit d840ee2979fe23a0ddd97b9e182638b94ccf0d98 (pull_request/build-system)
Author: alstjr7375 <alstjr7375@daum.net>
Date: Sun Apr 20 02:13:21 2025 +0900
Chore: Internal resolution error at node16 packages #184Fast forwarding $ git push origin d840ee2979fe23a0ddd97b9e182638b94ccf0d98:main
To https://github.com/mincho-js/mincho.git
871e38a..d840ee2 d840ee2979fe23a0ddd97b9e182638b94ccf0d98 -> main |
Description
Related Issue
Summary by CodeRabbit
.jsextensions and using Node.js core module specifiers for better compatibility.Additional context
Now the test passes in Are the Types Wrong
Checklist