@codyswann/lisa 1.0.0
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/LICENSE +21 -0
- package/README.md +867 -0
- package/all/copy-overwrite/.claude/README.md +205 -0
- package/all/copy-overwrite/.claude/agents/agent-architect.md +311 -0
- package/all/copy-overwrite/.claude/agents/codebase-analyzer.md +146 -0
- package/all/copy-overwrite/.claude/agents/codebase-locator.md +125 -0
- package/all/copy-overwrite/.claude/agents/codebase-pattern-finder.md +237 -0
- package/all/copy-overwrite/.claude/agents/git-history-analyzer.md +183 -0
- package/all/copy-overwrite/.claude/agents/hooks-expert.md +74 -0
- package/all/copy-overwrite/.claude/agents/skill-evaluator.md +246 -0
- package/all/copy-overwrite/.claude/agents/slash-command-architect.md +87 -0
- package/all/copy-overwrite/.claude/agents/web-search-researcher.md +112 -0
- package/all/copy-overwrite/.claude/commands/git/commit-and-submit-pr.md +8 -0
- package/all/copy-overwrite/.claude/commands/git/commit.md +44 -0
- package/all/copy-overwrite/.claude/commands/git/prune.md +34 -0
- package/all/copy-overwrite/.claude/commands/git/submit-pr.md +50 -0
- package/all/copy-overwrite/.claude/commands/jira/create.md +50 -0
- package/all/copy-overwrite/.claude/commands/jira/verify.md +34 -0
- package/all/copy-overwrite/.claude/commands/project/archive.md +8 -0
- package/all/copy-overwrite/.claude/commands/project/bootstrap.md +49 -0
- package/all/copy-overwrite/.claude/commands/project/complete-task.md +7 -0
- package/all/copy-overwrite/.claude/commands/project/debrief.md +65 -0
- package/all/copy-overwrite/.claude/commands/project/execute.md +94 -0
- package/all/copy-overwrite/.claude/commands/project/implement.md +42 -0
- package/all/copy-overwrite/.claude/commands/project/local-code-review.md +88 -0
- package/all/copy-overwrite/.claude/commands/project/lower-code-complexity.md +74 -0
- package/all/copy-overwrite/.claude/commands/project/plan.md +314 -0
- package/all/copy-overwrite/.claude/commands/project/research.md +248 -0
- package/all/copy-overwrite/.claude/commands/project/review.md +63 -0
- package/all/copy-overwrite/.claude/commands/project/setup.md +19 -0
- package/all/copy-overwrite/.claude/commands/project/verify.md +38 -0
- package/all/copy-overwrite/.claude/commands/pull-request/review.md +12 -0
- package/all/copy-overwrite/.claude/commands/rules/format-md.md +72 -0
- package/all/copy-overwrite/.claude/commands/sonarqube/check.md +6 -0
- package/all/copy-overwrite/.claude/commands/sonarqube/fix.md +3 -0
- package/all/copy-overwrite/.claude/hooks/README.md +301 -0
- package/all/copy-overwrite/.claude/hooks/notify-ntfy.sh +181 -0
- package/all/copy-overwrite/.claude/settings.json +41 -0
- package/all/copy-overwrite/.claude/settings.local.json.example +14 -0
- package/all/copy-overwrite/.claude/skills/coding-philosophy/SKILL.md +405 -0
- package/all/copy-overwrite/.claude/skills/coding-philosophy/references/function-structure.md +416 -0
- package/all/copy-overwrite/.claude/skills/coding-philosophy/references/immutable-patterns.md +316 -0
- package/all/copy-overwrite/.claude/skills/prompt-complexity-scorer/SKILL.md +118 -0
- package/all/copy-overwrite/.claude/skills/skill-creator/LICENSE.txt +202 -0
- package/all/copy-overwrite/.claude/skills/skill-creator/SKILL.md +210 -0
- package/all/copy-overwrite/.claude/skills/skill-creator/scripts/__pycache__/quick_validate.cpython-312.pyc +0 -0
- package/all/copy-overwrite/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
- package/all/copy-overwrite/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
- package/all/copy-overwrite/.claude/skills/skill-creator/scripts/quick_validate.py +65 -0
- package/all/copy-overwrite/CLAUDE.md +77 -0
- package/all/copy-overwrite/HUMAN.md +17 -0
- package/all/copy-overwrite/specs/.keep +0 -0
- package/all/create-only/PROJECT_RULES.md +0 -0
- package/cdk/merge/package.json +20 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +107 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/prompts.d.ts +45 -0
- package/dist/cli/prompts.d.ts.map +1 -0
- package/dist/cli/prompts.js +58 -0
- package/dist/cli/prompts.js.map +1 -0
- package/dist/core/config.d.ts +73 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +36 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lisa.d.ts +81 -0
- package/dist/core/lisa.d.ts.map +1 -0
- package/dist/core/lisa.js +459 -0
- package/dist/core/lisa.js.map +1 -0
- package/dist/core/manifest.d.ts +58 -0
- package/dist/core/manifest.d.ts.map +1 -0
- package/dist/core/manifest.js +104 -0
- package/dist/core/manifest.js.map +1 -0
- package/dist/detection/detector.interface.d.ts +15 -0
- package/dist/detection/detector.interface.d.ts.map +1 -0
- package/dist/detection/detector.interface.js +2 -0
- package/dist/detection/detector.interface.js.map +1 -0
- package/dist/detection/detectors/cdk.d.ts +10 -0
- package/dist/detection/detectors/cdk.d.ts.map +1 -0
- package/dist/detection/detectors/cdk.js +34 -0
- package/dist/detection/detectors/cdk.js.map +1 -0
- package/dist/detection/detectors/expo.d.ts +10 -0
- package/dist/detection/detectors/expo.d.ts.map +1 -0
- package/dist/detection/detectors/expo.js +30 -0
- package/dist/detection/detectors/expo.js.map +1 -0
- package/dist/detection/detectors/nestjs.d.ts +10 -0
- package/dist/detection/detectors/nestjs.d.ts.map +1 -0
- package/dist/detection/detectors/nestjs.js +34 -0
- package/dist/detection/detectors/nestjs.js.map +1 -0
- package/dist/detection/detectors/npm-package.d.ts +13 -0
- package/dist/detection/detectors/npm-package.d.ts.map +1 -0
- package/dist/detection/detectors/npm-package.js +30 -0
- package/dist/detection/detectors/npm-package.js.map +1 -0
- package/dist/detection/detectors/typescript.d.ts +10 -0
- package/dist/detection/detectors/typescript.d.ts.map +1 -0
- package/dist/detection/detectors/typescript.js +25 -0
- package/dist/detection/detectors/typescript.js.map +1 -0
- package/dist/detection/index.d.ts +24 -0
- package/dist/detection/index.d.ts.map +1 -0
- package/dist/detection/index.js +57 -0
- package/dist/detection/index.js.map +1 -0
- package/dist/errors/index.d.ts +69 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +110 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/console-logger.d.ts +12 -0
- package/dist/logging/console-logger.d.ts.map +1 -0
- package/dist/logging/console-logger.js +22 -0
- package/dist/logging/console-logger.js.map +1 -0
- package/dist/logging/index.d.ts +4 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +3 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/logger.interface.d.ts +20 -0
- package/dist/logging/logger.interface.d.ts.map +1 -0
- package/dist/logging/logger.interface.js +2 -0
- package/dist/logging/logger.interface.js.map +1 -0
- package/dist/logging/silent-logger.d.ts +12 -0
- package/dist/logging/silent-logger.d.ts.map +1 -0
- package/dist/logging/silent-logger.js +21 -0
- package/dist/logging/silent-logger.js.map +1 -0
- package/dist/strategies/copy-contents.d.ts +14 -0
- package/dist/strategies/copy-contents.d.ts.map +1 -0
- package/dist/strategies/copy-contents.js +69 -0
- package/dist/strategies/copy-contents.js.map +1 -0
- package/dist/strategies/copy-overwrite.d.ts +14 -0
- package/dist/strategies/copy-overwrite.d.ts.map +1 -0
- package/dist/strategies/copy-overwrite.js +47 -0
- package/dist/strategies/copy-overwrite.js.map +1 -0
- package/dist/strategies/create-only.d.ts +13 -0
- package/dist/strategies/create-only.d.ts.map +1 -0
- package/dist/strategies/create-only.js +30 -0
- package/dist/strategies/create-only.js.map +1 -0
- package/dist/strategies/index.d.ts +31 -0
- package/dist/strategies/index.d.ts.map +1 -0
- package/dist/strategies/index.js +52 -0
- package/dist/strategies/index.js.map +1 -0
- package/dist/strategies/merge.d.ts +13 -0
- package/dist/strategies/merge.d.ts.map +1 -0
- package/dist/strategies/merge.js +60 -0
- package/dist/strategies/merge.js.map +1 -0
- package/dist/strategies/strategy.interface.d.ts +31 -0
- package/dist/strategies/strategy.interface.d.ts.map +1 -0
- package/dist/strategies/strategy.interface.js +2 -0
- package/dist/strategies/strategy.interface.js.map +1 -0
- package/dist/transaction/backup.d.ts +38 -0
- package/dist/transaction/backup.d.ts.map +1 -0
- package/dist/transaction/backup.js +97 -0
- package/dist/transaction/backup.js.map +1 -0
- package/dist/transaction/index.d.ts +4 -0
- package/dist/transaction/index.d.ts.map +1 -0
- package/dist/transaction/index.js +3 -0
- package/dist/transaction/index.js.map +1 -0
- package/dist/transaction/transaction.d.ts +34 -0
- package/dist/transaction/transaction.d.ts.map +1 -0
- package/dist/transaction/transaction.js +68 -0
- package/dist/transaction/transaction.js.map +1 -0
- package/dist/utils/file-operations.d.ts +29 -0
- package/dist/utils/file-operations.d.ts.map +1 -0
- package/dist/utils/file-operations.js +84 -0
- package/dist/utils/file-operations.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/json-utils.d.ts +22 -0
- package/dist/utils/json-utils.d.ts.map +1 -0
- package/dist/utils/json-utils.js +57 -0
- package/dist/utils/json-utils.js.map +1 -0
- package/dist/utils/path-utils.d.ts +21 -0
- package/dist/utils/path-utils.d.ts.map +1 -0
- package/dist/utils/path-utils.js +35 -0
- package/dist/utils/path-utils.js.map +1 -0
- package/eslint-plugin-code-organization/README.md +149 -0
- package/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +468 -0
- package/eslint-plugin-code-organization/index.js +23 -0
- package/eslint-plugin-code-organization/package.json +10 -0
- package/eslint-plugin-code-organization/rules/enforce-statement-order.js +157 -0
- package/expo/copy-overwrite/.claude/skills/apollo-client/SKILL.md +238 -0
- package/expo/copy-overwrite/.claude/skills/apollo-client/references/mutation-patterns.md +360 -0
- package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/SKILL.md +360 -0
- package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
- package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
- package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
- package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +327 -0
- package/expo/copy-overwrite/.claude/skills/container-view-pattern/SKILL.md +299 -0
- package/expo/copy-overwrite/.claude/skills/container-view-pattern/references/examples.md +749 -0
- package/expo/copy-overwrite/.claude/skills/container-view-pattern/references/patterns.md +318 -0
- package/expo/copy-overwrite/.claude/skills/container-view-pattern/scripts/create_component.py +198 -0
- package/expo/copy-overwrite/.claude/skills/container-view-pattern/scripts/validate_component.py +207 -0
- package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/SKILL.md +268 -0
- package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/common-issues.md +619 -0
- package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
- package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/platform-api.md +276 -0
- package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +414 -0
- package/expo/copy-overwrite/.claude/skills/directory-structure/SKILL.md +202 -0
- package/expo/copy-overwrite/.claude/skills/directory-structure/scripts/validate_structure.py +443 -0
- package/expo/copy-overwrite/.claude/skills/expo-env-config/SKILL.md +309 -0
- package/expo/copy-overwrite/.claude/skills/expo-env-config/references/validation-patterns.md +417 -0
- package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/SKILL.md +431 -0
- package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/references/official-docs.md +290 -0
- package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/scripts/generate-route.py +169 -0
- package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/SKILL.md +411 -0
- package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/color-tokens.md +343 -0
- package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/component-mapping.md +307 -0
- package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
- package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/scripts/validate_styling.py +354 -0
- package/expo/copy-overwrite/.claude/skills/local-state/SKILL.md +362 -0
- package/expo/copy-overwrite/.claude/skills/local-state/references/async-storage.md +505 -0
- package/expo/copy-overwrite/.claude/skills/local-state/references/persistence-patterns.md +711 -0
- package/expo/copy-overwrite/.claude/skills/local-state/references/reactive-variables.md +446 -0
- package/expo/copy-overwrite/.claude/skills/playwright-selectors/SKILL.md +223 -0
- package/expo/copy-overwrite/.claude/skills/testing-library/SKILL.md +319 -0
- package/expo/copy-overwrite/.claude/skills/testing-library/references/async-patterns.md +420 -0
- package/expo/copy-overwrite/.claude/skills/testing-library/references/expo-router-testing.md +556 -0
- package/expo/copy-overwrite/.claude/skills/testing-library/references/mocking-patterns.md +590 -0
- package/expo/copy-overwrite/.claude/skills/testing-library/references/query-priority.md +291 -0
- package/expo/copy-overwrite/.easignore.extra +2 -0
- package/expo/copy-overwrite/.mcp.json +33 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/README.md +234 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/plugin-index.test.js +84 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/require-memo-in-view.test.js +196 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/single-component-per-file.test.js +289 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/index.js +32 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/package.json +10 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/rules/enforce-component-structure.js +230 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/rules/no-return-in-view.js +91 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/rules/require-memo-in-view.js +178 -0
- package/expo/copy-overwrite/eslint-plugin-component-structure/rules/single-component-per-file.js +238 -0
- package/expo/copy-overwrite/eslint-plugin-ui-standards/README.md +260 -0
- package/expo/copy-overwrite/eslint-plugin-ui-standards/index.js +29 -0
- package/expo/copy-overwrite/eslint-plugin-ui-standards/package.json +10 -0
- package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-classname-outside-ui.js +51 -0
- package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-direct-rn-imports.js +55 -0
- package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-inline-styles.js +73 -0
- package/expo/copy-overwrite/eslint.config.mjs +560 -0
- package/expo/copy-overwrite/lighthouserc.js +194 -0
- package/expo/create-only/lighthouserc-config.json +28 -0
- package/expo/merge/package.json +132 -0
- package/lisa.sh +35 -0
- package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/SKILL.md +176 -0
- package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/advanced-features.md +527 -0
- package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/project-patterns.md +483 -0
- package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/quick-start.md +257 -0
- package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
- package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/types-scalars.md +513 -0
- package/nestjs/copy-overwrite/.claude/skills/nestjs-rules/SKILL.md +536 -0
- package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/SKILL.md +275 -0
- package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
- package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/entity-patterns.md +450 -0
- package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/observability-patterns.md +536 -0
- package/nestjs/merge/package.json +75 -0
- package/package.json +124 -0
- package/typescript/copy-contents/.husky/commit-msg +91 -0
- package/typescript/copy-contents/.husky/pre-commit +96 -0
- package/typescript/copy-contents/.husky/pre-push +211 -0
- package/typescript/copy-overwrite/.claude/hooks/format-on-edit.sh +74 -0
- package/typescript/copy-overwrite/.claude/hooks/install_pkgs.sh +59 -0
- package/typescript/copy-overwrite/.claude/hooks/lint-on-edit.sh +103 -0
- package/typescript/copy-overwrite/.claude/skills/jsdoc-best-practices/SKILL.md +388 -0
- package/typescript/copy-overwrite/.github/README.md +455 -0
- package/typescript/copy-overwrite/.github/dependabot.yml +40 -0
- package/typescript/copy-overwrite/.github/k6/BROWSER_TESTING_NOTE.md +129 -0
- package/typescript/copy-overwrite/.github/k6/INTEGRATION_GUIDE.md +354 -0
- package/typescript/copy-overwrite/.github/k6/README.md +386 -0
- package/typescript/copy-overwrite/.github/k6/SCENARIO_SELECTION_GUIDE.md +264 -0
- package/typescript/copy-overwrite/.github/k6/examples/customer-deploy-integration.yml +115 -0
- package/typescript/copy-overwrite/.github/k6/examples/data-driven-test.js +268 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/load.js +142 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/load.json +27 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/smoke.js +26 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/smoke.json +20 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/soak.js +244 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/soak.json +29 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/spike.js +180 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/spike.json +32 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/stress.js +206 -0
- package/typescript/copy-overwrite/.github/k6/scenarios/stress.json +38 -0
- package/typescript/copy-overwrite/.github/k6/scripts/api-test.js +452 -0
- package/typescript/copy-overwrite/.github/k6/scripts/default-test.js +185 -0
- package/typescript/copy-overwrite/.github/k6/thresholds/normal.json +30 -0
- package/typescript/copy-overwrite/.github/k6/thresholds/relaxed.json +21 -0
- package/typescript/copy-overwrite/.github/k6/thresholds/strict.json +29 -0
- package/typescript/copy-overwrite/.github/workflows/build.yml +72 -0
- package/typescript/copy-overwrite/.github/workflows/ci.yml +49 -0
- package/typescript/copy-overwrite/.github/workflows/claude.yml +51 -0
- package/typescript/copy-overwrite/.github/workflows/create-github-issue-on-failure.yml +113 -0
- package/typescript/copy-overwrite/.github/workflows/create-jira-issue-on-failure.yml +195 -0
- package/typescript/copy-overwrite/.github/workflows/create-sentry-issue-on-failure.yml +267 -0
- package/typescript/copy-overwrite/.github/workflows/deploy.yml +228 -0
- package/typescript/copy-overwrite/.github/workflows/k6-load-test-README.md +230 -0
- package/typescript/copy-overwrite/.github/workflows/lighthouse.yml +68 -0
- package/typescript/copy-overwrite/.github/workflows/load-test.yml +282 -0
- package/typescript/copy-overwrite/.github/workflows/quality.yml +1737 -0
- package/typescript/copy-overwrite/.github/workflows/release.yml +1599 -0
- package/typescript/copy-overwrite/.gitleaksignore +28 -0
- package/typescript/copy-overwrite/.nvmrc +1 -0
- package/typescript/copy-overwrite/.prettierignore +23 -0
- package/typescript/copy-overwrite/.prettierrc.json +22 -0
- package/typescript/copy-overwrite/.versionrc +42 -0
- package/typescript/copy-overwrite/.yamllint +20 -0
- package/typescript/copy-overwrite/commitlint.config.js +11 -0
- package/typescript/copy-overwrite/eslint-plugin-code-organization/README.md +149 -0
- package/typescript/copy-overwrite/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +468 -0
- package/typescript/copy-overwrite/eslint-plugin-code-organization/index.js +23 -0
- package/typescript/copy-overwrite/eslint-plugin-code-organization/package.json +10 -0
- package/typescript/copy-overwrite/eslint-plugin-code-organization/rules/enforce-statement-order.js +157 -0
- package/typescript/copy-overwrite/eslint.config.mjs +390 -0
- package/typescript/copy-overwrite/eslint.ignore.config.json +57 -0
- package/typescript/copy-overwrite/eslint.thresholds.config.json +5 -0
- package/typescript/github-rulesets/base.json +106 -0
- package/typescript/merge/.claude/settings.json +28 -0
- package/typescript/merge/package.json +71 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ProjectType } from '../core/config.js';
|
|
2
|
+
/**
|
|
3
|
+
* Interface for project type detectors
|
|
4
|
+
*/
|
|
5
|
+
export interface IProjectTypeDetector {
|
|
6
|
+
/** The project type this detector identifies */
|
|
7
|
+
readonly type: ProjectType;
|
|
8
|
+
/**
|
|
9
|
+
* Detect if the given directory contains this project type
|
|
10
|
+
* @param destDir Absolute path to the project directory
|
|
11
|
+
* @returns Promise resolving to true if this project type is detected
|
|
12
|
+
*/
|
|
13
|
+
detect(destDir: string): Promise<boolean>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=detector.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.interface.d.ts","sourceRoot":"","sources":["../../src/detection/detector.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAE3B;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.interface.js","sourceRoot":"","sources":["../../src/detection/detector.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IProjectTypeDetector } from '../detector.interface.js';
|
|
2
|
+
/**
|
|
3
|
+
* Detector for AWS CDK projects
|
|
4
|
+
* Detects by presence of cdk.json or aws-cdk* dependencies
|
|
5
|
+
*/
|
|
6
|
+
export declare class CDKDetector implements IProjectTypeDetector {
|
|
7
|
+
readonly type: "cdk";
|
|
8
|
+
detect(destDir: string): Promise<boolean>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=cdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdk.d.ts","sourceRoot":"","sources":["../../../src/detection/detectors/cdk.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAkBrE;;;GAGG;AACH,qBAAa,WAAY,YAAW,oBAAoB;IACtD,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAEzB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBhD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
import { pathExists, readJsonOrNull } from '../../utils/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Check if any key in an object starts with a prefix
|
|
5
|
+
*/
|
|
6
|
+
function hasKeyStartingWith(obj, prefix) {
|
|
7
|
+
if (!obj) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
return Object.keys(obj).some((key) => key.startsWith(prefix));
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Detector for AWS CDK projects
|
|
14
|
+
* Detects by presence of cdk.json or aws-cdk* dependencies
|
|
15
|
+
*/
|
|
16
|
+
export class CDKDetector {
|
|
17
|
+
type = 'cdk';
|
|
18
|
+
async detect(destDir) {
|
|
19
|
+
// Check for cdk.json
|
|
20
|
+
const cdkJsonPath = path.join(destDir, 'cdk.json');
|
|
21
|
+
if (await pathExists(cdkJsonPath)) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
// Check for aws-cdk* in package.json
|
|
25
|
+
const packageJsonPath = path.join(destDir, 'package.json');
|
|
26
|
+
const packageJson = await readJsonOrNull(packageJsonPath);
|
|
27
|
+
if (!packageJson) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
return (hasKeyStartingWith(packageJson.dependencies, 'aws-cdk') ||
|
|
31
|
+
hasKeyStartingWith(packageJson.devDependencies, 'aws-cdk'));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=cdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdk.js","sourceRoot":"","sources":["../../../src/detection/detectors/cdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAOlE;;GAEG;AACH,SAAS,kBAAkB,CAAC,GAAwC,EAAE,MAAc;IAClF,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,WAAW;IACb,IAAI,GAAG,KAAc,CAAC;IAE/B,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,qBAAqB;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,qCAAqC;QACrC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,cAAc,CAAc,eAAe,CAAC,CAAC;QAEvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CACL,kBAAkB,CAAC,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC;YACvD,kBAAkB,CAAC,WAAW,CAAC,eAAe,EAAE,SAAS,CAAC,CAC3D,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IProjectTypeDetector } from '../detector.interface.js';
|
|
2
|
+
/**
|
|
3
|
+
* Detector for Expo (React Native) projects
|
|
4
|
+
* Detects by presence of app.json, eas.json, or expo dependency
|
|
5
|
+
*/
|
|
6
|
+
export declare class ExpoDetector implements IProjectTypeDetector {
|
|
7
|
+
readonly type: "expo";
|
|
8
|
+
detect(destDir: string): Promise<boolean>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=expo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expo.d.ts","sourceRoot":"","sources":["../../../src/detection/detectors/expo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAQrE;;;GAGG;AACH,qBAAa,YAAa,YAAW,oBAAoB;IACvD,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAE1B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CA0BhD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
import { pathExists, readJsonOrNull } from '../../utils/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Detector for Expo (React Native) projects
|
|
5
|
+
* Detects by presence of app.json, eas.json, or expo dependency
|
|
6
|
+
*/
|
|
7
|
+
export class ExpoDetector {
|
|
8
|
+
type = 'expo';
|
|
9
|
+
async detect(destDir) {
|
|
10
|
+
// Check for app.json
|
|
11
|
+
const appJsonPath = path.join(destDir, 'app.json');
|
|
12
|
+
if (await pathExists(appJsonPath)) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
// Check for eas.json
|
|
16
|
+
const easJsonPath = path.join(destDir, 'eas.json');
|
|
17
|
+
if (await pathExists(easJsonPath)) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
// Check for expo in package.json
|
|
21
|
+
const packageJsonPath = path.join(destDir, 'package.json');
|
|
22
|
+
const packageJson = await readJsonOrNull(packageJsonPath);
|
|
23
|
+
if (!packageJson) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
return (packageJson.dependencies?.['expo'] !== undefined ||
|
|
27
|
+
packageJson.devDependencies?.['expo'] !== undefined);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=expo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expo.js","sourceRoot":"","sources":["../../../src/detection/detectors/expo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAOlE;;;GAGG;AACH,MAAM,OAAO,YAAY;IACd,IAAI,GAAG,MAAe,CAAC;IAEhC,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,qBAAqB;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,qBAAqB;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,iCAAiC;QACjC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,cAAc,CAAc,eAAe,CAAC,CAAC;QAEvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CACL,WAAW,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,KAAK,SAAS;YAChD,WAAW,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,KAAK,SAAS,CACpD,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IProjectTypeDetector } from '../detector.interface.js';
|
|
2
|
+
/**
|
|
3
|
+
* Detector for NestJS projects
|
|
4
|
+
* Detects by presence of nest-cli.json or @nestjs/* dependencies
|
|
5
|
+
*/
|
|
6
|
+
export declare class NestJSDetector implements IProjectTypeDetector {
|
|
7
|
+
readonly type: "nestjs";
|
|
8
|
+
detect(destDir: string): Promise<boolean>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=nestjs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nestjs.d.ts","sourceRoot":"","sources":["../../../src/detection/detectors/nestjs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAkBrE;;;GAGG;AACH,qBAAa,cAAe,YAAW,oBAAoB;IACzD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAE5B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBhD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
import { pathExists, readJsonOrNull } from '../../utils/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Check if any key in an object starts with a prefix
|
|
5
|
+
*/
|
|
6
|
+
function hasKeyStartingWith(obj, prefix) {
|
|
7
|
+
if (!obj) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
return Object.keys(obj).some((key) => key.startsWith(prefix));
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Detector for NestJS projects
|
|
14
|
+
* Detects by presence of nest-cli.json or @nestjs/* dependencies
|
|
15
|
+
*/
|
|
16
|
+
export class NestJSDetector {
|
|
17
|
+
type = 'nestjs';
|
|
18
|
+
async detect(destDir) {
|
|
19
|
+
// Check for nest-cli.json
|
|
20
|
+
const nestCliPath = path.join(destDir, 'nest-cli.json');
|
|
21
|
+
if (await pathExists(nestCliPath)) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
// Check for @nestjs/* in package.json
|
|
25
|
+
const packageJsonPath = path.join(destDir, 'package.json');
|
|
26
|
+
const packageJson = await readJsonOrNull(packageJsonPath);
|
|
27
|
+
if (!packageJson) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
return (hasKeyStartingWith(packageJson.dependencies, '@nestjs') ||
|
|
31
|
+
hasKeyStartingWith(packageJson.devDependencies, '@nestjs'));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=nestjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nestjs.js","sourceRoot":"","sources":["../../../src/detection/detectors/nestjs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAOlE;;GAEG;AACH,SAAS,kBAAkB,CAAC,GAAwC,EAAE,MAAc;IAClF,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,QAAiB,CAAC;IAElC,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,0BAA0B;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACxD,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sCAAsC;QACtC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,cAAc,CAAc,eAAe,CAAC,CAAC;QAEvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CACL,kBAAkB,CAAC,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC;YACvD,kBAAkB,CAAC,WAAW,CAAC,eAAe,EAAE,SAAS,CAAC,CAC3D,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IProjectTypeDetector } from '../detector.interface.js';
|
|
2
|
+
/**
|
|
3
|
+
* Detector for npm packages (publishable to npm registry)
|
|
4
|
+
*
|
|
5
|
+
* Detects by presence of package.json that:
|
|
6
|
+
* - Is NOT marked as private
|
|
7
|
+
* - Has at least one of: main, bin, exports, or files fields
|
|
8
|
+
*/
|
|
9
|
+
export declare class NpmPackageDetector implements IProjectTypeDetector {
|
|
10
|
+
readonly type: "npm-package";
|
|
11
|
+
detect(destDir: string): Promise<boolean>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=npm-package.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-package.d.ts","sourceRoot":"","sources":["../../../src/detection/detectors/npm-package.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAWrE;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,oBAAoB;IAC7D,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;IAEjC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAqBhD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
import { readJsonOrNull } from '../../utils/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Detector for npm packages (publishable to npm registry)
|
|
5
|
+
*
|
|
6
|
+
* Detects by presence of package.json that:
|
|
7
|
+
* - Is NOT marked as private
|
|
8
|
+
* - Has at least one of: main, bin, exports, or files fields
|
|
9
|
+
*/
|
|
10
|
+
export class NpmPackageDetector {
|
|
11
|
+
type = 'npm-package';
|
|
12
|
+
async detect(destDir) {
|
|
13
|
+
const packageJsonPath = path.join(destDir, 'package.json');
|
|
14
|
+
const packageJson = await readJsonOrNull(packageJsonPath);
|
|
15
|
+
if (!packageJson) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
// Private packages are not meant to be published
|
|
19
|
+
if (packageJson.private === true) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
// Must have at least one field indicating it's a publishable package
|
|
23
|
+
const hasMain = packageJson.main !== undefined;
|
|
24
|
+
const hasBin = packageJson.bin !== undefined;
|
|
25
|
+
const hasExports = packageJson.exports !== undefined;
|
|
26
|
+
const hasFiles = packageJson.files !== undefined && packageJson.files.length > 0;
|
|
27
|
+
return hasMain || hasBin || hasExports || hasFiles;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=npm-package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-package.js","sourceRoot":"","sources":["../../../src/detection/detectors/npm-package.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAUtD;;;;;;GAMG;AACH,MAAM,OAAO,kBAAkB;IACpB,IAAI,GAAG,aAAsB,CAAC;IAEvC,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,cAAc,CAAc,eAAe,CAAC,CAAC;QAEvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,iDAAiD;QACjD,IAAI,WAAW,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,qEAAqE;QACrE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC;QAC/C,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,KAAK,SAAS,CAAC;QAC7C,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,KAAK,SAAS,CAAC;QACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAEjF,OAAO,OAAO,IAAI,MAAM,IAAI,UAAU,IAAI,QAAQ,CAAC;IACrD,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IProjectTypeDetector } from '../detector.interface.js';
|
|
2
|
+
/**
|
|
3
|
+
* Detector for TypeScript projects
|
|
4
|
+
* Detects by presence of tsconfig.json or typescript dependency
|
|
5
|
+
*/
|
|
6
|
+
export declare class TypeScriptDetector implements IProjectTypeDetector {
|
|
7
|
+
readonly type: "typescript";
|
|
8
|
+
detect(destDir: string): Promise<boolean>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=typescript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/detection/detectors/typescript.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAQrE;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,oBAAoB;IAC7D,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAU;IAEhC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBhD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
import { pathExists, readJsonOrNull } from '../../utils/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Detector for TypeScript projects
|
|
5
|
+
* Detects by presence of tsconfig.json or typescript dependency
|
|
6
|
+
*/
|
|
7
|
+
export class TypeScriptDetector {
|
|
8
|
+
type = 'typescript';
|
|
9
|
+
async detect(destDir) {
|
|
10
|
+
// Check for tsconfig.json
|
|
11
|
+
const tsconfigPath = path.join(destDir, 'tsconfig.json');
|
|
12
|
+
if (await pathExists(tsconfigPath)) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
// Check for typescript in package.json
|
|
16
|
+
const packageJsonPath = path.join(destDir, 'package.json');
|
|
17
|
+
const packageJson = await readJsonOrNull(packageJsonPath);
|
|
18
|
+
if (!packageJson) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return (packageJson.dependencies?.['typescript'] !== undefined ||
|
|
22
|
+
packageJson.devDependencies?.['typescript'] !== undefined);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=typescript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/detection/detectors/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAOlE;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACpB,IAAI,GAAG,YAAqB,CAAC;IAEtC,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,0BAA0B;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACzD,IAAI,MAAM,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uCAAuC;QACvC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,cAAc,CAAc,eAAe,CAAC,CAAC;QAEvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CACL,WAAW,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,KAAK,SAAS;YACtD,WAAW,CAAC,eAAe,EAAE,CAAC,YAAY,CAAC,KAAK,SAAS,CAC1D,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ProjectType } from '../core/config.js';
|
|
2
|
+
import type { IProjectTypeDetector } from './detector.interface.js';
|
|
3
|
+
export type { IProjectTypeDetector } from './detector.interface.js';
|
|
4
|
+
/**
|
|
5
|
+
* Registry for project type detectors
|
|
6
|
+
*/
|
|
7
|
+
export declare class DetectorRegistry {
|
|
8
|
+
private readonly detectors;
|
|
9
|
+
constructor(detectors?: readonly IProjectTypeDetector[]);
|
|
10
|
+
/**
|
|
11
|
+
* Detect all project types in the given directory
|
|
12
|
+
*/
|
|
13
|
+
detectAll(destDir: string): Promise<ProjectType[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Expand detected types to include parent types and order correctly
|
|
16
|
+
* Child types (expo, nestjs, cdk) automatically include their parent (typescript)
|
|
17
|
+
*/
|
|
18
|
+
expandAndOrderTypes(detectedTypes: readonly ProjectType[]): ProjectType[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create default detector registry
|
|
22
|
+
*/
|
|
23
|
+
export declare function createDetectorRegistry(): DetectorRegistry;
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/detection/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAOpE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEpE;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;gBAEhD,SAAS,CAAC,EAAE,SAAS,oBAAoB,EAAE;IAUvD;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAYxD;;;OAGG;IACH,mBAAmB,CAAC,aAAa,EAAE,SAAS,WAAW,EAAE,GAAG,WAAW,EAAE;CAgB1E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,CAEzD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { PROJECT_TYPE_HIERARCHY, PROJECT_TYPE_ORDER } from '../core/config.js';
|
|
2
|
+
import { TypeScriptDetector } from './detectors/typescript.js';
|
|
3
|
+
import { ExpoDetector } from './detectors/expo.js';
|
|
4
|
+
import { NestJSDetector } from './detectors/nestjs.js';
|
|
5
|
+
import { CDKDetector } from './detectors/cdk.js';
|
|
6
|
+
import { NpmPackageDetector } from './detectors/npm-package.js';
|
|
7
|
+
/**
|
|
8
|
+
* Registry for project type detectors
|
|
9
|
+
*/
|
|
10
|
+
export class DetectorRegistry {
|
|
11
|
+
detectors;
|
|
12
|
+
constructor(detectors) {
|
|
13
|
+
this.detectors = detectors ?? [
|
|
14
|
+
new TypeScriptDetector(),
|
|
15
|
+
new NpmPackageDetector(),
|
|
16
|
+
new ExpoDetector(),
|
|
17
|
+
new NestJSDetector(),
|
|
18
|
+
new CDKDetector(),
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Detect all project types in the given directory
|
|
23
|
+
*/
|
|
24
|
+
async detectAll(destDir) {
|
|
25
|
+
const detectedTypes = [];
|
|
26
|
+
for (const detector of this.detectors) {
|
|
27
|
+
if (await detector.detect(destDir)) {
|
|
28
|
+
detectedTypes.push(detector.type);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return detectedTypes;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Expand detected types to include parent types and order correctly
|
|
35
|
+
* Child types (expo, nestjs, cdk) automatically include their parent (typescript)
|
|
36
|
+
*/
|
|
37
|
+
expandAndOrderTypes(detectedTypes) {
|
|
38
|
+
const allTypes = new Set();
|
|
39
|
+
// Add all detected types and their parents
|
|
40
|
+
for (const type of detectedTypes) {
|
|
41
|
+
allTypes.add(type);
|
|
42
|
+
const parent = PROJECT_TYPE_HIERARCHY[type];
|
|
43
|
+
if (parent !== undefined) {
|
|
44
|
+
allTypes.add(parent);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Return in canonical order (typescript first, then others)
|
|
48
|
+
return PROJECT_TYPE_ORDER.filter((type) => allTypes.has(type));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Create default detector registry
|
|
53
|
+
*/
|
|
54
|
+
export function createDetectorRegistry() {
|
|
55
|
+
return new DetectorRegistry();
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detection/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAIhE;;GAEG;AACH,MAAM,OAAO,gBAAgB;IACV,SAAS,CAAkC;IAE5D,YAAY,SAA2C;QACrD,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI;YAC5B,IAAI,kBAAkB,EAAE;YACxB,IAAI,kBAAkB,EAAE;YACxB,IAAI,YAAY,EAAE;YAClB,IAAI,cAAc,EAAE;YACpB,IAAI,WAAW,EAAE;SAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,OAAe;QAC7B,MAAM,aAAa,GAAkB,EAAE,CAAC;QAExC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,aAAqC;QACvD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;QAExC,2CAA2C;QAC3C,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEnB,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,gBAAgB,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for all Lisa errors
|
|
3
|
+
*/
|
|
4
|
+
export declare class LisaError extends Error {
|
|
5
|
+
readonly code: string;
|
|
6
|
+
constructor(message: string, code: string);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Error thrown when destination directory is not found
|
|
10
|
+
*/
|
|
11
|
+
export declare class DestinationNotFoundError extends LisaError {
|
|
12
|
+
readonly path: string;
|
|
13
|
+
constructor(path: string);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Error thrown when destination is not a directory
|
|
17
|
+
*/
|
|
18
|
+
export declare class DestinationNotDirectoryError extends LisaError {
|
|
19
|
+
readonly path: string;
|
|
20
|
+
constructor(path: string);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Error thrown when JSON parsing fails
|
|
24
|
+
*/
|
|
25
|
+
export declare class JsonParseError extends LisaError {
|
|
26
|
+
readonly filePath: string;
|
|
27
|
+
readonly originalError: Error;
|
|
28
|
+
constructor(filePath: string, originalError: Error);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Error thrown when JSON merge fails
|
|
32
|
+
*/
|
|
33
|
+
export declare class JsonMergeError extends LisaError {
|
|
34
|
+
readonly filePath: string;
|
|
35
|
+
readonly reason: string;
|
|
36
|
+
constructor(filePath: string, reason: string);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Error thrown when file operation fails
|
|
40
|
+
*/
|
|
41
|
+
export declare class FileOperationError extends LisaError {
|
|
42
|
+
readonly operation: string;
|
|
43
|
+
readonly filePath: string;
|
|
44
|
+
readonly originalError: Error;
|
|
45
|
+
constructor(operation: string, filePath: string, originalError: Error);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Error thrown when backup/restore fails
|
|
49
|
+
*/
|
|
50
|
+
export declare class BackupError extends LisaError {
|
|
51
|
+
readonly operation: 'backup' | 'restore' | 'cleanup';
|
|
52
|
+
readonly reason: string;
|
|
53
|
+
constructor(operation: 'backup' | 'restore' | 'cleanup', reason: string);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Error thrown when rollback fails
|
|
57
|
+
*/
|
|
58
|
+
export declare class RollbackError extends LisaError {
|
|
59
|
+
readonly reason: string;
|
|
60
|
+
constructor(reason: string);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Error thrown when a required dependency is missing
|
|
64
|
+
*/
|
|
65
|
+
export declare class DependencyMissingError extends LisaError {
|
|
66
|
+
readonly dependencies: readonly string[];
|
|
67
|
+
constructor(dependencies: readonly string[]);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;aAGhB,IAAI,EAAE,MAAM;gBAD5B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM;CAK/B;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,SAAS;aACzB,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAIzC;AAED;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,SAAS;aAC7B,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAIzC;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,SAAS;aAEzB,QAAQ,EAAE,MAAM;aAChB,aAAa,EAAE,KAAK;gBADpB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,KAAK;CAKvC;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,SAAS;aAEzB,QAAQ,EAAE,MAAM;aAChB,MAAM,EAAE,MAAM;gBADd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM;CAKjC;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,SAAS;aAE7B,SAAS,EAAE,MAAM;aACjB,QAAQ,EAAE,MAAM;aAChB,aAAa,EAAE,KAAK;gBAFpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,KAAK;CAKvC;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,SAAS;aAEtB,SAAS,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS;aAC3C,MAAM,EAAE,MAAM;gBADd,SAAS,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,EAC3C,MAAM,EAAE,MAAM;CAKjC;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,SAAS;aACd,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;CAI3C;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,SAAS;aACvB,YAAY,EAAE,SAAS,MAAM,EAAE;gBAA/B,YAAY,EAAE,SAAS,MAAM,EAAE;CAI5D"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for all Lisa errors
|
|
3
|
+
*/
|
|
4
|
+
export class LisaError extends Error {
|
|
5
|
+
code;
|
|
6
|
+
constructor(message, code) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.code = code;
|
|
9
|
+
this.name = 'LisaError';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Error thrown when destination directory is not found
|
|
14
|
+
*/
|
|
15
|
+
export class DestinationNotFoundError extends LisaError {
|
|
16
|
+
path;
|
|
17
|
+
constructor(path) {
|
|
18
|
+
super(`Destination path does not exist: ${path}`, 'DEST_NOT_FOUND');
|
|
19
|
+
this.path = path;
|
|
20
|
+
this.name = 'DestinationNotFoundError';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Error thrown when destination is not a directory
|
|
25
|
+
*/
|
|
26
|
+
export class DestinationNotDirectoryError extends LisaError {
|
|
27
|
+
path;
|
|
28
|
+
constructor(path) {
|
|
29
|
+
super(`Destination is not a directory: ${path}`, 'DEST_NOT_DIR');
|
|
30
|
+
this.path = path;
|
|
31
|
+
this.name = 'DestinationNotDirectoryError';
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Error thrown when JSON parsing fails
|
|
36
|
+
*/
|
|
37
|
+
export class JsonParseError extends LisaError {
|
|
38
|
+
filePath;
|
|
39
|
+
originalError;
|
|
40
|
+
constructor(filePath, originalError) {
|
|
41
|
+
super(`Failed to parse JSON file: ${filePath}`, 'JSON_PARSE_ERROR');
|
|
42
|
+
this.filePath = filePath;
|
|
43
|
+
this.originalError = originalError;
|
|
44
|
+
this.name = 'JsonParseError';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Error thrown when JSON merge fails
|
|
49
|
+
*/
|
|
50
|
+
export class JsonMergeError extends LisaError {
|
|
51
|
+
filePath;
|
|
52
|
+
reason;
|
|
53
|
+
constructor(filePath, reason) {
|
|
54
|
+
super(`Failed to merge JSON: ${filePath} - ${reason}`, 'JSON_MERGE_ERROR');
|
|
55
|
+
this.filePath = filePath;
|
|
56
|
+
this.reason = reason;
|
|
57
|
+
this.name = 'JsonMergeError';
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Error thrown when file operation fails
|
|
62
|
+
*/
|
|
63
|
+
export class FileOperationError extends LisaError {
|
|
64
|
+
operation;
|
|
65
|
+
filePath;
|
|
66
|
+
originalError;
|
|
67
|
+
constructor(operation, filePath, originalError) {
|
|
68
|
+
super(`File operation '${operation}' failed for: ${filePath}`, 'FILE_OP_ERROR');
|
|
69
|
+
this.operation = operation;
|
|
70
|
+
this.filePath = filePath;
|
|
71
|
+
this.originalError = originalError;
|
|
72
|
+
this.name = 'FileOperationError';
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Error thrown when backup/restore fails
|
|
77
|
+
*/
|
|
78
|
+
export class BackupError extends LisaError {
|
|
79
|
+
operation;
|
|
80
|
+
reason;
|
|
81
|
+
constructor(operation, reason) {
|
|
82
|
+
super(`Backup ${operation} failed: ${reason}`, 'BACKUP_ERROR');
|
|
83
|
+
this.operation = operation;
|
|
84
|
+
this.reason = reason;
|
|
85
|
+
this.name = 'BackupError';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Error thrown when rollback fails
|
|
90
|
+
*/
|
|
91
|
+
export class RollbackError extends LisaError {
|
|
92
|
+
reason;
|
|
93
|
+
constructor(reason) {
|
|
94
|
+
super(`Rollback failed: ${reason}`, 'ROLLBACK_ERROR');
|
|
95
|
+
this.reason = reason;
|
|
96
|
+
this.name = 'RollbackError';
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Error thrown when a required dependency is missing
|
|
101
|
+
*/
|
|
102
|
+
export class DependencyMissingError extends LisaError {
|
|
103
|
+
dependencies;
|
|
104
|
+
constructor(dependencies) {
|
|
105
|
+
super(`Missing required dependencies: ${dependencies.join(', ')}`, 'DEP_MISSING');
|
|
106
|
+
this.dependencies = dependencies;
|
|
107
|
+
this.name = 'DependencyMissingError';
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAGhB;IAFlB,YACE,OAAe,EACC,IAAY;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,SAAS;IACzB;IAA5B,YAA4B,IAAY;QACtC,KAAK,CAAC,oCAAoC,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAD1C,SAAI,GAAJ,IAAI,CAAQ;QAEtC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,SAAS;IAC7B;IAA5B,YAA4B,IAAY;QACtC,KAAK,CAAC,mCAAmC,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;QADvC,SAAI,GAAJ,IAAI,CAAQ;QAEtC,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,SAAS;IAEzB;IACA;IAFlB,YACkB,QAAgB,EAChB,aAAoB;QAEpC,KAAK,CAAC,8BAA8B,QAAQ,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAHpD,aAAQ,GAAR,QAAQ,CAAQ;QAChB,kBAAa,GAAb,aAAa,CAAO;QAGpC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,SAAS;IAEzB;IACA;IAFlB,YACkB,QAAgB,EAChB,MAAc;QAE9B,KAAK,CAAC,yBAAyB,QAAQ,MAAM,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAH3D,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAQ;QAG9B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAE7B;IACA;IACA;IAHlB,YACkB,SAAiB,EACjB,QAAgB,EAChB,aAAoB;QAEpC,KAAK,CAAC,mBAAmB,SAAS,iBAAiB,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAC;QAJhE,cAAS,GAAT,SAAS,CAAQ;QACjB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,kBAAa,GAAb,aAAa,CAAO;QAGpC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,SAAS;IAEtB;IACA;IAFlB,YACkB,SAA2C,EAC3C,MAAc;QAE9B,KAAK,CAAC,UAAU,SAAS,YAAY,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;QAH/C,cAAS,GAAT,SAAS,CAAkC;QAC3C,WAAM,GAAN,MAAM,CAAQ;QAG9B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,SAAS;IACd;IAA5B,YAA4B,MAAc;QACxC,KAAK,CAAC,oBAAoB,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAD5B,WAAM,GAAN,MAAM,CAAQ;QAExC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,SAAS;IACvB;IAA5B,YAA4B,YAA+B;QACzD,KAAK,CAAC,kCAAkC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QADxD,iBAAY,GAAZ,YAAY,CAAmB;QAEzD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createProgram } from './cli/index.js';
|
|
3
|
+
const program = createProgram();
|
|
4
|
+
program.parseAsync().catch((error) => {
|
|
5
|
+
console.error('Error:', error instanceof Error ? error.message : String(error));
|
|
6
|
+
process.exit(1);
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAChC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACnC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ILogger } from './logger.interface.js';
|
|
2
|
+
/**
|
|
3
|
+
* Console logger with colored output
|
|
4
|
+
*/
|
|
5
|
+
export declare class ConsoleLogger implements ILogger {
|
|
6
|
+
info(message: string): void;
|
|
7
|
+
success(message: string): void;
|
|
8
|
+
warn(message: string): void;
|
|
9
|
+
error(message: string): void;
|
|
10
|
+
dry(message: string): void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=console-logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-logger.d.ts","sourceRoot":"","sources":["../../src/logging/console-logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD;;GAEG;AACH,qBAAa,aAAc,YAAW,OAAO;IAC3C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAG3B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import pc from 'picocolors';
|
|
2
|
+
/**
|
|
3
|
+
* Console logger with colored output
|
|
4
|
+
*/
|
|
5
|
+
export class ConsoleLogger {
|
|
6
|
+
info(message) {
|
|
7
|
+
console.log(`${pc.blue('[INFO]')} ${message}`);
|
|
8
|
+
}
|
|
9
|
+
success(message) {
|
|
10
|
+
console.log(`${pc.green('[OK]')} ${message}`);
|
|
11
|
+
}
|
|
12
|
+
warn(message) {
|
|
13
|
+
console.log(`${pc.yellow('[WARN]')} ${message}`);
|
|
14
|
+
}
|
|
15
|
+
error(message) {
|
|
16
|
+
console.log(`${pc.red('[ERROR]')} ${message}`);
|
|
17
|
+
}
|
|
18
|
+
dry(message) {
|
|
19
|
+
console.log(`${pc.blue('[DRY-RUN]')} ${message}`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=console-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-logger.js","sourceRoot":"","sources":["../../src/logging/console-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B;;GAEG;AACH,MAAM,OAAO,aAAa;IACxB,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;CACF"}
|