@codefast/cli 0.3.14-canary.2 → 0.3.15
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/README.md +8 -3
- package/dist/bootstrap/cli-application.module.mjs +18 -0
- package/dist/bootstrap/composition-root.mjs +14 -0
- package/dist/bootstrap/register-cli-command-trees.mjs +7 -0
- package/dist/{lib → domains}/arrange/application/use-cases/analyze-directory.use-case.mjs +12 -12
- package/dist/{lib → domains}/arrange/application/use-cases/prepare-arrange-workspace.use-case.mjs +19 -18
- package/dist/{lib → domains}/arrange/application/use-cases/run-arrange-sync.use-case.mjs +18 -18
- package/dist/{lib → domains}/arrange/application/use-cases/suggest-cn-groups.use-case.mjs +5 -5
- package/dist/domains/arrange/arrange.module.mjs +38 -0
- package/dist/domains/arrange/composition/tokens.mjs +17 -0
- package/dist/{lib/arrange/domain/arrange-analyze.service.mjs → domains/arrange/domain/arrange-analyze.domain-service.mjs} +1 -1
- package/dist/{lib/arrange/domain/arrange-grouping.service.mjs → domains/arrange/domain/arrange-grouping.domain-service.mjs} +2 -2
- package/dist/{lib → domains}/arrange/domain/ast/ast-helpers.helper.mjs +2 -2
- package/dist/{lib → domains}/arrange/domain/ast/ast-node.model.mjs +1 -1
- package/dist/{lib → domains}/arrange/domain/ast/collectors-cn.collector.mjs +1 -1
- package/dist/{lib → domains}/arrange/domain/ast/collectors-jsx.collector.mjs +1 -1
- package/dist/{lib → domains}/arrange/domain/ast/collectors-tv.collector.mjs +1 -1
- package/dist/{lib → domains}/arrange/domain/ast/targets.model.mjs +2 -2
- package/dist/{lib → domains}/arrange/domain/constants.domain.mjs +1 -1
- package/dist/{lib → domains}/arrange/domain/grouping.domain.mjs +1 -1
- package/dist/{lib → domains}/arrange/domain/imports.domain.mjs +1 -1
- package/dist/{lib → domains}/arrange/domain/source-text-formatters.formatter.mjs +2 -2
- package/dist/{lib/arrange/domain/tailwind-grouping.service.mjs → domains/arrange/domain/tailwind-grouping.domain-service.mjs} +5 -5
- package/dist/{lib → domains}/arrange/domain/tailwind-token-classifier.domain-service.mjs +1 -1
- package/dist/{lib → domains}/arrange/domain/tailwind-token.value-object.mjs +1 -1
- package/dist/{lib/arrange/application/services/arrange-file-processor.service.mjs → domains/arrange/infrastructure/adapters/arrange-file-processor.adapter.mjs} +8 -8
- package/dist/domains/arrange/infrastructure/adapters/arrange-target-path-resolver.adapter.mjs +247 -0
- package/dist/{lib/arrange/application/services/arrange-target-scanner.service.mjs → domains/arrange/infrastructure/adapters/arrange-target-scanner.adapter.mjs} +8 -8
- package/dist/{lib/arrange/adapters/secondary → domains/arrange/infrastructure/adapters}/domain-source-parser.adapter.mjs +10 -8
- package/dist/{lib/arrange/adapters/secondary → domains/arrange/infrastructure/adapters}/file-walker.adapter.mjs +8 -9
- package/dist/domains/arrange/infrastructure/typescript-ast-translator.mjs +580 -0
- package/dist/{lib/arrange/adapters/primary → domains/arrange/presentation}/cli/arrange.command.mjs +195 -54
- package/dist/{lib/arrange/presentation → domains/arrange/presentation/presenters}/arrange-analyze.presenter.mjs +26 -33
- package/dist/{lib/arrange/presentation → domains/arrange/presentation/presenters}/arrange-cli.schema.mjs +1 -1
- package/dist/{lib/tag/presentation/present-tag-sync-result.presenter.mjs → domains/arrange/presentation/presenters/arrange-sync.presenter.mjs} +12 -9
- package/dist/{lib/arrange/presentation → domains/arrange/presentation/presenters}/group-file-preview.presenter.mjs +46 -46
- package/dist/domains/config/composition/tokens.mjs +7 -0
- package/dist/{lib/config/infrastructure/config-schema.adapter.mjs → domains/config/domain/codefast-config.schema.mjs} +6 -6
- package/dist/{lib/config/infrastructure → domains/config/infrastructure/adapters}/config-loader.adapter.mjs +76 -77
- package/dist/{lib/config/infrastructure → domains/config/infrastructure/adapters}/config-warning-reporter.adapter.mjs +6 -6
- package/dist/domains/config/infrastructure/adapters/zod-codefast-config-schema.adapter.mjs +236 -0
- package/dist/domains/mirror/application/mirror-sync-cli-result.mjs +15 -0
- package/dist/{lib → domains}/mirror/application/use-cases/prepare-mirror-sync.use-case.mjs +14 -15
- package/dist/{lib → domains}/mirror/application/use-cases/run-mirror-sync.use-case.mjs +69 -54
- package/dist/{lib/mirror/contracts → domains/mirror/composition}/tokens.mjs +4 -3
- package/dist/{lib → domains}/mirror/domain/constants.domain.mjs +1 -1
- package/dist/{lib → domains}/mirror/domain/errors.domain.mjs +1 -1
- package/dist/{lib/mirror/application/services/generate-mirror-exports.service.mjs → domains/mirror/domain/generate-mirror-exports.domain-service.mjs} +2 -2
- package/dist/{lib → domains}/mirror/domain/package-display-name.policy.mjs +1 -1
- package/dist/{lib → domains}/mirror/domain/path-normalizer.value-object.mjs +1 -1
- package/dist/{lib/mirror/adapters/secondary → domains/mirror/infrastructure/adapters}/file-system-service.adapter.mjs +8 -8
- package/dist/domains/mirror/infrastructure/adapters/mirror-package-path-resolver.adapter.mjs +252 -0
- package/dist/{lib/mirror/adapters/secondary → domains/mirror/infrastructure/adapters}/mirror-sync-reporter.adapter.mjs +94 -15
- package/dist/{lib/mirror/adapters/secondary → domains/mirror/infrastructure/adapters}/package-repository.adapter.mjs +4 -4
- package/dist/{lib/mirror/adapters/secondary → domains/mirror/infrastructure/adapters}/sync-workspace-package.adapter.mjs +23 -46
- package/dist/{lib/mirror/infrastructure → domains/mirror/infrastructure/guards}/dirent-list.guard.mjs +1 -1
- package/dist/{lib → domains}/mirror/infrastructure/package-json-exports.repository.mjs +27 -27
- package/dist/domains/mirror/mirror.module.mjs +26 -0
- package/dist/{lib/mirror/adapters/primary → domains/mirror/presentation}/cli/mirror.command.mjs +83 -27
- package/dist/{lib/mirror/presentation → domains/mirror/presentation/presenters}/mirror-cli.schema.mjs +1 -4
- package/dist/domains/mirror/presentation/presenters/present-mirror-sync-progress.presenter.mjs +265 -0
- package/dist/domains/tag/application/ports/outbound/tag-eligible-workspace-paths.port.mjs +1 -0
- package/dist/domains/tag/application/ports/outbound/tag-since-writer.port.mjs +1 -0
- package/dist/domains/tag/application/ports/outbound/tag-target-path-resolver.port.mjs +1 -0
- package/dist/domains/tag/application/ports/outbound/tag-target-runner.port.mjs +1 -0
- package/dist/domains/tag/application/ports/outbound/tag-version-resolver.port.mjs +1 -0
- package/dist/domains/tag/application/ports/presenting/present-tag-sync-progress.presenter.mjs +1 -0
- package/dist/domains/tag/application/ports/presenting/present-tag-sync-result.presenter.mjs +1 -0
- package/dist/domains/tag/application/requests/tag-sync-execution-input.mjs +1 -0
- package/dist/domains/tag/application/requests/tag-sync.request.mjs +1 -0
- package/dist/{lib → domains}/tag/application/tag-sync-cli-result.mjs +3 -3
- package/dist/{lib → domains}/tag/application/use-cases/prepare-tag-sync.use-case.mjs +20 -24
- package/dist/{lib → domains}/tag/application/use-cases/run-tag-sync.use-case.mjs +123 -129
- package/dist/domains/tag/composition/tokens.mjs +13 -0
- package/dist/domains/tag/contracts/models.mjs +1 -0
- package/dist/domains/tag/domain/types.domain.mjs +1 -0
- package/dist/{lib/tag/adapters/secondary → domains/tag/infrastructure/adapters}/tag-since-writer.adapter.mjs +105 -105
- package/dist/{lib/tag/adapters/secondary/typescript-tree-walk.adapter.mjs → domains/tag/infrastructure/adapters/tag-target-path-resolver.adapter.mjs} +11 -9
- package/dist/domains/tag/infrastructure/adapters/tag-target-resolver.adapter.mjs +302 -0
- package/dist/domains/tag/infrastructure/adapters/tag-target-runner.adapter.mjs +259 -0
- package/dist/{lib/tag/adapters/secondary → domains/tag/infrastructure/adapters}/tag-version-resolver.adapter.mjs +6 -6
- package/dist/{lib/tag/adapters/primary → domains/tag/presentation}/cli/tag.command.mjs +67 -27
- package/dist/{lib/tag/presentation/tag-sync-progress-listener.presenter.mjs → domains/tag/presentation/presenters/present-tag-sync-progress.presenter.mjs} +14 -9
- package/dist/domains/tag/presentation/presenters/present-tag-sync-result.presenter.mjs +290 -0
- package/dist/{lib/tag/presentation → domains/tag/presentation/presenters}/tag-cli.schema.mjs +1 -1
- package/dist/domains/tag/tag.module.mjs +28 -0
- package/dist/program.mjs +3 -2
- package/dist/shell/application/cli-runtime.tokens.mjs +18 -0
- package/dist/shell/application/coordination/cli-executor.coordination.mjs +1 -0
- package/dist/shell/application/coordination/cli-schema-parsing.coordination.mjs +1 -0
- package/dist/shell/application/global-cli-options.model.mjs +5 -0
- package/dist/shell/application/ports/inbound/load-codefast-config.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/cli-fs.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/cli-logger.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/cli-path.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/cli-runtime.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/cli-telemetry.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/cli-verbose-diagnostics.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/format-app-error.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/global-cli-options-parse.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/repo-root-resolver.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/typescript-source-file-walker.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/workspace-package-layout.port.mjs +1 -0
- package/dist/shell/application/ports/primary/command.port.mjs +1 -0
- package/dist/shell/application/services/cli-executor.service.mjs +267 -0
- package/dist/shell/application/services/schema-validator.service.mjs +236 -0
- package/dist/{lib/core/application → shell/application/use-cases}/load-codefast-config.use-case.mjs +11 -13
- package/dist/shell/composition/tokens.mjs +5 -0
- package/dist/shell/contracts/cli-command-slots.mjs +11 -0
- package/dist/{lib/core → shell}/domain/caught-unknown-message.value-object.mjs +1 -1
- package/dist/{lib/core → shell}/domain/cli-exit-codes.domain.mjs +1 -1
- package/dist/shell/domain/cli-positional-arg.value-object.mjs +6 -0
- package/dist/{lib/core → shell}/domain/errors.domain.mjs +1 -1
- package/dist/{lib/core → shell}/domain/result.model.mjs +1 -1
- package/dist/{lib/shared/source-code/domain/text-edit.model.mjs → shell/domain/source-text-edit.support.mjs} +2 -2
- package/dist/shell/infrastructure/adapters/cli-verbose-diagnostics.adapter.mjs +228 -0
- package/dist/{lib/tag/adapters/secondary/tag-target-resolver.adapter.mjs → shell/infrastructure/adapters/format-app-error.adapter.mjs} +16 -13
- package/dist/shell/infrastructure/adapters/global-cli-options-parser.adapter.mjs +233 -0
- package/dist/{lib/mirror/adapters/secondary/workspace-service.adapter.mjs → shell/infrastructure/adapters/repo-root-resolver.adapter.mjs} +20 -13
- package/dist/shell/infrastructure/adapters/typescript-source-file-walker.adapter.mjs +259 -0
- package/dist/shell/infrastructure/commander/commander-cli-host.adapter.mjs +69 -0
- package/dist/{lib/infrastructure/node-io.adapter.mjs → shell/infrastructure/node/node-cli-fs.adapter.mjs} +11 -47
- package/dist/{lib/arrange/adapters/secondary/workspace-resolver.adapter.mjs → shell/infrastructure/node/node-cli-logger.adapter.mjs} +11 -13
- package/dist/{lib/core/infrastructure/path.adapter.mjs → shell/infrastructure/node/node-cli-path.adapter.mjs} +1 -1
- package/dist/{lib/core/infrastructure/repo-root-resolver.adapter.mjs → shell/infrastructure/node/node-cli-runtime.adapter.mjs} +14 -13
- package/dist/shell/infrastructure/telemetry/cli-telemetry.adapter.mjs +280 -0
- package/dist/shell/infrastructure/workspace/node-pnpm-workspace-package-layout.adapter.mjs +385 -0
- package/dist/shell/shell.module.mjs +43 -0
- package/dist/shell/wiring/optional-cli-port-telemetry-activation.mjs +13 -0
- package/package.json +9 -7
- package/dist/lib/arrange/adapters/primary/cli/arrange.presentation.module.mjs +0 -14
- package/dist/lib/arrange/adapters/primary/cli/presentation.tokens.mjs +0 -5
- package/dist/lib/arrange/application/services/arrange-target-path-resolver.service.mjs +0 -21
- package/dist/lib/arrange/arrange.module.mjs +0 -31
- package/dist/lib/arrange/contracts/tokens.mjs +0 -15
- package/dist/lib/arrange/infrastructure/typescript-ast-translator.adapter.mjs +0 -355
- package/dist/lib/arrange/presentation/arrange-sync.presenter.mjs +0 -33
- package/dist/lib/bootstrap/composition-root.mjs +0 -33
- package/dist/lib/config/application/services/load-config.service.mjs +0 -17
- package/dist/lib/config/contracts/tokens.mjs +0 -6
- package/dist/lib/core/application/services/global-cli-options-parser.service.mjs +0 -9
- package/dist/lib/core/application/services/schema-validator.service.mjs +0 -17
- package/dist/lib/core/contracts/tokens.mjs +0 -10
- package/dist/lib/core/core.module.mjs +0 -9
- package/dist/lib/core/infrastructure/infrastructure.module.mjs +0 -30
- package/dist/lib/core/infrastructure/port-telemetry.decorator.mjs +0 -62
- package/dist/lib/core/infrastructure/verbose-diagnostics.policy.mjs +0 -9
- package/dist/lib/core/presentation/cli-executor.presenter.mjs +0 -42
- package/dist/lib/core/presentation/cli-schema.parser.mjs +0 -7
- package/dist/lib/core/presentation/format-app-error.presenter.mjs +0 -17
- package/dist/lib/core/presentation/presentation.module.mjs +0 -5
- package/dist/lib/infrastructure/workspace/repo-root-resolver.service.mjs +0 -21
- package/dist/lib/kernel/contracts/tokens.mjs +0 -5
- package/dist/lib/mirror/application/mirror-sync-json.format.mjs +0 -12
- package/dist/lib/mirror/application/services/mirror-package-arg-resolver.service.mjs +0 -20
- package/dist/lib/mirror/infrastructure/mirror-console-reporter.presenter.mjs +0 -99
- package/dist/lib/mirror/infrastructure/package-filter-resolver.service.mjs +0 -25
- package/dist/lib/mirror/infrastructure/workspace-packages.service.mjs +0 -158
- package/dist/lib/mirror/mirror.module.mjs +0 -25
- package/dist/lib/shared/source-code/infrastructure/typescript-source-file-walker.service.mjs +0 -33
- package/dist/lib/tag/adapters/primary/cli/presentation.tokens.mjs +0 -6
- package/dist/lib/tag/adapters/primary/cli/tag.presentation.module.mjs +0 -13
- package/dist/lib/tag/application/services/tag-cli-target-path-resolver.service.mjs +0 -9
- package/dist/lib/tag/application/services/tag-target-runner.service.mjs +0 -21
- package/dist/lib/tag/application/tag-sync-json.format.mjs +0 -14
- package/dist/lib/tag/contracts/tokens.mjs +0 -10
- package/dist/lib/tag/infrastructure/tag-target-candidates.adapter.mjs +0 -170
- package/dist/lib/tag/presentation/colors.presenter.mjs +0 -12
- package/dist/lib/tag/presentation/tag-sync.presenter.mjs +0 -61
- package/dist/lib/tag/tag.module.mjs +0 -23
- /package/dist/{lib/arrange/application/ports/domain-source-parser.port.mjs → domains/arrange/application/ports/inbound/analyze-directory.port.mjs} +0 -0
- /package/dist/{lib/arrange/application/ports/file-walker.port.mjs → domains/arrange/application/ports/inbound/prepare-arrange-workspace.port.mjs} +0 -0
- /package/dist/{lib/arrange/application/ports/group-file-preview.port.mjs → domains/arrange/application/ports/inbound/run-arrange-sync.port.mjs} +0 -0
- /package/dist/{lib/arrange/application/ports/workspace-resolver.port.mjs → domains/arrange/application/ports/inbound/suggest-cn-groups.port.mjs} +0 -0
- /package/dist/{lib/arrange/application/requests/analyze-directory.request.mjs → domains/arrange/application/ports/outbound/arrange-file-processor.port.mjs} +0 -0
- /package/dist/{lib/arrange/application/requests/arrange-sync.request.mjs → domains/arrange/application/ports/outbound/arrange-target-path-resolver.port.mjs} +0 -0
- /package/dist/{lib/arrange/application/requests/suggest-groups.request.mjs → domains/arrange/application/ports/outbound/arrange-target-scanner.port.mjs} +0 -0
- /package/dist/{lib/arrange/contracts/analyze-report-presenter.contract.mjs → domains/arrange/application/ports/outbound/domain-source-parser.port.mjs} +0 -0
- /package/dist/{lib/arrange/contracts/models.mjs → domains/arrange/application/ports/outbound/file-walker.port.mjs} +0 -0
- /package/dist/{lib/arrange/contracts/services.contract.mjs → domains/arrange/application/ports/presenting/present-analyze-report.presenter.mjs} +0 -0
- /package/dist/{lib/arrange/domain/types.domain.mjs → domains/arrange/application/ports/presenting/present-arrange-sync-result.presenter.mjs} +0 -0
- /package/dist/{lib/config/application/ports/config-loader.port.mjs → domains/arrange/application/ports/presenting/present-group-file-preview.presenter.mjs} +0 -0
- /package/dist/{lib/config/application/ports/config-warning-reporter.port.mjs → domains/arrange/application/requests/analyze-directory.request.mjs} +0 -0
- /package/dist/{lib/config/domain/schema.domain.mjs → domains/arrange/application/requests/arrange-sync.request.mjs} +0 -0
- /package/dist/{lib/core/application/ports/cli-io.port.mjs → domains/arrange/application/requests/suggest-groups.request.mjs} +0 -0
- /package/dist/{lib/mirror → domains/arrange}/contracts/models.mjs +0 -0
- /package/dist/{lib/mirror → domains/arrange}/domain/types.domain.mjs +0 -0
- /package/dist/{lib/core/application/ports/path.port.mjs → domains/config/application/ports/outbound/codefast-config-schema.port.mjs} +0 -0
- /package/dist/{lib/core/application/ports/repo-root-resolver.port.mjs → domains/config/application/ports/outbound/config-loader.port.mjs} +0 -0
- /package/dist/{lib/core/application/ports/runtime.port.mjs → domains/config/application/ports/outbound/config-warning-reporter.port.mjs} +0 -0
- /package/dist/{lib/kernel/contracts/cli-command.contract.mjs → domains/config/domain/schema.domain.mjs} +0 -0
- /package/dist/{lib/mirror/application/ports/file-system-service.port.mjs → domains/mirror/application/ports/inbound/prepare-mirror-sync.port.mjs} +0 -0
- /package/dist/{lib/mirror/application/ports/mirror-sync-reporter.port.mjs → domains/mirror/application/ports/inbound/run-mirror-sync.port.mjs} +0 -0
- /package/dist/{lib/mirror/application/ports/package-repository.port.mjs → domains/mirror/application/ports/outbound/file-system-service.port.mjs} +0 -0
- /package/dist/{lib/mirror/application/ports/sync-workspace-package.port.mjs → domains/mirror/application/ports/outbound/mirror-package-path.port.mjs} +0 -0
- /package/dist/{lib/mirror/application/ports/workspace-service.port.mjs → domains/mirror/application/ports/outbound/mirror-sync-reporter.port.mjs} +0 -0
- /package/dist/{lib/mirror/application/requests/mirror-sync.request.mjs → domains/mirror/application/ports/outbound/package-repository.port.mjs} +0 -0
- /package/dist/{lib/tag/application/ports/tag-since-writer.port.mjs → domains/mirror/application/ports/outbound/sync-workspace-package.port.mjs} +0 -0
- /package/dist/{lib/tag/application/ports/tag-version-resolver.port.mjs → domains/mirror/application/ports/presenting/present-mirror-sync-progress.presenter.mjs} +0 -0
- /package/dist/{lib/tag/application/ports/target-resolver.port.mjs → domains/mirror/application/requests/mirror-sync-execution-input.mjs} +0 -0
- /package/dist/{lib/tag/application/ports/typescript-tree-walk.port.mjs → domains/mirror/application/requests/mirror-sync.request.mjs} +0 -0
- /package/dist/{lib/tag → domains/mirror}/contracts/models.mjs +0 -0
- /package/dist/{lib/tag → domains/mirror}/domain/types.domain.mjs +0 -0
- /package/dist/{lib/tag/application/requests/tag-sync.request.mjs → domains/tag/application/ports/inbound/prepare-tag-sync.port.mjs} +0 -0
- /package/dist/{lib/tag/contracts/tag-sync-result-presenter.contract.mjs → domains/tag/application/ports/inbound/run-tag-sync.port.mjs} +0 -0
package/README.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
A small developer CLI for maintenance tasks in a TypeScript monorepo — Tailwind class arranging, `package.json` `exports` mirroring, and `@since` JSDoc tagging.
|
|
4
4
|
|
|
5
|
+
[](https://github.com/codefastlabs/codefast/actions/workflows/release.yml)
|
|
6
|
+
[](https://www.npmjs.com/package/@codefast/cli)
|
|
7
|
+
[](https://www.npmjs.com/package/@codefast/cli)
|
|
8
|
+
[](https://opensource.org/licenses/MIT)
|
|
9
|
+
|
|
5
10
|
---
|
|
6
11
|
|
|
7
12
|
## Table of Contents
|
|
@@ -9,7 +14,7 @@ A small developer CLI for maintenance tasks in a TypeScript monorepo — Tailwin
|
|
|
9
14
|
- [Why @codefast/cli](#why-codefastcli)
|
|
10
15
|
- [Requirements](#requirements)
|
|
11
16
|
- [Installation](#installation)
|
|
12
|
-
- [Quick
|
|
17
|
+
- [Quick Start](#quick-start)
|
|
13
18
|
- [Global options](#global-options)
|
|
14
19
|
- [Exit codes](#exit-codes)
|
|
15
20
|
- [`arrange`](#arrange)
|
|
@@ -75,7 +80,7 @@ npx @codefast/cli --help
|
|
|
75
80
|
|
|
76
81
|
---
|
|
77
82
|
|
|
78
|
-
## Quick
|
|
83
|
+
## Quick Start
|
|
79
84
|
|
|
80
85
|
```bash
|
|
81
86
|
# Analyze Tailwind classes in the nearest package
|
|
@@ -334,7 +339,7 @@ Contract:
|
|
|
334
339
|
|
|
335
340
|
Adjacent buckets may be merged into a single string literal when declared _compatible_ (e.g. Layout + Sizing), which keeps `cn()` calls readable without flattening unrelated concerns.
|
|
336
341
|
|
|
337
|
-
To change placement,
|
|
342
|
+
To change placement, extend `classifyBareUtility` in `src/domains/arrange/domain/tailwind-token-classifier.domain-service.ts` (and cover the new rule with arrange tests if you introduce a new bucket).
|
|
338
343
|
|
|
339
344
|
---
|
|
340
345
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ArrangeModule } from "../domains/arrange/arrange.module.mjs";
|
|
2
|
+
import { MirrorModule } from "../domains/mirror/mirror.module.mjs";
|
|
3
|
+
import { TagModule } from "../domains/tag/tag.module.mjs";
|
|
4
|
+
import { CLI_COMMAND_SLOT_NAME } from "../shell/contracts/cli-command-slots.mjs";
|
|
5
|
+
import { ArrangeCommand as _ArrangeCommand } from "../domains/arrange/presentation/cli/arrange.command.mjs";
|
|
6
|
+
import { MirrorCommand as _MirrorCommand } from "../domains/mirror/presentation/cli/mirror.command.mjs";
|
|
7
|
+
import { TagCommand as _TagCommand } from "../domains/tag/presentation/cli/tag.command.mjs";
|
|
8
|
+
import { CommandPortToken } from "../shell/composition/tokens.mjs";
|
|
9
|
+
import { Module } from "@codefast/di";
|
|
10
|
+
//#region src/bootstrap/cli-application.module.ts
|
|
11
|
+
/** Root module: domain wiring plus `CommandPortToken` slots (single place for command registration). */ const CliApplicationModule = Module.create("cli-application", (moduleBuilder) => {
|
|
12
|
+
moduleBuilder.import(ArrangeModule, MirrorModule, TagModule);
|
|
13
|
+
moduleBuilder.bind(CommandPortToken).to(_ArrangeCommand).whenNamed(CLI_COMMAND_SLOT_NAME.arrange).singleton();
|
|
14
|
+
moduleBuilder.bind(CommandPortToken).to(_MirrorCommand).whenNamed(CLI_COMMAND_SLOT_NAME.mirror).singleton();
|
|
15
|
+
moduleBuilder.bind(CommandPortToken).to(_TagCommand).whenNamed(CLI_COMMAND_SLOT_NAME.tag).singleton();
|
|
16
|
+
});
|
|
17
|
+
//#endregion
|
|
18
|
+
export { CliApplicationModule };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CommandPortToken } from "../shell/composition/tokens.mjs";
|
|
2
|
+
import { CliApplicationModule } from "./cli-application.module.mjs";
|
|
3
|
+
import { Container } from "@codefast/di";
|
|
4
|
+
//#region src/bootstrap/composition-root.ts
|
|
5
|
+
function createCliRuntimeContainer() {
|
|
6
|
+
const runtimeContainer = Container.create();
|
|
7
|
+
runtimeContainer.load(CliApplicationModule);
|
|
8
|
+
return runtimeContainer;
|
|
9
|
+
}
|
|
10
|
+
function resolveCliCommands(runtimeContainer) {
|
|
11
|
+
return [...runtimeContainer.resolveAll(CommandPortToken)].sort((left, right) => left.definition.name.localeCompare(right.definition.name));
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { createCliRuntimeContainer, resolveCliCommands };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CommanderCliHostAdapter } from "../shell/infrastructure/commander/commander-cli-host.adapter.mjs";
|
|
2
|
+
//#region src/bootstrap/register-cli-command-trees.ts
|
|
3
|
+
/** Composition root: attach declarative CLI trees from the container onto the Commander program. */ function registerCliCommandTreesOnProgram(programRoot, commands) {
|
|
4
|
+
CommanderCliHostAdapter.registerTrees(programRoot, commands.map((cliEntry) => cliEntry.definition));
|
|
5
|
+
}
|
|
6
|
+
//#endregion
|
|
7
|
+
export { registerCliCommandTreesOnProgram };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { AppError } from "
|
|
4
|
-
import { err, ok } from "
|
|
5
|
-
import { messageFromCaughtUnknown } from "
|
|
6
|
-
import { accumulateAnalyzeReportForSourceFile, createEmptyAnalyzeReport } from "../../domain/arrange-analyze.service.mjs";
|
|
1
|
+
import { ArrangeTargetScannerPortToken, DomainSourceParserPortToken } from "../../composition/tokens.mjs";
|
|
2
|
+
import { CliFilesystemPortToken } from "../../../../shell/application/cli-runtime.tokens.mjs";
|
|
3
|
+
import { AppError } from "../../../../shell/domain/errors.domain.mjs";
|
|
4
|
+
import { err, ok } from "../../../../shell/domain/result.model.mjs";
|
|
5
|
+
import { messageFromCaughtUnknown } from "../../../../shell/domain/caught-unknown-message.value-object.mjs";
|
|
6
|
+
import { accumulateAnalyzeReportForSourceFile, createEmptyAnalyzeReport } from "../../domain/arrange-analyze.domain-service.mjs";
|
|
7
7
|
import { inject, injectable } from "@codefast/di";
|
|
8
|
-
//#region src/
|
|
8
|
+
//#region src/domains/arrange/application/use-cases/analyze-directory.use-case.ts
|
|
9
9
|
function toPrimitive(input, hint) {
|
|
10
10
|
if (typeof input !== "object" || input === null) return input;
|
|
11
11
|
var prim = input[Symbol.toPrimitive];
|
|
@@ -217,17 +217,17 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
|
|
|
217
217
|
}
|
|
218
218
|
let _dec, _initClass;
|
|
219
219
|
_dec = injectable([
|
|
220
|
-
inject(
|
|
221
|
-
inject(
|
|
220
|
+
inject(CliFilesystemPortToken),
|
|
221
|
+
inject(ArrangeTargetScannerPortToken),
|
|
222
222
|
inject(DomainSourceParserPortToken)
|
|
223
223
|
]);
|
|
224
|
-
let
|
|
224
|
+
let _AnalyzeDirectoryUseCase;
|
|
225
225
|
(class {
|
|
226
226
|
fs;
|
|
227
227
|
targetScanner;
|
|
228
228
|
domainSourceParser;
|
|
229
229
|
static {
|
|
230
|
-
({c: [
|
|
230
|
+
({c: [_AnalyzeDirectoryUseCase, _initClass]} = _apply_decs_2311(this, [_dec], []));
|
|
231
231
|
}
|
|
232
232
|
constructor(fs, targetScanner, domainSourceParser) {
|
|
233
233
|
this.fs = fs;
|
|
@@ -252,4 +252,4 @@ let _AnalyzeDirectoryUseCaseImpl;
|
|
|
252
252
|
}
|
|
253
253
|
});
|
|
254
254
|
//#endregion
|
|
255
|
-
export {
|
|
255
|
+
export { _AnalyzeDirectoryUseCase as AnalyzeDirectoryUseCase };
|
package/dist/{lib → domains}/arrange/application/use-cases/prepare-arrange-workspace.use-case.mjs
RENAMED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { AppError } from "
|
|
4
|
-
import { err, ok } from "
|
|
5
|
-
import { messageFromCaughtUnknown } from "
|
|
6
|
-
import { resolveArrangeTargetPath } from "../services/arrange-target-path-resolver.service.mjs";
|
|
1
|
+
import { ArrangeTargetPathResolverPortToken } from "../../composition/tokens.mjs";
|
|
2
|
+
import { CliFilesystemPortToken, LoadCodefastConfigUseCaseToken, RepoRootResolverPortToken } from "../../../../shell/application/cli-runtime.tokens.mjs";
|
|
3
|
+
import { AppError } from "../../../../shell/domain/errors.domain.mjs";
|
|
4
|
+
import { err, ok } from "../../../../shell/domain/result.model.mjs";
|
|
5
|
+
import { messageFromCaughtUnknown } from "../../../../shell/domain/caught-unknown-message.value-object.mjs";
|
|
7
6
|
import { inject, injectable } from "@codefast/di";
|
|
8
|
-
//#region src/
|
|
7
|
+
//#region src/domains/arrange/application/use-cases/prepare-arrange-workspace.use-case.ts
|
|
9
8
|
function toPrimitive(input, hint) {
|
|
10
9
|
if (typeof input !== "object" || input === null) return input;
|
|
11
10
|
var prim = input[Symbol.toPrimitive];
|
|
@@ -217,33 +216,35 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
|
|
|
217
216
|
}
|
|
218
217
|
let _dec, _initClass;
|
|
219
218
|
_dec = injectable([
|
|
220
|
-
inject(
|
|
219
|
+
inject(ArrangeTargetPathResolverPortToken),
|
|
220
|
+
inject(CliFilesystemPortToken),
|
|
221
221
|
inject(LoadCodefastConfigUseCaseToken),
|
|
222
|
-
inject(
|
|
222
|
+
inject(RepoRootResolverPortToken)
|
|
223
223
|
]);
|
|
224
|
-
let
|
|
224
|
+
let _PrepareArrangeWorkspaceUseCase;
|
|
225
225
|
(class {
|
|
226
|
+
arrangeTargetPathResolver;
|
|
226
227
|
fs;
|
|
227
228
|
loadCodefastConfig;
|
|
228
|
-
|
|
229
|
+
repoRootResolver;
|
|
229
230
|
static {
|
|
230
|
-
({c: [
|
|
231
|
+
({c: [_PrepareArrangeWorkspaceUseCase, _initClass]} = _apply_decs_2311(this, [_dec], []));
|
|
231
232
|
}
|
|
232
|
-
constructor(fs, loadCodefastConfig,
|
|
233
|
+
constructor(arrangeTargetPathResolver, fs, loadCodefastConfig, repoRootResolver) {
|
|
234
|
+
this.arrangeTargetPathResolver = arrangeTargetPathResolver;
|
|
233
235
|
this.fs = fs;
|
|
234
236
|
this.loadCodefastConfig = loadCodefastConfig;
|
|
235
|
-
this.
|
|
237
|
+
this.repoRootResolver = repoRootResolver;
|
|
236
238
|
}
|
|
237
239
|
async execute(args) {
|
|
238
|
-
const resolvedTarget =
|
|
239
|
-
fs: this.fs,
|
|
240
|
+
const resolvedTarget = this.arrangeTargetPathResolver.resolveTargetPath({
|
|
240
241
|
currentWorkingDirectory: args.currentWorkingDirectory,
|
|
241
242
|
rawTarget: args.rawTarget
|
|
242
243
|
});
|
|
243
244
|
if (!this.fs.existsSync(resolvedTarget)) return err(new AppError("NOT_FOUND", `Not found: ${resolvedTarget}`));
|
|
244
245
|
let rootDir;
|
|
245
246
|
try {
|
|
246
|
-
rootDir = this.
|
|
247
|
+
rootDir = this.repoRootResolver.findRepoRoot(args.currentWorkingDirectory);
|
|
247
248
|
} catch (caughtError) {
|
|
248
249
|
return err(new AppError("INFRA_FAILURE", messageFromCaughtUnknown(caughtError), caughtError));
|
|
249
250
|
}
|
|
@@ -260,4 +261,4 @@ let _PrepareArrangeWorkspaceUseCaseImpl;
|
|
|
260
261
|
}
|
|
261
262
|
});
|
|
262
263
|
//#endregion
|
|
263
|
-
export {
|
|
264
|
+
export { _PrepareArrangeWorkspaceUseCase as PrepareArrangeWorkspaceUseCase };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ok } from "
|
|
3
|
-
import { messageFromCaughtUnknown } from "
|
|
1
|
+
import { ArrangeFileProcessorPortToken, ArrangeTargetScannerPortToken } from "../../composition/tokens.mjs";
|
|
2
|
+
import { ok } from "../../../../shell/domain/result.model.mjs";
|
|
3
|
+
import { messageFromCaughtUnknown } from "../../../../shell/domain/caught-unknown-message.value-object.mjs";
|
|
4
4
|
import { inject, injectable } from "@codefast/di";
|
|
5
|
-
//#region src/
|
|
5
|
+
//#region src/domains/arrange/application/use-cases/run-arrange-sync.use-case.ts
|
|
6
6
|
function toPrimitive(input, hint) {
|
|
7
7
|
if (typeof input !== "object" || input === null) return input;
|
|
8
8
|
var prim = input[Symbol.toPrimitive];
|
|
@@ -213,27 +213,27 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
|
|
|
213
213
|
};
|
|
214
214
|
}
|
|
215
215
|
let _dec, _initClass;
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
try {
|
|
219
|
-
await hook({ files: modifiedFiles });
|
|
220
|
-
return null;
|
|
221
|
-
} catch (caughtHookError) {
|
|
222
|
-
return `[arrange] onAfterWrite hook failed: ${messageFromCaughtUnknown(caughtHookError)}`;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
_dec = injectable([inject(ArrangeTargetScannerServiceToken), inject(ArrangeFileProcessorServiceToken)]);
|
|
226
|
-
let _RunArrangeSyncUseCaseImpl;
|
|
216
|
+
_dec = injectable([inject(ArrangeTargetScannerPortToken), inject(ArrangeFileProcessorPortToken)]);
|
|
217
|
+
let _RunArrangeSyncUseCase;
|
|
227
218
|
(class {
|
|
228
219
|
targetScanner;
|
|
229
220
|
fileProcessor;
|
|
230
221
|
static {
|
|
231
|
-
({c: [
|
|
222
|
+
({c: [_RunArrangeSyncUseCase, _initClass]} = _apply_decs_2311(this, [_dec], []));
|
|
232
223
|
}
|
|
233
224
|
constructor(targetScanner, fileProcessor) {
|
|
234
225
|
this.targetScanner = targetScanner;
|
|
235
226
|
this.fileProcessor = fileProcessor;
|
|
236
227
|
}
|
|
228
|
+
async runOnAfterWriteHook(hook, modifiedFiles) {
|
|
229
|
+
if (!hook || modifiedFiles.length === 0) return null;
|
|
230
|
+
try {
|
|
231
|
+
await hook({ files: modifiedFiles });
|
|
232
|
+
return null;
|
|
233
|
+
} catch (caughtHookError) {
|
|
234
|
+
return `[arrange] onAfterWrite hook failed: ${messageFromCaughtUnknown(caughtHookError)}`;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
237
|
async execute(request) {
|
|
238
238
|
const filePaths = this.targetScanner.scanTarget({ targetPath: request.targetPath });
|
|
239
239
|
const modifiedFiles = [];
|
|
@@ -256,7 +256,7 @@ let _RunArrangeSyncUseCaseImpl;
|
|
|
256
256
|
if (fileProcessResult.workPlan) previewPlans.push(fileProcessResult.workPlan);
|
|
257
257
|
}
|
|
258
258
|
const arrangeConfig = request.config;
|
|
259
|
-
const hookError = request.write && modifiedFiles.length > 0 ? await runOnAfterWriteHook(arrangeConfig?.onAfterWrite, modifiedFiles) : null;
|
|
259
|
+
const hookError = request.write && modifiedFiles.length > 0 ? await this.runOnAfterWriteHook(arrangeConfig?.onAfterWrite, modifiedFiles) : null;
|
|
260
260
|
return ok({
|
|
261
261
|
filePaths,
|
|
262
262
|
modifiedFiles,
|
|
@@ -271,4 +271,4 @@ let _RunArrangeSyncUseCaseImpl;
|
|
|
271
271
|
}
|
|
272
272
|
});
|
|
273
273
|
//#endregion
|
|
274
|
-
export {
|
|
274
|
+
export { _RunArrangeSyncUseCase as RunArrangeSyncUseCase };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { TailwindGroupingServiceToken } from "../../
|
|
1
|
+
import { TailwindGroupingServiceToken } from "../../composition/tokens.mjs";
|
|
2
2
|
import { formatArray, formatCnCall } from "../../domain/source-text-formatters.formatter.mjs";
|
|
3
3
|
import { inject, injectable } from "@codefast/di";
|
|
4
|
-
//#region src/
|
|
4
|
+
//#region src/domains/arrange/application/use-cases/suggest-cn-groups.use-case.ts
|
|
5
5
|
function toPrimitive(input, hint) {
|
|
6
6
|
if (typeof input !== "object" || input === null) return input;
|
|
7
7
|
var prim = input[Symbol.toPrimitive];
|
|
@@ -213,11 +213,11 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
|
|
|
213
213
|
}
|
|
214
214
|
let _dec, _initClass;
|
|
215
215
|
_dec = injectable([inject(TailwindGroupingServiceToken)]);
|
|
216
|
-
let
|
|
216
|
+
let _SuggestCnGroupsUseCase;
|
|
217
217
|
(class {
|
|
218
218
|
grouping;
|
|
219
219
|
static {
|
|
220
|
-
({c: [
|
|
220
|
+
({c: [_SuggestCnGroupsUseCase, _initClass]} = _apply_decs_2311(this, [_dec], []));
|
|
221
221
|
}
|
|
222
222
|
constructor(grouping) {
|
|
223
223
|
this.grouping = grouping;
|
|
@@ -234,4 +234,4 @@ let _SuggestCnGroupsUseCaseImpl;
|
|
|
234
234
|
}
|
|
235
235
|
});
|
|
236
236
|
//#endregion
|
|
237
|
-
export {
|
|
237
|
+
export { _SuggestCnGroupsUseCase as SuggestCnGroupsUseCase };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { AnalyzeDirectoryUseCaseToken, ArrangeFileProcessorPortToken, ArrangeTargetPathResolverPortToken, ArrangeTargetScannerPortToken, DomainSourceParserPortToken, FileWalkerPortToken, PrepareArrangeWorkspaceUseCaseToken, PresentAnalyzeReportPresenterToken, PresentArrangeSyncResultPresenterToken, PresentGroupFilePreviewPresenterToken, RunArrangeSyncUseCaseToken, SuggestCnGroupsUseCaseToken, TailwindGroupingServiceToken } from "./composition/tokens.mjs";
|
|
2
|
+
import { ArrangeFileProcessorAdapter as _ArrangeFileProcessorAdapter } from "./infrastructure/adapters/arrange-file-processor.adapter.mjs";
|
|
3
|
+
import { ArrangeTargetPathResolverAdapter as _ArrangeTargetPathResolverAdapter } from "./infrastructure/adapters/arrange-target-path-resolver.adapter.mjs";
|
|
4
|
+
import { ArrangeTargetScannerAdapter as _ArrangeTargetScannerAdapter } from "./infrastructure/adapters/arrange-target-scanner.adapter.mjs";
|
|
5
|
+
import { AnalyzeDirectoryUseCase as _AnalyzeDirectoryUseCase } from "./application/use-cases/analyze-directory.use-case.mjs";
|
|
6
|
+
import { PrepareArrangeWorkspaceUseCase as _PrepareArrangeWorkspaceUseCase } from "./application/use-cases/prepare-arrange-workspace.use-case.mjs";
|
|
7
|
+
import { RunArrangeSyncUseCase as _RunArrangeSyncUseCase } from "./application/use-cases/run-arrange-sync.use-case.mjs";
|
|
8
|
+
import { SuggestCnGroupsUseCase as _SuggestCnGroupsUseCase } from "./application/use-cases/suggest-cn-groups.use-case.mjs";
|
|
9
|
+
import { TypeScriptAstTranslator as _TypeScriptAstTranslator } from "./infrastructure/typescript-ast-translator.mjs";
|
|
10
|
+
import { DomainSourceParserAdapter as _DomainSourceParserAdapter } from "./infrastructure/adapters/domain-source-parser.adapter.mjs";
|
|
11
|
+
import { FileWalkerAdapter as _FileWalkerAdapter } from "./infrastructure/adapters/file-walker.adapter.mjs";
|
|
12
|
+
import { TailwindGroupingDomainService as _TailwindGroupingDomainService } from "./domain/tailwind-grouping.domain-service.mjs";
|
|
13
|
+
import { PresentAnalyzeReportPresenter as _PresentAnalyzeReportPresenter } from "./presentation/presenters/arrange-analyze.presenter.mjs";
|
|
14
|
+
import { PresentGroupFilePreviewPresenter as _PresentGroupFilePreviewPresenter } from "./presentation/presenters/group-file-preview.presenter.mjs";
|
|
15
|
+
import { PresentArrangeSyncResultPresenter as _PresentArrangeSyncResultPresenter } from "./presentation/presenters/arrange-sync.presenter.mjs";
|
|
16
|
+
import { createOptionalCliPortTelemetryActivation } from "../../shell/wiring/optional-cli-port-telemetry-activation.mjs";
|
|
17
|
+
import { ShellInfrastructureModule } from "../../shell/shell.module.mjs";
|
|
18
|
+
import { Module } from "@codefast/di";
|
|
19
|
+
//#region src/domains/arrange/arrange.module.ts
|
|
20
|
+
const ArrangeModule = Module.create("cli-arrange", (moduleBuilder) => {
|
|
21
|
+
moduleBuilder.import(ShellInfrastructureModule);
|
|
22
|
+
moduleBuilder.bind(FileWalkerPortToken).to(_FileWalkerAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(FileWalkerPortToken));
|
|
23
|
+
moduleBuilder.bind(_TypeScriptAstTranslator).toSelf().singleton().onActivation(createOptionalCliPortTelemetryActivation(_TypeScriptAstTranslator));
|
|
24
|
+
moduleBuilder.bind(DomainSourceParserPortToken).to(_DomainSourceParserAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(DomainSourceParserPortToken));
|
|
25
|
+
moduleBuilder.bind(ArrangeTargetPathResolverPortToken).to(_ArrangeTargetPathResolverAdapter).singleton();
|
|
26
|
+
moduleBuilder.bind(TailwindGroupingServiceToken).to(_TailwindGroupingDomainService).singleton();
|
|
27
|
+
moduleBuilder.bind(AnalyzeDirectoryUseCaseToken).to(_AnalyzeDirectoryUseCase).singleton();
|
|
28
|
+
moduleBuilder.bind(ArrangeTargetScannerPortToken).to(_ArrangeTargetScannerAdapter).singleton();
|
|
29
|
+
moduleBuilder.bind(ArrangeFileProcessorPortToken).to(_ArrangeFileProcessorAdapter).singleton();
|
|
30
|
+
moduleBuilder.bind(RunArrangeSyncUseCaseToken).to(_RunArrangeSyncUseCase).singleton();
|
|
31
|
+
moduleBuilder.bind(SuggestCnGroupsUseCaseToken).to(_SuggestCnGroupsUseCase).singleton();
|
|
32
|
+
moduleBuilder.bind(PrepareArrangeWorkspaceUseCaseToken).to(_PrepareArrangeWorkspaceUseCase).singleton();
|
|
33
|
+
moduleBuilder.bind(PresentAnalyzeReportPresenterToken).to(_PresentAnalyzeReportPresenter).singleton();
|
|
34
|
+
moduleBuilder.bind(PresentGroupFilePreviewPresenterToken).to(_PresentGroupFilePreviewPresenter).singleton();
|
|
35
|
+
moduleBuilder.bind(PresentArrangeSyncResultPresenterToken).to(_PresentArrangeSyncResultPresenter).singleton();
|
|
36
|
+
});
|
|
37
|
+
//#endregion
|
|
38
|
+
export { ArrangeModule };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { token } from "@codefast/di";
|
|
2
|
+
//#region src/domains/arrange/composition/tokens.ts
|
|
3
|
+
const FileWalkerPortToken = token("FileWalkerPort");
|
|
4
|
+
const DomainSourceParserPortToken = token("DomainSourceParserPort");
|
|
5
|
+
const PresentGroupFilePreviewPresenterToken = token("PresentGroupFilePreviewPresenter");
|
|
6
|
+
const PresentAnalyzeReportPresenterToken = token("PresentAnalyzeReportPresenter");
|
|
7
|
+
const PresentArrangeSyncResultPresenterToken = token("PresentArrangeSyncResultPresenter");
|
|
8
|
+
const ArrangeTargetScannerPortToken = token("ArrangeTargetScannerPort");
|
|
9
|
+
const ArrangeFileProcessorPortToken = token("ArrangeFileProcessorPort");
|
|
10
|
+
const AnalyzeDirectoryUseCaseToken = token("AnalyzeDirectoryUseCase");
|
|
11
|
+
const ArrangeTargetPathResolverPortToken = token("ArrangeTargetPathResolverPort");
|
|
12
|
+
const RunArrangeSyncUseCaseToken = token("RunArrangeSyncUseCase");
|
|
13
|
+
const SuggestCnGroupsUseCaseToken = token("SuggestCnGroupsUseCase");
|
|
14
|
+
const PrepareArrangeWorkspaceUseCaseToken = token("PrepareArrangeWorkspaceUseCase");
|
|
15
|
+
const TailwindGroupingServiceToken = token("TailwindGroupingService");
|
|
16
|
+
//#endregion
|
|
17
|
+
export { AnalyzeDirectoryUseCaseToken, ArrangeFileProcessorPortToken, ArrangeTargetPathResolverPortToken, ArrangeTargetScannerPortToken, DomainSourceParserPortToken, FileWalkerPortToken, PrepareArrangeWorkspaceUseCaseToken, PresentAnalyzeReportPresenterToken, PresentArrangeSyncResultPresenterToken, PresentGroupFilePreviewPresenterToken, RunArrangeSyncUseCaseToken, SuggestCnGroupsUseCaseToken, TailwindGroupingServiceToken };
|
|
@@ -5,7 +5,7 @@ import { forEachStringLiteralInClassExpression } from "./ast/collectors-cn.colle
|
|
|
5
5
|
import { tokenizeClassString } from "./tailwind-token.value-object.mjs";
|
|
6
6
|
import { collectCnCallsInsideTv, traverseTvObject } from "./ast/collectors-tv.collector.mjs";
|
|
7
7
|
import { jsxClassNameStaticLiteral } from "./ast/collectors-jsx.collector.mjs";
|
|
8
|
-
//#region src/
|
|
8
|
+
//#region src/domains/arrange/domain/arrange-analyze.domain-service.ts
|
|
9
9
|
/**
|
|
10
10
|
* Rich domain: Tailwind/cn/tv analysis rules (counts, long literals, nested cn in tv).
|
|
11
11
|
* Pure orchestration of domain collectors and invariants — no I/O.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { applyEditsDescending } from "
|
|
1
|
+
import { applyEditsDescending } from "../../../shell/domain/source-text-edit.support.mjs";
|
|
2
2
|
import { buildKnownCnTvBindings, unwrapCnInsideTvCallReplacement } from "./ast/ast-helpers.helper.mjs";
|
|
3
3
|
import { listAllCnCallsInsideTvInSourceFile } from "./ast/collectors-tv.collector.mjs";
|
|
4
4
|
import { collectGroupTargets, planGroupEditForTarget, targetReplaceStart } from "./ast/targets.model.mjs";
|
|
5
|
-
//#region src/
|
|
5
|
+
//#region src/domains/arrange/domain/arrange-grouping.domain-service.ts
|
|
6
6
|
/**
|
|
7
7
|
* Rich domain: plan Tailwind class grouping / cn-in-tv unwrap for a single file.
|
|
8
8
|
* Pure: only DomainSourceFile, source strings, and options — no I/O.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EMPTY_CN_TV_BINDINGS } from "../constants.domain.mjs";
|
|
2
|
-
import { applyEditsDescending, indentOfLineContaining } from "
|
|
2
|
+
import { applyEditsDescending, indentOfLineContaining } from "../../../../shell/domain/source-text-edit.support.mjs";
|
|
3
3
|
import { isDomainIdentifier, isDomainImportDeclaration, isDomainNamedImports, isDomainNamespaceImport, isDomainPropertyAccessExpression, isDomainStringLiteral, lineOfSourcePosition } from "./ast-node.model.mjs";
|
|
4
|
-
//#region src/
|
|
4
|
+
//#region src/domains/arrange/domain/ast/ast-helpers.helper.ts
|
|
5
5
|
/**
|
|
6
6
|
* Known module specifiers that export `cn` / `tv`.
|
|
7
7
|
*/ const KNOWN_CN_TV_MODULES = new Set([
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region src/
|
|
1
|
+
//#region src/domains/arrange/domain/ast/ast-node.model.ts
|
|
2
2
|
/**
|
|
3
3
|
* Pure-domain AST shapes for arrange analysis. No TypeScript compiler types.
|
|
4
4
|
* Positions mirror `getStart(sourceFile)` / `getEnd()` semantics from translation.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "../constants.domain.mjs";
|
|
2
2
|
import { DomainBinaryOperator, DomainSyntaxKind, isDomainArrayLiteralExpression, isDomainTailwindClassLiteral } from "./ast-node.model.mjs";
|
|
3
|
-
//#region src/
|
|
3
|
+
//#region src/domains/arrange/domain/ast/collectors-cn.collector.ts
|
|
4
4
|
function forEachStringLiteralInClassExpression(expr, sink, depth = 0, options) {
|
|
5
5
|
if (depth > 12) return;
|
|
6
6
|
if (isDomainTailwindClassLiteral(expr)) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isDomainIdentifier, isDomainJsxExpression, isDomainTailwindClassLiteral } from "./ast-node.model.mjs";
|
|
2
|
-
//#region src/
|
|
2
|
+
//#region src/domains/arrange/domain/ast/collectors-jsx.collector.ts
|
|
3
3
|
function jsxClassNameStaticLiteral(jsxClassNameAttribute) {
|
|
4
4
|
if (!isDomainIdentifier(jsxClassNameAttribute.name) || jsxClassNameAttribute.name.text !== "className") return;
|
|
5
5
|
const init = jsxClassNameAttribute.initializer;
|
|
@@ -3,7 +3,7 @@ import { forEachDomainChild, isDomainArrayLiteralExpression, isDomainCallExpress
|
|
|
3
3
|
import { buildKnownCnTvBindings, isCnOrTvIdentifier, propertyAssignmentNameText } from "./ast-helpers.helper.mjs";
|
|
4
4
|
import { CN_APPLY_LITERAL_WALK_OPTS, collectUnconditionalTailwindLiteralsFromCnArguments, forEachStringLiteralInClassExpression, isUnsafeLiteralForCnStyleApplySplit } from "./collectors-cn.collector.mjs";
|
|
5
5
|
import { tokenizeClassString } from "../tailwind-token.value-object.mjs";
|
|
6
|
-
//#region src/
|
|
6
|
+
//#region src/domains/arrange/domain/ast/collectors-tv.collector.ts
|
|
7
7
|
function traverseTvObject(sourceFile, obj, visitor, depth = 0, knownBindings) {
|
|
8
8
|
if (depth > 12) return;
|
|
9
9
|
for (const prop of obj.properties) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../constants.domain.mjs";
|
|
2
|
-
import { endAfterOptionalCommaFollowingInSource, indentOfLineContaining, textPrefixFromLineStartToPosition } from "
|
|
2
|
+
import { endAfterOptionalCommaFollowingInSource, indentOfLineContaining, textPrefixFromLineStartToPosition } from "../../../../shell/domain/source-text-edit.support.mjs";
|
|
3
3
|
import { forEachDomainChild, isDomainArrayLiteralExpression, isDomainJsxAttribute, isDomainTailwindClassLiteral } from "./ast-node.model.mjs";
|
|
4
4
|
import { isUnsafeLiteralForCnStyleApplySplit } from "./collectors-cn.collector.mjs";
|
|
5
5
|
import { tokenizeClassString } from "../tailwind-token.value-object.mjs";
|
|
@@ -7,7 +7,7 @@ import { collectGroupableStringNodes, slotClassString } from "./collectors-tv.co
|
|
|
7
7
|
import { areCnTailwindPartitionsEquivalent, suggestCnGroups, summarizeGroupBucketLabels } from "../grouping.domain.mjs";
|
|
8
8
|
import { escapeTsStringLiteralContent, formatArray, formatArrayElementsAsSiblingLines, formatJsxCnAttributeValue } from "../source-text-formatters.formatter.mjs";
|
|
9
9
|
import { jsxClassNameStaticLiteral } from "./collectors-jsx.collector.mjs";
|
|
10
|
-
//#region src/
|
|
10
|
+
//#region src/domains/arrange/domain/ast/targets.model.ts
|
|
11
11
|
function targetReplaceStart(target) {
|
|
12
12
|
if (target.kind === "cnArg") return target.item.cnCall ? target.item.cnCall.pos : target.item.primaryClassLiteral.pos;
|
|
13
13
|
return target.valueNode.pos;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BUCKET_ORDER } from "./constants.domain.mjs";
|
|
2
2
|
import { stripVariants, tokenizeClassString } from "./tailwind-token.value-object.mjs";
|
|
3
3
|
import { bucketsCompatible, bucketsMergeCompatible, classifyToken, compositeSecondaryOrder, selectorKey, stateKey } from "./tailwind-token-classifier.domain-service.mjs";
|
|
4
|
-
//#region src/
|
|
4
|
+
//#region src/domains/arrange/domain/grouping.domain.ts
|
|
5
5
|
/**
|
|
6
6
|
* `cn()` grouping: bucket sequence is {@link BUCKET_ORDER} only; tokens are classified with
|
|
7
7
|
* {@link classifyToken}. Comparators here (`compareClassifiedTailwindTokensForCnGrouping`, …)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isDomainImportDeclaration, isDomainNamedImports, isDomainStringLiteral } from "./ast/ast-node.model.mjs";
|
|
2
|
-
//#region src/
|
|
2
|
+
//#region src/domains/arrange/domain/imports.domain.ts
|
|
3
3
|
function sourceFileImportsCn(sourceFile) {
|
|
4
4
|
for (const statement of sourceFile.statements) {
|
|
5
5
|
if (!isDomainImportDeclaration(statement) || !statement.importClause) continue;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { indentOfLineContaining } from "
|
|
2
|
-
//#region src/
|
|
1
|
+
import { indentOfLineContaining } from "../../../shell/domain/source-text-edit.support.mjs";
|
|
2
|
+
//#region src/domains/arrange/domain/source-text-formatters.formatter.ts
|
|
3
3
|
function escapeTsStringLiteralContent(group) {
|
|
4
4
|
return group.replaceAll("\\", "\\\\").replaceAll("\"", "\\\"");
|
|
5
5
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { suggestCnGroups, summarizeGroupBucketLabels } from "./grouping.domain.mjs";
|
|
2
2
|
import { injectable } from "@codefast/di";
|
|
3
|
-
//#region src/
|
|
3
|
+
//#region src/domains/arrange/domain/tailwind-grouping.domain-service.ts
|
|
4
4
|
function toPrimitive(input, hint) {
|
|
5
5
|
if (typeof input !== "object" || input === null) return input;
|
|
6
6
|
var prim = input[Symbol.toPrimitive];
|
|
@@ -211,11 +211,11 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
|
|
|
211
211
|
};
|
|
212
212
|
}
|
|
213
213
|
let _dec, _initClass;
|
|
214
|
-
_dec = injectable(
|
|
215
|
-
let
|
|
214
|
+
_dec = injectable();
|
|
215
|
+
let _TailwindGroupingDomainService;
|
|
216
216
|
(class {
|
|
217
217
|
static {
|
|
218
|
-
({c: [
|
|
218
|
+
({c: [_TailwindGroupingDomainService, _initClass]} = _apply_decs_2311(this, [_dec], []));
|
|
219
219
|
}
|
|
220
220
|
suggestGroups(classString) {
|
|
221
221
|
return suggestCnGroups(classString);
|
|
@@ -228,4 +228,4 @@ let _TailwindGroupingServiceImpl;
|
|
|
228
228
|
}
|
|
229
229
|
});
|
|
230
230
|
//#endregion
|
|
231
|
-
export {
|
|
231
|
+
export { _TailwindGroupingDomainService as TailwindGroupingDomainService };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { COMPATIBLE_BUCKET_SETS, RESPONSIVE_PREFIX, STATE_PREFIXES } from "./constants.domain.mjs";
|
|
2
2
|
import { indexOfFirstVariantColon, stripVariants } from "./tailwind-token.value-object.mjs";
|
|
3
|
-
//#region src/
|
|
3
|
+
//#region src/domains/arrange/domain/tailwind-token-classifier.domain-service.ts
|
|
4
4
|
/**
|
|
5
5
|
* Bare-token classification is **total** (always returns a {@link Bucket}). The `Result` pattern
|
|
6
6
|
* (`isOk` / `isErr`) belongs at arrange use-case / I/O boundaries, not on this hot path.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./constants.domain.mjs";
|
|
2
|
-
//#region src/
|
|
2
|
+
//#region src/domains/arrange/domain/tailwind-token.value-object.ts
|
|
3
3
|
function tokenizeClassString(classString) {
|
|
4
4
|
return classString.trim().split(/\s+/).filter(Boolean);
|
|
5
5
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { DomainSourceParserPortToken } from "../../
|
|
2
|
-
import {
|
|
3
|
-
import { buildGroupFileUnwrapState, countPersistedGroupFileEdits, groupFileDryRunNoEdits, groupFileEditsTouchJsxCn, groupFilePreviewTotals, groupFileWorkHasNothingToReport, mergeGroupFileBodyText, tryBuildGroupFileWorkPlan } from "../../domain/arrange-grouping.service.mjs";
|
|
1
|
+
import { DomainSourceParserPortToken } from "../../composition/tokens.mjs";
|
|
2
|
+
import { CliFilesystemPortToken } from "../../../../shell/application/cli-runtime.tokens.mjs";
|
|
3
|
+
import { buildGroupFileUnwrapState, countPersistedGroupFileEdits, groupFileDryRunNoEdits, groupFileEditsTouchJsxCn, groupFilePreviewTotals, groupFileWorkHasNothingToReport, mergeGroupFileBodyText, tryBuildGroupFileWorkPlan } from "../../domain/arrange-grouping.domain-service.mjs";
|
|
4
4
|
import { ensureCnImport } from "../../domain/imports.domain.mjs";
|
|
5
5
|
import { inject, injectable } from "@codefast/di";
|
|
6
|
-
//#region src/
|
|
6
|
+
//#region src/domains/arrange/infrastructure/adapters/arrange-file-processor.adapter.ts
|
|
7
7
|
function toPrimitive(input, hint) {
|
|
8
8
|
if (typeof input !== "object" || input === null) return input;
|
|
9
9
|
var prim = input[Symbol.toPrimitive];
|
|
@@ -214,13 +214,13 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
|
|
|
214
214
|
};
|
|
215
215
|
}
|
|
216
216
|
let _dec, _initClass;
|
|
217
|
-
_dec = injectable([inject(
|
|
218
|
-
let
|
|
217
|
+
_dec = injectable([inject(CliFilesystemPortToken), inject(DomainSourceParserPortToken)]);
|
|
218
|
+
let _ArrangeFileProcessorAdapter;
|
|
219
219
|
(class {
|
|
220
220
|
fs;
|
|
221
221
|
domainSourceParser;
|
|
222
222
|
static {
|
|
223
|
-
({c: [
|
|
223
|
+
({c: [_ArrangeFileProcessorAdapter, _initClass]} = _apply_decs_2311(this, [_dec], []));
|
|
224
224
|
}
|
|
225
225
|
constructor(fs, domainSourceParser) {
|
|
226
226
|
this.fs = fs;
|
|
@@ -264,4 +264,4 @@ let _ArrangeFileProcessorServiceImpl;
|
|
|
264
264
|
}
|
|
265
265
|
});
|
|
266
266
|
//#endregion
|
|
267
|
-
export {
|
|
267
|
+
export { _ArrangeFileProcessorAdapter as ArrangeFileProcessorAdapter };
|