@codefast/cli 0.3.13-canary.0 → 0.3.13-canary.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/{bin.mjs → bin.js} +1 -4
- package/dist/commands/arrange.d.ts +3 -0
- package/dist/commands/arrange.d.ts.map +1 -0
- package/dist/commands/arrange.js +129 -0
- package/dist/commands/mirror.d.ts +4 -0
- package/dist/commands/mirror.d.ts.map +1 -0
- package/dist/commands/mirror.js +75 -0
- package/dist/commands/tag.d.ts +3 -0
- package/dist/commands/tag.d.ts.map +1 -0
- package/dist/commands/tag.js +41 -0
- package/dist/lib/arrange/application/analyze.d.ts +17 -0
- package/dist/lib/arrange/application/analyze.d.ts.map +1 -0
- package/dist/lib/arrange/application/analyze.js +24 -0
- package/dist/lib/arrange/application/group-file-preview.d.ts +17 -0
- package/dist/lib/arrange/application/group-file-preview.d.ts.map +1 -0
- package/dist/lib/arrange/application/group-file-preview.js +46 -0
- package/dist/lib/arrange/application/group-file.d.ts +5 -0
- package/dist/lib/arrange/application/group-file.d.ts.map +1 -0
- package/dist/lib/arrange/application/group-file.js +40 -0
- package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts +5 -0
- package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts.map +1 -0
- package/dist/lib/arrange/application/ports/file-walker.port.d.ts +5 -0
- package/dist/lib/arrange/application/ports/file-walker.port.d.ts.map +1 -0
- package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts +6 -0
- package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts.map +1 -0
- package/dist/lib/arrange/application/requests/analyze-directory.request.js +4 -0
- package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts +18 -0
- package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts.map +1 -0
- package/dist/lib/arrange/application/requests/arrange-sync.request.js +15 -0
- package/dist/lib/arrange/application/run-target.d.ts +19 -0
- package/dist/lib/arrange/application/run-target.d.ts.map +1 -0
- package/dist/lib/arrange/application/run-target.js +85 -0
- package/dist/lib/arrange/domain/arrange-analyze.service.d.ts +12 -0
- package/dist/lib/arrange/domain/arrange-analyze.service.d.ts.map +1 -0
- package/dist/lib/arrange/domain/arrange-analyze.service.js +116 -0
- package/dist/lib/arrange/domain/arrange-grouping.service.d.ts +53 -0
- package/dist/lib/arrange/domain/arrange-grouping.service.d.ts.map +1 -0
- package/dist/lib/arrange/domain/arrange-grouping.service.js +106 -0
- package/dist/lib/arrange/domain/ast/ast-helpers.d.ts +28 -0
- package/dist/lib/arrange/domain/ast/ast-helpers.d.ts.map +1 -0
- package/dist/lib/arrange/domain/ast/ast-helpers.js +130 -0
- package/dist/lib/arrange/domain/ast/ast-node.model.d.ts +179 -0
- package/dist/lib/arrange/domain/ast/ast-node.model.d.ts.map +1 -0
- package/dist/lib/arrange/domain/ast/ast-node.model.js +210 -0
- package/dist/lib/arrange/domain/ast/collectors-cn.d.ts +7 -0
- package/dist/lib/arrange/domain/ast/collectors-cn.d.ts.map +1 -0
- package/dist/lib/arrange/domain/ast/collectors-cn.js +70 -0
- package/dist/lib/arrange/domain/ast/collectors-jsx.d.ts +4 -0
- package/dist/lib/arrange/domain/ast/collectors-jsx.d.ts.map +1 -0
- package/dist/lib/arrange/domain/ast/collectors-jsx.js +21 -0
- package/dist/lib/arrange/domain/ast/collectors-tv.d.ts +13 -0
- package/dist/lib/arrange/domain/ast/collectors-tv.d.ts.map +1 -0
- package/dist/lib/arrange/domain/ast/collectors-tv.js +302 -0
- package/dist/lib/arrange/domain/ast/targets.d.ts +8 -0
- package/dist/lib/arrange/domain/ast/targets.d.ts.map +1 -0
- package/dist/lib/arrange/domain/ast/targets.js +147 -0
- package/dist/lib/arrange/domain/constants.d.ts +68 -0
- package/dist/lib/arrange/domain/constants.d.ts.map +1 -0
- package/dist/lib/arrange/domain/constants.js +180 -0
- package/dist/lib/arrange/domain/errors.d.ts +14 -0
- package/dist/lib/arrange/domain/errors.d.ts.map +1 -0
- package/dist/lib/arrange/domain/errors.js +16 -0
- package/dist/lib/arrange/domain/grouping.d.ts +41 -0
- package/dist/lib/arrange/domain/grouping.d.ts.map +1 -0
- package/dist/lib/arrange/domain/grouping.js +307 -0
- package/dist/lib/arrange/domain/imports.d.ts +7 -0
- package/dist/lib/arrange/domain/imports.d.ts.map +1 -0
- package/dist/lib/arrange/domain/imports.js +80 -0
- package/dist/lib/arrange/domain/source-text-formatters.d.ts +16 -0
- package/dist/lib/arrange/domain/source-text-formatters.d.ts.map +1 -0
- package/dist/lib/arrange/domain/source-text-formatters.js +55 -0
- package/dist/lib/arrange/domain/tokenizer.d.ts +45 -0
- package/dist/lib/arrange/domain/tokenizer.d.ts.map +1 -0
- package/dist/lib/arrange/domain/tokenizer.js +466 -0
- package/dist/lib/arrange/domain/types.d.ts +112 -0
- package/dist/lib/arrange/domain/types.d.ts.map +1 -0
- package/dist/lib/arrange/domain/types.js +7 -0
- package/dist/lib/arrange/index.d.ts +45 -0
- package/dist/lib/arrange/index.d.ts.map +1 -0
- package/dist/lib/arrange/index.js +41 -0
- package/dist/lib/arrange/infra/arrange-sync-cli-options.d.ts +14 -0
- package/dist/lib/arrange/infra/arrange-sync-cli-options.d.ts.map +1 -0
- package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts +11 -0
- package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts.map +1 -0
- package/dist/lib/arrange/infra/domain-source-parser.adapter.js +19 -0
- package/dist/lib/arrange/infra/ensure-cn-import.d.ts +3 -0
- package/dist/lib/arrange/infra/ensure-cn-import.d.ts.map +1 -0
- package/dist/lib/arrange/infra/ensure-cn-import.js +6 -0
- package/dist/lib/arrange/infra/file-walker.adapter.d.ts +8 -0
- package/dist/lib/arrange/infra/file-walker.adapter.d.ts.map +1 -0
- package/dist/lib/arrange/infra/file-walker.adapter.js +17 -0
- package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.d.ts +8 -0
- package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.d.ts.map +1 -0
- package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.js +25 -0
- package/dist/lib/arrange/infra/ts-ast-translator.d.ts +10 -0
- package/dist/lib/arrange/infra/ts-ast-translator.d.ts.map +1 -0
- package/dist/lib/arrange/infra/ts-ast-translator.js +363 -0
- package/dist/lib/arrange/presentation/formatters.d.ts +3 -0
- package/dist/lib/arrange/presentation/formatters.d.ts.map +1 -0
- package/dist/lib/arrange/presentation/formatters.js +2 -0
- package/dist/lib/arrange/presentation/report.d.ts +4 -0
- package/dist/lib/arrange/presentation/report.d.ts.map +1 -0
- package/dist/lib/arrange/presentation/report.js +37 -0
- package/dist/lib/config/domain/schema.d.ts +50 -0
- package/dist/lib/config/domain/schema.d.ts.map +1 -0
- package/dist/lib/config/domain/schema.js +43 -0
- package/dist/lib/config/index.d.ts +4 -0
- package/dist/lib/config/index.d.ts.map +1 -0
- package/dist/lib/config/index.js +2 -0
- package/dist/lib/config/infra/loader.d.ts +11 -0
- package/dist/lib/config/infra/loader.d.ts.map +1 -0
- package/dist/lib/config/infra/loader.js +90 -0
- package/dist/lib/core/application/architecture-boundaries.d.ts +19 -0
- package/dist/lib/core/application/architecture-boundaries.d.ts.map +1 -0
- package/dist/lib/core/application/architecture-boundaries.js +263 -0
- package/dist/lib/core/application/ports/cli-io.port.d.ts +27 -0
- package/dist/lib/core/application/ports/cli-io.port.d.ts.map +1 -0
- package/dist/lib/core/application/schema-parse.d.ts +8 -0
- package/dist/lib/core/application/schema-parse.d.ts.map +1 -0
- package/dist/lib/core/application/schema-parse.js +20 -0
- package/dist/lib/core/application/utils/caught-unknown-message.d.ts +6 -0
- package/dist/lib/core/application/utils/caught-unknown-message.d.ts.map +1 -0
- package/dist/lib/core/application/utils/caught-unknown-message.js +34 -0
- package/dist/lib/core/application/utils/verbose-diagnostics.d.ts +5 -0
- package/dist/lib/core/application/utils/verbose-diagnostics.d.ts.map +1 -0
- package/dist/lib/core/application/utils/verbose-diagnostics.js +7 -0
- package/dist/lib/core/domain/errors.d.ts +11 -0
- package/dist/lib/core/domain/errors.d.ts.map +1 -0
- package/dist/lib/core/domain/errors.js +9 -0
- package/dist/lib/core/domain/result.d.ts +15 -0
- package/dist/lib/core/domain/result.d.ts.map +1 -0
- package/dist/lib/core/domain/result.js +9 -0
- package/dist/lib/core/infra/container.d.ts +34 -0
- package/dist/lib/core/infra/container.d.ts.map +1 -0
- package/dist/lib/core/infra/container.js +65 -0
- package/dist/lib/core/infra/logging-decorator.d.ts +12 -0
- package/dist/lib/core/infra/logging-decorator.d.ts.map +1 -0
- package/dist/lib/core/infra/logging-decorator.js +75 -0
- package/dist/lib/core/presentation/cli-executor.d.ts +33 -0
- package/dist/lib/core/presentation/cli-executor.d.ts.map +1 -0
- package/dist/lib/core/presentation/cli-executor.js +73 -0
- package/dist/lib/core/presentation/create-command-handler.d.ts +20 -0
- package/dist/lib/core/presentation/create-command-handler.d.ts.map +1 -0
- package/dist/lib/core/presentation/create-command-handler.js +70 -0
- package/dist/lib/core/presentation/format-app-error.d.ts +6 -0
- package/dist/lib/core/presentation/format-app-error.d.ts.map +1 -0
- package/dist/lib/core/presentation/format-app-error.js +19 -0
- package/dist/lib/infra/caught-unknown-message.d.ts +2 -0
- package/dist/lib/infra/caught-unknown-message.d.ts.map +1 -0
- package/dist/lib/infra/caught-unknown-message.js +1 -0
- package/dist/lib/infra/config-reporter.d.ts +4 -0
- package/dist/lib/infra/config-reporter.d.ts.map +1 -0
- package/dist/lib/infra/config-reporter.js +9 -0
- package/dist/lib/infra/fs-contract.d.ts +2 -0
- package/dist/lib/infra/fs-contract.d.ts.map +1 -0
- package/dist/lib/infra/fs-contract.js +1 -0
- package/dist/lib/infra/node-io.d.ts +4 -0
- package/dist/lib/infra/node-io.d.ts.map +1 -0
- package/dist/lib/infra/node-io.js +27 -0
- package/dist/lib/infra/workspace/repo-root.d.ts +7 -0
- package/dist/lib/infra/workspace/repo-root.d.ts.map +1 -0
- package/dist/lib/infra/workspace/repo-root.js +23 -0
- package/dist/lib/mirror/application/engine.d.ts +10 -0
- package/dist/lib/mirror/application/engine.d.ts.map +1 -0
- package/dist/lib/mirror/application/engine.js +271 -0
- package/dist/lib/mirror/application/ports/file-system-service.port.d.ts +6 -0
- package/dist/lib/mirror/application/ports/file-system-service.port.d.ts.map +1 -0
- package/dist/lib/mirror/application/ports/file-system-service.port.js +1 -0
- package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts +27 -0
- package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts.map +1 -0
- package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.js +1 -0
- package/dist/lib/mirror/application/ports/package-repository.port.d.ts +16 -0
- package/dist/lib/mirror/application/ports/package-repository.port.d.ts.map +1 -0
- package/dist/lib/mirror/application/ports/package-repository.port.js +1 -0
- package/dist/lib/mirror/application/ports/workspace-service.port.d.ts +7 -0
- package/dist/lib/mirror/application/ports/workspace-service.port.d.ts.map +1 -0
- package/dist/lib/mirror/application/ports/workspace-service.port.js +1 -0
- package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts +10 -0
- package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts.map +1 -0
- package/dist/lib/mirror/application/requests/mirror-sync.request.js +8 -0
- package/dist/lib/mirror/application/sync.d.ts +19 -0
- package/dist/lib/mirror/application/sync.d.ts.map +1 -0
- package/dist/lib/mirror/application/sync.js +168 -0
- package/dist/lib/mirror/domain/constants.d.ts +6 -0
- package/dist/lib/mirror/domain/constants.d.ts.map +1 -0
- package/dist/lib/mirror/domain/constants.js +5 -0
- package/dist/lib/mirror/domain/errors.d.ts +10 -0
- package/dist/lib/mirror/domain/errors.d.ts.map +1 -0
- package/dist/lib/mirror/domain/errors.js +12 -0
- package/dist/lib/mirror/domain/types.d.ts +65 -0
- package/dist/lib/mirror/domain/types.d.ts.map +1 -0
- package/dist/lib/mirror/domain/types.js +1 -0
- package/dist/lib/mirror/index.d.ts +6 -0
- package/dist/lib/mirror/index.d.ts.map +1 -0
- package/dist/lib/mirror/index.js +1 -0
- package/dist/lib/mirror/infra/dirent-list.d.ts +9 -0
- package/dist/lib/mirror/infra/dirent-list.d.ts.map +1 -0
- package/dist/lib/mirror/infra/dirent-list.js +13 -0
- package/dist/lib/mirror/infra/file-system-service.adapter.d.ts +7 -0
- package/dist/lib/mirror/infra/file-system-service.adapter.d.ts.map +1 -0
- package/dist/lib/mirror/infra/file-system-service.adapter.js +47 -0
- package/dist/lib/mirror/infra/mirror-sync-cli-options.d.ts +14 -0
- package/dist/lib/mirror/infra/mirror-sync-cli-options.d.ts.map +1 -0
- package/dist/lib/mirror/infra/mirror-sync-cli-options.js +1 -0
- package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts +3 -0
- package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts.map +1 -0
- package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.js +13 -0
- package/dist/lib/mirror/infra/package-filter.d.ts +8 -0
- package/dist/lib/mirror/infra/package-filter.d.ts.map +1 -0
- package/dist/lib/mirror/infra/package-filter.js +33 -0
- package/dist/lib/mirror/infra/package-repository.adapter.d.ts +17 -0
- package/dist/lib/mirror/infra/package-repository.adapter.d.ts.map +1 -0
- package/dist/lib/mirror/infra/package-repository.adapter.js +17 -0
- package/dist/lib/mirror/infra/path-normalizer.d.ts +2 -0
- package/dist/lib/mirror/infra/path-normalizer.d.ts.map +1 -0
- package/dist/lib/mirror/infra/path-normalizer.js +4 -0
- package/dist/lib/mirror/infra/update-pkg.d.ts +19 -0
- package/dist/lib/mirror/infra/update-pkg.d.ts.map +1 -0
- package/dist/lib/mirror/infra/update-pkg.js +156 -0
- package/dist/lib/mirror/infra/workspace-packages.d.ts +26 -0
- package/dist/lib/mirror/infra/workspace-packages.d.ts.map +1 -0
- package/dist/lib/mirror/infra/workspace-packages.js +170 -0
- package/dist/lib/mirror/infra/workspace-service.adapter.d.ts +8 -0
- package/dist/lib/mirror/infra/workspace-service.adapter.d.ts.map +1 -0
- package/dist/lib/mirror/infra/workspace-service.adapter.js +10 -0
- package/dist/lib/mirror/presentation/reporter.d.ts +25 -0
- package/dist/lib/mirror/presentation/reporter.d.ts.map +1 -0
- package/dist/lib/mirror/presentation/reporter.js +140 -0
- package/dist/lib/shared/source-code/domain/text-edit.d.ts +14 -0
- package/dist/lib/shared/source-code/domain/text-edit.d.ts.map +1 -0
- package/dist/lib/shared/source-code/domain/text-edit.js +30 -0
- package/dist/lib/shared/source-code/infra/tsx-file-walk.d.ts +4 -0
- package/dist/lib/shared/source-code/infra/tsx-file-walk.d.ts.map +1 -0
- package/dist/lib/shared/source-code/infra/tsx-file-walk.js +37 -0
- package/dist/lib/tag/application/engine.d.ts +23 -0
- package/dist/lib/tag/application/engine.d.ts.map +1 -0
- package/dist/lib/tag/application/engine.js +357 -0
- package/dist/lib/tag/application/ports/target-resolver.port.d.ts +6 -0
- package/dist/lib/tag/application/ports/target-resolver.port.d.ts.map +1 -0
- package/dist/lib/tag/application/ports/target-resolver.port.js +1 -0
- package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts +6 -0
- package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts.map +1 -0
- package/dist/lib/tag/application/ports/typescript-tree-walk.port.js +1 -0
- package/dist/lib/tag/application/requests/tag-sync.request.d.ts +10 -0
- package/dist/lib/tag/application/requests/tag-sync.request.d.ts.map +1 -0
- package/dist/lib/tag/application/requests/tag-sync.request.js +8 -0
- package/dist/lib/tag/domain/types.d.ts +56 -0
- package/dist/lib/tag/domain/types.d.ts.map +1 -0
- package/dist/lib/tag/domain/types.js +1 -0
- package/dist/lib/tag/index.d.ts +14 -0
- package/dist/lib/tag/index.d.ts.map +1 -0
- package/dist/lib/tag/index.js +10 -0
- package/dist/lib/tag/infra/tag-sync-cli-options.d.ts +14 -0
- package/dist/lib/tag/infra/tag-sync-cli-options.d.ts.map +1 -0
- package/dist/lib/tag/infra/tag-sync-cli-options.js +1 -0
- package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts +3 -0
- package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts.map +1 -0
- package/dist/lib/tag/infra/tag-target-resolver.adapter.js +4 -0
- package/dist/lib/tag/infra/target-resolver.d.ts +4 -0
- package/dist/lib/tag/infra/target-resolver.d.ts.map +1 -0
- package/dist/lib/tag/infra/target-resolver.js +200 -0
- package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts +3 -0
- package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts.map +1 -0
- package/dist/lib/tag/infra/typescript-tree-walk.adapter.js +4 -0
- package/dist/lib/tag/presentation/colors.d.ts +8 -0
- package/dist/lib/tag/presentation/colors.d.ts.map +1 -0
- package/dist/lib/tag/presentation/colors.js +9 -0
- package/dist/lib/tag/presentation/tag-presenter.d.ts +20 -0
- package/dist/lib/tag/presentation/tag-presenter.d.ts.map +1 -0
- package/dist/lib/tag/presentation/tag-presenter.js +92 -0
- package/dist/program.d.ts +4 -0
- package/dist/program.d.ts.map +1 -0
- package/dist/program.js +40 -0
- package/package.json +8 -5
- package/dist/analyze-DvtJ3j9m.mjs +0 -92
- package/dist/arrange-Bbh62DrU.mjs +0 -107
- package/dist/arrange-BqP2DI3w.mjs +0 -8
- package/dist/ast-helpers-MDRYuIAk.mjs +0 -115
- package/dist/caught-unknown-message-CRhkDWO7.mjs +0 -20
- package/dist/collectors-cn-BS8TTQ8O.mjs +0 -61
- package/dist/collectors-jsx-D9tL2ZPM.mjs +0 -20
- package/dist/collectors-tv-D2PXZaRt.mjs +0 -170
- package/dist/colors-BjdkCfGK.mjs +0 -12
- package/dist/commands/arrange.mjs +0 -2
- package/dist/commands/mirror.mjs +0 -2
- package/dist/commands/mirror.test.mjs +0 -48
- package/dist/commands/tag.mjs +0 -2
- package/dist/config-DVia_f9a.mjs +0 -3
- package/dist/config-reporter-SCcWDZc1.mjs +0 -10
- package/dist/constants-AtPhF-Ct.mjs +0 -169
- package/dist/constants-Bq5wdyLC.mjs +0 -8
- package/dist/dirent-list-BSDeRG5i.mjs +0 -14
- package/dist/engine-CcWEHSCq.mjs +0 -287
- package/dist/engine-DRTdkc5u.mjs +0 -236
- package/dist/errors-CFH4w6ic.mjs +0 -15
- package/dist/errors-CpU1ogfA.mjs +0 -19
- package/dist/formatters-DGE8jJ53.mjs +0 -52
- package/dist/group-file-ClW7XdD6.mjs +0 -113
- package/dist/grouping-c1grpCQT.mjs +0 -235
- package/dist/imports-DSVq1xhB.mjs +0 -54
- package/dist/lib/arrange/application/analyze.mjs +0 -2
- package/dist/lib/arrange/application/analyze.test.mjs +0 -171
- package/dist/lib/arrange/application/group-file.mjs +0 -2
- package/dist/lib/arrange/application/group-file.test.mjs +0 -273
- package/dist/lib/arrange/application/run-target.mjs +0 -2
- package/dist/lib/arrange/application/run-target.test.mjs +0 -97
- package/dist/lib/arrange/domain/ast/ast-helpers.mjs +0 -2
- package/dist/lib/arrange/domain/ast/ast-helpers.test.mjs +0 -148
- package/dist/lib/arrange/domain/ast/collectors-cn.mjs +0 -2
- package/dist/lib/arrange/domain/ast/collectors-cn.test.mjs +0 -58
- package/dist/lib/arrange/domain/ast/collectors-jsx.mjs +0 -2
- package/dist/lib/arrange/domain/ast/collectors-jsx.test.mjs +0 -20
- package/dist/lib/arrange/domain/ast/collectors-tv.mjs +0 -2
- package/dist/lib/arrange/domain/ast/collectors-tv.test.mjs +0 -145
- package/dist/lib/arrange/domain/ast/targets.mjs +0 -2
- package/dist/lib/arrange/domain/ast/targets.test.mjs +0 -50
- package/dist/lib/arrange/domain/constants.mjs +0 -2
- package/dist/lib/arrange/domain/errors.mjs +0 -2
- package/dist/lib/arrange/domain/grouping.mjs +0 -2
- package/dist/lib/arrange/domain/grouping.test.mjs +0 -186
- package/dist/lib/arrange/domain/imports.mjs +0 -2
- package/dist/lib/arrange/domain/imports.test.mjs +0 -48
- package/dist/lib/arrange/domain/tokenizer.mjs +0 -2
- package/dist/lib/arrange/domain/tokenizer.test.mjs +0 -165
- package/dist/lib/arrange/index.mjs +0 -16
- package/dist/lib/arrange/infra/walk.mjs +0 -2
- package/dist/lib/arrange/infra/walk.test.mjs +0 -50
- package/dist/lib/arrange/presentation/formatters.mjs +0 -2
- package/dist/lib/arrange/presentation/formatters.test.mjs +0 -73
- package/dist/lib/arrange/presentation/report.mjs +0 -2
- package/dist/lib/config/domain/schema.mjs +0 -2
- package/dist/lib/config/index.mjs +0 -4
- package/dist/lib/config/infra/loader.mjs +0 -2
- package/dist/lib/config/infra/loader.test.mjs +0 -116
- package/dist/lib/infra/caught-unknown-message.mjs +0 -2
- package/dist/lib/infra/config-reporter.mjs +0 -2
- package/dist/lib/infra/node-io.mjs +0 -2
- package/dist/lib/infra/workspace/repo-root.mjs +0 -2
- package/dist/lib/infra/workspace/repo-root.test.mjs +0 -45
- package/dist/lib/mirror/application/engine.mjs +0 -2
- package/dist/lib/mirror/application/sync.mjs +0 -2
- package/dist/lib/mirror/application/sync.test.mjs +0 -482
- package/dist/lib/mirror/domain/constants.mjs +0 -2
- package/dist/lib/mirror/domain/errors.mjs +0 -2
- package/dist/lib/mirror/index.mjs +0 -3
- package/dist/lib/mirror/infra/dirent-list.mjs +0 -2
- package/dist/lib/mirror/infra/dirent-list.test.mjs +0 -18
- package/dist/lib/mirror/infra/package-filter.mjs +0 -2
- package/dist/lib/mirror/infra/package-filter.test.mjs +0 -32
- package/dist/lib/mirror/infra/path-normalizer.mjs +0 -2
- package/dist/lib/mirror/infra/update-pkg.mjs +0 -2
- package/dist/lib/mirror/infra/workspace-packages.mjs +0 -2
- package/dist/lib/mirror/infra/workspace-packages.test.mjs +0 -167
- package/dist/lib/mirror/presentation/reporter.mjs +0 -2
- package/dist/lib/tag/application/engine.mjs +0 -2
- package/dist/lib/tag/application/engine.test.mjs +0 -159
- package/dist/lib/tag/index.mjs +0 -5
- package/dist/lib/tag/infra/target-resolver.mjs +0 -2
- package/dist/lib/tag/presentation/colors.mjs +0 -2
- package/dist/lib/tag/presentation/tag-presenter.mjs +0 -2
- package/dist/lib/tag/presentation/tag-presenter.test.mjs +0 -29
- package/dist/loader-DpN-zl5g.mjs +0 -78
- package/dist/mirror-CbGiLXKT.mjs +0 -2
- package/dist/mirror-DqJE3ejL.mjs +0 -66
- package/dist/node-io-DFRbHO6m.mjs +0 -30
- package/dist/package-filter-C_8ryqvz.mjs +0 -26
- package/dist/path-normalizer-D4ceBO3l.mjs +0 -7
- package/dist/program-DR-H4tH3.mjs +0 -34
- package/dist/program.mjs +0 -2
- package/dist/repo-root-HmtIEm6J.mjs +0 -22
- package/dist/report-DYxvw34T.mjs +0 -24
- package/dist/reporter-CwIe_tAM.mjs +0 -108
- package/dist/run-target-CJWrqNT4.mjs +0 -65
- package/dist/schema-Or8RAARd.mjs +0 -25
- package/dist/sync-e1Sp-shi.mjs +0 -157
- package/dist/tag-Cd9JujU5.mjs +0 -2
- package/dist/tag-hEKVZ_-7.mjs +0 -58
- package/dist/tag-presenter-Cs66UBsH.mjs +0 -63
- package/dist/target-resolver-CR3FXMTy.mjs +0 -170
- package/dist/targets-pCTslnFh.mjs +0 -106
- package/dist/tokenizer-CeZx73Zu.mjs +0 -216
- package/dist/update-pkg-CnGfjWBy.mjs +0 -37
- package/dist/walk-DjgQn66n.mjs +0 -33
- package/dist/workspace-packages-K2NYTHJq.mjs +0 -159
- /package/dist/lib/arrange/{domain/types.mjs → application/ports/domain-source-parser.port.js} +0 -0
- /package/dist/lib/{infra/fs-contract.mjs → arrange/application/ports/file-walker.port.js} +0 -0
- /package/dist/lib/{mirror/domain/types.mjs → arrange/infra/arrange-sync-cli-options.js} +0 -0
- /package/dist/lib/{tag/domain/types.mjs → core/application/ports/cli-io.port.js} +0 -0
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import "../../../../constants-AtPhF-Ct.mjs";
|
|
2
|
-
import { r as buildKnownCnTvBindings } from "../../../../ast-helpers-MDRYuIAk.mjs";
|
|
3
|
-
import { a as listAllCnCallsInsideTvInSourceFile, c as traverseTvObject, n as collectGroupableStringNodes, s as slotClassString, t as collectCnCallsInsideTv } from "../../../../collectors-tv-D2PXZaRt.mjs";
|
|
4
|
-
import "../../../../arrange-BqP2DI3w.mjs";
|
|
5
|
-
import ts from "typescript";
|
|
6
|
-
//#region src/lib/arrange/domain/ast/collectors-tv.test.ts
|
|
7
|
-
describe("collectGroupableStringNodes", () => {
|
|
8
|
-
it("collects cn/tv static class slots eligible for grouping", () => {
|
|
9
|
-
const nodes = collectGroupableStringNodes(ts.createSourceFile("x.ts", `import { cn, tv } from "@codefast/tailwind-variants";
|
|
10
|
-
export const styles = tv({
|
|
11
|
-
base: cn("flex gap-2 text-sm rounded-md border px-3"),
|
|
12
|
-
});
|
|
13
|
-
`, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS));
|
|
14
|
-
expect(nodes.length).toBeGreaterThan(0);
|
|
15
|
-
expect(slotClassString(nodes[0])).toContain("flex gap-2");
|
|
16
|
-
});
|
|
17
|
-
it("collects tv array slots without cn()", () => {
|
|
18
|
-
const nodes = collectGroupableStringNodes(ts.createSourceFile("x.ts", `import { tv } from "@codefast/tailwind-variants";
|
|
19
|
-
export const styles = tv({
|
|
20
|
-
base: ["flex gap-2 text-sm rounded-md border px-3", "shadow-xs"],
|
|
21
|
-
});
|
|
22
|
-
`, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS));
|
|
23
|
-
expect(nodes.length).toBeGreaterThan(0);
|
|
24
|
-
expect(nodes.some((stringNode) => slotClassString(stringNode).includes("shadow-xs"))).toBe(true);
|
|
25
|
-
});
|
|
26
|
-
it("collects compoundVariants className string slots", () => {
|
|
27
|
-
const nodes = collectGroupableStringNodes(ts.createSourceFile("x.ts", `import { tv } from "@codefast/tailwind-variants";
|
|
28
|
-
export const styles = tv({
|
|
29
|
-
compoundVariants: [{ className: "flex gap-2 text-sm rounded-md border px-3" }],
|
|
30
|
-
});
|
|
31
|
-
`, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS));
|
|
32
|
-
expect(nodes.length).toBeGreaterThan(0);
|
|
33
|
-
});
|
|
34
|
-
it("collects compoundVariants class array with mixed strings and cn()", () => {
|
|
35
|
-
const nodes = collectGroupableStringNodes(ts.createSourceFile("x.ts", `import { cn, tv } from "@codefast/tailwind-variants";
|
|
36
|
-
export const styles = tv({
|
|
37
|
-
compoundVariants: [{ class: ["py-1", cn("flex gap-2 text-sm rounded-md border px-3")] }],
|
|
38
|
-
});
|
|
39
|
-
`, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS));
|
|
40
|
-
expect(nodes.length).toBeGreaterThan(0);
|
|
41
|
-
expect(nodes.some((stringNode) => slotClassString(stringNode).includes("flex gap-2"))).toBe(true);
|
|
42
|
-
});
|
|
43
|
-
it("collects direct cn(...) entries inside tv arrays and ignores unsafe nested array literals", () => {
|
|
44
|
-
const nodes = collectGroupableStringNodes(ts.createSourceFile("x.ts", `import { cn, tv } from "@codefast/tailwind-variants";
|
|
45
|
-
export const styles = tv({
|
|
46
|
-
base: [cn(["skip-a", "skip-b"]), cn("flex gap-2 text-sm rounded-md border px-3")],
|
|
47
|
-
});
|
|
48
|
-
`, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS));
|
|
49
|
-
expect(nodes.length).toBeGreaterThan(0);
|
|
50
|
-
expect(nodes.some((stringNode) => slotClassString(stringNode).includes("flex gap-2 text-sm"))).toBe(true);
|
|
51
|
-
expect(nodes.some((stringNode) => slotClassString(stringNode).includes("skip-a"))).toBe(false);
|
|
52
|
-
});
|
|
53
|
-
it("collects compoundVariants class set directly to cn(...) call", () => {
|
|
54
|
-
const nodes = collectGroupableStringNodes(ts.createSourceFile("x.ts", `import { cn, tv } from "@codefast/tailwind-variants";
|
|
55
|
-
export const styles = tv({
|
|
56
|
-
compoundVariants: [{ class: cn("flex gap-2 text-sm rounded-md border px-3") }],
|
|
57
|
-
});
|
|
58
|
-
`, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS));
|
|
59
|
-
expect(nodes.length).toBeGreaterThan(0);
|
|
60
|
-
expect(nodes.some((stringNode) => slotClassString(stringNode).includes("rounded-md border px-3"))).toBe(true);
|
|
61
|
-
});
|
|
62
|
-
it("returns empty when file has no cn/tv candidates", () => {
|
|
63
|
-
const sf = ts.createSourceFile("x.ts", "export const only = 1;", ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
64
|
-
expect(collectGroupableStringNodes(sf)).toEqual([]);
|
|
65
|
-
});
|
|
66
|
-
it("documents that tv object traversal stops safely when nesting exceeds the configured depth limit", () => {
|
|
67
|
-
let nestedObject = "{ className: \"flex gap-2 text-sm rounded-md border px-3\" }";
|
|
68
|
-
for (let i = 0; i < 14; i += 1) nestedObject = `{ layer${i}: ${nestedObject} }`;
|
|
69
|
-
const source = `import { tv } from "@codefast/tailwind-variants";
|
|
70
|
-
export const styles = tv(${nestedObject});
|
|
71
|
-
`;
|
|
72
|
-
const sf = ts.createSourceFile("x.ts", source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
73
|
-
expect(() => collectGroupableStringNodes(sf)).not.toThrow();
|
|
74
|
-
expect(collectGroupableStringNodes(sf)).toEqual([]);
|
|
75
|
-
});
|
|
76
|
-
it("accepts legacy tailwind-variants import for tv slot collection (backward compat)", () => {
|
|
77
|
-
const nodes = collectGroupableStringNodes(ts.createSourceFile("x.ts", `import { cn, tv } from "tailwind-variants";
|
|
78
|
-
export const styles = tv({
|
|
79
|
-
base: cn("flex gap-2 text-sm rounded-md border px-3"),
|
|
80
|
-
});
|
|
81
|
-
`, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS));
|
|
82
|
-
expect(nodes.length).toBeGreaterThan(0);
|
|
83
|
-
expect(slotClassString(nodes[0])).toContain("flex gap-2");
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
describe("tv collector helpers", () => {
|
|
87
|
-
it("traverseTvObject visits nested className/class string literals and cn call literals", () => {
|
|
88
|
-
const sf = ts.createSourceFile("x.ts", `import { cn, tv } from "@codefast/tailwind-variants";
|
|
89
|
-
const cfg = {
|
|
90
|
-
base: [{ className: ["flex gap-2", "text-sm"] }, { class: cn("rounded-md border", "px-3") }],
|
|
91
|
-
variants: {
|
|
92
|
-
intent: { primary: { className: "font-medium shadow-xs" } },
|
|
93
|
-
},
|
|
94
|
-
};
|
|
95
|
-
tv(cfg);
|
|
96
|
-
`, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
97
|
-
const knownBindings = buildKnownCnTvBindings(sf);
|
|
98
|
-
const obj = sf.statements[1].declarationList.declarations[0].initializer;
|
|
99
|
-
const visited = [];
|
|
100
|
-
traverseTvObject(sf, obj, (classLiteral) => {
|
|
101
|
-
visited.push(classLiteral.text);
|
|
102
|
-
}, 0, knownBindings);
|
|
103
|
-
expect(visited).toEqual(expect.arrayContaining([
|
|
104
|
-
"flex gap-2",
|
|
105
|
-
"text-sm",
|
|
106
|
-
"rounded-md border",
|
|
107
|
-
"px-3",
|
|
108
|
-
"font-medium shadow-xs"
|
|
109
|
-
]));
|
|
110
|
-
});
|
|
111
|
-
it("collectCnCallsInsideTv finds cn calls from arrays, class fields, and nested objects", () => {
|
|
112
|
-
const sf = ts.createSourceFile("x.ts", `import { cn, tv } from "@codefast/tailwind-variants";
|
|
113
|
-
tv({
|
|
114
|
-
base: [cn("flex gap-2"), { class: cn("text-sm rounded-md") }],
|
|
115
|
-
variants: {
|
|
116
|
-
intent: {
|
|
117
|
-
primary: { className: cn("border px-3") },
|
|
118
|
-
},
|
|
119
|
-
},
|
|
120
|
-
});
|
|
121
|
-
`, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
122
|
-
const knownBindings = buildKnownCnTvBindings(sf);
|
|
123
|
-
const tvObj = sf.statements[1].expression.arguments[0];
|
|
124
|
-
const calls = collectCnCallsInsideTv(sf, tvObj, knownBindings, 0);
|
|
125
|
-
expect(calls).toHaveLength(3);
|
|
126
|
-
expect(calls.map((call) => call.getText(sf))).toEqual(expect.arrayContaining([
|
|
127
|
-
"cn(\"flex gap-2\")",
|
|
128
|
-
"cn(\"text-sm rounded-md\")",
|
|
129
|
-
"cn(\"border px-3\")"
|
|
130
|
-
]));
|
|
131
|
-
});
|
|
132
|
-
it("listAllCnCallsInsideTvInSourceFile collects cn calls only from tv() object arguments", () => {
|
|
133
|
-
const sf = ts.createSourceFile("x.ts", `import { cn, tv } from "@codefast/tailwind-variants";
|
|
134
|
-
cn("outside call should not be counted");
|
|
135
|
-
tv({
|
|
136
|
-
base: [cn("inside-tv one"), { className: cn("inside-tv two") }],
|
|
137
|
-
});
|
|
138
|
-
`, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
139
|
-
const calls = listAllCnCallsInsideTvInSourceFile(sf, buildKnownCnTvBindings(sf));
|
|
140
|
-
expect(calls).toHaveLength(2);
|
|
141
|
-
expect(calls.map((call) => call.getText(sf))).toEqual(expect.arrayContaining(["cn(\"inside-tv one\")", "cn(\"inside-tv two\")"]));
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
//#endregion
|
|
145
|
-
export {};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { a as targetReplaceStart, i as planGroupEditForTarget, n as collectLongJsxClassNameTargets, r as formatCnCallReplacement, t as collectGroupTargets } from "../../../../targets-pCTslnFh.mjs";
|
|
2
|
-
export { collectGroupTargets, collectLongJsxClassNameTargets, formatCnCallReplacement, planGroupEditForTarget, targetReplaceStart };
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { n as collectGroupableStringNodes } from "../../../../collectors-tv-D2PXZaRt.mjs";
|
|
2
|
-
import { i as planGroupEditForTarget, r as formatCnCallReplacement, t as collectGroupTargets } from "../../../../targets-pCTslnFh.mjs";
|
|
3
|
-
import ts from "typescript";
|
|
4
|
-
//#region src/lib/arrange/domain/ast/targets.test.ts
|
|
5
|
-
describe("formatCnCallReplacement", () => {
|
|
6
|
-
it("keeps multiline trailing comma behavior explicit for multi-arg cn calls", () => {
|
|
7
|
-
const source = `import { cn } from "@codefast/tailwind-variants";
|
|
8
|
-
export function Row(className: string) {
|
|
9
|
-
return cn("flex gap-2 text-sm rounded-md border px-3", className);
|
|
10
|
-
}
|
|
11
|
-
`;
|
|
12
|
-
const stringNode = collectGroupableStringNodes(ts.createSourceFile("x.ts", source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS))[0];
|
|
13
|
-
const out = formatCnCallReplacement(stringNode, source, false);
|
|
14
|
-
expect(out).toContain("className,");
|
|
15
|
-
expect(out).toContain("\"flex gap-2\"");
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
describe("collectGroupTargets + planGroupEditForTarget", () => {
|
|
19
|
-
it("collects JSX className targets in tsx files", () => {
|
|
20
|
-
const targets = collectGroupTargets(ts.createSourceFile("x.tsx", `export function C() {
|
|
21
|
-
return <div className="flex items-center gap-2 px-4 py-2 text-sm rounded-md border bg-card" />;
|
|
22
|
-
}`, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX), "x.tsx");
|
|
23
|
-
expect(targets.some((groupTarget) => groupTarget.kind === "jsxClassName")).toBe(true);
|
|
24
|
-
});
|
|
25
|
-
it("plans undefined when groups length <= 1", () => {
|
|
26
|
-
const source = `import { cn } from "@codefast/tailwind-variants"; cn("flex gap-2");`;
|
|
27
|
-
const cnTarget = collectGroupTargets(ts.createSourceFile("x.ts", source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS), "x.ts").find((groupTarget) => groupTarget.kind === "cnArg");
|
|
28
|
-
expect(cnTarget).toBeDefined();
|
|
29
|
-
const plan = planGroupEditForTarget(cnTarget, source, false);
|
|
30
|
-
expect(plan).toBeUndefined();
|
|
31
|
-
});
|
|
32
|
-
it("includes trailing className when withClassName=true", () => {
|
|
33
|
-
const source = `import { cn } from "@codefast/tailwind-variants";
|
|
34
|
-
export function C(className: string) {
|
|
35
|
-
return cn("flex gap-2 text-sm rounded-md border px-3 font-medium", className);
|
|
36
|
-
}`;
|
|
37
|
-
const plan = planGroupEditForTarget(collectGroupTargets(ts.createSourceFile("x.ts", source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS), "x.ts").find((groupTarget) => groupTarget.kind === "cnArg"), source, true);
|
|
38
|
-
expect(plan?.replacement).toContain("className");
|
|
39
|
-
});
|
|
40
|
-
it("accepts legacy tailwind-variants import when planning cn target edits (backward compat)", () => {
|
|
41
|
-
const source = `import { cn } from "tailwind-variants";
|
|
42
|
-
export function C(className: string) {
|
|
43
|
-
return cn("flex gap-2 text-sm rounded-md border px-3 font-medium", className);
|
|
44
|
-
}`;
|
|
45
|
-
const plan = planGroupEditForTarget(collectGroupTargets(ts.createSourceFile("x.ts", source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS), "x.ts").find((groupTarget) => groupTarget.kind === "cnArg"), source, true);
|
|
46
|
-
expect(plan?.replacement).toContain("className");
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
//#endregion
|
|
50
|
-
export {};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { a as EMPTY_CN_TV_BINDINGS, c as MAX_GROUPS_BASE, d as MAX_OBJECT_DEPTH, f as MAX_REPORT_LINES, g as STATE_PREFIXES, h as RESPONSIVE_PREFIX, i as DEFAULT_ARRANGE_TARGET, l as MAX_GROUPS_CAP, m as MIN_GROUP_TOKENS, n as BUCKET_ORDER, o as LONG_STRING_TOKEN_THRESHOLD, p as MAX_STRIP_VARIANT_PASSES, r as COMPATIBLE_BUCKET_SETS, s as MAX_CLASS_EXPR_DEPTH, t as APPLY_MIN_TOKENS, u as MAX_GROUPS_HEADROOM } from "../../../constants-AtPhF-Ct.mjs";
|
|
2
|
-
export { APPLY_MIN_TOKENS, BUCKET_ORDER, COMPATIBLE_BUCKET_SETS, DEFAULT_ARRANGE_TARGET, EMPTY_CN_TV_BINDINGS, LONG_STRING_TOKEN_THRESHOLD, MAX_CLASS_EXPR_DEPTH, MAX_GROUPS_BASE, MAX_GROUPS_CAP, MAX_GROUPS_HEADROOM, MAX_OBJECT_DEPTH, MAX_REPORT_LINES, MAX_STRIP_VARIANT_PASSES, MIN_GROUP_TOKENS, RESPONSIVE_PREFIX, STATE_PREFIXES };
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { a as suggestCnGroups, i as mergeSingletons, n as capGroups, o as summarizeGroupBucketLabels, r as mergeEaseTimingIntoFollowingAnimatedState, t as areCnTailwindPartitionsEquivalent } from "../../../grouping-c1grpCQT.mjs";
|
|
2
|
-
export { areCnTailwindPartitionsEquivalent, capGroups, mergeEaseTimingIntoFollowingAnimatedState, mergeSingletons, suggestCnGroups, summarizeGroupBucketLabels };
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
import { a as suggestCnGroups, i as mergeSingletons, n as capGroups, o as summarizeGroupBucketLabels, r as mergeEaseTimingIntoFollowingAnimatedState, t as areCnTailwindPartitionsEquivalent } from "../../../grouping-c1grpCQT.mjs";
|
|
2
|
-
import "../../../arrange-BqP2DI3w.mjs";
|
|
3
|
-
//#region src/lib/arrange/domain/grouping.test.ts
|
|
4
|
-
const CHECKBOX_GROUP_ITEM_INPUT = "peer flex size-4 shrink-0 items-center justify-center rounded-sm border border-input text-primary-foreground shadow-xs outline-hidden transition hover:not-disabled:not-aria-checked:border-ring/60 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:opacity-50 aria-checked:border-primary aria-checked:bg-primary focus-visible:aria-checked:ring-primary/20 aria-invalid:border-destructive aria-invalid:ring-destructive/20 hover:not-disabled:not-aria-checked:aria-invalid:border-destructive/60 aria-checked:aria-invalid:bg-destructive dark:bg-input/30 dark:focus-visible:aria-checked:ring-primary/40 dark:aria-invalid:ring-destructive/40";
|
|
5
|
-
const CHECKBOX_GROUP_ITEM_GROUPS = [
|
|
6
|
-
"peer flex items-center justify-center size-4 shrink-0",
|
|
7
|
-
"rounded-sm border border-input shadow-xs outline-hidden",
|
|
8
|
-
"text-primary-foreground",
|
|
9
|
-
"transition",
|
|
10
|
-
"hover:not-disabled:not-aria-checked:border-ring/60",
|
|
11
|
-
"focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50",
|
|
12
|
-
"disabled:opacity-50",
|
|
13
|
-
"aria-checked:border-primary aria-checked:bg-primary",
|
|
14
|
-
"focus-visible:aria-checked:ring-primary/20",
|
|
15
|
-
"aria-invalid:border-destructive aria-invalid:ring-destructive/20",
|
|
16
|
-
"hover:not-disabled:not-aria-checked:aria-invalid:border-destructive/60",
|
|
17
|
-
"aria-checked:aria-invalid:bg-destructive",
|
|
18
|
-
"dark:bg-input/30",
|
|
19
|
-
"dark:focus-visible:aria-checked:ring-primary/40",
|
|
20
|
-
"dark:aria-invalid:ring-destructive/40"
|
|
21
|
-
];
|
|
22
|
-
function sortedTokens(classString) {
|
|
23
|
-
return classString.trim().split(/\s+/).filter(Boolean).sort();
|
|
24
|
-
}
|
|
25
|
-
describe("suggestCnGroups", () => {
|
|
26
|
-
it.each([
|
|
27
|
-
["", []],
|
|
28
|
-
[" ", []],
|
|
29
|
-
["\n ", []],
|
|
30
|
-
["flex gap-2", ["flex gap-2"]],
|
|
31
|
-
["flex gap-2 text-sm", ["flex gap-2 text-sm"]],
|
|
32
|
-
["w-4 h-4 rounded-md", ["w-4 h-4", "rounded-md"]],
|
|
33
|
-
["transition outline-hidden", ["outline-hidden", "transition"]],
|
|
34
|
-
["text-sm transition outline-hidden", [
|
|
35
|
-
"outline-hidden",
|
|
36
|
-
"text-sm",
|
|
37
|
-
"transition"
|
|
38
|
-
]],
|
|
39
|
-
["ease-ui data-open:animate-in data-open:fade-in-0", ["ease-ui data-open:animate-in data-open:fade-in-0"]],
|
|
40
|
-
["fixed inset-0 overflow-auto", ["fixed inset-0", "overflow-auto"]],
|
|
41
|
-
["fixed inset-0 grid overflow-auto", ["fixed inset-0 grid overflow-auto"]],
|
|
42
|
-
["sm:text-sm", ["sm:text-sm"]],
|
|
43
|
-
["group-hover:bg-red-500", ["group-hover:bg-red-500"]],
|
|
44
|
-
["not-disabled:opacity-50", ["not-disabled:opacity-50"]],
|
|
45
|
-
["focus:bg-accent focus:text-accent-foreground aria-disabled:opacity-50", ["focus:bg-accent focus:text-accent-foreground", "aria-disabled:opacity-50"]],
|
|
46
|
-
["grid", ["grid"]],
|
|
47
|
-
["@3xl:flex @3xl:gap-4 p-4", ["p-4", "@3xl:flex @3xl:gap-4"]],
|
|
48
|
-
["bg-white has-checked:bg-indigo-50", ["bg-white", "has-checked:bg-indigo-50"]],
|
|
49
|
-
["flex nth-3:underline", ["flex", "nth-3:underline"]],
|
|
50
|
-
["p-2 pointer-coarse:p-4", ["p-2", "pointer-coarse:p-4"]],
|
|
51
|
-
["opacity-100 inert:opacity-50", ["opacity-100", "inert:opacity-50"]],
|
|
52
|
-
["flex in-[.popover]:opacity-100", ["flex", "in-[.popover]:opacity-100"]],
|
|
53
|
-
["flex *:rounded **:text-sm", [
|
|
54
|
-
"flex",
|
|
55
|
-
"*:rounded",
|
|
56
|
-
"**:text-sm"
|
|
57
|
-
]],
|
|
58
|
-
["-gap-4 flex", ["-gap-4 flex"]],
|
|
59
|
-
["-space-x-4 flex", ["-space-x-4 flex"]],
|
|
60
|
-
["grid -gap-4 p-4", ["grid -gap-4", "p-4"]],
|
|
61
|
-
["-tracking-widest text-sm", ["-tracking-widest text-sm"]],
|
|
62
|
-
["-z-10 relative", ["-z-10 relative"]],
|
|
63
|
-
["-scale-95 w-full", ["w-full -scale-95"]],
|
|
64
|
-
["data-[vaul-drawer-direction=bottom]:a data-[vaul-drawer-direction=left]:b data-[vaul-drawer-direction=right]:c", [
|
|
65
|
-
"data-[vaul-drawer-direction=bottom]:a",
|
|
66
|
-
"data-[vaul-drawer-direction=left]:b",
|
|
67
|
-
"data-[vaul-drawer-direction=right]:c"
|
|
68
|
-
]],
|
|
69
|
-
["data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none", ["data-[range-end=true]:rounded-md", "data-[range-middle=true]:rounded-none"]]
|
|
70
|
-
])("golden groups `%s`", (input, expected) => {
|
|
71
|
-
expect(suggestCnGroups(input)).toEqual(expected);
|
|
72
|
-
expect(sortedTokens(input)).toEqual(sortedTokens(expected.join(" ")));
|
|
73
|
-
});
|
|
74
|
-
it("groups command-menu style rows deterministically", () => {
|
|
75
|
-
const input = "group/cmd relative flex items-center gap-x-2 px-2 py-1.5 rounded-sm text-sm cursor-default outline-hidden select-none";
|
|
76
|
-
const expected = [
|
|
77
|
-
"group/cmd relative flex items-center gap-x-2",
|
|
78
|
-
"px-2 py-1.5",
|
|
79
|
-
"rounded-sm outline-hidden",
|
|
80
|
-
"text-sm",
|
|
81
|
-
"cursor-default select-none"
|
|
82
|
-
];
|
|
83
|
-
const got = suggestCnGroups(input);
|
|
84
|
-
expect(got).toEqual(expected);
|
|
85
|
-
expect(sortedTokens(input)).toEqual(sortedTokens(got.join(" ")));
|
|
86
|
-
});
|
|
87
|
-
it("keeps checkbox-style partition stable", () => {
|
|
88
|
-
const got = suggestCnGroups(CHECKBOX_GROUP_ITEM_INPUT);
|
|
89
|
-
expect(got).toEqual([...CHECKBOX_GROUP_ITEM_GROUPS]);
|
|
90
|
-
expect(sortedTokens(CHECKBOX_GROUP_ITEM_INPUT)).toEqual(sortedTokens(got.join(" ")));
|
|
91
|
-
});
|
|
92
|
-
it("keeps many state keys without dropping tokens", () => {
|
|
93
|
-
const input = "flex gap-2 text-sm rounded-md border px-3 py-2 bg-card outline-hidden transition " + [
|
|
94
|
-
"hover:a",
|
|
95
|
-
"focus:b",
|
|
96
|
-
"active:c",
|
|
97
|
-
"disabled:d",
|
|
98
|
-
"checked:e",
|
|
99
|
-
"focus-visible:f",
|
|
100
|
-
"aria-invalid:g",
|
|
101
|
-
"data-open:h",
|
|
102
|
-
"dark:i",
|
|
103
|
-
"sm:j",
|
|
104
|
-
"md:k",
|
|
105
|
-
"group-hover:l",
|
|
106
|
-
"peer-focus:m",
|
|
107
|
-
"inert:n"
|
|
108
|
-
].join(" ");
|
|
109
|
-
const groups = suggestCnGroups(input);
|
|
110
|
-
expect(groups.length).toBeGreaterThan(8);
|
|
111
|
-
expect(sortedTokens(input)).toEqual(sortedTokens(groups.join(" ")));
|
|
112
|
-
});
|
|
113
|
-
it("splits in-data variant state chunks from base utilities", () => {
|
|
114
|
-
const got = suggestCnGroups("rounded-md bg-muted in-data-[slot=tooltip-content]:bg-background/20 font-sans text-xs font-medium text-muted-foreground in-data-[slot=tooltip-content]:text-background");
|
|
115
|
-
expect(got.some((c) => c.includes("bg-muted") && !c.includes("in-data-"))).toBe(true);
|
|
116
|
-
expect(got.some((c) => c.includes("in-data-[slot=tooltip-content]:bg-background/20"))).toBe(true);
|
|
117
|
-
});
|
|
118
|
-
it("splits arbitrary parent selectors from base chunk", () => {
|
|
119
|
-
const got = suggestCnGroups("flex justify-center aspect-video text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-layer]:outline-hidden");
|
|
120
|
-
expect(got[0]).not.toContain("[&");
|
|
121
|
-
expect(got.some((c) => c.includes("[&_.recharts-layer]"))).toBe(true);
|
|
122
|
-
});
|
|
123
|
-
it("merges shadcn [&_svg] utilities and :not size guard into one selector chunk", () => {
|
|
124
|
-
const input = "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-6";
|
|
125
|
-
expect(suggestCnGroups(input)).toEqual([input]);
|
|
126
|
-
});
|
|
127
|
-
it("keeps cap-groups headroom behavior for bg + outline-hidden", () => {
|
|
128
|
-
const groups = suggestCnGroups("flex items-center justify-center bg-border outline-hidden focus-visible:bg-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-[orientation=horizontal]:h-px aria-[orientation=vertical]:w-px");
|
|
129
|
-
expect(groups.some((chunk) => /\bbg-border\b/.test(chunk) && /\boutline-hidden\b/.test(chunk))).toBe(true);
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
describe("areCnTailwindPartitionsEquivalent", () => {
|
|
133
|
-
it("returns true for same partitions with different order", () => {
|
|
134
|
-
expect(areCnTailwindPartitionsEquivalent(["b a", "d c"], ["a b", "c d"])).toBe(true);
|
|
135
|
-
});
|
|
136
|
-
it("returns false for different partitions", () => {
|
|
137
|
-
expect(areCnTailwindPartitionsEquivalent(["a", "b c"], ["a b", "c"])).toBe(false);
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
describe("mergeEaseTimingIntoFollowingAnimatedState", () => {
|
|
141
|
-
it("merges ease-only chunk into later animated state chunk", () => {
|
|
142
|
-
expect(mergeEaseTimingIntoFollowingAnimatedState(["ease-ui", "data-open:animate-in data-open:fade-in-0"])).toEqual(["ease-ui data-open:animate-in data-open:fade-in-0"]);
|
|
143
|
-
});
|
|
144
|
-
it("skips intermediate state chunks to merge with later animate", () => {
|
|
145
|
-
expect(mergeEaseTimingIntoFollowingAnimatedState([
|
|
146
|
-
"base",
|
|
147
|
-
"ease-ui",
|
|
148
|
-
"sm:grid-rows-1 sm:p-4",
|
|
149
|
-
"data-open:animate-in"
|
|
150
|
-
])).toEqual([
|
|
151
|
-
"base",
|
|
152
|
-
"sm:grid-rows-1 sm:p-4",
|
|
153
|
-
"ease-ui data-open:animate-in"
|
|
154
|
-
]);
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
|
-
describe("mergeSingletons", () => {
|
|
158
|
-
it("merges singleton into compatible forward neighbor", () => {
|
|
159
|
-
expect(mergeSingletons(["bg-card", "text-white font-medium"])).toEqual(["bg-card text-white font-medium"]);
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
describe("capGroups", () => {
|
|
163
|
-
it("caps with compatible adjacent merges only", () => {
|
|
164
|
-
const out = capGroups([
|
|
165
|
-
"fixed inset-0",
|
|
166
|
-
"grid",
|
|
167
|
-
"overflow-auto",
|
|
168
|
-
"hover:bg-accent",
|
|
169
|
-
"focus:ring-2"
|
|
170
|
-
], 3);
|
|
171
|
-
expect(out.length).toBeGreaterThanOrEqual(3);
|
|
172
|
-
expect(out.join(" ")).toContain("fixed");
|
|
173
|
-
expect(out.join(" ")).toContain("overflow-auto");
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
describe("summarizeGroupBucketLabels", () => {
|
|
177
|
-
it("returns bucket labels for single-bucket chunks", () => {
|
|
178
|
-
expect(summarizeGroupBucketLabels(["flex gap-2", "text-sm"])).toEqual(["layout", "typography"]);
|
|
179
|
-
});
|
|
180
|
-
it("returns mixed labels for multi-bucket chunks", () => {
|
|
181
|
-
const labels = summarizeGroupBucketLabels(["bg-card text-sm"]);
|
|
182
|
-
expect(labels[0]).toBe("mixed:background+typography");
|
|
183
|
-
});
|
|
184
|
-
});
|
|
185
|
-
//#endregion
|
|
186
|
-
export {};
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { n as ensureCnImport, t as cnModuleSpecifierForFile } from "../../../imports-DSVq1xhB.mjs";
|
|
2
|
-
import "../../../arrange-BqP2DI3w.mjs";
|
|
3
|
-
//#region src/lib/arrange/domain/imports.test.ts
|
|
4
|
-
describe("cnModuleSpecifierForFile", () => {
|
|
5
|
-
it("documents that default module specifier is stable across file paths", () => {
|
|
6
|
-
expect(cnModuleSpecifierForFile("/repo/packages/ui/src/components/a.tsx")).toBe("@codefast/tailwind-variants");
|
|
7
|
-
expect(cnModuleSpecifierForFile("/repo/packages/cli/src/lib/a.ts")).toBe("@codefast/tailwind-variants");
|
|
8
|
-
});
|
|
9
|
-
it("documents that explicit override always takes precedence", () => {
|
|
10
|
-
expect(cnModuleSpecifierForFile("/repo/packages/ui/src/components/a.tsx", "clsx")).toBe("clsx");
|
|
11
|
-
});
|
|
12
|
-
});
|
|
13
|
-
describe("ensureCnImport", () => {
|
|
14
|
-
it("does not change source when cn is imported as default binding", () => {
|
|
15
|
-
const source = "import cn from \"@codefast/tailwind-variants\";\nconst x = 1;\n";
|
|
16
|
-
expect(ensureCnImport(source, "/repo/x.ts")).toBe(source);
|
|
17
|
-
});
|
|
18
|
-
it("does not change source when cn already imported", () => {
|
|
19
|
-
const source = "import { cn, tv } from \"@codefast/tailwind-variants\";\nconst x = 1;\n";
|
|
20
|
-
expect(ensureCnImport(source, "/repo/x.ts")).toBe(source);
|
|
21
|
-
});
|
|
22
|
-
it("injects cn into an existing named import from matching module", () => {
|
|
23
|
-
const out = ensureCnImport("import { tv } from \"clsx\";\nconst x = 1;\n", "/repo/x.ts", "clsx");
|
|
24
|
-
expect(out).toContain("import { cn, tv } from \"clsx\";");
|
|
25
|
-
});
|
|
26
|
-
it("inserts after use client directive", () => {
|
|
27
|
-
const out = ensureCnImport("\"use client\";\n\nexport const x = 1;\n", "/repo/x.tsx");
|
|
28
|
-
expect(out.startsWith("\"use client\";\n\nimport { cn }")).toBe(true);
|
|
29
|
-
});
|
|
30
|
-
it("inserts before first import when no matching import exists", () => {
|
|
31
|
-
const out = ensureCnImport("import { tv } from \"clsx\";\nconst x = 1;\n", "/repo/x.ts");
|
|
32
|
-
expect(out.indexOf("import { cn } from \"@codefast/tailwind-variants\";")).toBe(0);
|
|
33
|
-
});
|
|
34
|
-
it("inserts at file start when there are no imports", () => {
|
|
35
|
-
const out = ensureCnImport("const x = 1;\n", "/repo/x.ts");
|
|
36
|
-
expect(out.startsWith("import { cn } from \"@codefast/tailwind-variants\";\n")).toBe(true);
|
|
37
|
-
});
|
|
38
|
-
it("respects module override when adding new import", () => {
|
|
39
|
-
const out = ensureCnImport("const x = 1;\n", "/repo/x.ts", "clsx");
|
|
40
|
-
expect(out.startsWith("import { cn } from \"clsx\";\n")).toBe(true);
|
|
41
|
-
});
|
|
42
|
-
it("keeps existing legacy tailwind-variants import unchanged (backward compat)", () => {
|
|
43
|
-
const source = "import { cn, tv } from \"tailwind-variants\";\nconst x = 1;\n";
|
|
44
|
-
expect(ensureCnImport(source, "/repo/x.ts")).toBe(source);
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
//#endregion
|
|
48
|
-
export {};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { a as compositeSecondaryOrder, c as selectorKey, d as tokenizeClassString, i as classifyToken, l as stateKey, n as bucketsMergeCompatible, o as indexOfFirstVariantColon, r as classifyBareUtility, s as isArbitraryParentSelectorStateToken, t as bucketsCompatible, u as stripVariants } from "../../../tokenizer-CeZx73Zu.mjs";
|
|
2
|
-
export { bucketsCompatible, bucketsMergeCompatible, classifyBareUtility, classifyToken, compositeSecondaryOrder, indexOfFirstVariantColon, isArbitraryParentSelectorStateToken, selectorKey, stateKey, stripVariants, tokenizeClassString };
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { c as selectorKey, d as tokenizeClassString, i as classifyToken, l as stateKey, n as bucketsMergeCompatible, o as indexOfFirstVariantColon, t as bucketsCompatible, u as stripVariants } from "../../../tokenizer-CeZx73Zu.mjs";
|
|
2
|
-
import "../../../arrange-BqP2DI3w.mjs";
|
|
3
|
-
//#region src/lib/arrange/domain/tokenizer.test.ts
|
|
4
|
-
describe("tokenizeClassString", () => {
|
|
5
|
-
it("trims and splits on whitespace runs", () => {
|
|
6
|
-
expect(tokenizeClassString(" flex gap-2 ")).toEqual(["flex", "gap-2"]);
|
|
7
|
-
});
|
|
8
|
-
it("returns empty for whitespace-only input", () => {
|
|
9
|
-
expect(tokenizeClassString(" \n ")).toEqual([]);
|
|
10
|
-
});
|
|
11
|
-
});
|
|
12
|
-
describe("bucketsMergeCompatible", () => {
|
|
13
|
-
it.each([
|
|
14
|
-
[
|
|
15
|
-
"state",
|
|
16
|
-
"state",
|
|
17
|
-
false
|
|
18
|
-
],
|
|
19
|
-
[
|
|
20
|
-
"starting",
|
|
21
|
-
"starting",
|
|
22
|
-
false
|
|
23
|
-
],
|
|
24
|
-
[
|
|
25
|
-
"layout",
|
|
26
|
-
"sizing",
|
|
27
|
-
true
|
|
28
|
-
],
|
|
29
|
-
[
|
|
30
|
-
"shape",
|
|
31
|
-
"shadow",
|
|
32
|
-
true
|
|
33
|
-
],
|
|
34
|
-
[
|
|
35
|
-
"layout",
|
|
36
|
-
"state",
|
|
37
|
-
false
|
|
38
|
-
],
|
|
39
|
-
[
|
|
40
|
-
"arbitrary",
|
|
41
|
-
"arbitrary",
|
|
42
|
-
false
|
|
43
|
-
],
|
|
44
|
-
[
|
|
45
|
-
"arbitrary",
|
|
46
|
-
"state",
|
|
47
|
-
false
|
|
48
|
-
],
|
|
49
|
-
[
|
|
50
|
-
"selector",
|
|
51
|
-
"selector",
|
|
52
|
-
false
|
|
53
|
-
],
|
|
54
|
-
[
|
|
55
|
-
"layout",
|
|
56
|
-
"selector",
|
|
57
|
-
false
|
|
58
|
-
],
|
|
59
|
-
[
|
|
60
|
-
"selector",
|
|
61
|
-
"state",
|
|
62
|
-
false
|
|
63
|
-
]
|
|
64
|
-
])("merge compatibility %s + %s -> %s", (a, b, expected) => {
|
|
65
|
-
expect(bucketsMergeCompatible(a, b)).toBe(expected);
|
|
66
|
-
expect(bucketsMergeCompatible(b, a)).toBe(expected);
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
describe("bucketsCompatible", () => {
|
|
70
|
-
it.each([
|
|
71
|
-
[
|
|
72
|
-
"layout",
|
|
73
|
-
"layout",
|
|
74
|
-
true
|
|
75
|
-
],
|
|
76
|
-
[
|
|
77
|
-
"layout",
|
|
78
|
-
"sizing",
|
|
79
|
-
true
|
|
80
|
-
],
|
|
81
|
-
[
|
|
82
|
-
"shape",
|
|
83
|
-
"shadow",
|
|
84
|
-
true
|
|
85
|
-
],
|
|
86
|
-
[
|
|
87
|
-
"layout",
|
|
88
|
-
"state",
|
|
89
|
-
false
|
|
90
|
-
],
|
|
91
|
-
[
|
|
92
|
-
"arbitrary",
|
|
93
|
-
"state",
|
|
94
|
-
false
|
|
95
|
-
],
|
|
96
|
-
[
|
|
97
|
-
"layout",
|
|
98
|
-
"selector",
|
|
99
|
-
false
|
|
100
|
-
]
|
|
101
|
-
])("compatibility %s + %s -> %s", (a, b, expected) => {
|
|
102
|
-
expect(bucketsCompatible(a, b)).toBe(expected);
|
|
103
|
-
expect(bucketsCompatible(b, a)).toBe(expected);
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
describe("stateKey", () => {
|
|
107
|
-
it("uses the full variant stack for unique keys", () => {
|
|
108
|
-
expect(stateKey("@md/field-group:[&>*]:w-auto")).not.toBe(stateKey("@md/field-group:[&>[data-slot=field-label]]:flex-auto"));
|
|
109
|
-
});
|
|
110
|
-
it("normalizes bracketed data variant stems", () => {
|
|
111
|
-
expect(stateKey("data-[state=open]:opacity-100")).toBe("data-[state=open]");
|
|
112
|
-
expect(stateKey("in-data-[slot=tooltip-content]:bg-background/20")).toBe("in-data-[slot=tooltip-content]");
|
|
113
|
-
});
|
|
114
|
-
it("keeps distinct keys for in-data-side-* stems", () => {
|
|
115
|
-
expect(stateKey("in-data-side-right:cursor-e-resize")).toBe("in-data-side-right");
|
|
116
|
-
expect(stateKey("in-data-side-left:cursor-w-resize")).not.toBe(stateKey("in-data-side-right:cursor-e-resize"));
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
describe("indexOfFirstVariantColon + stripVariants", () => {
|
|
120
|
-
it("ignores colons inside square brackets", () => {
|
|
121
|
-
const tok = "[&_a:hover]:text-red-500";
|
|
122
|
-
expect(indexOfFirstVariantColon(tok)).toBe(11);
|
|
123
|
-
expect(stripVariants(tok)).toBe("text-red-500");
|
|
124
|
-
});
|
|
125
|
-
it("strips stacked variant prefixes", () => {
|
|
126
|
-
expect(stripVariants("@min-[600px]:@max-[900px]:hidden")).toBe("hidden");
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
describe("classifyToken", () => {
|
|
130
|
-
it.each([
|
|
131
|
-
["flex", "layout"],
|
|
132
|
-
["w-4", "sizing"],
|
|
133
|
-
["px-3", "spacing"],
|
|
134
|
-
["rounded-md", "shape"],
|
|
135
|
-
["text-sm", "typography"],
|
|
136
|
-
["transition", "motion"],
|
|
137
|
-
["outline-hidden", "shadow"],
|
|
138
|
-
["focus-visible:outline-hidden", "state"],
|
|
139
|
-
["hover:opacity-80", "state"],
|
|
140
|
-
["[&_svg]:size-4", "selector"],
|
|
141
|
-
["*:rounded", "selector"],
|
|
142
|
-
["**:text-sm", "selector"],
|
|
143
|
-
["has-[img]:bg-muted", "selector"],
|
|
144
|
-
["in-[.popover]:opacity-100", "selector"],
|
|
145
|
-
["group-[.is-published]:block", "selector"],
|
|
146
|
-
["peer-[.is-dirty]:peer-required:block", "selector"],
|
|
147
|
-
["not-[.prose]:mt-4", "selector"],
|
|
148
|
-
["starting:opacity-0", "starting"],
|
|
149
|
-
["cursor-default", "behavior"],
|
|
150
|
-
["@container/sidebar", "existence"],
|
|
151
|
-
["@md/sidebar:w-full", "state"]
|
|
152
|
-
])("classifies %s -> %s", (token, bucket) => {
|
|
153
|
-
expect(classifyToken(token)).toBe(bucket);
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
describe("selectorKey", () => {
|
|
157
|
-
it("merges shadcn svg size guard with plain [&_svg] utilities", () => {
|
|
158
|
-
expect(selectorKey("[&_svg]:pointer-events-none")).toBe(selectorKey("[&_svg:not([class*='size-'])]:size-6"));
|
|
159
|
-
});
|
|
160
|
-
it("still splits unrelated arbitrary parent selectors", () => {
|
|
161
|
-
expect(selectorKey("[&_svg]:size-4")).not.toBe(selectorKey("[&>*]:block"));
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
//#endregion
|
|
165
|
-
export {};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { i as DEFAULT_ARRANGE_TARGET, o as LONG_STRING_TOKEN_THRESHOLD, p as MAX_STRIP_VARIANT_PASSES } from "../../constants-AtPhF-Ct.mjs";
|
|
2
|
-
import { c as selectorKey, d as tokenizeClassString, i as classifyToken, l as stateKey, n as bucketsMergeCompatible, o as indexOfFirstVariantColon, t as bucketsCompatible, u as stripVariants } from "../../tokenizer-CeZx73Zu.mjs";
|
|
3
|
-
import { a as mergeCnUnconditionalLiteralPoolForTest, r as forEachStringLiteralInClassExpression } from "../../collectors-cn-BS8TTQ8O.mjs";
|
|
4
|
-
import { a as isCnOrTvIdentifier, i as indentOfLineContaining, l as unwrapCnInsideTvCallReplacement, n as applyEditsDescending, o as lineOf, r as buildKnownCnTvBindings, s as moduleLooksLikeCnTvReexport, t as KNOWN_CN_TV_MODULES } from "../../ast-helpers-MDRYuIAk.mjs";
|
|
5
|
-
import { n as walkTsxFiles, t as DEFAULT_SKIP_DIRS } from "../../walk-DjgQn66n.mjs";
|
|
6
|
-
import { t as analyzeDirectory } from "../../analyze-DvtJ3j9m.mjs";
|
|
7
|
-
import { t as printAnalyzeReport } from "../../report-DYxvw34T.mjs";
|
|
8
|
-
import { a as suggestCnGroups, i as mergeSingletons, n as capGroups, o as summarizeGroupBucketLabels, r as mergeEaseTimingIntoFollowingAnimatedState, t as areCnTailwindPartitionsEquivalent } from "../../grouping-c1grpCQT.mjs";
|
|
9
|
-
import { a as formatJsxCnAttributeValue, i as formatCnCall, n as formatArray, r as formatCnArguments, t as escapeTsStringLiteralContent } from "../../formatters-DGE8jJ53.mjs";
|
|
10
|
-
import { n as ensureCnImport, t as cnModuleSpecifierForFile } from "../../imports-DSVq1xhB.mjs";
|
|
11
|
-
import { t as groupFile } from "../../group-file-ClW7XdD6.mjs";
|
|
12
|
-
import { n as ArrangeErrorCode, t as ArrangeError } from "../../errors-CpU1ogfA.mjs";
|
|
13
|
-
import { n as runOnTarget, t as runArrangeSync } from "../../run-target-CJWrqNT4.mjs";
|
|
14
|
-
import { n as createNodeCliLogger, t as createNodeCliFs } from "../../node-io-DFRbHO6m.mjs";
|
|
15
|
-
import "../../arrange-BqP2DI3w.mjs";
|
|
16
|
-
export { ArrangeError, ArrangeErrorCode, DEFAULT_ARRANGE_TARGET, DEFAULT_SKIP_DIRS, KNOWN_CN_TV_MODULES, LONG_STRING_TOKEN_THRESHOLD, MAX_STRIP_VARIANT_PASSES, analyzeDirectory, applyEditsDescending, areCnTailwindPartitionsEquivalent, bucketsCompatible, bucketsMergeCompatible, buildKnownCnTvBindings, capGroups, classifyToken, cnModuleSpecifierForFile, createNodeCliFs, createNodeCliLogger, ensureCnImport, escapeTsStringLiteralContent, forEachStringLiteralInClassExpression, formatArray, formatCnArguments, formatCnCall, formatJsxCnAttributeValue, groupFile, indentOfLineContaining, indexOfFirstVariantColon, isCnOrTvIdentifier, lineOf, mergeCnUnconditionalLiteralPoolForTest, mergeEaseTimingIntoFollowingAnimatedState, mergeSingletons, moduleLooksLikeCnTvReexport, printAnalyzeReport, runArrangeSync, runOnTarget, selectorKey, stateKey, stripVariants, suggestCnGroups, summarizeGroupBucketLabels, tokenizeClassString, unwrapCnInsideTvCallReplacement, walkTsxFiles };
|