@zimezone/z-command 1.1.1 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/README.md +13 -1
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +34 -9
  4. package/dist/commands/init.js.map +1 -1
  5. package/package.json +8 -3
  6. package/templates.zip +0 -0
  7. package/templates/agents/accessibility-expert.agent.md +0 -56
  8. package/templates/agents/ai-engineer.agent.md +0 -61
  9. package/templates/agents/angular-architect.agent.md +0 -49
  10. package/templates/agents/api-designer.agent.md +0 -40
  11. package/templates/agents/api-documenter.agent.md +0 -161
  12. package/templates/agents/architect-review.agent.md +0 -146
  13. package/templates/agents/arm-cortex-expert.agent.md +0 -288
  14. package/templates/agents/azure-infra-engineer.agent.md +0 -57
  15. package/templates/agents/backend-architect.agent.md +0 -309
  16. package/templates/agents/backend-developer.agent.md +0 -61
  17. package/templates/agents/backend-security-coder.agent.md +0 -152
  18. package/templates/agents/bash-pro.agent.md +0 -285
  19. package/templates/agents/blockchain-developer.agent.md +0 -57
  20. package/templates/agents/build-engineer.agent.md +0 -56
  21. package/templates/agents/business-analyst.agent.md +0 -47
  22. package/templates/agents/c-pro.agent.md +0 -35
  23. package/templates/agents/c4-code.agent.md +0 -320
  24. package/templates/agents/c4-component.agent.md +0 -227
  25. package/templates/agents/c4-container.agent.md +0 -248
  26. package/templates/agents/c4-context.agent.md +0 -235
  27. package/templates/agents/cli-developer.agent.md +0 -57
  28. package/templates/agents/cloud-architect.agent.md +0 -56
  29. package/templates/agents/code-architect.agent.md +0 -63
  30. package/templates/agents/code-reviewer.agent.md +0 -49
  31. package/templates/agents/competitive-analyst.agent.md +0 -48
  32. package/templates/agents/conductor-validator.agent.md +0 -245
  33. package/templates/agents/context-manager.agent.md +0 -55
  34. package/templates/agents/cpp-pro.agent.md +0 -59
  35. package/templates/agents/csharp-developer.agent.md +0 -57
  36. package/templates/agents/csharp-pro.agent.md +0 -38
  37. package/templates/agents/customer-support.agent.md +0 -148
  38. package/templates/agents/data-engineer.agent.md +0 -55
  39. package/templates/agents/data-researcher.agent.md +0 -55
  40. package/templates/agents/data-scientist.agent.md +0 -56
  41. package/templates/agents/database-admin.agent.md +0 -142
  42. package/templates/agents/database-administrator.agent.md +0 -50
  43. package/templates/agents/database-architect.agent.md +0 -238
  44. package/templates/agents/database-optimizer.agent.md +0 -144
  45. package/templates/agents/debugger.agent.md +0 -30
  46. package/templates/agents/deployment-engineer.agent.md +0 -0
  47. package/templates/agents/devops-engineer.agent.md +0 -59
  48. package/templates/agents/devops-troubleshooter.agent.md +0 -138
  49. package/templates/agents/django-developer.agent.md +0 -50
  50. package/templates/agents/django-pro.agent.md +0 -159
  51. package/templates/agents/docs-architect.agent.md +0 -77
  52. package/templates/agents/documentation-engineer.agent.md +0 -57
  53. package/templates/agents/dotnet-architect.agent.md +0 -175
  54. package/templates/agents/dx-optimizer.agent.md +0 -63
  55. package/templates/agents/electron-pro.agent.md +0 -56
  56. package/templates/agents/elixir-pro.agent.md +0 -38
  57. package/templates/agents/embedded-systems.agent.md +0 -55
  58. package/templates/agents/error-detective.agent.md +0 -32
  59. package/templates/agents/event-sourcing-architect.agent.md +0 -42
  60. package/templates/agents/fastapi-pro.agent.md +0 -171
  61. package/templates/agents/fintech-engineer.agent.md +0 -57
  62. package/templates/agents/firmware-analyst.agent.md +0 -330
  63. package/templates/agents/flutter-expert.agent.md +0 -50
  64. package/templates/agents/frontend-developer.agent.md +0 -59
  65. package/templates/agents/frontend-security-coder.agent.md +0 -149
  66. package/templates/agents/fullstack-developer.agent.md +0 -46
  67. package/templates/agents/git-workflow-manager.agent.md +0 -57
  68. package/templates/agents/golang-pro.agent.md +0 -50
  69. package/templates/agents/graphql-architect.agent.md +0 -48
  70. package/templates/agents/haskell-pro.agent.md +0 -37
  71. package/templates/agents/hr-pro.agent.md +0 -105
  72. package/templates/agents/incident-responder.agent.md +0 -190
  73. package/templates/agents/ios-developer.agent.md +0 -198
  74. package/templates/agents/iot-engineer.agent.md +0 -56
  75. package/templates/agents/java-architect.agent.md +0 -48
  76. package/templates/agents/java-pro.agent.md +0 -156
  77. package/templates/agents/javascript-pro.agent.md +0 -35
  78. package/templates/agents/julia-pro.agent.md +0 -187
  79. package/templates/agents/kotlin-specialist.agent.md +0 -50
  80. package/templates/agents/laravel-specialist.agent.md +0 -50
  81. package/templates/agents/legacy-modernizer.agent.md +0 -56
  82. package/templates/agents/legal-advisor.agent.md +0 -49
  83. package/templates/agents/llm-architect.agent.md +0 -58
  84. package/templates/agents/malware-analyst.agent.md +0 -272
  85. package/templates/agents/mcp-developer.agent.md +0 -54
  86. package/templates/agents/mermaid-expert.agent.md +0 -39
  87. package/templates/agents/microservices-architect.agent.md +0 -47
  88. package/templates/agents/minecraft-bukkit-pro.agent.md +0 -104
  89. package/templates/agents/ml-engineer.agent.md +0 -56
  90. package/templates/agents/mlops-engineer.agent.md +0 -56
  91. package/templates/agents/mobile-developer.agent.md +0 -45
  92. package/templates/agents/mobile-security-coder.agent.md +0 -163
  93. package/templates/agents/monorepo-architect.agent.md +0 -44
  94. package/templates/agents/multi-agent-coordinator.agent.md +0 -55
  95. package/templates/agents/network-engineer.agent.md +0 -57
  96. package/templates/agents/nextjs-developer.agent.md +0 -48
  97. package/templates/agents/nlp-engineer.agent.md +0 -58
  98. package/templates/agents/observability-engineer.agent.md +0 -228
  99. package/templates/agents/payment-integration.agent.md +0 -56
  100. package/templates/agents/performance-engineer.agent.md +0 -167
  101. package/templates/agents/performance-optimizer.agent.md +0 -57
  102. package/templates/agents/php-pro.agent.md +0 -43
  103. package/templates/agents/platform-engineer.agent.md +0 -57
  104. package/templates/agents/posix-shell-pro.agent.md +0 -284
  105. package/templates/agents/postgres-pro.agent.md +0 -58
  106. package/templates/agents/product-manager.agent.md +0 -55
  107. package/templates/agents/project-manager.agent.md +0 -57
  108. package/templates/agents/prompt-engineer.agent.md +0 -58
  109. package/templates/agents/python-pro.agent.md +0 -48
  110. package/templates/agents/quant-analyst.agent.md +0 -32
  111. package/templates/agents/rails-expert.agent.md +0 -50
  112. package/templates/agents/react-specialist.agent.md +0 -49
  113. package/templates/agents/refactoring-specialist.agent.md +0 -56
  114. package/templates/agents/reference-builder.agent.md +0 -167
  115. package/templates/agents/research-analyst.agent.md +0 -63
  116. package/templates/agents/reverse-engineer.agent.md +0 -202
  117. package/templates/agents/risk-manager.agent.md +0 -41
  118. package/templates/agents/ruby-pro.agent.md +0 -35
  119. package/templates/agents/rust-pro.agent.md +0 -156
  120. package/templates/agents/sales-automator.agent.md +0 -35
  121. package/templates/agents/scala-pro.agent.md +0 -60
  122. package/templates/agents/scrum-master.agent.md +0 -54
  123. package/templates/agents/search-specialist.agent.md +0 -59
  124. package/templates/agents/security-analyst.agent.md +0 -57
  125. package/templates/agents/security-auditor.agent.md +0 -138
  126. package/templates/agents/security-engineer.agent.md +0 -57
  127. package/templates/agents/seo-authority-builder.agent.md +0 -116
  128. package/templates/agents/seo-cannibalization-detector.agent.md +0 -103
  129. package/templates/agents/seo-content-auditor.agent.md +0 -63
  130. package/templates/agents/seo-content-planner.agent.md +0 -88
  131. package/templates/agents/seo-content-refresher.agent.md +0 -98
  132. package/templates/agents/seo-content-writer.agent.md +0 -76
  133. package/templates/agents/seo-keyword-strategist.agent.md +0 -75
  134. package/templates/agents/seo-meta-optimizer.agent.md +0 -72
  135. package/templates/agents/seo-snippet-hunter.agent.md +0 -94
  136. package/templates/agents/seo-specialist.agent.md +0 -57
  137. package/templates/agents/seo-structure-architect.agent.md +0 -88
  138. package/templates/agents/service-mesh-expert.agent.md +0 -41
  139. package/templates/agents/sql-pro.agent.md +0 -146
  140. package/templates/agents/sre-engineer.agent.md +0 -58
  141. package/templates/agents/swift-expert.agent.md +0 -49
  142. package/templates/agents/task-distributor.agent.md +0 -47
  143. package/templates/agents/tdd-orchestrator.agent.md +0 -183
  144. package/templates/agents/technical-writer.agent.md +0 -48
  145. package/templates/agents/temporal-python-pro.agent.md +0 -349
  146. package/templates/agents/terraform-engineer.agent.md +0 -57
  147. package/templates/agents/terraform-specialist.agent.md +0 -137
  148. package/templates/agents/test-automator.agent.md +0 -203
  149. package/templates/agents/test-engineer.agent.md +0 -55
  150. package/templates/agents/threat-modeling-expert.agent.md +0 -44
  151. package/templates/agents/trend-analyst.agent.md +0 -47
  152. package/templates/agents/tutorial-engineer.agent.md +0 -118
  153. package/templates/agents/typescript-pro.agent.md +0 -48
  154. package/templates/agents/ui-designer.agent.md +0 -48
  155. package/templates/agents/ui-ux-designer.agent.md +0 -188
  156. package/templates/agents/ui-visual-validator.agent.md +0 -192
  157. package/templates/agents/ux-researcher.agent.md +0 -48
  158. package/templates/agents/vector-database-engineer.agent.md +0 -43
  159. package/templates/agents/vue-expert.agent.md +0 -48
  160. package/templates/agents/websocket-engineer.agent.md +0 -49
  161. package/templates/agents/workflow-orchestrator.agent.md +0 -48
  162. package/templates/skills/angular-migration/SKILL.md +0 -410
  163. package/templates/skills/api-design-principles/SKILL.md +0 -528
  164. package/templates/skills/api-design-principles/assets/api-design-checklist.md +0 -155
  165. package/templates/skills/api-design-principles/assets/rest-api-template.py +0 -182
  166. package/templates/skills/api-design-principles/references/graphql-schema-design.md +0 -583
  167. package/templates/skills/api-design-principles/references/rest-best-practices.md +0 -408
  168. package/templates/skills/architecture-decision-records/SKILL.md +0 -428
  169. package/templates/skills/architecture-patterns/SKILL.md +0 -494
  170. package/templates/skills/async-python-patterns/SKILL.md +0 -694
  171. package/templates/skills/auth-implementation-patterns/SKILL.md +0 -634
  172. package/templates/skills/changelog-automation/SKILL.md +0 -552
  173. package/templates/skills/code-review/SKILL.md +0 -62
  174. package/templates/skills/code-review-excellence/SKILL.md +0 -520
  175. package/templates/skills/competitive-landscape/SKILL.md +0 -479
  176. package/templates/skills/context-driven-development/SKILL.md +0 -385
  177. package/templates/skills/cost-optimization/SKILL.md +0 -274
  178. package/templates/skills/cqrs-implementation/SKILL.md +0 -554
  179. package/templates/skills/data-quality-frameworks/SKILL.md +0 -587
  180. package/templates/skills/data-storytelling/SKILL.md +0 -453
  181. package/templates/skills/database-migration/SKILL.md +0 -424
  182. package/templates/skills/dbt-transformation-patterns/SKILL.md +0 -561
  183. package/templates/skills/debugging-strategies/SKILL.md +0 -527
  184. package/templates/skills/defi-protocol-templates/SKILL.md +0 -454
  185. package/templates/skills/dependency-upgrade/SKILL.md +0 -409
  186. package/templates/skills/deployment-pipeline-design/SKILL.md +0 -359
  187. package/templates/skills/distributed-tracing/SKILL.md +0 -438
  188. package/templates/skills/dotnet-backend-patterns/SKILL.md +0 -815
  189. package/templates/skills/dotnet-backend-patterns/assets/repository-template.cs +0 -523
  190. package/templates/skills/dotnet-backend-patterns/assets/service-template.cs +0 -336
  191. package/templates/skills/dotnet-backend-patterns/references/dapper-patterns.md +0 -544
  192. package/templates/skills/dotnet-backend-patterns/references/ef-core-best-practices.md +0 -355
  193. package/templates/skills/e2e-testing-patterns/SKILL.md +0 -547
  194. package/templates/skills/employment-contract-templates/SKILL.md +0 -507
  195. package/templates/skills/error-handling-patterns/SKILL.md +0 -636
  196. package/templates/skills/event-store-design/SKILL.md +0 -437
  197. package/templates/skills/fastapi-templates/SKILL.md +0 -567
  198. package/templates/skills/git-advanced-workflows/SKILL.md +0 -400
  199. package/templates/skills/github-actions-templates/SKILL.md +0 -333
  200. package/templates/skills/go-concurrency-patterns/SKILL.md +0 -655
  201. package/templates/skills/grafana-dashboards/SKILL.md +0 -369
  202. package/templates/skills/helm-chart-scaffolding/SKILL.md +0 -544
  203. package/templates/skills/helm-chart-scaffolding/assets/Chart.yaml.template +0 -42
  204. package/templates/skills/helm-chart-scaffolding/assets/values.yaml.template +0 -185
  205. package/templates/skills/helm-chart-scaffolding/references/chart-structure.md +0 -500
  206. package/templates/skills/helm-chart-scaffolding/scripts/validate-chart.sh +0 -244
  207. package/templates/skills/javascript-testing-patterns/SKILL.md +0 -1025
  208. package/templates/skills/langchain-architecture/SKILL.md +0 -338
  209. package/templates/skills/llm-evaluation/SKILL.md +0 -471
  210. package/templates/skills/microservices-patterns/SKILL.md +0 -595
  211. package/templates/skills/modern-javascript-patterns/SKILL.md +0 -911
  212. package/templates/skills/monorepo-management/SKILL.md +0 -622
  213. package/templates/skills/nextjs-app-router-patterns/SKILL.md +0 -544
  214. package/templates/skills/nodejs-backend-patterns/SKILL.md +0 -1020
  215. package/templates/skills/nx-workspace-patterns/SKILL.md +0 -452
  216. package/templates/skills/openapi-spec-generation/SKILL.md +0 -1028
  217. package/templates/skills/paypal-integration/SKILL.md +0 -467
  218. package/templates/skills/pci-compliance/SKILL.md +0 -466
  219. package/templates/skills/postgresql/SKILL.md +0 -204
  220. package/templates/skills/projection-patterns/SKILL.md +0 -490
  221. package/templates/skills/prometheus-configuration/SKILL.md +0 -392
  222. package/templates/skills/prompt-engineering-patterns/SKILL.md +0 -201
  223. package/templates/skills/prompt-engineering-patterns/assets/few-shot-examples.json +0 -106
  224. package/templates/skills/prompt-engineering-patterns/assets/prompt-template-library.md +0 -246
  225. package/templates/skills/prompt-engineering-patterns/references/chain-of-thought.md +0 -399
  226. package/templates/skills/prompt-engineering-patterns/references/few-shot-learning.md +0 -369
  227. package/templates/skills/prompt-engineering-patterns/references/prompt-optimization.md +0 -414
  228. package/templates/skills/prompt-engineering-patterns/references/prompt-templates.md +0 -470
  229. package/templates/skills/prompt-engineering-patterns/references/system-prompts.md +0 -189
  230. package/templates/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +0 -279
  231. package/templates/skills/python-packaging/SKILL.md +0 -870
  232. package/templates/skills/python-performance-optimization/SKILL.md +0 -869
  233. package/templates/skills/python-testing-patterns/SKILL.md +0 -907
  234. package/templates/skills/rag-implementation/SKILL.md +0 -403
  235. package/templates/skills/react-modernization/SKILL.md +0 -513
  236. package/templates/skills/react-native-architecture/SKILL.md +0 -671
  237. package/templates/skills/react-state-management/SKILL.md +0 -429
  238. package/templates/skills/risk-metrics-calculation/SKILL.md +0 -555
  239. package/templates/skills/rust-async-patterns/SKILL.md +0 -517
  240. package/templates/skills/secrets-management/SKILL.md +0 -346
  241. package/templates/skills/security-requirement-extraction/SKILL.md +0 -677
  242. package/templates/skills/security-review/SKILL.md +0 -78
  243. package/templates/skills/shellcheck-configuration/SKILL.md +0 -454
  244. package/templates/skills/similarity-search-patterns/SKILL.md +0 -558
  245. package/templates/skills/slo-implementation/SKILL.md +0 -329
  246. package/templates/skills/sql-optimization-patterns/SKILL.md +0 -493
  247. package/templates/skills/stripe-integration/SKILL.md +0 -442
  248. package/templates/skills/systematic-debugging/SKILL.md +0 -57
  249. package/templates/skills/tailwind-design-system/SKILL.md +0 -666
  250. package/templates/skills/temporal-python-testing/SKILL.md +0 -158
  251. package/templates/skills/temporal-python-testing/resources/integration-testing.md +0 -455
  252. package/templates/skills/temporal-python-testing/resources/local-setup.md +0 -553
  253. package/templates/skills/temporal-python-testing/resources/replay-testing.md +0 -462
  254. package/templates/skills/temporal-python-testing/resources/unit-testing.md +0 -328
  255. package/templates/skills/terraform-module-library/SKILL.md +0 -249
  256. package/templates/skills/terraform-module-library/references/aws-modules.md +0 -63
  257. package/templates/skills/test-driven-development/SKILL.md +0 -46
  258. package/templates/skills/threat-mitigation-mapping/SKILL.md +0 -745
  259. package/templates/skills/track-management/SKILL.md +0 -593
  260. package/templates/skills/typescript-advanced-types/SKILL.md +0 -717
  261. package/templates/skills/ui-ux-pro-max/SKILL.md +0 -352
  262. package/templates/skills/ui-ux-pro-max/data/charts.csv +0 -26
  263. package/templates/skills/ui-ux-pro-max/data/colors.csv +0 -97
  264. package/templates/skills/ui-ux-pro-max/data/icons.csv +0 -101
  265. package/templates/skills/ui-ux-pro-max/data/landing.csv +0 -31
  266. package/templates/skills/ui-ux-pro-max/data/products.csv +0 -97
  267. package/templates/skills/ui-ux-pro-max/data/prompts.csv +0 -24
  268. package/templates/skills/ui-ux-pro-max/data/react-performance.csv +0 -45
  269. package/templates/skills/ui-ux-pro-max/data/styles.csv +0 -59
  270. package/templates/skills/ui-ux-pro-max/data/typography.csv +0 -58
  271. package/templates/skills/ui-ux-pro-max/data/ui-reasoning.csv +0 -101
  272. package/templates/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
  273. package/templates/skills/ui-ux-pro-max/data/web-interface.csv +0 -31
  274. package/templates/skills/ui-ux-pro-max/scripts/core.py +0 -258
  275. package/templates/skills/ui-ux-pro-max/scripts/design_system.py +0 -547
  276. package/templates/skills/ui-ux-pro-max/scripts/search.py +0 -76
  277. package/templates/skills/uv-package-manager/SKILL.md +0 -831
  278. package/templates/skills/vector-index-tuning/SKILL.md +0 -521
  279. package/templates/skills/wcag-audit-patterns/SKILL.md +0 -555
  280. package/templates/skills/workflow-orchestration-patterns/SKILL.md +0 -316
  281. package/templates/skills/workflow-patterns/SKILL.md +0 -623
  282. package/templates/skills/writing-plans/SKILL.md +0 -64
