resuml 1.13.1 → 1.14.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/bin/resuml CHANGED
@@ -1,21 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  /* eslint-env node */
3
3
 
4
- const { existsSync } = require('fs');
5
- const { join } = require('path');
6
- const distPath = join(__dirname, '../dist/index.js');
4
+ import { existsSync } from 'fs';
5
+ import { dirname, join } from 'path';
6
+ import { fileURLToPath, pathToFileURL } from 'url';
7
7
 
8
- function startCli() {
9
- try {
10
- if (existsSync(distPath)) {
11
- require(distPath);
12
- } else {
13
- throw new Error('CLI not built. Please run "npm run build" first.');
14
- }
15
- } catch (err) {
16
- console.error('Error starting resuml CLI:', err);
17
- process.exit(1);
8
+ const currentDir = dirname(fileURLToPath(import.meta.url));
9
+ const distPath = join(currentDir, '../dist/index.js');
10
+
11
+ try {
12
+ if (!existsSync(distPath)) {
13
+ throw new Error('CLI not built. Please run "npm run build" first.');
18
14
  }
15
+ await import(pathToFileURL(distPath).href);
16
+ } catch (err) {
17
+ console.error('Error starting resuml CLI:', err);
18
+ process.exit(1);
19
19
  }
20
-
21
- startCli();
@@ -0,0 +1,207 @@
1
+ {
2
+ "$comment": "Hand-curated allowlist of modern frameworks, tools and practices that O*NET hasn't yet absorbed. Keep focused: language/framework/tool/platform/practice names — not soft skills (those come from O*NET).",
3
+ "skills": [
4
+ { "canonical": "TypeScript", "aliases": ["TS"], "type": "language", "hot": true },
5
+ { "canonical": "JavaScript", "aliases": ["JS", "ECMAScript"], "type": "language", "hot": true },
6
+ { "canonical": "Node.js", "aliases": ["NodeJS", "Node"], "type": "platform", "hot": true },
7
+ { "canonical": "Deno", "type": "platform" },
8
+ { "canonical": "Bun", "type": "platform" },
9
+ { "canonical": "Rust", "type": "language", "hot": true },
10
+ { "canonical": "Go", "aliases": ["Golang"], "type": "language", "hot": true },
11
+ { "canonical": "Kotlin", "type": "language" },
12
+ { "canonical": "Swift", "type": "language" },
13
+ { "canonical": "Elixir", "type": "language" },
14
+ { "canonical": "Zig", "type": "language" },
15
+
16
+ { "canonical": "React", "aliases": ["React.js", "ReactJS"], "type": "framework", "hot": true },
17
+ { "canonical": "Next.js", "aliases": ["NextJS", "Next"], "type": "framework", "hot": true },
18
+ { "canonical": "Remix", "type": "framework" },
19
+ { "canonical": "Astro", "type": "framework" },
20
+ { "canonical": "Svelte", "aliases": ["SvelteKit"], "type": "framework", "hot": true },
21
+ { "canonical": "Solid", "aliases": ["SolidJS", "Solid.js"], "type": "framework" },
22
+ { "canonical": "Qwik", "type": "framework" },
23
+ { "canonical": "Vue.js", "aliases": ["Vue", "VueJS"], "type": "framework", "hot": true },
24
+ { "canonical": "Nuxt.js", "aliases": ["Nuxt", "NuxtJS"], "type": "framework" },
25
+ { "canonical": "Angular", "aliases": ["AngularJS", "Angular.js"], "type": "framework" },
26
+ { "canonical": "Redux", "aliases": ["Redux Toolkit", "RTK"], "type": "library" },
27
+ { "canonical": "Zustand", "type": "library" },
28
+ { "canonical": "Jotai", "type": "library" },
29
+ { "canonical": "Recoil", "type": "library" },
30
+ { "canonical": "MobX", "type": "library" },
31
+ { "canonical": "React Query", "aliases": ["TanStack Query", "tanstack-query"], "type": "library" },
32
+ { "canonical": "TanStack", "type": "library" },
33
+ { "canonical": "SWR", "type": "library" },
34
+ { "canonical": "tRPC", "type": "library" },
35
+ { "canonical": "GraphQL", "type": "library", "hot": true },
36
+ { "canonical": "Apollo", "aliases": ["Apollo Client", "Apollo GraphQL"], "type": "library" },
37
+ { "canonical": "Relay", "type": "library" },
38
+ { "canonical": "Tailwind CSS", "aliases": ["Tailwind", "TailwindCSS"], "type": "framework", "hot": true },
39
+ { "canonical": "shadcn/ui", "aliases": ["shadcn", "shadcn ui"], "type": "library" },
40
+ { "canonical": "Radix UI", "aliases": ["Radix"], "type": "library" },
41
+ { "canonical": "Headless UI", "type": "library" },
42
+ { "canonical": "Material UI", "aliases": ["MUI", "Material-UI"], "type": "library" },
43
+ { "canonical": "Chakra UI", "aliases": ["Chakra"], "type": "library" },
44
+ { "canonical": "Fluent UI", "aliases": ["FluentUI", "Fluent"], "type": "library" },
45
+ { "canonical": "Ant Design", "aliases": ["AntD"], "type": "library" },
46
+ { "canonical": "Framer Motion", "type": "library" },
47
+ { "canonical": "Styled Components", "aliases": ["styled-components"], "type": "library" },
48
+ { "canonical": "Emotion", "type": "library" },
49
+ { "canonical": "Storybook", "type": "tool" },
50
+
51
+ { "canonical": "Vite", "type": "tool", "hot": true },
52
+ { "canonical": "Webpack", "type": "tool" },
53
+ { "canonical": "Rollup", "aliases": ["Rollup.js"], "type": "tool" },
54
+ { "canonical": "esbuild", "type": "tool" },
55
+ { "canonical": "SWC", "type": "tool" },
56
+ { "canonical": "Turbopack", "type": "tool" },
57
+ { "canonical": "Parcel", "type": "tool" },
58
+ { "canonical": "Nx", "type": "tool" },
59
+ { "canonical": "Turborepo", "type": "tool" },
60
+ { "canonical": "Lerna", "type": "tool" },
61
+ { "canonical": "Yarn", "aliases": ["Yarn Workspaces"], "type": "tool" },
62
+ { "canonical": "pnpm", "type": "tool" },
63
+ { "canonical": "npm", "type": "tool" },
64
+ { "canonical": "Biome", "type": "tool" },
65
+ { "canonical": "ESLint", "type": "tool" },
66
+ { "canonical": "Prettier", "type": "tool" },
67
+
68
+ { "canonical": "Jest", "type": "tool" },
69
+ { "canonical": "Vitest", "type": "tool" },
70
+ { "canonical": "Playwright", "type": "tool" },
71
+ { "canonical": "Cypress", "type": "tool" },
72
+ { "canonical": "Testing Library", "aliases": ["React Testing Library", "RTL"], "type": "library" },
73
+ { "canonical": "Mocha", "type": "tool" },
74
+ { "canonical": "Chai", "type": "tool" },
75
+
76
+ { "canonical": "Express", "aliases": ["Express.js", "ExpressJS"], "type": "framework" },
77
+ { "canonical": "Fastify", "type": "framework" },
78
+ { "canonical": "NestJS", "aliases": ["Nest.js", "Nest"], "type": "framework" },
79
+ { "canonical": "Hono", "type": "framework" },
80
+ { "canonical": "Elysia", "type": "framework" },
81
+ { "canonical": "Django", "type": "framework" },
82
+ { "canonical": "Flask", "type": "framework" },
83
+ { "canonical": "FastAPI", "type": "framework" },
84
+ { "canonical": "Rails", "aliases": ["Ruby on Rails", "RoR"], "type": "framework" },
85
+ { "canonical": "Laravel", "type": "framework" },
86
+ { "canonical": "Phoenix", "type": "framework" },
87
+ { "canonical": "Gin", "type": "framework" },
88
+ { "canonical": "Actix", "type": "framework" },
89
+ { "canonical": "Axum", "type": "framework" },
90
+ { "canonical": ".NET", "aliases": [".NET Core", "dotnet"], "type": "framework" },
91
+ { "canonical": "ASP.NET", "aliases": ["ASP.NET Core"], "type": "framework" },
92
+
93
+ { "canonical": "PostgreSQL", "aliases": ["Postgres"], "type": "database", "hot": true },
94
+ { "canonical": "MySQL", "type": "database" },
95
+ { "canonical": "SQLite", "type": "database" },
96
+ { "canonical": "MongoDB", "aliases": ["Mongo"], "type": "database" },
97
+ { "canonical": "Redis", "type": "database" },
98
+ { "canonical": "DynamoDB", "type": "database" },
99
+ { "canonical": "Cassandra", "type": "database" },
100
+ { "canonical": "Elasticsearch", "aliases": ["ES"], "type": "database" },
101
+ { "canonical": "OpenSearch", "type": "database" },
102
+ { "canonical": "ClickHouse", "type": "database" },
103
+ { "canonical": "Snowflake", "type": "database" },
104
+ { "canonical": "BigQuery", "type": "database" },
105
+ { "canonical": "Supabase", "type": "platform" },
106
+ { "canonical": "Firebase", "type": "platform" },
107
+ { "canonical": "PlanetScale", "type": "database" },
108
+ { "canonical": "Neon", "type": "database" },
109
+ { "canonical": "Prisma", "type": "tool" },
110
+ { "canonical": "Drizzle", "aliases": ["Drizzle ORM"], "type": "tool" },
111
+ { "canonical": "TypeORM", "type": "tool" },
112
+ { "canonical": "SQL", "type": "language", "hot": true },
113
+ { "canonical": "NoSQL", "type": "language" },
114
+
115
+ { "canonical": "AWS", "aliases": ["Amazon Web Services"], "type": "platform", "hot": true },
116
+ { "canonical": "Google Cloud", "aliases": ["GCP", "Google Cloud Platform"], "type": "platform", "hot": true },
117
+ { "canonical": "Microsoft Azure", "aliases": ["Azure"], "type": "platform", "hot": true },
118
+ { "canonical": "Vercel", "type": "platform" },
119
+ { "canonical": "Netlify", "type": "platform" },
120
+ { "canonical": "Cloudflare", "aliases": ["Cloudflare Workers", "Workers"], "type": "platform" },
121
+ { "canonical": "Fly.io", "aliases": ["fly"], "type": "platform" },
122
+ { "canonical": "Render", "type": "platform" },
123
+ { "canonical": "Railway", "type": "platform" },
124
+ { "canonical": "Heroku", "type": "platform" },
125
+ { "canonical": "Docker", "type": "tool", "hot": true },
126
+ { "canonical": "Kubernetes", "aliases": ["K8s"], "type": "tool", "hot": true },
127
+ { "canonical": "Helm", "type": "tool" },
128
+ { "canonical": "Terraform", "type": "tool" },
129
+ { "canonical": "Pulumi", "type": "tool" },
130
+ { "canonical": "Ansible", "type": "tool" },
131
+ { "canonical": "GitHub Actions", "type": "tool" },
132
+ { "canonical": "GitLab CI", "aliases": ["GitLab CI/CD"], "type": "tool" },
133
+ { "canonical": "CircleCI", "type": "tool" },
134
+ { "canonical": "Jenkins", "type": "tool" },
135
+ { "canonical": "Azure DevOps", "aliases": ["ADO"], "type": "tool" },
136
+ { "canonical": "ArgoCD", "type": "tool" },
137
+ { "canonical": "Grafana", "type": "tool" },
138
+ { "canonical": "Prometheus", "type": "tool" },
139
+ { "canonical": "Datadog", "type": "tool" },
140
+ { "canonical": "Sentry", "type": "tool" },
141
+ { "canonical": "New Relic", "type": "tool" },
142
+ { "canonical": "OpenTelemetry", "aliases": ["OTel"], "type": "tool" },
143
+
144
+ { "canonical": "Python", "type": "language", "hot": true },
145
+ { "canonical": "Pandas", "type": "library" },
146
+ { "canonical": "NumPy", "type": "library" },
147
+ { "canonical": "scikit-learn", "aliases": ["sklearn"], "type": "library" },
148
+ { "canonical": "PyTorch", "type": "framework" },
149
+ { "canonical": "TensorFlow", "type": "framework" },
150
+ { "canonical": "Hugging Face", "aliases": ["HuggingFace"], "type": "platform" },
151
+ { "canonical": "LangChain", "type": "library" },
152
+ { "canonical": "LlamaIndex", "type": "library" },
153
+ { "canonical": "OpenAI", "aliases": ["OpenAI API"], "type": "platform" },
154
+ { "canonical": "Anthropic", "aliases": ["Claude"], "type": "platform" },
155
+ { "canonical": "MLflow", "type": "tool" },
156
+ { "canonical": "Airflow", "aliases": ["Apache Airflow"], "type": "tool" },
157
+ { "canonical": "dbt", "aliases": ["data build tool"], "type": "tool" },
158
+ { "canonical": "Spark", "aliases": ["Apache Spark", "PySpark"], "type": "framework" },
159
+ { "canonical": "Kafka", "aliases": ["Apache Kafka"], "type": "platform" },
160
+ { "canonical": "RAG", "aliases": ["Retrieval Augmented Generation", "retrieval-augmented generation"], "type": "practice" },
161
+ { "canonical": "Vector Search", "type": "practice" },
162
+ { "canonical": "Embeddings", "type": "practice" },
163
+
164
+ { "canonical": "Git", "type": "tool", "hot": true },
165
+ { "canonical": "GitHub", "type": "platform" },
166
+ { "canonical": "GitLab", "type": "platform" },
167
+ { "canonical": "Bitbucket", "type": "platform" },
168
+ { "canonical": "Jira", "type": "tool" },
169
+ { "canonical": "Linear", "type": "tool" },
170
+ { "canonical": "Notion", "type": "tool" },
171
+ { "canonical": "Confluence", "type": "tool" },
172
+ { "canonical": "Figma", "type": "tool", "hot": true },
173
+ { "canonical": "Sketch", "type": "tool" },
174
+ { "canonical": "Miro", "type": "tool" },
175
+
176
+ { "canonical": "CI/CD", "aliases": ["CICD", "Continuous Integration", "Continuous Delivery", "Continuous Deployment"], "type": "practice", "hot": true },
177
+ { "canonical": "REST API", "aliases": ["RESTful API", "REST APIs", "REST"], "type": "practice" },
178
+ { "canonical": "gRPC", "type": "practice" },
179
+ { "canonical": "WebSockets", "aliases": ["WebSocket"], "type": "practice" },
180
+ { "canonical": "Microservices", "type": "practice", "hot": true },
181
+ { "canonical": "Monorepo", "aliases": ["monorepos"], "type": "practice" },
182
+ { "canonical": "Serverless", "type": "practice" },
183
+ { "canonical": "Edge Computing", "aliases": ["edge functions"], "type": "practice" },
184
+ { "canonical": "Event-Driven Architecture", "aliases": ["EDA", "event-driven"], "type": "practice" },
185
+ { "canonical": "Domain-Driven Design", "aliases": ["DDD"], "type": "practice" },
186
+ { "canonical": "Test-Driven Development", "aliases": ["TDD"], "type": "practice" },
187
+ { "canonical": "Agile", "aliases": ["Scrum", "Kanban"], "type": "practice" },
188
+ { "canonical": "OAuth", "aliases": ["OAuth2", "OAuth 2.0"], "type": "practice" },
189
+ { "canonical": "OIDC", "aliases": ["OpenID Connect"], "type": "practice" },
190
+ { "canonical": "SSO", "aliases": ["Single Sign-On"], "type": "practice" },
191
+ { "canonical": "JWT", "type": "practice" },
192
+ { "canonical": "WebAssembly", "aliases": ["Wasm"], "type": "practice" },
193
+ { "canonical": "Progressive Web App", "aliases": ["PWA"], "type": "practice" },
194
+ { "canonical": "Server-Side Rendering", "aliases": ["SSR"], "type": "practice" },
195
+ { "canonical": "Static Site Generation", "aliases": ["SSG"], "type": "practice" },
196
+ { "canonical": "Accessibility", "aliases": ["a11y", "WCAG"], "type": "practice", "hot": true },
197
+ { "canonical": "Internationalization", "aliases": ["i18n"], "type": "practice" },
198
+ { "canonical": "Observability", "type": "practice" },
199
+ { "canonical": "Design Systems", "aliases": ["Design System"], "type": "practice", "hot": true },
200
+ { "canonical": "Data Modeling", "aliases": ["Data Model", "Data Models"], "type": "practice" },
201
+ { "canonical": "Technical Leadership", "aliases": ["Tech Lead", "Tech Leadership"], "type": "practice" },
202
+ { "canonical": "Mentoring", "type": "practice" },
203
+ { "canonical": "Code Review", "aliases": ["Code Reviews"], "type": "practice" },
204
+ { "canonical": "Stakeholder Management", "type": "practice" },
205
+ { "canonical": "Cross-functional Collaboration", "aliases": ["cross-functional"], "type": "practice" }
206
+ ]
207
+ }