create-appraisejs 0.3.0-alpha.0 → 0.3.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/README.md +19 -7
- package/dist/cli-args.d.ts +6 -0
- package/dist/cli-args.d.ts.map +1 -0
- package/dist/cli-args.js +33 -0
- package/dist/cli-args.js.map +1 -0
- package/dist/cli.d.ts +2 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +16 -8
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +2 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -3
- package/dist/config.js.map +1 -1
- package/dist/copy-template.d.ts +3 -2
- package/dist/copy-template.d.ts.map +1 -1
- package/dist/copy-template.js +6 -7
- package/dist/copy-template.js.map +1 -1
- package/dist/create-project.d.ts.map +1 -1
- package/dist/create-project.js +8 -8
- package/dist/create-project.js.map +1 -1
- package/dist/prepare-template-utils.d.ts +9 -1
- package/dist/prepare-template-utils.d.ts.map +1 -1
- package/dist/prepare-template-utils.js +49 -1
- package/dist/prepare-template-utils.js.map +1 -1
- package/dist/prompts.d.ts +6 -1
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +9 -2
- package/dist/prompts.js.map +1 -1
- package/dist/sync-templates-utils.d.ts.map +1 -1
- package/dist/sync-templates-utils.js +4 -1
- package/dist/sync-templates-utils.js.map +1 -1
- package/dist/template-catalog.d.ts +22 -0
- package/dist/template-catalog.d.ts.map +1 -0
- package/dist/template-catalog.js +50 -0
- package/dist/template-catalog.js.map +1 -0
- package/package.json +5 -3
- package/templates/blank/package-lock.json +15012 -0
- package/templates/blank/package.json +139 -0
- package/templates/blank/prisma/dev.db +0 -0
- package/templates/blank/public/favicon.svg +8 -0
- package/templates/blank/public/logo.svg +13 -0
- package/templates/blank/scripts/sync-appraise-base-template.ts +244 -0
- package/templates/blank/scripts/sync-template-step-groups.ts +247 -0
- package/templates/blank/src/app/globals.css +90 -0
- package/templates/blank/src/app/layout.tsx +207 -0
- package/templates/blank/src/components/theme/theme-provider.tsx +16 -0
- package/templates/blank/src/lib/template-sync-utils.js +50 -0
- package/templates/blank/src/lib/template-sync-utils.ts +65 -0
- package/templates/blank/tsconfig.json +31 -0
- package/templates/starter/.env.example +2 -0
- package/templates/starter/.vscode/settings.json +13 -0
- package/templates/starter/README.md +57 -0
- package/templates/starter/automation/config/environments/environments.json +1 -0
- package/templates/starter/automation/mapping/locator-map.json +1 -0
- package/templates/starter/components.json +24 -0
- package/templates/starter/cucumber.mjs +16 -0
- package/templates/starter/eslint.config.mjs +20 -0
- package/templates/starter/gitignore +56 -0
- package/templates/starter/next-env.d.ts +6 -0
- package/templates/starter/next.config.ts +20 -0
- package/templates/starter/package-lock.json +15012 -0
- package/templates/starter/package.json +139 -0
- package/templates/starter/packages/cucumber-runtime/package.json +13 -0
- package/templates/starter/packages/cucumber-runtime/src/cache.util.ts +93 -0
- package/templates/starter/packages/cucumber-runtime/src/cli.ts +68 -0
- package/templates/starter/packages/cucumber-runtime/src/environment.util.ts +21 -0
- package/templates/starter/packages/cucumber-runtime/src/executor.ts +32 -0
- package/templates/starter/packages/cucumber-runtime/src/hooks.ts +106 -0
- package/templates/starter/packages/cucumber-runtime/src/index.ts +17 -0
- package/templates/starter/packages/cucumber-runtime/src/locator.util.ts +234 -0
- package/templates/starter/packages/cucumber-runtime/src/parameter-types.ts +7 -0
- package/templates/starter/packages/cucumber-runtime/src/paths.ts +98 -0
- package/templates/starter/packages/cucumber-runtime/src/random-data.util.ts +35 -0
- package/templates/starter/packages/cucumber-runtime/src/types.ts +13 -0
- package/templates/starter/packages/cucumber-runtime/src/world.ts +44 -0
- package/templates/starter/packages/cucumber-runtime/tsconfig.json +11 -0
- package/templates/starter/packages/locator-picker-companion/dist/cli.d.ts +1 -0
- package/templates/starter/packages/locator-picker-companion/dist/cli.js +302 -0
- package/templates/starter/packages/locator-picker-companion/dist/index.d.ts +3 -0
- package/templates/starter/packages/locator-picker-companion/dist/index.js +3 -0
- package/templates/starter/packages/locator-picker-companion/dist/injected-picker-script.d.ts +1 -0
- package/templates/starter/packages/locator-picker-companion/dist/injected-picker-script.js +615 -0
- package/templates/starter/packages/locator-picker-companion/dist/launcher.d.ts +11 -0
- package/templates/starter/packages/locator-picker-companion/dist/launcher.js +59 -0
- package/templates/starter/packages/locator-picker-companion/dist/selector-generator.d.ts +3 -0
- package/templates/starter/packages/locator-picker-companion/dist/selector-generator.js +257 -0
- package/templates/starter/packages/locator-picker-companion/dist/session-file.d.ts +22 -0
- package/templates/starter/packages/locator-picker-companion/dist/session-file.js +150 -0
- package/templates/starter/packages/locator-picker-companion/dist/types.d.ts +31 -0
- package/templates/starter/packages/locator-picker-companion/dist/types.js +1 -0
- package/templates/starter/packages/locator-picker-companion/package.json +17 -0
- package/templates/starter/packages/locator-picker-companion/src/cli.ts +428 -0
- package/templates/starter/packages/locator-picker-companion/src/index.ts +3 -0
- package/templates/starter/packages/locator-picker-companion/src/injected-picker-script.ts +771 -0
- package/templates/starter/packages/locator-picker-companion/src/launcher.ts +77 -0
- package/templates/starter/packages/locator-picker-companion/src/selector-generator.ts +339 -0
- package/templates/starter/packages/locator-picker-companion/src/session-file.ts +226 -0
- package/templates/starter/packages/locator-picker-companion/src/types.ts +42 -0
- package/templates/starter/packages/locator-picker-companion/tsconfig.json +14 -0
- package/templates/starter/postcss.config.mjs +8 -0
- package/templates/starter/prisma/dev.db +0 -0
- package/templates/starter/prisma/migrations/20251026202316_migrate_back_to_sqlite/migration.sql +257 -0
- package/templates/starter/prisma/migrations/20251104113456_add_type_for_template_step_groups/migration.sql +16 -0
- package/templates/starter/prisma/migrations/20251104170946_add_tags_to_test_suite_and_test_case/migration.sql +27 -0
- package/templates/starter/prisma/migrations/20251112190024_add_cascade_delete_to_test_run_test_case/migration.sql +17 -0
- package/templates/starter/prisma/migrations/20251113181100_add_test_run_log/migration.sql +12 -0
- package/templates/starter/prisma/migrations/20251119191838_add_tag_type/migration.sql +28 -0
- package/templates/starter/prisma/migrations/20251121164059_add_conflict_resolution/migration.sql +12 -0
- package/templates/starter/prisma/migrations/20251130190737_add_trace_path_to_test_run_test_case/migration.sql +2 -0
- package/templates/starter/prisma/migrations/20251213074835_add_log_path_to_test_run/migration.sql +2 -0
- package/templates/starter/prisma/migrations/20251213183952_add_name_property_for_the_test_run_entities/migration.sql +30 -0
- package/templates/starter/prisma/migrations/20251223183400_add_report_model_to_db_schema/migration.sql +10 -0
- package/templates/starter/prisma/migrations/20251223183637_add_report_test_case_entity_for_storing_test_results_for_individual_test_cases/migration.sql +10 -0
- package/templates/starter/prisma/migrations/20251224083549_add_comprehensive_report_storage/migration.sql +108 -0
- package/templates/starter/prisma/migrations/20251229194422_migrate_duration_to_string/migration.sql +55 -0
- package/templates/starter/prisma/migrations/20251230124637_add_unique_constraint_to_test_run_name/migration.sql +27 -0
- package/templates/starter/prisma/migrations/20260115094436_add_dashboard_metrics/migration.sql +59 -0
- package/templates/starter/prisma/migrations/20260127172022_add_cascade_delete_to_step_parameters/migration.sql +34 -0
- package/templates/starter/prisma/migrations/20260313093000_add_report_step_screenshot_path/migration.sql +1 -0
- package/templates/starter/prisma/migrations/20260318120000_add_test_suite_context_to_test_run_test_case/migration.sql +20 -0
- package/templates/starter/prisma/migrations/20260318173512_add_support_of_test_suite_level_runs/migration.sql +2 -0
- package/templates/starter/prisma/migrations/migration_lock.toml +3 -0
- package/templates/starter/prisma/schema.prisma +558 -0
- package/templates/starter/public/favicon.svg +8 -0
- package/templates/starter/public/file.svg +1 -0
- package/templates/starter/public/globe.svg +1 -0
- package/templates/starter/public/logo.svg +13 -0
- package/templates/starter/public/next.svg +1 -0
- package/templates/starter/public/vercel.svg +1 -0
- package/templates/starter/public/window.svg +1 -0
- package/templates/starter/scripts/build-step-registry.ts +33 -0
- package/templates/starter/scripts/install-playwright.ts +29 -0
- package/templates/starter/scripts/install-template-step.ts +128 -0
- package/templates/starter/scripts/lib/filename-utils.test.ts +24 -0
- package/templates/starter/scripts/lib/filename-utils.ts +24 -0
- package/templates/starter/scripts/lib/jsdoc-parser.test.ts +63 -0
- package/templates/starter/scripts/lib/jsdoc-parser.ts +88 -0
- package/templates/starter/scripts/lib/step-file-parser.test.ts +71 -0
- package/templates/starter/scripts/lib/step-file-parser.ts +315 -0
- package/templates/starter/scripts/lib/step-matcher.test.ts +86 -0
- package/templates/starter/scripts/lib/step-matcher.ts +120 -0
- package/templates/starter/scripts/lib/sync-script-runner.ts +23 -0
- package/templates/starter/scripts/lib/sync-summary.ts +29 -0
- package/templates/starter/scripts/lib/tag-parsing.test.ts +20 -0
- package/templates/starter/scripts/lib/tag-parsing.ts +10 -0
- package/templates/starter/scripts/lib/template-step-installer.test.ts +225 -0
- package/templates/starter/scripts/lib/template-step-installer.ts +404 -0
- package/templates/starter/scripts/lib/template-step-registry.test.ts +118 -0
- package/templates/starter/scripts/lib/template-step-registry.ts +137 -0
- package/templates/starter/scripts/protect-seeded-files.ts +51 -0
- package/templates/starter/scripts/regenerate-features.ts +98 -0
- package/templates/starter/scripts/run-vitest.ts +59 -0
- package/templates/starter/scripts/setup-env.ts +26 -0
- package/templates/starter/scripts/sync-all.ts +287 -0
- package/templates/starter/scripts/sync-appraise-base-template.ts +244 -0
- package/templates/starter/scripts/sync-environments.ts +305 -0
- package/templates/starter/scripts/sync-locator-groups.ts +358 -0
- package/templates/starter/scripts/sync-locators.ts +348 -0
- package/templates/starter/scripts/sync-modules.ts +302 -0
- package/templates/starter/scripts/sync-tags.ts +255 -0
- package/templates/starter/scripts/sync-template-step-groups.ts +247 -0
- package/templates/starter/scripts/sync-template-steps.ts +386 -0
- package/templates/starter/scripts/sync-test-cases.ts +717 -0
- package/templates/starter/scripts/sync-test-suites.ts +369 -0
- package/templates/starter/src/actions/dashboard/dashboard-actions.ts +70 -0
- package/templates/starter/src/actions/environments/environment-actions.ts +102 -0
- package/templates/starter/src/actions/locator/locator-actions.ts +77 -0
- package/templates/starter/src/actions/locator-groups/locator-group-actions.ts +115 -0
- package/templates/starter/src/actions/locator-picker/locator-picker-actions.test.ts +81 -0
- package/templates/starter/src/actions/locator-picker/locator-picker-actions.ts +102 -0
- package/templates/starter/src/actions/modules/module-actions.ts +99 -0
- package/templates/starter/src/actions/reports/report-actions.ts +79 -0
- package/templates/starter/src/actions/settings/sync-actions.test.ts +58 -0
- package/templates/starter/src/actions/settings/sync-actions.ts +46 -0
- package/templates/starter/src/actions/tags/tag-actions.ts +99 -0
- package/templates/starter/src/actions/template-step/template-step-actions.ts +114 -0
- package/templates/starter/src/actions/template-step-group/template-step-group-actions.ts +129 -0
- package/templates/starter/src/actions/template-test-case/template-test-case-actions.ts +98 -0
- package/templates/starter/src/actions/test-case/test-case-actions.ts +108 -0
- package/templates/starter/src/actions/test-run/test-run-actions.ts +269 -0
- package/templates/starter/src/actions/test-suite/test-suite-actions.ts +111 -0
- package/templates/starter/src/app/(base)/environments/create/page.tsx +28 -0
- package/templates/starter/src/app/(base)/environments/environment-form.test.tsx +92 -0
- package/templates/starter/src/app/(base)/environments/environment-form.tsx +228 -0
- package/templates/starter/src/app/(base)/environments/environment-helpers.ts +58 -0
- package/templates/starter/src/app/(base)/environments/environment-table-columns.tsx +96 -0
- package/templates/starter/src/app/(base)/environments/environment-table.tsx +25 -0
- package/templates/starter/src/app/(base)/environments/modify/[id]/page.tsx +49 -0
- package/templates/starter/src/app/(base)/environments/page.tsx +59 -0
- package/templates/starter/src/app/(base)/layout.tsx +10 -0
- package/templates/starter/src/app/(base)/locator-groups/create/page.tsx +44 -0
- package/templates/starter/src/app/(base)/locator-groups/locator-group-form.tsx +215 -0
- package/templates/starter/src/app/(base)/locator-groups/locator-group-table-columns.tsx +77 -0
- package/templates/starter/src/app/(base)/locator-groups/locator-group-table.tsx +28 -0
- package/templates/starter/src/app/(base)/locator-groups/modify/[id]/page.tsx +46 -0
- package/templates/starter/src/app/(base)/locator-groups/page.tsx +71 -0
- package/templates/starter/src/app/(base)/locators/create/create-locator-workspace-helpers.test.ts +71 -0
- package/templates/starter/src/app/(base)/locators/create/create-locator-workspace-helpers.ts +333 -0
- package/templates/starter/src/app/(base)/locators/create/create-locator-workspace.test.tsx +125 -0
- package/templates/starter/src/app/(base)/locators/create/create-locator-workspace.tsx +324 -0
- package/templates/starter/src/app/(base)/locators/create/page.tsx +55 -0
- package/templates/starter/src/app/(base)/locators/create/use-locator-workspace.ts +183 -0
- package/templates/starter/src/app/(base)/locators/locator-helpers.test.ts +28 -0
- package/templates/starter/src/app/(base)/locators/locator-helpers.ts +59 -0
- package/templates/starter/src/app/(base)/locators/locator-table-columns.tsx +74 -0
- package/templates/starter/src/app/(base)/locators/locator-table.tsx +30 -0
- package/templates/starter/src/app/(base)/locators/modify/[id]/page.tsx +86 -0
- package/templates/starter/src/app/(base)/locators/page.tsx +62 -0
- package/templates/starter/src/app/(base)/locators/picker/page.tsx +7 -0
- package/templates/starter/src/app/(base)/locators/sync-locators-button.tsx +67 -0
- package/templates/starter/src/app/(base)/modules/create/page.tsx +33 -0
- package/templates/starter/src/app/(base)/modules/modify/[id]/page.tsx +43 -0
- package/templates/starter/src/app/(base)/modules/module-form.test.tsx +84 -0
- package/templates/starter/src/app/(base)/modules/module-form.tsx +159 -0
- package/templates/starter/src/app/(base)/modules/module-helpers.ts +64 -0
- package/templates/starter/src/app/(base)/modules/module-table-columns.tsx +81 -0
- package/templates/starter/src/app/(base)/modules/module-table.tsx +25 -0
- package/templates/starter/src/app/(base)/modules/page.tsx +59 -0
- package/templates/starter/src/app/(base)/reports/[id]/page.tsx +284 -0
- package/templates/starter/src/app/(base)/reports/duration-chart.tsx +33 -0
- package/templates/starter/src/app/(base)/reports/feature-chart.tsx +79 -0
- package/templates/starter/src/app/(base)/reports/overview-chart.tsx +49 -0
- package/templates/starter/src/app/(base)/reports/page.tsx +98 -0
- package/templates/starter/src/app/(base)/reports/report-detail-helpers.test.ts +109 -0
- package/templates/starter/src/app/(base)/reports/report-detail-helpers.ts +247 -0
- package/templates/starter/src/app/(base)/reports/report-metric-card.tsx +78 -0
- package/templates/starter/src/app/(base)/reports/report-table-columns.tsx +189 -0
- package/templates/starter/src/app/(base)/reports/report-table.tsx +72 -0
- package/templates/starter/src/app/(base)/reports/report-view-table-columns.tsx +142 -0
- package/templates/starter/src/app/(base)/reports/report-view-table.tsx +83 -0
- package/templates/starter/src/app/(base)/reports/test-cases/page.tsx +40 -0
- package/templates/starter/src/app/(base)/reports/test-cases/test-cases-metric-table-columns.tsx +115 -0
- package/templates/starter/src/app/(base)/reports/test-cases/test-cases-metric-table.tsx +27 -0
- package/templates/starter/src/app/(base)/reports/test-suites/page.tsx +42 -0
- package/templates/starter/src/app/(base)/reports/test-suites/test-suites-metric-table-columns.tsx +79 -0
- package/templates/starter/src/app/(base)/reports/test-suites/test-suites-metric-table.tsx +27 -0
- package/templates/starter/src/app/(base)/reports/view-logs-button.tsx +58 -0
- package/templates/starter/src/app/(base)/settings/page.tsx +30 -0
- package/templates/starter/src/app/(base)/settings/settings-sync-panel-helpers.test.tsx +40 -0
- package/templates/starter/src/app/(base)/settings/settings-sync-panel-helpers.tsx +110 -0
- package/templates/starter/src/app/(base)/settings/settings-sync-panel.test.tsx +127 -0
- package/templates/starter/src/app/(base)/settings/settings-sync-panel.tsx +146 -0
- package/templates/starter/src/app/(base)/settings/use-settings-sync.ts +66 -0
- package/templates/starter/src/app/(base)/tags/create/page.tsx +39 -0
- package/templates/starter/src/app/(base)/tags/modify/[id]/page.tsx +50 -0
- package/templates/starter/src/app/(base)/tags/page.tsx +58 -0
- package/templates/starter/src/app/(base)/tags/tag-form-helpers.ts +13 -0
- package/templates/starter/src/app/(base)/tags/tag-form.test.tsx +83 -0
- package/templates/starter/src/app/(base)/tags/tag-form.tsx +143 -0
- package/templates/starter/src/app/(base)/tags/tag-table-columns.tsx +63 -0
- package/templates/starter/src/app/(base)/tags/tag-table.tsx +29 -0
- package/templates/starter/src/app/(base)/template-step-groups/create/page.tsx +28 -0
- package/templates/starter/src/app/(base)/template-step-groups/modify/[id]/page.tsx +43 -0
- package/templates/starter/src/app/(base)/template-step-groups/page.tsx +60 -0
- package/templates/starter/src/app/(base)/template-step-groups/template-step-group-form.test.tsx +82 -0
- package/templates/starter/src/app/(base)/template-step-groups/template-step-group-form.tsx +181 -0
- package/templates/starter/src/app/(base)/template-step-groups/template-step-group-helpers.ts +54 -0
- package/templates/starter/src/app/(base)/template-step-groups/template-step-group-table-columns.tsx +89 -0
- package/templates/starter/src/app/(base)/template-step-groups/template-step-group-table.tsx +34 -0
- package/templates/starter/src/app/(base)/template-steps/create/page.tsx +40 -0
- package/templates/starter/src/app/(base)/template-steps/modify/[id]/page.tsx +54 -0
- package/templates/starter/src/app/(base)/template-steps/page.tsx +59 -0
- package/templates/starter/src/app/(base)/template-steps/paramChip.tsx +233 -0
- package/templates/starter/src/app/(base)/template-steps/template-step-form.test.tsx +132 -0
- package/templates/starter/src/app/(base)/template-steps/template-step-form.tsx +342 -0
- package/templates/starter/src/app/(base)/template-steps/template-step-helpers.test.ts +99 -0
- package/templates/starter/src/app/(base)/template-steps/template-step-helpers.ts +176 -0
- package/templates/starter/src/app/(base)/template-steps/template-step-table-columns.tsx +153 -0
- package/templates/starter/src/app/(base)/template-steps/template-step-table.tsx +26 -0
- package/templates/starter/src/app/(base)/template-test-cases/create/page.tsx +56 -0
- package/templates/starter/src/app/(base)/template-test-cases/modify/[id]/page.tsx +89 -0
- package/templates/starter/src/app/(base)/template-test-cases/page.tsx +58 -0
- package/templates/starter/src/app/(base)/template-test-cases/template-test-case-flow.test.tsx +109 -0
- package/templates/starter/src/app/(base)/template-test-cases/template-test-case-flow.tsx +45 -0
- package/templates/starter/src/app/(base)/template-test-cases/template-test-case-form.test.tsx +140 -0
- package/templates/starter/src/app/(base)/template-test-cases/template-test-case-form.tsx +154 -0
- package/templates/starter/src/app/(base)/template-test-cases/template-test-case-table-columns.tsx +76 -0
- package/templates/starter/src/app/(base)/template-test-cases/template-test-case-table.tsx +32 -0
- package/templates/starter/src/app/(base)/test-cases/create/page.tsx +90 -0
- package/templates/starter/src/app/(base)/test-cases/create-from-template/create-from-template-helpers.test.ts +94 -0
- package/templates/starter/src/app/(base)/test-cases/create-from-template/create-from-template-helpers.ts +171 -0
- package/templates/starter/src/app/(base)/test-cases/create-from-template/generate/[id]/page.tsx +105 -0
- package/templates/starter/src/app/(base)/test-cases/create-from-template/page.tsx +40 -0
- package/templates/starter/src/app/(base)/test-cases/create-from-template/template-selection-form.test.tsx +87 -0
- package/templates/starter/src/app/(base)/test-cases/create-from-template/template-selection-form.tsx +83 -0
- package/templates/starter/src/app/(base)/test-cases/modify/[id]/page.tsx +106 -0
- package/templates/starter/src/app/(base)/test-cases/page.tsx +61 -0
- package/templates/starter/src/app/(base)/test-cases/test-case-flow.test.tsx +108 -0
- package/templates/starter/src/app/(base)/test-cases/test-case-flow.tsx +43 -0
- package/templates/starter/src/app/(base)/test-cases/test-case-form.test.tsx +202 -0
- package/templates/starter/src/app/(base)/test-cases/test-case-form.tsx +263 -0
- package/templates/starter/src/app/(base)/test-cases/test-case-route-helpers.test.ts +95 -0
- package/templates/starter/src/app/(base)/test-cases/test-case-route-helpers.ts +147 -0
- package/templates/starter/src/app/(base)/test-cases/test-case-table-columns.tsx +25 -0
- package/templates/starter/src/app/(base)/test-cases/test-case-table.tsx +37 -0
- package/templates/starter/src/app/(base)/test-runs/[id]/page.tsx +60 -0
- package/templates/starter/src/app/(base)/test-runs/create/page.tsx +48 -0
- package/templates/starter/src/app/(base)/test-runs/page.tsx +60 -0
- package/templates/starter/src/app/(base)/test-runs/test-run-form-helpers.test.ts +50 -0
- package/templates/starter/src/app/(base)/test-runs/test-run-form-helpers.ts +168 -0
- package/templates/starter/src/app/(base)/test-runs/test-run-form.test.tsx +138 -0
- package/templates/starter/src/app/(base)/test-runs/test-run-form.tsx +356 -0
- package/templates/starter/src/app/(base)/test-runs/test-run-table-columns.tsx +229 -0
- package/templates/starter/src/app/(base)/test-runs/test-run-table.tsx +127 -0
- package/templates/starter/src/app/(base)/test-runs/use-test-run-name-validation.ts +74 -0
- package/templates/starter/src/app/(base)/test-suites/create/page.tsx +51 -0
- package/templates/starter/src/app/(base)/test-suites/modify/[id]/page.tsx +59 -0
- package/templates/starter/src/app/(base)/test-suites/page.tsx +76 -0
- package/templates/starter/src/app/(base)/test-suites/test-suite-form.test.tsx +127 -0
- package/templates/starter/src/app/(base)/test-suites/test-suite-form.tsx +249 -0
- package/templates/starter/src/app/(base)/test-suites/test-suite-helpers.test.ts +67 -0
- package/templates/starter/src/app/(base)/test-suites/test-suite-helpers.ts +215 -0
- package/templates/starter/src/app/(base)/test-suites/test-suite-table-columns.tsx +98 -0
- package/templates/starter/src/app/(base)/test-suites/test-suite-table.tsx +32 -0
- package/templates/starter/src/app/(dashboard-components)/app-drawer.tsx +187 -0
- package/templates/starter/src/app/(dashboard-components)/data-card-grid.tsx +13 -0
- package/templates/starter/src/app/(dashboard-components)/data-card.tsx +27 -0
- package/templates/starter/src/app/(dashboard-components)/execution-health-panel.tsx +57 -0
- package/templates/starter/src/app/(dashboard-components)/ongoing-test-runs-card.tsx +87 -0
- package/templates/starter/src/app/(dashboard-components)/quick-actions-drawer.tsx +45 -0
- package/templates/starter/src/app/api/reports/steps/[stepId]/screenshot/route.test.ts +83 -0
- package/templates/starter/src/app/api/reports/steps/[stepId]/screenshot/route.ts +52 -0
- package/templates/starter/src/app/api/test-runs/[runId]/download/route.test.ts +169 -0
- package/templates/starter/src/app/api/test-runs/[runId]/download/route.ts +196 -0
- package/templates/starter/src/app/api/test-runs/[runId]/logs/route.ts +424 -0
- package/templates/starter/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.test.ts +135 -0
- package/templates/starter/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.ts +146 -0
- package/templates/starter/src/app/favicon.ico +0 -0
- package/templates/starter/src/app/globals.css +90 -0
- package/templates/starter/src/app/layout.tsx +207 -0
- package/templates/starter/src/app/page.tsx +65 -0
- package/templates/starter/src/assets/icons/empty-tube.tsx +23 -0
- package/templates/starter/src/assets/icons/tube-plus.tsx +29 -0
- package/templates/starter/src/components/base-node.tsx +21 -0
- package/templates/starter/src/components/chart/pie-chart.tsx +73 -0
- package/templates/starter/src/components/data-extraction/locator-inspector-helpers.test.ts +32 -0
- package/templates/starter/src/components/data-extraction/locator-inspector-helpers.ts +183 -0
- package/templates/starter/src/components/data-extraction/locator-inspector.tsx +349 -0
- package/templates/starter/src/components/data-state/empty-state.tsx +40 -0
- package/templates/starter/src/components/data-visualization/info-card.tsx +70 -0
- package/templates/starter/src/components/data-visualization/info-grid.tsx +22 -0
- package/templates/starter/src/components/diagram/button-edge.tsx +54 -0
- package/templates/starter/src/components/diagram/dynamic-parameters-helpers.test.ts +83 -0
- package/templates/starter/src/components/diagram/dynamic-parameters-helpers.ts +158 -0
- package/templates/starter/src/components/diagram/dynamic-parameters.tsx +350 -0
- package/templates/starter/src/components/diagram/edit-header-option.tsx +36 -0
- package/templates/starter/src/components/diagram/flow-diagram-helpers.test.ts +117 -0
- package/templates/starter/src/components/diagram/flow-diagram-helpers.ts +251 -0
- package/templates/starter/src/components/diagram/flow-diagram.tsx +247 -0
- package/templates/starter/src/components/diagram/flow-host-helpers.test.ts +74 -0
- package/templates/starter/src/components/diagram/flow-host-helpers.ts +51 -0
- package/templates/starter/src/components/diagram/node-form-helpers.test.ts +92 -0
- package/templates/starter/src/components/diagram/node-form-helpers.ts +100 -0
- package/templates/starter/src/components/diagram/node-form.test.tsx +168 -0
- package/templates/starter/src/components/diagram/node-form.tsx +199 -0
- package/templates/starter/src/components/diagram/options-header-node.tsx +57 -0
- package/templates/starter/src/components/diagram/template-step-combobox.tsx +155 -0
- package/templates/starter/src/components/diagram/use-flow-node-order.ts +49 -0
- package/templates/starter/src/components/form/error-message.tsx +7 -0
- package/templates/starter/src/components/kokonutui/smooth-tab.tsx +453 -0
- package/templates/starter/src/components/loading-skeleton/data-table/data-table-skeleton.tsx +30 -0
- package/templates/starter/src/components/loading-skeleton/form/button-skeleton.tsx +8 -0
- package/templates/starter/src/components/loading-skeleton/form/icon-button-skeleton.tsx +8 -0
- package/templates/starter/src/components/loading-skeleton/form/text-input-skeleton.tsx +8 -0
- package/templates/starter/src/components/loading-skeleton/visualization/table-skeleton.tsx +14 -0
- package/templates/starter/src/components/logo.tsx +15 -0
- package/templates/starter/src/components/navigation/command-badge.tsx +34 -0
- package/templates/starter/src/components/navigation/command-chain-input.tsx +51 -0
- package/templates/starter/src/components/navigation/entity-search-command.tsx +118 -0
- package/templates/starter/src/components/navigation/nav-card.tsx +31 -0
- package/templates/starter/src/components/navigation/nav-command-helpers.ts +122 -0
- package/templates/starter/src/components/navigation/nav-command-search.tsx +125 -0
- package/templates/starter/src/components/navigation/nav-command.test.tsx +106 -0
- package/templates/starter/src/components/navigation/nav-command.tsx +98 -0
- package/templates/starter/src/components/navigation/nav-link.tsx +60 -0
- package/templates/starter/src/components/navigation/nav-menu-card-deck.tsx +112 -0
- package/templates/starter/src/components/navigation/use-nav-command.ts +58 -0
- package/templates/starter/src/components/node-header.tsx +159 -0
- package/templates/starter/src/components/reports/test-case-logs-modal.tsx +310 -0
- package/templates/starter/src/components/table/table-actions.tsx +174 -0
- package/templates/starter/src/components/test-case/test-case-columns.tsx +76 -0
- package/templates/starter/src/components/test-case/test-case-form-helpers.test.ts +100 -0
- package/templates/starter/src/components/test-case/test-case-form-helpers.ts +140 -0
- package/templates/starter/src/components/test-case/test-case-picker-helpers.test.ts +40 -0
- package/templates/starter/src/components/test-case/test-case-picker-helpers.ts +41 -0
- package/templates/starter/src/components/test-case/test-case-picker.test.tsx +44 -0
- package/templates/starter/src/components/test-case/test-case-picker.tsx +225 -0
- package/templates/starter/src/components/test-case/test-scenario-preview.tsx +34 -0
- package/templates/starter/src/components/test-run/download-logs-button.tsx +92 -0
- package/templates/starter/src/components/test-run/log-viewer-helpers.test.ts +37 -0
- package/templates/starter/src/components/test-run/log-viewer-helpers.ts +80 -0
- package/templates/starter/src/components/test-run/log-viewer.test.tsx +118 -0
- package/templates/starter/src/components/test-run/log-viewer.tsx +133 -0
- package/templates/starter/src/components/test-run/test-run-details-helpers.test.ts +31 -0
- package/templates/starter/src/components/test-run/test-run-details-helpers.ts +208 -0
- package/templates/starter/src/components/test-run/test-run-details.test.tsx +174 -0
- package/templates/starter/src/components/test-run/test-run-details.tsx +322 -0
- package/templates/starter/src/components/test-run/test-run-header-helpers.test.ts +31 -0
- package/templates/starter/src/components/test-run/test-run-header-helpers.ts +23 -0
- package/templates/starter/src/components/test-run/test-run-header.test.tsx +103 -0
- package/templates/starter/src/components/test-run/test-run-header.tsx +27 -0
- package/templates/starter/src/components/test-run/use-log-viewer.ts +213 -0
- package/templates/starter/src/components/test-run/use-test-run-details.ts +184 -0
- package/templates/starter/src/components/test-run/use-test-run-header.ts +89 -0
- package/templates/starter/src/components/test-run/view-report-button.tsx +102 -0
- package/templates/starter/src/components/test-suite/test-suite-picker-helpers.test.ts +68 -0
- package/templates/starter/src/components/test-suite/test-suite-picker-helpers.ts +76 -0
- package/templates/starter/src/components/test-suite/test-suite-picker.test.tsx +65 -0
- package/templates/starter/src/components/test-suite/test-suite-picker.tsx +376 -0
- package/templates/starter/src/components/theme/theme-provider.tsx +16 -0
- package/templates/starter/src/components/typography/page-header-subtitle.tsx +7 -0
- package/templates/starter/src/components/typography/page-header.tsx +7 -0
- package/templates/starter/src/components/ui/alert-dialog.tsx +106 -0
- package/templates/starter/src/components/ui/alert.tsx +43 -0
- package/templates/starter/src/components/ui/avatar.tsx +40 -0
- package/templates/starter/src/components/ui/badge.tsx +29 -0
- package/templates/starter/src/components/ui/button.tsx +47 -0
- package/templates/starter/src/components/ui/calendar.tsx +158 -0
- package/templates/starter/src/components/ui/card.tsx +43 -0
- package/templates/starter/src/components/ui/chart.tsx +369 -0
- package/templates/starter/src/components/ui/checkbox.tsx +28 -0
- package/templates/starter/src/components/ui/command.tsx +135 -0
- package/templates/starter/src/components/ui/data-table-column-header.tsx +61 -0
- package/templates/starter/src/components/ui/data-table-pagination.tsx +87 -0
- package/templates/starter/src/components/ui/data-table-view-options.tsx +50 -0
- package/templates/starter/src/components/ui/data-table.test.tsx +122 -0
- package/templates/starter/src/components/ui/data-table.tsx +298 -0
- package/templates/starter/src/components/ui/dialog.tsx +97 -0
- package/templates/starter/src/components/ui/dropdown-menu.tsx +182 -0
- package/templates/starter/src/components/ui/empty.tsx +104 -0
- package/templates/starter/src/components/ui/input.tsx +22 -0
- package/templates/starter/src/components/ui/kbd.tsx +28 -0
- package/templates/starter/src/components/ui/label.tsx +19 -0
- package/templates/starter/src/components/ui/loading.tsx +12 -0
- package/templates/starter/src/components/ui/multi-select-with-preview.tsx +116 -0
- package/templates/starter/src/components/ui/multi-select.test.tsx +45 -0
- package/templates/starter/src/components/ui/multi-select.tsx +158 -0
- package/templates/starter/src/components/ui/navigation-menu.tsx +120 -0
- package/templates/starter/src/components/ui/popover.tsx +33 -0
- package/templates/starter/src/components/ui/progress.tsx +25 -0
- package/templates/starter/src/components/ui/radio-group.tsx +44 -0
- package/templates/starter/src/components/ui/scroll-area.tsx +40 -0
- package/templates/starter/src/components/ui/select.tsx +151 -0
- package/templates/starter/src/components/ui/separator.tsx +22 -0
- package/templates/starter/src/components/ui/skeleton.tsx +7 -0
- package/templates/starter/src/components/ui/table.tsx +76 -0
- package/templates/starter/src/components/ui/tabs.tsx +55 -0
- package/templates/starter/src/components/ui/textarea.tsx +21 -0
- package/templates/starter/src/components/ui/toast.tsx +113 -0
- package/templates/starter/src/components/ui/toaster.tsx +26 -0
- package/templates/starter/src/components/ui/tooltip.tsx +32 -0
- package/templates/starter/src/components/user-prompt/delete-prompt.test.tsx +60 -0
- package/templates/starter/src/components/user-prompt/delete-prompt.tsx +118 -0
- package/templates/starter/src/config/db-config.ts +71 -0
- package/templates/starter/src/constants/form-opts/diagram/node-form.ts +30 -0
- package/templates/starter/src/constants/form-opts/environment-form-opts.ts +24 -0
- package/templates/starter/src/constants/form-opts/locator-group-form-opts.ts +28 -0
- package/templates/starter/src/constants/form-opts/module-form-opts.ts +21 -0
- package/templates/starter/src/constants/form-opts/tag-form-opts.ts +42 -0
- package/templates/starter/src/constants/form-opts/template-selection-form-opts.ts +16 -0
- package/templates/starter/src/constants/form-opts/template-step-group-form-opts.ts +24 -0
- package/templates/starter/src/constants/form-opts/template-test-case-form-opts.ts +39 -0
- package/templates/starter/src/constants/form-opts/template-test-step-form-opts.ts +36 -0
- package/templates/starter/src/constants/form-opts/test-case-form-opts.ts +43 -0
- package/templates/starter/src/constants/form-opts/test-run-form-opts.ts +33 -0
- package/templates/starter/src/constants/form-opts/test-suite-form-opts.ts +24 -0
- package/templates/starter/src/hooks/use-toast.ts +187 -0
- package/templates/starter/src/lib/automation/automation-path-roots.ts +95 -0
- package/templates/starter/src/lib/automation/automation-workspace.ts +147 -0
- package/templates/starter/src/lib/automation/paths.ts +6 -0
- package/templates/starter/src/lib/automation/projection-service.ts +226 -0
- package/templates/starter/src/lib/bidirectional-sync.ts +432 -0
- package/templates/starter/src/lib/database-sync.ts +526 -0
- package/templates/starter/src/lib/environment-file-utils.ts +181 -0
- package/templates/starter/src/lib/executor/local-executor-adapter.ts +97 -0
- package/templates/starter/src/lib/executor/types.ts +24 -0
- package/templates/starter/src/lib/feature-file-generator.ts +261 -0
- package/templates/starter/src/lib/gherkin-parser.test.ts +44 -0
- package/templates/starter/src/lib/gherkin-parser.ts +251 -0
- package/templates/starter/src/lib/locator-group-file-utils.ts +304 -0
- package/templates/starter/src/lib/locator-picker/session-manager.ts +431 -0
- package/templates/starter/src/lib/locator-picker/suggestions.ts +126 -0
- package/templates/starter/src/lib/metrics/metric-calculator.ts +614 -0
- package/templates/starter/src/lib/module-hierarchy-builder.ts +205 -0
- package/templates/starter/src/lib/path-helpers/module-path.ts +71 -0
- package/templates/starter/src/lib/process/task-spawner.ts +273 -0
- package/templates/starter/src/lib/sync/projected-feature-utils.ts +113 -0
- package/templates/starter/src/lib/sync/sync-executor.test.ts +76 -0
- package/templates/starter/src/lib/sync/sync-executor.ts +130 -0
- package/templates/starter/src/lib/sync/sync-pending-counts.test.ts +264 -0
- package/templates/starter/src/lib/sync/sync-pending-counts.ts +1356 -0
- package/templates/starter/src/lib/sync/sync-registry.ts +149 -0
- package/templates/starter/src/lib/tag-utils.ts +28 -0
- package/templates/starter/src/lib/template-sync-utils.d.ts +7 -0
- package/templates/starter/src/lib/template-sync-utils.d.ts.map +1 -0
- package/templates/starter/src/lib/template-sync-utils.js +50 -0
- package/templates/starter/src/lib/template-sync-utils.js.map +1 -0
- package/templates/starter/src/lib/template-sync-utils.ts +65 -0
- package/templates/starter/src/lib/test-case-utils.ts +6 -0
- package/templates/starter/src/lib/test-run/log-formatter.ts +83 -0
- package/templates/starter/src/lib/test-run/matching.ts +117 -0
- package/templates/starter/src/lib/test-run/process-manager.ts +115 -0
- package/templates/starter/src/lib/test-run/report-parser.ts +352 -0
- package/templates/starter/src/lib/test-run/test-run-executor.ts +13 -0
- package/templates/starter/src/lib/test-run/winston-logger.ts +65 -0
- package/templates/starter/src/lib/test-suite-identifier-service.ts +76 -0
- package/templates/starter/src/lib/test-suite-utils.ts +6 -0
- package/templates/starter/src/lib/transformers/gherkin-converter.ts +42 -0
- package/templates/starter/src/lib/transformers/key-to-icon-transformer.tsx +95 -0
- package/templates/starter/src/lib/transformers/template-test-case-converter.ts +160 -0
- package/templates/starter/src/lib/utils/node-param-validation.ts +81 -0
- package/templates/starter/src/lib/utils/template-step-file-generator.ts +128 -0
- package/templates/starter/src/lib/utils/template-step-file-manager-intelligent.ts +700 -0
- package/templates/starter/src/lib/utils/template-step-file-manager.ts +166 -0
- package/templates/starter/src/lib/utils.ts +31 -0
- package/templates/starter/src/services/dashboard/dashboard-service.test.ts +106 -0
- package/templates/starter/src/services/dashboard/dashboard-service.ts +173 -0
- package/templates/starter/src/services/environment/environment-service.test.ts +137 -0
- package/templates/starter/src/services/environment/environment-service.ts +96 -0
- package/templates/starter/src/services/locator/locator-path-utils.test.ts +14 -0
- package/templates/starter/src/services/locator/locator-path-utils.ts +14 -0
- package/templates/starter/src/services/locator/locator-service.test.ts +63 -0
- package/templates/starter/src/services/locator/locator-service.ts +479 -0
- package/templates/starter/src/services/locator/locator-sync-utils.test.ts +19 -0
- package/templates/starter/src/services/locator/locator-sync-utils.ts +21 -0
- package/templates/starter/src/services/locator-group/locator-group-service.test.ts +123 -0
- package/templates/starter/src/services/locator-group/locator-group-service.ts +180 -0
- package/templates/starter/src/services/module/module-service.test.ts +89 -0
- package/templates/starter/src/services/module/module-service.ts +66 -0
- package/templates/starter/src/services/report/report-service.test.ts +244 -0
- package/templates/starter/src/services/report/report-service.ts +438 -0
- package/templates/starter/src/services/shared/constants.ts +2 -0
- package/templates/starter/src/services/shared/errors.test.ts +38 -0
- package/templates/starter/src/services/shared/errors.ts +44 -0
- package/templates/starter/src/services/shared/index.ts +7 -0
- package/templates/starter/src/services/tag/tag-service.test.ts +22 -0
- package/templates/starter/src/services/tag/tag-service.ts +41 -0
- package/templates/starter/src/services/template-step/template-step-service.test.ts +22 -0
- package/templates/starter/src/services/template-step/template-step-service.ts +171 -0
- package/templates/starter/src/services/template-step-group/template-step-group-service.test.ts +22 -0
- package/templates/starter/src/services/template-step-group/template-step-group-service.ts +81 -0
- package/templates/starter/src/services/template-test-case/template-test-case-service.test.ts +22 -0
- package/templates/starter/src/services/template-test-case/template-test-case-service.ts +128 -0
- package/templates/starter/src/services/test-case/test-case-service.test.ts +175 -0
- package/templates/starter/src/services/test-case/test-case-service.ts +298 -0
- package/templates/starter/src/services/test-run/test-run-helpers.ts +61 -0
- package/templates/starter/src/services/test-run/test-run-service.test.ts +647 -0
- package/templates/starter/src/services/test-run/test-run-service.ts +917 -0
- package/templates/starter/src/services/test-suite/test-suite-service.test.ts +127 -0
- package/templates/starter/src/services/test-suite/test-suite-service.ts +197 -0
- package/templates/starter/src/types/diagram/diagram.ts +34 -0
- package/templates/starter/src/types/diagram/template-step.ts +11 -0
- package/templates/starter/src/types/executor/browser.type.ts +1 -0
- package/templates/starter/src/types/form/actionHandler.ts +19 -0
- package/templates/starter/src/types/locator/locator.type.ts +11 -0
- package/templates/starter/src/types/locator-picker.ts +65 -0
- package/templates/starter/src/types/step/step.type.ts +1 -0
- package/templates/starter/src/types/table/data-table.ts +6 -0
- package/templates/starter/src/types/test-case-picker.ts +6 -0
- package/templates/starter/src/types/test-suite-picker.ts +18 -0
- package/templates/starter/tailwind.config.ts +62 -0
- package/templates/starter/tsconfig.json +31 -0
- package/templates/default/.appraise-template-meta.json +0 -5
- package/templates/default/package-lock.json +0 -14957
- package/templates/default/package.json +0 -139
- package/templates/default/prisma/dev.db +0 -0
- package/templates/default/public/favicon.svg +0 -11
- package/templates/default/public/logo.svg +0 -18
- package/templates/default/scripts/sync-appraise-base-template.ts +0 -244
- package/templates/default/scripts/sync-template-step-groups.ts +0 -248
- package/templates/default/src/app/globals.css +0 -147
- package/templates/default/src/app/layout.tsx +0 -212
- package/templates/default/src/components/theme/mode-toggle.tsx +0 -54
- package/templates/default/src/components/theme/theme-provider.tsx +0 -8
- package/templates/default/src/lib/template-sync-utils.js +0 -47
- package/templates/default/src/lib/template-sync-utils.ts +0 -63
- package/templates/default/tsconfig.json +0 -31
- /package/templates/{default → blank}/.env.example +0 -0
- /package/templates/{default → blank}/.vscode/settings.json +0 -0
- /package/templates/{default → blank}/README.md +0 -0
- /package/templates/{default → blank}/automation/config/environments/environments.json +0 -0
- /package/templates/{default → blank}/automation/mapping/locator-map.json +0 -0
- /package/templates/{default → blank}/components.json +0 -0
- /package/templates/{default → blank}/cucumber.mjs +0 -0
- /package/templates/{default → blank}/eslint.config.mjs +0 -0
- /package/templates/{default → blank}/gitignore +0 -0
- /package/templates/{default → blank}/next-env.d.ts +0 -0
- /package/templates/{default → blank}/next.config.ts +0 -0
- /package/templates/{default → blank}/packages/cucumber-runtime/package.json +0 -0
- /package/templates/{default → blank}/packages/cucumber-runtime/src/cache.util.ts +0 -0
- /package/templates/{default → blank}/packages/cucumber-runtime/src/cli.ts +0 -0
- /package/templates/{default → blank}/packages/cucumber-runtime/src/environment.util.ts +0 -0
- /package/templates/{default → blank}/packages/cucumber-runtime/src/executor.ts +0 -0
- /package/templates/{default → blank}/packages/cucumber-runtime/src/hooks.ts +0 -0
- /package/templates/{default → blank}/packages/cucumber-runtime/src/index.ts +0 -0
- /package/templates/{default → blank}/packages/cucumber-runtime/src/locator.util.ts +0 -0
- /package/templates/{default → blank}/packages/cucumber-runtime/src/parameter-types.ts +0 -0
- /package/templates/{default → blank}/packages/cucumber-runtime/src/paths.ts +0 -0
- /package/templates/{default → blank}/packages/cucumber-runtime/src/random-data.util.ts +0 -0
- /package/templates/{default → blank}/packages/cucumber-runtime/src/types.ts +0 -0
- /package/templates/{default → blank}/packages/cucumber-runtime/src/world.ts +0 -0
- /package/templates/{default → blank}/packages/cucumber-runtime/tsconfig.json +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/dist/cli.d.ts +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/dist/cli.js +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/dist/index.d.ts +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/dist/index.js +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/dist/injected-picker-script.d.ts +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/dist/injected-picker-script.js +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/dist/launcher.d.ts +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/dist/launcher.js +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/dist/selector-generator.d.ts +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/dist/selector-generator.js +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/dist/session-file.d.ts +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/dist/session-file.js +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/dist/types.d.ts +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/dist/types.js +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/package.json +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/src/cli.ts +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/src/index.ts +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/src/injected-picker-script.ts +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/src/launcher.ts +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/src/selector-generator.ts +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/src/session-file.ts +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/src/types.ts +0 -0
- /package/templates/{default → blank}/packages/locator-picker-companion/tsconfig.json +0 -0
- /package/templates/{default → blank}/postcss.config.mjs +0 -0
- /package/templates/{default → blank}/prisma/migrations/20251026202316_migrate_back_to_sqlite/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20251104113456_add_type_for_template_step_groups/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20251104170946_add_tags_to_test_suite_and_test_case/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20251112190024_add_cascade_delete_to_test_run_test_case/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20251113181100_add_test_run_log/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20251119191838_add_tag_type/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20251121164059_add_conflict_resolution/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20251130190737_add_trace_path_to_test_run_test_case/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20251213074835_add_log_path_to_test_run/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20251213183952_add_name_property_for_the_test_run_entities/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20251223183400_add_report_model_to_db_schema/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20251223183637_add_report_test_case_entity_for_storing_test_results_for_individual_test_cases/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20251224083549_add_comprehensive_report_storage/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20251229194422_migrate_duration_to_string/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20251230124637_add_unique_constraint_to_test_run_name/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20260115094436_add_dashboard_metrics/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20260127172022_add_cascade_delete_to_step_parameters/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20260313093000_add_report_step_screenshot_path/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20260318120000_add_test_suite_context_to_test_run_test_case/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/20260318173512_add_support_of_test_suite_level_runs/migration.sql +0 -0
- /package/templates/{default → blank}/prisma/migrations/migration_lock.toml +0 -0
- /package/templates/{default → blank}/prisma/schema.prisma +0 -0
- /package/templates/{default → blank}/public/file.svg +0 -0
- /package/templates/{default → blank}/public/globe.svg +0 -0
- /package/templates/{default → blank}/public/next.svg +0 -0
- /package/templates/{default → blank}/public/vercel.svg +0 -0
- /package/templates/{default → blank}/public/window.svg +0 -0
- /package/templates/{default → blank}/scripts/build-step-registry.ts +0 -0
- /package/templates/{default → blank}/scripts/install-playwright.ts +0 -0
- /package/templates/{default → blank}/scripts/install-template-step.ts +0 -0
- /package/templates/{default → blank}/scripts/lib/filename-utils.test.ts +0 -0
- /package/templates/{default → blank}/scripts/lib/filename-utils.ts +0 -0
- /package/templates/{default → blank}/scripts/lib/jsdoc-parser.test.ts +0 -0
- /package/templates/{default → blank}/scripts/lib/jsdoc-parser.ts +0 -0
- /package/templates/{default → blank}/scripts/lib/step-file-parser.test.ts +0 -0
- /package/templates/{default → blank}/scripts/lib/step-file-parser.ts +0 -0
- /package/templates/{default → blank}/scripts/lib/step-matcher.test.ts +0 -0
- /package/templates/{default → blank}/scripts/lib/step-matcher.ts +0 -0
- /package/templates/{default → blank}/scripts/lib/sync-script-runner.ts +0 -0
- /package/templates/{default → blank}/scripts/lib/sync-summary.ts +0 -0
- /package/templates/{default → blank}/scripts/lib/tag-parsing.test.ts +0 -0
- /package/templates/{default → blank}/scripts/lib/tag-parsing.ts +0 -0
- /package/templates/{default → blank}/scripts/lib/template-step-installer.test.ts +0 -0
- /package/templates/{default → blank}/scripts/lib/template-step-installer.ts +0 -0
- /package/templates/{default → blank}/scripts/lib/template-step-registry.test.ts +0 -0
- /package/templates/{default → blank}/scripts/lib/template-step-registry.ts +0 -0
- /package/templates/{default → blank}/scripts/protect-seeded-files.ts +0 -0
- /package/templates/{default → blank}/scripts/regenerate-features.ts +0 -0
- /package/templates/{default → blank}/scripts/run-vitest.ts +0 -0
- /package/templates/{default → blank}/scripts/setup-env.ts +0 -0
- /package/templates/{default → blank}/scripts/sync-all.ts +0 -0
- /package/templates/{default → blank}/scripts/sync-environments.ts +0 -0
- /package/templates/{default → blank}/scripts/sync-locator-groups.ts +0 -0
- /package/templates/{default → blank}/scripts/sync-locators.ts +0 -0
- /package/templates/{default → blank}/scripts/sync-modules.ts +0 -0
- /package/templates/{default → blank}/scripts/sync-tags.ts +0 -0
- /package/templates/{default → blank}/scripts/sync-template-steps.ts +0 -0
- /package/templates/{default → blank}/scripts/sync-test-cases.ts +0 -0
- /package/templates/{default → blank}/scripts/sync-test-suites.ts +0 -0
- /package/templates/{default → blank}/src/actions/dashboard/dashboard-actions.ts +0 -0
- /package/templates/{default → blank}/src/actions/environments/environment-actions.ts +0 -0
- /package/templates/{default → blank}/src/actions/locator/locator-actions.ts +0 -0
- /package/templates/{default → blank}/src/actions/locator-groups/locator-group-actions.ts +0 -0
- /package/templates/{default → blank}/src/actions/locator-picker/locator-picker-actions.test.ts +0 -0
- /package/templates/{default → blank}/src/actions/locator-picker/locator-picker-actions.ts +0 -0
- /package/templates/{default → blank}/src/actions/modules/module-actions.ts +0 -0
- /package/templates/{default → blank}/src/actions/reports/report-actions.ts +0 -0
- /package/templates/{default → blank}/src/actions/settings/sync-actions.test.ts +0 -0
- /package/templates/{default → blank}/src/actions/settings/sync-actions.ts +0 -0
- /package/templates/{default → blank}/src/actions/tags/tag-actions.ts +0 -0
- /package/templates/{default → blank}/src/actions/template-step/template-step-actions.ts +0 -0
- /package/templates/{default → blank}/src/actions/template-step-group/template-step-group-actions.ts +0 -0
- /package/templates/{default → blank}/src/actions/template-test-case/template-test-case-actions.ts +0 -0
- /package/templates/{default → blank}/src/actions/test-case/test-case-actions.ts +0 -0
- /package/templates/{default → blank}/src/actions/test-run/test-run-actions.ts +0 -0
- /package/templates/{default → blank}/src/actions/test-suite/test-suite-actions.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/environments/create/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/environments/environment-form.test.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/environments/environment-form.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/environments/environment-helpers.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/environments/environment-table-columns.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/environments/environment-table.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/environments/modify/[id]/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/environments/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/layout.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/locator-groups/create/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/locator-groups/locator-group-form.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/locator-groups/locator-group-table-columns.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/locator-groups/locator-group-table.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/locator-groups/modify/[id]/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/locator-groups/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/locators/create/create-locator-workspace-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/locators/create/create-locator-workspace-helpers.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/locators/create/create-locator-workspace.test.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/locators/create/create-locator-workspace.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/locators/create/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/locators/create/use-locator-workspace.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/locators/locator-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/locators/locator-helpers.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/locators/locator-table-columns.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/locators/locator-table.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/locators/modify/[id]/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/locators/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/locators/picker/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/locators/sync-locators-button.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/modules/create/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/modules/modify/[id]/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/modules/module-form.test.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/modules/module-form.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/modules/module-helpers.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/modules/module-table-columns.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/modules/module-table.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/modules/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/[id]/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/duration-chart.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/feature-chart.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/overview-chart.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/report-detail-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/report-detail-helpers.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/report-metric-card.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/report-table-columns.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/report-table.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/report-view-table-columns.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/report-view-table.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/test-cases/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/test-cases/test-cases-metric-table-columns.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/test-cases/test-cases-metric-table.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/test-suites/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/test-suites/test-suites-metric-table-columns.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/test-suites/test-suites-metric-table.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/reports/view-logs-button.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/settings/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/settings/settings-sync-panel-helpers.test.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/settings/settings-sync-panel-helpers.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/settings/settings-sync-panel.test.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/settings/settings-sync-panel.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/settings/use-settings-sync.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/tags/create/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/tags/modify/[id]/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/tags/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/tags/tag-form-helpers.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/tags/tag-form.test.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/tags/tag-form.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/tags/tag-table-columns.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/tags/tag-table.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-step-groups/create/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-step-groups/modify/[id]/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-step-groups/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-step-groups/template-step-group-form.test.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-step-groups/template-step-group-form.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-step-groups/template-step-group-helpers.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-step-groups/template-step-group-table-columns.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-step-groups/template-step-group-table.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-steps/create/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-steps/modify/[id]/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-steps/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-steps/paramChip.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-steps/template-step-form.test.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-steps/template-step-form.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-steps/template-step-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-steps/template-step-helpers.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-steps/template-step-table-columns.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-steps/template-step-table.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-test-cases/create/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-test-cases/modify/[id]/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-test-cases/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-test-cases/template-test-case-flow.test.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-test-cases/template-test-case-flow.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-test-cases/template-test-case-form.test.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-test-cases/template-test-case-form.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-test-cases/template-test-case-table-columns.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/template-test-cases/template-test-case-table.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/create/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/create-from-template/create-from-template-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/create-from-template/create-from-template-helpers.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/create-from-template/generate/[id]/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/create-from-template/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/create-from-template/template-selection-form.test.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/create-from-template/template-selection-form.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/modify/[id]/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/test-case-flow.test.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/test-case-flow.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/test-case-form.test.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/test-case-form.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/test-case-route-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/test-case-route-helpers.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/test-case-table-columns.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-cases/test-case-table.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-runs/[id]/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-runs/create/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-runs/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-runs/test-run-form-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-runs/test-run-form-helpers.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-runs/test-run-form.test.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-runs/test-run-form.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-runs/test-run-table-columns.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-runs/test-run-table.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-runs/use-test-run-name-validation.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-suites/create/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-suites/modify/[id]/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-suites/page.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-suites/test-suite-form.test.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-suites/test-suite-form.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-suites/test-suite-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-suites/test-suite-helpers.ts +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-suites/test-suite-table-columns.tsx +0 -0
- /package/templates/{default → blank}/src/app/(base)/test-suites/test-suite-table.tsx +0 -0
- /package/templates/{default → blank}/src/app/(dashboard-components)/app-drawer.tsx +0 -0
- /package/templates/{default → blank}/src/app/(dashboard-components)/data-card-grid.tsx +0 -0
- /package/templates/{default → blank}/src/app/(dashboard-components)/data-card.tsx +0 -0
- /package/templates/{default → blank}/src/app/(dashboard-components)/execution-health-panel.tsx +0 -0
- /package/templates/{default → blank}/src/app/(dashboard-components)/ongoing-test-runs-card.tsx +0 -0
- /package/templates/{default → blank}/src/app/(dashboard-components)/quick-actions-drawer.tsx +0 -0
- /package/templates/{default → blank}/src/app/api/reports/steps/[stepId]/screenshot/route.test.ts +0 -0
- /package/templates/{default → blank}/src/app/api/reports/steps/[stepId]/screenshot/route.ts +0 -0
- /package/templates/{default → blank}/src/app/api/test-runs/[runId]/download/route.test.ts +0 -0
- /package/templates/{default → blank}/src/app/api/test-runs/[runId]/download/route.ts +0 -0
- /package/templates/{default → blank}/src/app/api/test-runs/[runId]/logs/route.ts +0 -0
- /package/templates/{default → blank}/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.test.ts +0 -0
- /package/templates/{default → blank}/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.ts +0 -0
- /package/templates/{default → blank}/src/app/favicon.ico +0 -0
- /package/templates/{default → blank}/src/app/page.tsx +0 -0
- /package/templates/{default → blank}/src/assets/icons/empty-tube.tsx +0 -0
- /package/templates/{default → blank}/src/assets/icons/tube-plus.tsx +0 -0
- /package/templates/{default → blank}/src/components/base-node.tsx +0 -0
- /package/templates/{default → blank}/src/components/chart/pie-chart.tsx +0 -0
- /package/templates/{default → blank}/src/components/data-extraction/locator-inspector-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/components/data-extraction/locator-inspector-helpers.ts +0 -0
- /package/templates/{default → blank}/src/components/data-extraction/locator-inspector.tsx +0 -0
- /package/templates/{default → blank}/src/components/data-state/empty-state.tsx +0 -0
- /package/templates/{default → blank}/src/components/data-visualization/info-card.tsx +0 -0
- /package/templates/{default → blank}/src/components/data-visualization/info-grid.tsx +0 -0
- /package/templates/{default → blank}/src/components/diagram/button-edge.tsx +0 -0
- /package/templates/{default → blank}/src/components/diagram/dynamic-parameters-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/components/diagram/dynamic-parameters-helpers.ts +0 -0
- /package/templates/{default → blank}/src/components/diagram/dynamic-parameters.tsx +0 -0
- /package/templates/{default → blank}/src/components/diagram/edit-header-option.tsx +0 -0
- /package/templates/{default → blank}/src/components/diagram/flow-diagram-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/components/diagram/flow-diagram-helpers.ts +0 -0
- /package/templates/{default → blank}/src/components/diagram/flow-diagram.tsx +0 -0
- /package/templates/{default → blank}/src/components/diagram/flow-host-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/components/diagram/flow-host-helpers.ts +0 -0
- /package/templates/{default → blank}/src/components/diagram/node-form-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/components/diagram/node-form-helpers.ts +0 -0
- /package/templates/{default → blank}/src/components/diagram/node-form.test.tsx +0 -0
- /package/templates/{default → blank}/src/components/diagram/node-form.tsx +0 -0
- /package/templates/{default → blank}/src/components/diagram/options-header-node.tsx +0 -0
- /package/templates/{default → blank}/src/components/diagram/template-step-combobox.tsx +0 -0
- /package/templates/{default → blank}/src/components/diagram/use-flow-node-order.ts +0 -0
- /package/templates/{default → blank}/src/components/form/error-message.tsx +0 -0
- /package/templates/{default → blank}/src/components/kokonutui/smooth-tab.tsx +0 -0
- /package/templates/{default → blank}/src/components/loading-skeleton/data-table/data-table-skeleton.tsx +0 -0
- /package/templates/{default → blank}/src/components/loading-skeleton/form/button-skeleton.tsx +0 -0
- /package/templates/{default → blank}/src/components/loading-skeleton/form/icon-button-skeleton.tsx +0 -0
- /package/templates/{default → blank}/src/components/loading-skeleton/form/text-input-skeleton.tsx +0 -0
- /package/templates/{default → blank}/src/components/loading-skeleton/visualization/table-skeleton.tsx +0 -0
- /package/templates/{default → blank}/src/components/logo.tsx +0 -0
- /package/templates/{default → blank}/src/components/navigation/command-badge.tsx +0 -0
- /package/templates/{default → blank}/src/components/navigation/command-chain-input.tsx +0 -0
- /package/templates/{default → blank}/src/components/navigation/entity-search-command.tsx +0 -0
- /package/templates/{default → blank}/src/components/navigation/nav-card.tsx +0 -0
- /package/templates/{default → blank}/src/components/navigation/nav-command-helpers.ts +0 -0
- /package/templates/{default → blank}/src/components/navigation/nav-command-search.tsx +0 -0
- /package/templates/{default → blank}/src/components/navigation/nav-command.test.tsx +0 -0
- /package/templates/{default → blank}/src/components/navigation/nav-command.tsx +0 -0
- /package/templates/{default → blank}/src/components/navigation/nav-link.tsx +0 -0
- /package/templates/{default → blank}/src/components/navigation/nav-menu-card-deck.tsx +0 -0
- /package/templates/{default → blank}/src/components/navigation/use-nav-command.ts +0 -0
- /package/templates/{default → blank}/src/components/node-header.tsx +0 -0
- /package/templates/{default → blank}/src/components/reports/test-case-logs-modal.tsx +0 -0
- /package/templates/{default → blank}/src/components/table/table-actions.tsx +0 -0
- /package/templates/{default → blank}/src/components/test-case/test-case-columns.tsx +0 -0
- /package/templates/{default → blank}/src/components/test-case/test-case-form-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/components/test-case/test-case-form-helpers.ts +0 -0
- /package/templates/{default → blank}/src/components/test-case/test-case-picker-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/components/test-case/test-case-picker-helpers.ts +0 -0
- /package/templates/{default → blank}/src/components/test-case/test-case-picker.test.tsx +0 -0
- /package/templates/{default → blank}/src/components/test-case/test-case-picker.tsx +0 -0
- /package/templates/{default → blank}/src/components/test-case/test-scenario-preview.tsx +0 -0
- /package/templates/{default → blank}/src/components/test-run/download-logs-button.tsx +0 -0
- /package/templates/{default → blank}/src/components/test-run/log-viewer-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/components/test-run/log-viewer-helpers.ts +0 -0
- /package/templates/{default → blank}/src/components/test-run/log-viewer.test.tsx +0 -0
- /package/templates/{default → blank}/src/components/test-run/log-viewer.tsx +0 -0
- /package/templates/{default → blank}/src/components/test-run/test-run-details-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/components/test-run/test-run-details-helpers.ts +0 -0
- /package/templates/{default → blank}/src/components/test-run/test-run-details.test.tsx +0 -0
- /package/templates/{default → blank}/src/components/test-run/test-run-details.tsx +0 -0
- /package/templates/{default → blank}/src/components/test-run/test-run-header-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/components/test-run/test-run-header-helpers.ts +0 -0
- /package/templates/{default → blank}/src/components/test-run/test-run-header.test.tsx +0 -0
- /package/templates/{default → blank}/src/components/test-run/test-run-header.tsx +0 -0
- /package/templates/{default → blank}/src/components/test-run/use-log-viewer.ts +0 -0
- /package/templates/{default → blank}/src/components/test-run/use-test-run-details.ts +0 -0
- /package/templates/{default → blank}/src/components/test-run/use-test-run-header.ts +0 -0
- /package/templates/{default → blank}/src/components/test-run/view-report-button.tsx +0 -0
- /package/templates/{default → blank}/src/components/test-suite/test-suite-picker-helpers.test.ts +0 -0
- /package/templates/{default → blank}/src/components/test-suite/test-suite-picker-helpers.ts +0 -0
- /package/templates/{default → blank}/src/components/test-suite/test-suite-picker.test.tsx +0 -0
- /package/templates/{default → blank}/src/components/test-suite/test-suite-picker.tsx +0 -0
- /package/templates/{default → blank}/src/components/typography/page-header-subtitle.tsx +0 -0
- /package/templates/{default → blank}/src/components/typography/page-header.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/alert-dialog.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/alert.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/avatar.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/badge.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/button.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/calendar.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/card.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/chart.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/checkbox.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/command.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/data-table-column-header.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/data-table-pagination.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/data-table-view-options.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/data-table.test.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/data-table.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/dialog.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/dropdown-menu.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/empty.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/input.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/kbd.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/label.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/loading.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/multi-select-with-preview.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/multi-select.test.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/multi-select.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/navigation-menu.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/popover.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/progress.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/radio-group.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/scroll-area.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/select.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/separator.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/skeleton.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/table.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/tabs.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/textarea.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/toast.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/toaster.tsx +0 -0
- /package/templates/{default → blank}/src/components/ui/tooltip.tsx +0 -0
- /package/templates/{default → blank}/src/components/user-prompt/delete-prompt.test.tsx +0 -0
- /package/templates/{default → blank}/src/components/user-prompt/delete-prompt.tsx +0 -0
- /package/templates/{default → blank}/src/config/db-config.ts +0 -0
- /package/templates/{default → blank}/src/constants/form-opts/diagram/node-form.ts +0 -0
- /package/templates/{default → blank}/src/constants/form-opts/environment-form-opts.ts +0 -0
- /package/templates/{default → blank}/src/constants/form-opts/locator-group-form-opts.ts +0 -0
- /package/templates/{default → blank}/src/constants/form-opts/module-form-opts.ts +0 -0
- /package/templates/{default → blank}/src/constants/form-opts/tag-form-opts.ts +0 -0
- /package/templates/{default → blank}/src/constants/form-opts/template-selection-form-opts.ts +0 -0
- /package/templates/{default → blank}/src/constants/form-opts/template-step-group-form-opts.ts +0 -0
- /package/templates/{default → blank}/src/constants/form-opts/template-test-case-form-opts.ts +0 -0
- /package/templates/{default → blank}/src/constants/form-opts/template-test-step-form-opts.ts +0 -0
- /package/templates/{default → blank}/src/constants/form-opts/test-case-form-opts.ts +0 -0
- /package/templates/{default → blank}/src/constants/form-opts/test-run-form-opts.ts +0 -0
- /package/templates/{default → blank}/src/constants/form-opts/test-suite-form-opts.ts +0 -0
- /package/templates/{default → blank}/src/hooks/use-toast.ts +0 -0
- /package/templates/{default → blank}/src/lib/automation/automation-path-roots.ts +0 -0
- /package/templates/{default → blank}/src/lib/automation/automation-workspace.ts +0 -0
- /package/templates/{default → blank}/src/lib/automation/paths.ts +0 -0
- /package/templates/{default → blank}/src/lib/automation/projection-service.ts +0 -0
- /package/templates/{default → blank}/src/lib/bidirectional-sync.ts +0 -0
- /package/templates/{default → blank}/src/lib/database-sync.ts +0 -0
- /package/templates/{default → blank}/src/lib/environment-file-utils.ts +0 -0
- /package/templates/{default → blank}/src/lib/executor/local-executor-adapter.ts +0 -0
- /package/templates/{default → blank}/src/lib/executor/types.ts +0 -0
- /package/templates/{default → blank}/src/lib/feature-file-generator.ts +0 -0
- /package/templates/{default → blank}/src/lib/gherkin-parser.test.ts +0 -0
- /package/templates/{default → blank}/src/lib/gherkin-parser.ts +0 -0
- /package/templates/{default → blank}/src/lib/locator-group-file-utils.ts +0 -0
- /package/templates/{default → blank}/src/lib/locator-picker/session-manager.ts +0 -0
- /package/templates/{default → blank}/src/lib/locator-picker/suggestions.ts +0 -0
- /package/templates/{default → blank}/src/lib/metrics/metric-calculator.ts +0 -0
- /package/templates/{default → blank}/src/lib/module-hierarchy-builder.ts +0 -0
- /package/templates/{default → blank}/src/lib/path-helpers/module-path.ts +0 -0
- /package/templates/{default → blank}/src/lib/process/task-spawner.ts +0 -0
- /package/templates/{default → blank}/src/lib/sync/projected-feature-utils.ts +0 -0
- /package/templates/{default → blank}/src/lib/sync/sync-executor.test.ts +0 -0
- /package/templates/{default → blank}/src/lib/sync/sync-executor.ts +0 -0
- /package/templates/{default → blank}/src/lib/sync/sync-pending-counts.test.ts +0 -0
- /package/templates/{default → blank}/src/lib/sync/sync-pending-counts.ts +0 -0
- /package/templates/{default → blank}/src/lib/sync/sync-registry.ts +0 -0
- /package/templates/{default → blank}/src/lib/tag-utils.ts +0 -0
- /package/templates/{default → blank}/src/lib/template-sync-utils.d.ts +0 -0
- /package/templates/{default → blank}/src/lib/template-sync-utils.d.ts.map +0 -0
- /package/templates/{default → blank}/src/lib/template-sync-utils.js.map +0 -0
- /package/templates/{default → blank}/src/lib/test-case-utils.ts +0 -0
- /package/templates/{default → blank}/src/lib/test-run/log-formatter.ts +0 -0
- /package/templates/{default → blank}/src/lib/test-run/matching.ts +0 -0
- /package/templates/{default → blank}/src/lib/test-run/process-manager.ts +0 -0
- /package/templates/{default → blank}/src/lib/test-run/report-parser.ts +0 -0
- /package/templates/{default → blank}/src/lib/test-run/test-run-executor.ts +0 -0
- /package/templates/{default → blank}/src/lib/test-run/winston-logger.ts +0 -0
- /package/templates/{default → blank}/src/lib/test-suite-identifier-service.ts +0 -0
- /package/templates/{default → blank}/src/lib/test-suite-utils.ts +0 -0
- /package/templates/{default → blank}/src/lib/transformers/gherkin-converter.ts +0 -0
- /package/templates/{default → blank}/src/lib/transformers/key-to-icon-transformer.tsx +0 -0
- /package/templates/{default → blank}/src/lib/transformers/template-test-case-converter.ts +0 -0
- /package/templates/{default → blank}/src/lib/utils/node-param-validation.ts +0 -0
- /package/templates/{default → blank}/src/lib/utils/template-step-file-generator.ts +0 -0
- /package/templates/{default → blank}/src/lib/utils/template-step-file-manager-intelligent.ts +0 -0
- /package/templates/{default → blank}/src/lib/utils/template-step-file-manager.ts +0 -0
- /package/templates/{default → blank}/src/lib/utils.ts +0 -0
- /package/templates/{default → blank}/src/services/dashboard/dashboard-service.test.ts +0 -0
- /package/templates/{default → blank}/src/services/dashboard/dashboard-service.ts +0 -0
- /package/templates/{default → blank}/src/services/environment/environment-service.test.ts +0 -0
- /package/templates/{default → blank}/src/services/environment/environment-service.ts +0 -0
- /package/templates/{default → blank}/src/services/locator/locator-path-utils.test.ts +0 -0
- /package/templates/{default → blank}/src/services/locator/locator-path-utils.ts +0 -0
- /package/templates/{default → blank}/src/services/locator/locator-service.test.ts +0 -0
- /package/templates/{default → blank}/src/services/locator/locator-service.ts +0 -0
- /package/templates/{default → blank}/src/services/locator/locator-sync-utils.test.ts +0 -0
- /package/templates/{default → blank}/src/services/locator/locator-sync-utils.ts +0 -0
- /package/templates/{default → blank}/src/services/locator-group/locator-group-service.test.ts +0 -0
- /package/templates/{default → blank}/src/services/locator-group/locator-group-service.ts +0 -0
- /package/templates/{default → blank}/src/services/module/module-service.test.ts +0 -0
- /package/templates/{default → blank}/src/services/module/module-service.ts +0 -0
- /package/templates/{default → blank}/src/services/report/report-service.test.ts +0 -0
- /package/templates/{default → blank}/src/services/report/report-service.ts +0 -0
- /package/templates/{default → blank}/src/services/shared/constants.ts +0 -0
- /package/templates/{default → blank}/src/services/shared/errors.test.ts +0 -0
- /package/templates/{default → blank}/src/services/shared/errors.ts +0 -0
- /package/templates/{default → blank}/src/services/shared/index.ts +0 -0
- /package/templates/{default → blank}/src/services/tag/tag-service.test.ts +0 -0
- /package/templates/{default → blank}/src/services/tag/tag-service.ts +0 -0
- /package/templates/{default → blank}/src/services/template-step/template-step-service.test.ts +0 -0
- /package/templates/{default → blank}/src/services/template-step/template-step-service.ts +0 -0
- /package/templates/{default → blank}/src/services/template-step-group/template-step-group-service.test.ts +0 -0
- /package/templates/{default → blank}/src/services/template-step-group/template-step-group-service.ts +0 -0
- /package/templates/{default → blank}/src/services/template-test-case/template-test-case-service.test.ts +0 -0
- /package/templates/{default → blank}/src/services/template-test-case/template-test-case-service.ts +0 -0
- /package/templates/{default → blank}/src/services/test-case/test-case-service.test.ts +0 -0
- /package/templates/{default → blank}/src/services/test-case/test-case-service.ts +0 -0
- /package/templates/{default → blank}/src/services/test-run/test-run-helpers.ts +0 -0
- /package/templates/{default → blank}/src/services/test-run/test-run-service.test.ts +0 -0
- /package/templates/{default → blank}/src/services/test-run/test-run-service.ts +0 -0
- /package/templates/{default → blank}/src/services/test-suite/test-suite-service.test.ts +0 -0
- /package/templates/{default → blank}/src/services/test-suite/test-suite-service.ts +0 -0
- /package/templates/{default → blank}/src/types/diagram/diagram.ts +0 -0
- /package/templates/{default → blank}/src/types/diagram/template-step.ts +0 -0
- /package/templates/{default → blank}/src/types/executor/browser.type.ts +0 -0
- /package/templates/{default → blank}/src/types/form/actionHandler.ts +0 -0
- /package/templates/{default → blank}/src/types/locator/locator.type.ts +0 -0
- /package/templates/{default → blank}/src/types/locator-picker.ts +0 -0
- /package/templates/{default → blank}/src/types/step/step.type.ts +0 -0
- /package/templates/{default → blank}/src/types/table/data-table.ts +0 -0
- /package/templates/{default → blank}/src/types/test-case-picker.ts +0 -0
- /package/templates/{default → blank}/src/types/test-suite-picker.ts +0 -0
- /package/templates/{default → blank}/tailwind.config.ts +0 -0
- /package/templates/{default → starter}/automation/steps/actions/click.step.ts +0 -0
- /package/templates/{default → starter}/automation/steps/actions/hover.step.ts +0 -0
- /package/templates/{default → starter}/automation/steps/actions/input.step.ts +0 -0
- /package/templates/{default → starter}/automation/steps/actions/navigation.step.ts +0 -0
- /package/templates/{default → starter}/automation/steps/actions/random_data.step.ts +0 -0
- /package/templates/{default → starter}/automation/steps/actions/store.step.ts +0 -0
- /package/templates/{default → starter}/automation/steps/actions/wait.step.ts +0 -0
- /package/templates/{default → starter}/automation/steps/validations/active_state_assertion.step.ts +0 -0
- /package/templates/{default → starter}/automation/steps/validations/navigation_assertion.step.ts +0 -0
- /package/templates/{default → starter}/automation/steps/validations/text_assertion.step.ts +0 -0
- /package/templates/{default → starter}/automation/steps/validations/visibility_assertion.step.ts +0 -0
package/README.md
CHANGED
|
@@ -8,16 +8,28 @@ Scaffold a new [AppraiseJS](https://github.com/jamil2018/appraisejs-core) projec
|
|
|
8
8
|
npx create-appraisejs@latest
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
+
To scaffold the minimal variant without bundled template steps:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx create-appraisejs@latest --template blank
|
|
15
|
+
```
|
|
16
|
+
|
|
11
17
|
The CLI will ask for:
|
|
12
18
|
|
|
13
19
|
1. The target directory. It must not exist yet, or it must be empty.
|
|
14
|
-
2. The
|
|
15
|
-
3.
|
|
16
|
-
4.
|
|
20
|
+
2. The template: `starter` or `blank`.
|
|
21
|
+
3. The package manager: `npm`, `pnpm`, `yarn`, or `bun`.
|
|
22
|
+
4. Whether to run the production setup immediately.
|
|
23
|
+
5. Which Playwright browsers you want available: `chromium`, `firefox`, and/or `webkit`.
|
|
17
24
|
|
|
18
25
|
## What The Scaffolder Does
|
|
19
26
|
|
|
20
|
-
By default, `create-appraisejs` uses the bundled template shipped inside the package.
|
|
27
|
+
By default, `create-appraisejs` uses the bundled `starter` template shipped inside the package.
|
|
28
|
+
|
|
29
|
+
Available templates:
|
|
30
|
+
|
|
31
|
+
- `starter`: opinionated scaffold with bundled core template steps included.
|
|
32
|
+
- `blank`: the same app scaffold without bundled template steps; add steps later with `appraisejs add step`.
|
|
21
33
|
|
|
22
34
|
During scaffolding it:
|
|
23
35
|
|
|
@@ -25,7 +37,7 @@ During scaffolding it:
|
|
|
25
37
|
2. Renames the packaged `gitignore` file back to `.gitignore`.
|
|
26
38
|
3. Rewrites `package.json` scripts so they use your chosen package manager.
|
|
27
39
|
4. Preserves the seeded local SQLite database at `prisma/dev.db`.
|
|
28
|
-
5. Starts you with a clean automation workspace: `automation/config/environments/environments.json` is reset to `{}`, `automation/mapping/locator-map.json` is reset to `[]`,
|
|
40
|
+
5. Starts you with a clean automation workspace: `automation/config/environments/environments.json` is reset to `{}`, `automation/mapping/locator-map.json` is reset to `[]`, starter features, locators, and reports are not bundled into the generated app, and reusable step definitions are included only for the `starter` template.
|
|
29
41
|
6. Optionally runs the project's `setup` script and then installs any Playwright browsers you selected.
|
|
30
42
|
|
|
31
43
|
If you skip setup, the CLI still prints the exact next commands to run.
|
|
@@ -71,7 +83,7 @@ The package defaults to the bundled template. Remote fetching is only used when
|
|
|
71
83
|
| --- | --- | --- |
|
|
72
84
|
| `CREATE_APPRAISE_REPO_URL` | Repository URL used for remote template fetching. | `https://github.com/jamil2018/appraisejs-core.git` |
|
|
73
85
|
| `CREATE_APPRAISE_BRANCH` | Branch or ref to fetch from the remote repository. | `main` |
|
|
74
|
-
| `CREATE_APPRAISE_TEMPLATE_SUBPATH` | Path to the template directory inside that repository. | `templates/
|
|
86
|
+
| `CREATE_APPRAISE_TEMPLATE_SUBPATH` | Path to the template directory inside that repository. | selected template subpath (`templates/starter` or `templates/blank`) |
|
|
75
87
|
| `CREATE_APPRAISE_USE_BUNDLED` | Set to `1`, `true`, or `yes` to force the bundled template even when remote overrides are present. | bundled template |
|
|
76
88
|
|
|
77
89
|
When remote mode is active, the CLI tries the repository tarball first and falls back to `git clone` if needed.
|
|
@@ -79,7 +91,7 @@ When remote mode is active, the CLI tries the repository tarball first and falls
|
|
|
79
91
|
Example:
|
|
80
92
|
|
|
81
93
|
```bash
|
|
82
|
-
CREATE_APPRAISE_BRANCH=main
|
|
94
|
+
CREATE_APPRAISE_BRANCH=main npx create-appraisejs@latest --template blank
|
|
83
95
|
```
|
|
84
96
|
|
|
85
97
|
## Common Scripts In The Generated App
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-args.d.ts","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAE5F,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,UAAU,CAAA;CACtB;AAcD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA4BvD"}
|
package/dist/cli-args.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { formatTemplateList, parseTemplateId } from './template-catalog.js';
|
|
2
|
+
function getTemplateFlagValue(argument, argv, index) {
|
|
3
|
+
if (argument === '--template') {
|
|
4
|
+
return argv[index + 1] ?? null;
|
|
5
|
+
}
|
|
6
|
+
if (argument.startsWith('--template=')) {
|
|
7
|
+
return argument.slice('--template='.length);
|
|
8
|
+
}
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
export function parseCliArgs(argv) {
|
|
12
|
+
let template;
|
|
13
|
+
for (let index = 0; index < argv.length; index++) {
|
|
14
|
+
const argument = argv[index];
|
|
15
|
+
const templateValue = getTemplateFlagValue(argument, argv, index);
|
|
16
|
+
if (templateValue === null) {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
if (!templateValue.trim()) {
|
|
20
|
+
throw new Error(`Missing value for --template. Expected one of: ${formatTemplateList()}.`);
|
|
21
|
+
}
|
|
22
|
+
const parsedTemplate = parseTemplateId(templateValue);
|
|
23
|
+
if (!parsedTemplate) {
|
|
24
|
+
throw new Error(`Invalid template "${templateValue}". Expected one of: ${formatTemplateList()}.`);
|
|
25
|
+
}
|
|
26
|
+
template = parsedTemplate;
|
|
27
|
+
if (argument === '--template') {
|
|
28
|
+
index++;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return { template };
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=cli-args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-args.js","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAmB,MAAM,uBAAuB,CAAA;AAM5F,SAAS,oBAAoB,CAAC,QAAgB,EAAE,IAAc,EAAE,KAAa;IAC3E,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAA;IAChC,CAAC;IAED,IAAI,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAC7C,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,IAAI,QAAgC,CAAA;IAEpC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5B,MAAM,aAAa,GAAG,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QAEjE,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,SAAQ;QACV,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,kDAAkD,kBAAkB,EAAE,GAAG,CAAC,CAAA;QAC5F,CAAC;QAED,MAAM,cAAc,GAAG,eAAe,CAAC,aAAa,CAAC,CAAA;QACrD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,aAAa,uBAAuB,kBAAkB,EAAE,GAAG,CAAC,CAAA;QACnG,CAAC;QAED,QAAQ,GAAG,cAAc,CAAA;QAEzB,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC9B,KAAK,EAAE,CAAA;QACT,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,CAAA;AACrB,CAAC"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { type PlaywrightBrowser } from './prompts.js';
|
|
3
|
-
|
|
3
|
+
import type { TemplateId } from './template-catalog.js';
|
|
4
|
+
export declare function getSuccessMessageLines(targetDir: string, template: TemplateId, packageManager: string, didInstall: boolean, playwrightBrowsers: PlaywrightBrowser[]): string[];
|
|
4
5
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAIjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAUvD,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,UAAU,EACpB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,OAAO,EACnB,kBAAkB,EAAE,iBAAiB,EAAE,GACtC,MAAM,EAAE,CA4BV"}
|
package/dist/cli.js
CHANGED
|
@@ -3,17 +3,23 @@ import path from 'path';
|
|
|
3
3
|
import { runPrompts } from './prompts.js';
|
|
4
4
|
import { createProject } from './create-project.js';
|
|
5
5
|
import { getInstallCommand } from './install.js';
|
|
6
|
+
import { parseCliArgs } from './cli-args.js';
|
|
6
7
|
function formatBrowserInstallStep(packageManager, browsers) {
|
|
7
8
|
if (browsers.length === 0) {
|
|
8
9
|
return null;
|
|
9
10
|
}
|
|
10
11
|
return `${packageManager} run install-playwright -- ${browsers.join(' ')}`;
|
|
11
12
|
}
|
|
12
|
-
export function getSuccessMessageLines(targetDir, packageManager, didInstall, playwrightBrowsers) {
|
|
13
|
+
export function getSuccessMessageLines(targetDir, template, packageManager, didInstall, playwrightBrowsers) {
|
|
13
14
|
const relativePath = path.relative(process.cwd(), targetDir);
|
|
14
15
|
const cdPath = relativePath.startsWith('..') ? targetDir : `./${relativePath}`;
|
|
15
16
|
const browserInstallStep = formatBrowserInstallStep(packageManager, playwrightBrowsers);
|
|
16
|
-
const lines = [
|
|
17
|
+
const lines = [
|
|
18
|
+
'\n\u2713 Appraise app created successfully!\n',
|
|
19
|
+
` Location: ${targetDir}\n`,
|
|
20
|
+
` Template: ${template}\n`,
|
|
21
|
+
' Next steps:\n',
|
|
22
|
+
];
|
|
17
23
|
const pm = packageManager;
|
|
18
24
|
if (!didInstall) {
|
|
19
25
|
const { command, args } = getInstallCommand(pm);
|
|
@@ -34,27 +40,29 @@ export function getSuccessMessageLines(targetDir, packageManager, didInstall, pl
|
|
|
34
40
|
lines.push(' See README.md in the project for more details.\n');
|
|
35
41
|
return lines;
|
|
36
42
|
}
|
|
37
|
-
function printSuccessMessage(targetDir, packageManager, didInstall, playwrightBrowsers) {
|
|
38
|
-
for (const line of getSuccessMessageLines(targetDir, packageManager, didInstall, playwrightBrowsers)) {
|
|
43
|
+
function printSuccessMessage(targetDir, template, packageManager, didInstall, playwrightBrowsers) {
|
|
44
|
+
for (const line of getSuccessMessageLines(targetDir, template, packageManager, didInstall, playwrightBrowsers)) {
|
|
39
45
|
console.log(line);
|
|
40
46
|
}
|
|
41
47
|
}
|
|
42
48
|
async function main() {
|
|
43
49
|
console.log('\n Create Appraise\n');
|
|
44
50
|
const cwd = process.cwd();
|
|
51
|
+
let cliOptions;
|
|
45
52
|
let answers;
|
|
46
53
|
try {
|
|
47
|
-
|
|
54
|
+
cliOptions = parseCliArgs(process.argv.slice(2));
|
|
55
|
+
answers = await runPrompts(cwd, cliOptions);
|
|
48
56
|
}
|
|
49
57
|
catch (err) {
|
|
50
58
|
const message = err instanceof Error ? err.message : String(err);
|
|
51
59
|
console.error('\n\u2717', message);
|
|
52
60
|
process.exit(1);
|
|
53
61
|
}
|
|
54
|
-
const { directory, packageManager, runInstall: shouldRunInstall, playwrightBrowsers } = answers;
|
|
62
|
+
const { directory, template, packageManager, runInstall: shouldRunInstall, playwrightBrowsers } = answers;
|
|
55
63
|
try {
|
|
56
|
-
await createProject({ directory, packageManager, runInstall: shouldRunInstall, playwrightBrowsers });
|
|
57
|
-
printSuccessMessage(directory, packageManager, shouldRunInstall, playwrightBrowsers);
|
|
64
|
+
await createProject({ directory, template, packageManager, runInstall: shouldRunInstall, playwrightBrowsers });
|
|
65
|
+
printSuccessMessage(directory, template, packageManager, shouldRunInstall, playwrightBrowsers);
|
|
58
66
|
}
|
|
59
67
|
catch (err) {
|
|
60
68
|
const message = err instanceof Error ? err.message : String(err);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,UAAU,EAA0B,MAAM,cAAc,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { type TemplateId } from './template-catalog.js';
|
|
1
2
|
export interface Config {
|
|
2
3
|
repoBase: string;
|
|
3
4
|
branch: string;
|
|
4
5
|
templateSubpath: string;
|
|
5
6
|
useBundled: boolean;
|
|
6
7
|
}
|
|
7
|
-
export declare function getConfig(): Config;
|
|
8
|
+
export declare function getConfig(template?: TemplateId): Config;
|
|
8
9
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqD,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAK1G,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,OAAO,CAAA;CACpB;AAWD,wBAAgB,SAAS,CAAC,QAAQ,GAAE,UAAgC,GAAG,MAAM,CA2B5E"}
|
package/dist/config.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { DEFAULT_TEMPLATE_ID, resolveRemoteTemplateSubpath } from './template-catalog.js';
|
|
1
2
|
const DEFAULT_REPO_BASE = 'https://github.com/jamil2018/appraisejs-core.git';
|
|
2
3
|
const DEFAULT_BRANCH = 'main';
|
|
3
|
-
const DEFAULT_TEMPLATE_SUBPATH = 'templates/default';
|
|
4
4
|
function normalizeRepoBase(value) {
|
|
5
5
|
let s = value.trim();
|
|
6
6
|
while (s.endsWith('/') || s.endsWith('.git')) {
|
|
@@ -11,14 +11,14 @@ function normalizeRepoBase(value) {
|
|
|
11
11
|
}
|
|
12
12
|
return s;
|
|
13
13
|
}
|
|
14
|
-
export function getConfig() {
|
|
14
|
+
export function getConfig(template = DEFAULT_TEMPLATE_ID) {
|
|
15
15
|
const hasRemoteOverride = Boolean(process.env.CREATE_APPRAISE_REPO_URL?.trim()) ||
|
|
16
16
|
Boolean(process.env.CREATE_APPRAISE_BRANCH?.trim()) ||
|
|
17
17
|
Boolean(process.env.CREATE_APPRAISE_TEMPLATE_SUBPATH?.trim());
|
|
18
18
|
const repoBaseRaw = process.env.CREATE_APPRAISE_REPO_URL ?? DEFAULT_REPO_BASE;
|
|
19
19
|
const repoBase = repoBaseRaw ? normalizeRepoBase(repoBaseRaw) : DEFAULT_REPO_BASE;
|
|
20
20
|
const branch = process.env.CREATE_APPRAISE_BRANCH?.trim() ?? DEFAULT_BRANCH;
|
|
21
|
-
const templateSubpath = process.env.CREATE_APPRAISE_TEMPLATE_SUBPATH?.trim() ??
|
|
21
|
+
const templateSubpath = process.env.CREATE_APPRAISE_TEMPLATE_SUBPATH?.trim() ?? resolveRemoteTemplateSubpath(template);
|
|
22
22
|
const useBundledRaw = process.env.CREATE_APPRAISE_USE_BUNDLED;
|
|
23
23
|
const forceBundled = useBundledRaw !== undefined &&
|
|
24
24
|
useBundledRaw !== '' &&
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,4BAA4B,EAAmB,MAAM,uBAAuB,CAAA;AAE1G,MAAM,iBAAiB,GAAG,kDAAkD,CAAA;AAC5E,MAAM,cAAc,GAAG,MAAM,CAAA;AAS7B,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IACpB,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;aACrC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC9C,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,WAAuB,mBAAmB;IAClE,MAAM,iBAAiB,GACrB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,EAAE,CAAC;QACrD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAC;QACnD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,EAAE,CAAC,CAAA;IAE/D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,iBAAiB,CAAA;IAC7E,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAA;IAEjF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,cAAc,CAAA;IAE3E,MAAM,eAAe,GACnB,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,EAAE,IAAI,4BAA4B,CAAC,QAAQ,CAAC,CAAA;IAEhG,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAA;IAC7D,MAAM,YAAY,GAChB,aAAa,KAAK,SAAS;QAC3B,aAAa,KAAK,EAAE;QACpB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;IACpE,MAAM,UAAU,GAAG,YAAY,IAAI,CAAC,iBAAiB,CAAA;IAErD,OAAO;QACL,QAAQ,EAAE,QAAQ,IAAI,iBAAiB;QACvC,MAAM;QACN,eAAe;QACf,UAAU;KACX,CAAA;AACH,CAAC"}
|
package/dist/copy-template.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { PackageManager } from './prompts.js';
|
|
2
|
+
import { type TemplateId } from './template-catalog.js';
|
|
2
3
|
export declare function getCollectedFilesForTest(src: string, packageManager?: PackageManager): string[];
|
|
3
|
-
export declare function getTemplatePath(): string;
|
|
4
|
-
export declare function copyTemplate(destDir: string, onProgress?: (current: number, total: number, filename: string) => void, templatePathOverride?: string, packageManager?: PackageManager): Promise<void>;
|
|
4
|
+
export declare function getTemplatePath(template?: TemplateId): string;
|
|
5
|
+
export declare function copyTemplate(destDir: string, onProgress?: (current: number, total: number, filename: string) => void, templatePathOverride?: string, packageManager?: PackageManager, template?: TemplateId): Promise<void>;
|
|
5
6
|
//# sourceMappingURL=copy-template.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy-template.d.ts","sourceRoot":"","sources":["../src/copy-template.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"copy-template.d.ts","sourceRoot":"","sources":["../src/copy-template.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAmD,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAoExG,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,MAAM,EAAE,CAE/F;AAED,wBAAgB,eAAe,CAAC,QAAQ,GAAE,UAAgC,GAAG,MAAM,CAElF;AAMD,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,EACvE,oBAAoB,CAAC,EAAE,MAAM,EAC7B,cAAc,CAAC,EAAE,cAAc,EAC/B,QAAQ,GAAE,UAAgC,GACzC,OAAO,CAAC,IAAI,CAAC,CAgCf"}
|
package/dist/copy-template.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import fs from 'fs-extra';
|
|
2
2
|
import path from 'path';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
3
|
import cliProgress from 'cli-progress';
|
|
5
|
-
|
|
4
|
+
import { DEFAULT_TEMPLATE_ID, resolveBundledTemplatePath } from './template-catalog.js';
|
|
6
5
|
const SEEDED_DB_PATH = path.join('prisma', 'dev.db');
|
|
7
6
|
const PACKAGED_GITIGNORE_PATH = 'gitignore';
|
|
8
7
|
const EXCLUDED_DIRS = new Set(['node_modules', '.next', '.git']);
|
|
@@ -14,6 +13,7 @@ const EXCLUDED_FILES = new Set([
|
|
|
14
13
|
'yarn.lock',
|
|
15
14
|
'pnpm-lock.yaml',
|
|
16
15
|
'bun.lockb',
|
|
16
|
+
'.DS_Store',
|
|
17
17
|
]);
|
|
18
18
|
const EXCLUDED_EXTENSIONS = new Set(['.db', '.sqlite', '.sqlite3']);
|
|
19
19
|
function shouldKeepSeededDatabase(relativePath) {
|
|
@@ -74,15 +74,14 @@ function collectFiles(src, base = '', packageManager) {
|
|
|
74
74
|
export function getCollectedFilesForTest(src, packageManager) {
|
|
75
75
|
return collectFiles(src, '', packageManager);
|
|
76
76
|
}
|
|
77
|
-
export function getTemplatePath() {
|
|
78
|
-
|
|
79
|
-
return path.join(packageDir, 'templates', 'default');
|
|
77
|
+
export function getTemplatePath(template = DEFAULT_TEMPLATE_ID) {
|
|
78
|
+
return resolveBundledTemplatePath(template);
|
|
80
79
|
}
|
|
81
80
|
function getDestinationRelativePath(relativePath) {
|
|
82
81
|
return relativePath === PACKAGED_GITIGNORE_PATH ? '.gitignore' : relativePath;
|
|
83
82
|
}
|
|
84
|
-
export async function copyTemplate(destDir, onProgress, templatePathOverride, packageManager) {
|
|
85
|
-
const templatePath = templatePathOverride ?? getTemplatePath();
|
|
83
|
+
export async function copyTemplate(destDir, onProgress, templatePathOverride, packageManager, template = DEFAULT_TEMPLATE_ID) {
|
|
84
|
+
const templatePath = templatePathOverride ?? getTemplatePath(template);
|
|
86
85
|
if (!(await fs.pathExists(templatePath))) {
|
|
87
86
|
throw new Error(`Template not found at: ${templatePath}`);
|
|
88
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy-template.js","sourceRoot":"","sources":["../src/copy-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,
|
|
1
|
+
{"version":3,"file":"copy-template.js","sourceRoot":"","sources":["../src/copy-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-project.d.ts","sourceRoot":"","sources":["../src/create-project.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"create-project.d.ts","sourceRoot":"","sources":["../src/create-project.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,OAAO,YAAY,CAAA;IACjC,YAAY,EAAE,OAAO,YAAY,CAAA;IACjC,SAAS,EAAE,OAAO,SAAS,CAAA;IAC3B,uBAAuB,EAAE,OAAO,uBAAuB,CAAA;IACvD,eAAe,EAAE,OAAO,EAAE,CAAC,MAAM,CAAA;IACjC,QAAQ,EAAE,OAAO,QAAQ,CAAA;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;CACxB;AAsDD,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,EACtB,YAAY,GAAE,yBAA+C,EAC7D,MAAM,GAAE,mBAA+D,GACtE,OAAO,CAAC,mBAAmB,CAAC,CAyB9B"}
|
package/dist/create-project.js
CHANGED
|
@@ -12,19 +12,19 @@ const defaultDependencies = {
|
|
|
12
12
|
removeDirectory: fs.remove,
|
|
13
13
|
runSetup,
|
|
14
14
|
};
|
|
15
|
-
async function copyBundledTemplate(directory, packageManager, dependencies, logger) {
|
|
15
|
+
async function copyBundledTemplate(directory, template, packageManager, dependencies, logger) {
|
|
16
16
|
logger.info(' Copying bundled template files...');
|
|
17
|
-
await dependencies.copyTemplate(directory, undefined, undefined, packageManager);
|
|
17
|
+
await dependencies.copyTemplate(directory, undefined, undefined, packageManager, template);
|
|
18
18
|
logger.info(' Template files copied.\n');
|
|
19
19
|
}
|
|
20
|
-
async function copyRemoteTemplate(directory, packageManager, config, dependencies, logger) {
|
|
20
|
+
async function copyRemoteTemplate(directory, template, packageManager, config, dependencies, logger) {
|
|
21
21
|
let cleanupDir = null;
|
|
22
22
|
try {
|
|
23
23
|
logger.info(` Downloading template from ${config.repoBase} ...`);
|
|
24
24
|
const download = await dependencies.downloadRepo(config.repoBase, config.branch, config.templateSubpath);
|
|
25
25
|
cleanupDir = download.cleanupDir;
|
|
26
26
|
logger.info(' Copying template files...');
|
|
27
|
-
await dependencies.copyTemplate(directory, undefined, path.join(download.repoRoot, config.templateSubpath), packageManager);
|
|
27
|
+
await dependencies.copyTemplate(directory, undefined, path.join(download.repoRoot, config.templateSubpath), packageManager, template);
|
|
28
28
|
logger.info(' Template files copied.\n');
|
|
29
29
|
}
|
|
30
30
|
finally {
|
|
@@ -34,15 +34,15 @@ async function copyRemoteTemplate(directory, packageManager, config, dependencie
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
export async function createProject(answers, dependencies = defaultDependencies, logger = { info: message => console.log(message) }) {
|
|
37
|
-
const config = dependencies.getConfig();
|
|
38
|
-
const { directory, packageManager, runInstall, playwrightBrowsers } = answers;
|
|
37
|
+
const config = dependencies.getConfig(answers.template);
|
|
38
|
+
const { directory, template, packageManager, runInstall, playwrightBrowsers } = answers;
|
|
39
39
|
logger.info('\n Validating target directory...');
|
|
40
40
|
logger.info(` Creating project at: ${directory}\n`);
|
|
41
41
|
if (config.useBundled) {
|
|
42
|
-
await copyBundledTemplate(directory, packageManager, dependencies, logger);
|
|
42
|
+
await copyBundledTemplate(directory, template, packageManager, dependencies, logger);
|
|
43
43
|
}
|
|
44
44
|
else {
|
|
45
|
-
await copyRemoteTemplate(directory, packageManager, config, dependencies, logger);
|
|
45
|
+
await copyRemoteTemplate(directory, template, packageManager, config, dependencies, logger);
|
|
46
46
|
}
|
|
47
47
|
await dependencies.patchPackageJsonScripts(directory, packageManager);
|
|
48
48
|
if (runInstall) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-project.js","sourceRoot":"","sources":["../src/create-project.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAe,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"create-project.js","sourceRoot":"","sources":["../src/create-project.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
+
import type { TemplateId } from './template-catalog.js';
|
|
1
2
|
export interface TemplateMetadata {
|
|
2
3
|
preparedAt: string;
|
|
3
4
|
inputHash: string;
|
|
4
5
|
databasePath: string;
|
|
5
6
|
}
|
|
7
|
+
export interface TemplateStepDataCounts {
|
|
8
|
+
stepCount: number;
|
|
9
|
+
stepGroupCount: number;
|
|
10
|
+
}
|
|
6
11
|
export declare const TEMPLATE_PREP_SYNC_SCRIPTS: readonly ["sync-template-step-groups", "sync-template-steps"];
|
|
12
|
+
export declare const BLANK_TEMPLATE_PREP_SYNC_SCRIPTS: readonly ["sync-template-steps", "sync-template-step-groups"];
|
|
7
13
|
export declare function collectFiles(dir: string, predicate?: (relativePath: string) => boolean, baseDir?: string): Promise<string[]>;
|
|
8
14
|
export declare function shouldAbortOnFallbackSeed(usedFallbackSeed: boolean, inputHash: string, previousMetadata: TemplateMetadata | null): boolean;
|
|
9
|
-
export declare function
|
|
15
|
+
export declare function getTemplatePrepSyncScripts(template: TemplateId): readonly string[];
|
|
16
|
+
export declare function readTemplateStepDataCounts(databasePath: string): Promise<TemplateStepDataCounts>;
|
|
17
|
+
export declare function verifyPreparedTemplateState(packageTemplateDir: string, template: TemplateId, collectFilesFn?: typeof collectFiles, readTemplateStepDataCountsFn?: (databasePath: string) => Promise<TemplateStepDataCounts>): Promise<void>;
|
|
10
18
|
//# sourceMappingURL=prepare-template-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-template-utils.d.ts","sourceRoot":"","sources":["../src/prepare-template-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prepare-template-utils.d.ts","sourceRoot":"","sources":["../src/prepare-template-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,eAAO,MAAM,0BAA0B,+DAAgE,CAAA;AACvG,eAAO,MAAM,gCAAgC,+DAAgE,CAAA;AAE7G,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,EAC7C,OAAO,SAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBnB;AAED,wBAAgB,yBAAyB,CACvC,gBAAgB,EAAE,OAAO,EACzB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,GACxC,OAAO,CAET;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,UAAU,GAAG,SAAS,MAAM,EAAE,CAElF;AAED,wBAAsB,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAmBtG;AAED,wBAAsB,2BAA2B,CAC/C,kBAAkB,EAAE,MAAM,EAC1B,QAAQ,EAAE,UAAU,EACpB,cAAc,GAAE,OAAO,YAA2B,EAClD,4BAA4B,GAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,CAA8B,GACnH,OAAO,CAAC,IAAI,CAAC,CAwEf"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { existsSync, promises as fs } from 'fs';
|
|
3
3
|
export const TEMPLATE_PREP_SYNC_SCRIPTS = ['sync-template-step-groups', 'sync-template-steps'];
|
|
4
|
+
export const BLANK_TEMPLATE_PREP_SYNC_SCRIPTS = ['sync-template-steps', 'sync-template-step-groups'];
|
|
4
5
|
export async function collectFiles(dir, predicate, baseDir = dir) {
|
|
5
6
|
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
6
7
|
const files = [];
|
|
@@ -20,7 +21,30 @@ export async function collectFiles(dir, predicate, baseDir = dir) {
|
|
|
20
21
|
export function shouldAbortOnFallbackSeed(usedFallbackSeed, inputHash, previousMetadata) {
|
|
21
22
|
return usedFallbackSeed && previousMetadata?.inputHash !== inputHash;
|
|
22
23
|
}
|
|
23
|
-
export
|
|
24
|
+
export function getTemplatePrepSyncScripts(template) {
|
|
25
|
+
return template === 'blank' ? BLANK_TEMPLATE_PREP_SYNC_SCRIPTS : TEMPLATE_PREP_SYNC_SCRIPTS;
|
|
26
|
+
}
|
|
27
|
+
export async function readTemplateStepDataCounts(databasePath) {
|
|
28
|
+
const { PrismaClient } = await import('@prisma/client');
|
|
29
|
+
const prisma = new PrismaClient({
|
|
30
|
+
datasources: {
|
|
31
|
+
db: {
|
|
32
|
+
url: `file:${databasePath}`,
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
try {
|
|
37
|
+
const [stepCount, stepGroupCount] = await prisma.$transaction([
|
|
38
|
+
prisma.templateStep.count(),
|
|
39
|
+
prisma.templateStepGroup.count(),
|
|
40
|
+
]);
|
|
41
|
+
return { stepCount, stepGroupCount };
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
await prisma.$disconnect();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export async function verifyPreparedTemplateState(packageTemplateDir, template, collectFilesFn = collectFiles, readTemplateStepDataCountsFn = readTemplateStepDataCounts) {
|
|
24
48
|
const seededDbPath = path.join(packageTemplateDir, 'prisma', 'dev.db');
|
|
25
49
|
const staleNestedDbPath = path.join(packageTemplateDir, 'prisma', 'prisma', 'dev.db');
|
|
26
50
|
const packagedGitignorePath = path.join(packageTemplateDir, 'gitignore');
|
|
@@ -29,6 +53,11 @@ export async function verifyPreparedTemplateState(packageTemplateDir, collectFil
|
|
|
29
53
|
const starterLocatorMapPath = path.join(packageTemplateDir, 'automation', 'mapping', 'locator-map.json');
|
|
30
54
|
const reportsDir = path.join(packageTemplateDir, 'automation', 'reports');
|
|
31
55
|
const reportFiles = existsSync(reportsDir) ? await collectFilesFn(reportsDir) : [];
|
|
56
|
+
const bundledStepsDir = path.join(packageTemplateDir, 'automation', 'steps');
|
|
57
|
+
const bundledStepFiles = existsSync(bundledStepsDir)
|
|
58
|
+
? await collectFilesFn(bundledStepsDir, relativePath => relativePath.endsWith('.step.ts'))
|
|
59
|
+
: [];
|
|
60
|
+
const strayOsArtifacts = await collectFilesFn(packageTemplateDir, relativePath => path.basename(relativePath) === '.DS_Store');
|
|
32
61
|
if (!existsSync(seededDbPath)) {
|
|
33
62
|
throw new Error(`Prepared template is missing ${seededDbPath}`);
|
|
34
63
|
}
|
|
@@ -55,5 +84,24 @@ export async function verifyPreparedTemplateState(packageTemplateDir, collectFil
|
|
|
55
84
|
if (reportFiles.length > 0) {
|
|
56
85
|
throw new Error(`Prepared template should not include report artifacts, found ${reportFiles.join(', ')}`);
|
|
57
86
|
}
|
|
87
|
+
if (strayOsArtifacts.length > 0) {
|
|
88
|
+
throw new Error(`Prepared template should not include OS artifacts, found ${strayOsArtifacts.join(', ')}`);
|
|
89
|
+
}
|
|
90
|
+
const stepDataCounts = await readTemplateStepDataCountsFn(seededDbPath);
|
|
91
|
+
if (template === 'starter') {
|
|
92
|
+
if (bundledStepFiles.length === 0) {
|
|
93
|
+
throw new Error(`Prepared starter template is missing bundled step files in ${bundledStepsDir}`);
|
|
94
|
+
}
|
|
95
|
+
if (stepDataCounts.stepCount === 0 || stepDataCounts.stepGroupCount === 0) {
|
|
96
|
+
throw new Error(`Prepared starter template database should include bundled step data at ${seededDbPath}`);
|
|
97
|
+
}
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (bundledStepFiles.length > 0) {
|
|
101
|
+
throw new Error(`Prepared blank template should not include bundled step files, found ${bundledStepFiles.join(', ')}`);
|
|
102
|
+
}
|
|
103
|
+
if (stepDataCounts.stepCount !== 0 || stepDataCounts.stepGroupCount !== 0) {
|
|
104
|
+
throw new Error(`Prepared blank template database should not include bundled step data at ${seededDbPath}`);
|
|
105
|
+
}
|
|
58
106
|
}
|
|
59
107
|
//# sourceMappingURL=prepare-template-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-template-utils.js","sourceRoot":"","sources":["../src/prepare-template-utils.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"prepare-template-utils.js","sourceRoot":"","sources":["../src/prepare-template-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/prompts.d.ts
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
|
+
import { type TemplateId } from './template-catalog.js';
|
|
1
2
|
export type PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';
|
|
2
3
|
export type PlaywrightBrowser = 'chromium' | 'firefox' | 'webkit';
|
|
3
4
|
export interface PromptAnswers {
|
|
4
5
|
directory: string;
|
|
6
|
+
template: TemplateId;
|
|
5
7
|
packageManager: PackageManager;
|
|
6
8
|
runInstall: boolean;
|
|
7
9
|
playwrightBrowsers: PlaywrightBrowser[];
|
|
8
10
|
}
|
|
9
|
-
export
|
|
11
|
+
export interface PromptOptions {
|
|
12
|
+
template?: TemplateId;
|
|
13
|
+
}
|
|
14
|
+
export declare function runPrompts(cwd: string, options?: PromptOptions): Promise<PromptAnswers>;
|
|
10
15
|
//# sourceMappingURL=prompts.d.ts.map
|
package/dist/prompts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;AAC5D,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEjE,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,UAAU,CAAA;IACpB,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,OAAO,CAAA;IACnB,kBAAkB,EAAE,iBAAiB,EAAE,CAAA;CACxC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,UAAU,CAAA;CACtB;AAuBD,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAsDjG"}
|
package/dist/prompts.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { checkbox, confirm, input, select } from '@inquirer/prompts';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import fs from 'fs';
|
|
4
|
+
import { DEFAULT_TEMPLATE_ID, getTemplateChoices, } from './template-catalog.js';
|
|
4
5
|
const DEFAULT_DIR = './my-appraisejs-app';
|
|
5
6
|
function isDirEmpty(dirPath) {
|
|
6
7
|
if (!fs.existsSync(dirPath))
|
|
@@ -19,7 +20,7 @@ function validateTargetDirectory(resolved) {
|
|
|
19
20
|
throw new Error(`Directory must be empty: ${resolved}\nPlease choose an empty directory or a new path.`);
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
|
-
export async function runPrompts(cwd) {
|
|
23
|
+
export async function runPrompts(cwd, options = {}) {
|
|
23
24
|
const rawDir = await input({
|
|
24
25
|
message: 'Where should we create your app?',
|
|
25
26
|
default: DEFAULT_DIR,
|
|
@@ -38,6 +39,12 @@ export async function runPrompts(cwd) {
|
|
|
38
39
|
const message = err instanceof Error ? err.message : String(err);
|
|
39
40
|
throw new Error(message);
|
|
40
41
|
}
|
|
42
|
+
const template = options.template ??
|
|
43
|
+
(await select({
|
|
44
|
+
message: 'Which template do you want to start with?',
|
|
45
|
+
choices: getTemplateChoices(),
|
|
46
|
+
default: DEFAULT_TEMPLATE_ID,
|
|
47
|
+
}));
|
|
41
48
|
const packageManager = await select({
|
|
42
49
|
message: 'Which package manager do you want to use?',
|
|
43
50
|
choices: [
|
|
@@ -60,6 +67,6 @@ export async function runPrompts(cwd) {
|
|
|
60
67
|
{ name: 'WebKit', value: 'webkit' },
|
|
61
68
|
],
|
|
62
69
|
});
|
|
63
|
-
return { directory: resolved, packageManager, runInstall, playwrightBrowsers };
|
|
70
|
+
return { directory: resolved, template, packageManager, runInstall, playwrightBrowsers };
|
|
64
71
|
}
|
|
65
72
|
//# sourceMappingURL=prompts.js.map
|
package/dist/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
|