@@ -1,410 +0,0 @@
1
- ---
2
- name: angular-migration
3
- description: Migrate from AngularJS to Angular using hybrid mode, incremental component rewriting, and dependency injection updates. Use when upgrading AngularJS applications, planning framework migrations, or modernizing legacy Angular code.
4
- ---
5
-
6
- # Angular Migration
7
-
8
- Master AngularJS to Angular migration, including hybrid apps, component conversion, dependency injection changes, and routing migration.
9
-
10
- ## When to Use This Skill
11
-
12
- - Migrating AngularJS (1.x) applications to Angular (2+)
13
- - Running hybrid AngularJS/Angular applications
14
- - Converting directives to components
15
- - Modernizing dependency injection
16
- - Migrating routing systems
17
- - Updating to latest Angular versions
18
- - Implementing Angular best practices
19
-
20
- ## Migration Strategies
21
-
22
- ### 1. Big Bang (Complete Rewrite)
23
- - Rewrite entire app in Angular
24
- - Parallel development
25
- - Switch over at once
26
- - **Best for:** Small apps, green field projects
27
-
28
- ### 2. Incremental (Hybrid Approach)
29
- - Run AngularJS and Angular side-by-side
30
- - Migrate feature by feature
31
- - ngUpgrade for interop
32
- - **Best for:** Large apps, continuous delivery
33
-
34
- ### 3. Vertical Slice
35
- - Migrate one feature completely
36
- - New features in Angular, maintain old in AngularJS
37
- - Gradually replace
38
- - **Best for:** Medium apps, distinct features
39
-
40
- ## Hybrid App Setup
41
-
42
- ```typescript
43
- // main.ts - Bootstrap hybrid app
44
- import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
45
- import { UpgradeModule } from '@angular/upgrade/static';
46
- import { AppModule } from './app/app.module';
47
-
48
- platformBrowserDynamic()
49
- .bootstrapModule(AppModule)
50
- .then(platformRef => {
51
- const upgrade = platformRef.injector.get(UpgradeModule);
52
- // Bootstrap AngularJS
53
- upgrade.bootstrap(document.body, ['myAngularJSApp'], { strictDi: true });
54
- });
55
- ```
56
-
57
- ```typescript
58
- // app.module.ts
59
- import { NgModule } from '@angular/core';
60
- import { BrowserModule } from '@angular/platform-browser';
61
- import { UpgradeModule } from '@angular/upgrade/static';
62
-
63
- @NgModule({
64
- imports: [
65
- BrowserModule,
66
- UpgradeModule
67
- ]
68
- })
69
- export class AppModule {
70
- constructor(private upgrade: UpgradeModule) {}
71
-
72
- ngDoBootstrap() {
73
- // Bootstrapped manually in main.ts
74
- }
75
- }
76
- ```
77
-
78
- ## Component Migration
79
-
80
- ### AngularJS Controller → Angular Component
81
- ```javascript
82
- // Before: AngularJS controller
83
- angular.module('myApp').controller('UserController', function($scope, UserService) {
84
- $scope.user = {};
85
-
86
- $scope.loadUser = function(id) {
87
- UserService.getUser(id).then(function(user) {
88
- $scope.user = user;
89
- });
90
- };
91
-
92
- $scope.saveUser = function() {
93
- UserService.saveUser($scope.user);
94
- };
95
- });
96
- ```
97
-
98
- ```typescript
99
- // After: Angular component
100
- import { Component, OnInit } from '@angular/core';
101
- import { UserService } from './user.service';
102
-
103
- @Component({
104
- selector: 'app-user',
105
- template: `
106
- <div>
107
- <h2>{{ user.name }}</h2>
108
- <button (click)="saveUser()">Save</button>
109
- </div>
110
- `
111
- })
112
- export class UserComponent implements OnInit {
113
- user: any = {};
114
-
115
- constructor(private userService: UserService) {}
116
-
117
- ngOnInit() {
118
- this.loadUser(1);
119
- }
120
-
121
- loadUser(id: number) {
122
- this.userService.getUser(id).subscribe(user => {
123
- this.user = user;
124
- });
125
- }
126
-
127
- saveUser() {
128
- this.userService.saveUser(this.user);
129
- }
130
- }
131
- ```
132
-
133
- ### AngularJS Directive → Angular Component
134
- ```javascript
135
- // Before: AngularJS directive
136
- angular.module('myApp').directive('userCard', function() {
137
- return {
138
- restrict: 'E',
139
- scope: {
140
- user: '=',
141
- onDelete: '&'
142
- },
143
- template: `
144
- <div class="card">
145
- <h3>{{ user.name }}</h3>
146
- <button ng-click="onDelete()">Delete</button>
147
- </div>
148
- `
149
- };
150
- });
151
- ```
152
-
153
- ```typescript
154
- // After: Angular component
155
- import { Component, Input, Output, EventEmitter } from '@angular/core';
156
-
157
- @Component({
158
- selector: 'app-user-card',
159
- template: `
160
- <div class="card">
161
- <h3>{{ user.name }}</h3>
162
- <button (click)="delete.emit()">Delete</button>
163
- </div>
164
- `
165
- })
166
- export class UserCardComponent {
167
- @Input() user: any;
168
- @Output() delete = new EventEmitter<void>();
169
- }
170
-
171
- // Usage: <app-user-card [user]="user" (delete)="handleDelete()"></app-user-card>
172
- ```
173
-
174
- ## Service Migration
175
-
176
- ```javascript
177
- // Before: AngularJS service
178
- angular.module('myApp').factory('UserService', function($http) {
179
- return {
180
- getUser: function(id) {
181
- return $http.get('/api/users/' + id);
182
- },
183
- saveUser: function(user) {
184
- return $http.post('/api/users', user);
185
- }
186
- };
187
- });
188
- ```
189
-
190
- ```typescript
191
- // After: Angular service
192
- import { Injectable } from '@angular/core';
193
- import { HttpClient } from '@angular/common/http';
194
- import { Observable } from 'rxjs';
195
-
196
- @Injectable({
197
- providedIn: 'root'
198
- })
199
- export class UserService {
200
- constructor(private http: HttpClient) {}
201
-
202
- getUser(id: number): Observable<any> {
203
- return this.http.get(`/api/users/${id}`);
204
- }
205
-
206
- saveUser(user: any): Observable<any> {
207
- return this.http.post('/api/users', user);
208
- }
209
- }
210
- ```
211
-
212
- ## Dependency Injection Changes
213
-
214
- ### Downgrading Angular → AngularJS
215
- ```typescript
216
- // Angular service
217
- import { Injectable } from '@angular/core';
218
-
219
- @Injectable({ providedIn: 'root' })
220
- export class NewService {
221
- getData() {
222
- return 'data from Angular';
223
- }
224
- }
225
-
226
- // Make available to AngularJS
227
- import { downgradeInjectable } from '@angular/upgrade/static';
228
-
229
- angular.module('myApp')
230
- .factory('newService', downgradeInjectable(NewService));
231
-
232
- // Use in AngularJS
233
- angular.module('myApp').controller('OldController', function(newService) {
234
- console.log(newService.getData());
235
- });
236
- ```
237
-
238
- ### Upgrading AngularJS → Angular
239
- ```typescript
240
- // AngularJS service
241
- angular.module('myApp').factory('oldService', function() {
242
- return {
243
- getData: function() {
244
- return 'data from AngularJS';
245
- }
246
- };
247
- });
248
-
249
- // Make available to Angular
250
- import { InjectionToken } from '@angular/core';
251
-
252
- export const OLD_SERVICE = new InjectionToken<any>('oldService');
253
-
254
- @NgModule({
255
- providers: [
256
- {
257
- provide: OLD_SERVICE,
258
- useFactory: (i: any) => i.get('oldService'),
259
- deps: ['$injector']
260
- }
261
- ]
262
- })
263
-
264
- // Use in Angular
265
- @Component({...})
266
- export class NewComponent {
267
- constructor(@Inject(OLD_SERVICE) private oldService: any) {
268
- console.log(this.oldService.getData());
269
- }
270
- }
271
- ```
272
-
273
- ## Routing Migration
274
-
275
- ```javascript
276
- // Before: AngularJS routing
277
- angular.module('myApp').config(function($routeProvider) {
278
- $routeProvider
279
- .when('/users', {
280
- template: '<user-list></user-list>'
281
- })
282
- .when('/users/:id', {
283
- template: '<user-detail></user-detail>'
284
- });
285
- });
286
- ```
287
-
288
- ```typescript
289
- // After: Angular routing
290
- import { NgModule } from '@angular/core';
291
- import { RouterModule, Routes } from '@angular/router';
292
-
293
- const routes: Routes = [
294
- { path: 'users', component: UserListComponent },
295
- { path: 'users/:id', component: UserDetailComponent }
296
- ];
297
-
298
- @NgModule({
299
- imports: [RouterModule.forRoot(routes)],
300
- exports: [RouterModule]
301
- })
302
- export class AppRoutingModule {}
303
- ```
304
-
305
- ## Forms Migration
306
-
307
- ```html
308
- <!-- Before: AngularJS -->
309
- <form name="userForm" ng-submit="saveUser()">
310
- <input type="text" ng-model="user.name" required>
311
- <input type="email" ng-model="user.email" required>
312
- <button ng-disabled="userForm.$invalid">Save</button>
313
- </form>
314
- ```
315
-
316
- ```typescript
317
- // After: Angular (Template-driven)
318
- @Component({
319
- template: `
320
- <form #userForm="ngForm" (ngSubmit)="saveUser()">
321
- <input type="text" [(ngModel)]="user.name" name="name" required>
322
- <input type="email" [(ngModel)]="user.email" name="email" required>
323
- <button [disabled]="userForm.invalid">Save</button>
324
- </form>
325
- `
326
- })
327
-
328
- // Or Reactive Forms (preferred)
329
- import { FormBuilder, FormGroup, Validators } from '@angular/forms';
330
-
331
- @Component({
332
- template: `
333
- <form [formGroup]="userForm" (ngSubmit)="saveUser()">
334
- <input formControlName="name">
335
- <input formControlName="email">
336
- <button [disabled]="userForm.invalid">Save</button>
337
- </form>
338
- `
339
- })
340
- export class UserFormComponent {
341
- userForm: FormGroup;
342
-
343
- constructor(private fb: FormBuilder) {
344
- this.userForm = this.fb.group({
345
- name: ['', Validators.required],
346
- email: ['', [Validators.required, Validators.email]]
347
- });
348
- }
349
-
350
- saveUser() {
351
- console.log(this.userForm.value);
352
- }
353
- }
354
- ```
355
-
356
- ## Migration Timeline
357
-
358
- ```
359
- Phase 1: Setup (1-2 weeks)
360
- - Install Angular CLI
361
- - Set up hybrid app
362
- - Configure build tools
363
- - Set up testing
364
-
365
- Phase 2: Infrastructure (2-4 weeks)
366
- - Migrate services
367
- - Migrate utilities
368
- - Set up routing
369
- - Migrate shared components
370
-
371
- Phase 3: Feature Migration (varies)
372
- - Migrate feature by feature
373
- - Test thoroughly
374
- - Deploy incrementally
375
-
376
- Phase 4: Cleanup (1-2 weeks)
377
- - Remove AngularJS code
378
- - Remove ngUpgrade
379
- - Optimize bundle
380
- - Final testing
381
- ```
382
-
383
- ## Resources
384
-
385
- - **references/hybrid-mode.md**: Hybrid app patterns
386
- - **references/component-migration.md**: Component conversion guide
387
- - **references/dependency-injection.md**: DI migration strategies
388
- - **references/routing.md**: Routing migration
389
- - **assets/hybrid-bootstrap.ts**: Hybrid app template
390
- - **assets/migration-timeline.md**: Project planning
391
- - **scripts/analyze-angular-app.sh**: App analysis script
392
-
393
- ## Best Practices
394
-
395
- 1. **Start with Services**: Migrate services first (easier)
396
- 2. **Incremental Approach**: Feature-by-feature migration
397
- 3. **Test Continuously**: Test at every step
398
- 4. **Use TypeScript**: Migrate to TypeScript early
399
- 5. **Follow Style Guide**: Angular style guide from day 1
400
- 6. **Optimize Later**: Get it working, then optimize
401
- 7. **Document**: Keep migration notes
402
-
403
- ## Common Pitfalls
404
-
405
- - Not setting up hybrid app correctly
406
- - Migrating UI before logic
407
- - Ignoring change detection differences
408
- - Not handling scope properly
409
- - Mixing patterns (AngularJS + Angular)
410
- - Inadequate testing