@stackweld/registry 0.2.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.
Files changed (115) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/.turbo/turbo-lint.log +436 -0
  3. package/.turbo/turbo-test.log +15 -0
  4. package/.turbo/turbo-typecheck.log +4 -0
  5. package/dist/__tests__/loader.test.d.ts +2 -0
  6. package/dist/__tests__/loader.test.d.ts.map +1 -0
  7. package/dist/__tests__/loader.test.js +126 -0
  8. package/dist/__tests__/loader.test.js.map +1 -0
  9. package/dist/index.d.ts +5 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +4 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/learning-resources.d.ts +16 -0
  14. package/dist/learning-resources.d.ts.map +1 -0
  15. package/dist/learning-resources.js +461 -0
  16. package/dist/learning-resources.js.map +1 -0
  17. package/dist/loader.d.ts +18 -0
  18. package/dist/loader.d.ts.map +1 -0
  19. package/dist/loader.js +56 -0
  20. package/dist/loader.js.map +1 -0
  21. package/dist/schema.d.ts +147 -0
  22. package/dist/schema.d.ts.map +1 -0
  23. package/dist/schema.js +79 -0
  24. package/dist/schema.js.map +1 -0
  25. package/package.json +39 -0
  26. package/src/__tests__/loader.test.ts +162 -0
  27. package/src/index.ts +4 -0
  28. package/src/learning-resources.ts +488 -0
  29. package/src/loader.ts +67 -0
  30. package/src/schema.ts +79 -0
  31. package/src/technologies/auth/clerk.yaml +29 -0
  32. package/src/technologies/auth/lucia.yaml +19 -0
  33. package/src/technologies/auth/nextauth.yaml +31 -0
  34. package/src/technologies/auth/supabase-auth.yaml +32 -0
  35. package/src/technologies/backend/django.yaml +17 -0
  36. package/src/technologies/backend/echo.yaml +17 -0
  37. package/src/technologies/backend/express.yaml +17 -0
  38. package/src/technologies/backend/fastapi.yaml +17 -0
  39. package/src/technologies/backend/fastify.yaml +17 -0
  40. package/src/technologies/backend/flask.yaml +17 -0
  41. package/src/technologies/backend/gin.yaml +17 -0
  42. package/src/technologies/backend/hono.yaml +17 -0
  43. package/src/technologies/backend/laravel.yaml +32 -0
  44. package/src/technologies/backend/nestjs.yaml +30 -0
  45. package/src/technologies/backend/spring-boot.yaml +30 -0
  46. package/src/technologies/backend/trpc.yaml +20 -0
  47. package/src/technologies/databases/kafka.yaml +27 -0
  48. package/src/technologies/databases/mariadb.yaml +30 -0
  49. package/src/technologies/databases/mongodb.yaml +25 -0
  50. package/src/technologies/databases/mysql.yaml +25 -0
  51. package/src/technologies/databases/neon.yaml +18 -0
  52. package/src/technologies/databases/pocketbase.yaml +24 -0
  53. package/src/technologies/databases/postgresql.yaml +26 -0
  54. package/src/technologies/databases/redis.yaml +23 -0
  55. package/src/technologies/databases/sqlite.yaml +19 -0
  56. package/src/technologies/databases/supabase.yaml +27 -0
  57. package/src/technologies/databases/turso.yaml +19 -0
  58. package/src/technologies/devops/biome.yaml +19 -0
  59. package/src/technologies/devops/cypress.yaml +20 -0
  60. package/src/technologies/devops/devcontainers.yaml +18 -0
  61. package/src/technologies/devops/docker.yaml +19 -0
  62. package/src/technologies/devops/eslint.yaml +18 -0
  63. package/src/technologies/devops/github-actions.yaml +18 -0
  64. package/src/technologies/devops/jest.yaml +19 -0
  65. package/src/technologies/devops/playwright.yaml +19 -0
  66. package/src/technologies/devops/pnpm.yaml +22 -0
  67. package/src/technologies/devops/prettier.yaml +19 -0
  68. package/src/technologies/devops/storybook.yaml +28 -0
  69. package/src/technologies/devops/turborepo.yaml +20 -0
  70. package/src/technologies/devops/typescript.yaml +20 -0
  71. package/src/technologies/devops/vitest.yaml +20 -0
  72. package/src/technologies/devops/zod.yaml +18 -0
  73. package/src/technologies/frontend/angular.yaml +19 -0
  74. package/src/technologies/frontend/astro.yaml +19 -0
  75. package/src/technologies/frontend/htmx.yaml +18 -0
  76. package/src/technologies/frontend/nextjs.yaml +22 -0
  77. package/src/technologies/frontend/nuxt.yaml +18 -0
  78. package/src/technologies/frontend/qwik.yaml +28 -0
  79. package/src/technologies/frontend/react.yaml +19 -0
  80. package/src/technologies/frontend/remix.yaml +28 -0
  81. package/src/technologies/frontend/solidjs.yaml +29 -0
  82. package/src/technologies/frontend/svelte.yaml +19 -0
  83. package/src/technologies/frontend/sveltekit.yaml +18 -0
  84. package/src/technologies/frontend/vue.yaml +18 -0
  85. package/src/technologies/orms/django-orm.yaml +21 -0
  86. package/src/technologies/orms/drizzle.yaml +23 -0
  87. package/src/technologies/orms/mongoose.yaml +22 -0
  88. package/src/technologies/orms/prisma.yaml +23 -0
  89. package/src/technologies/orms/sqlalchemy.yaml +21 -0
  90. package/src/technologies/orms/typeorm.yaml +21 -0
  91. package/src/technologies/runtimes/bun.yaml +24 -0
  92. package/src/technologies/runtimes/deno.yaml +30 -0
  93. package/src/technologies/runtimes/go.yaml +27 -0
  94. package/src/technologies/runtimes/nodejs.yaml +31 -0
  95. package/src/technologies/runtimes/php.yaml +30 -0
  96. package/src/technologies/runtimes/python.yaml +30 -0
  97. package/src/technologies/runtimes/rust.yaml +23 -0
  98. package/src/technologies/services/adminer.yaml +24 -0
  99. package/src/technologies/services/grafana.yaml +29 -0
  100. package/src/technologies/services/mailpit.yaml +27 -0
  101. package/src/technologies/services/minio.yaml +28 -0
  102. package/src/technologies/services/nginx.yaml +25 -0
  103. package/src/technologies/services/pgadmin.yaml +26 -0
  104. package/src/technologies/services/portainer.yaml +24 -0
  105. package/src/technologies/services/prometheus.yaml +27 -0
  106. package/src/technologies/services/rabbitmq.yaml +28 -0
  107. package/src/technologies/services/traefik.yaml +28 -0
  108. package/src/technologies/styling/chakra-ui.yaml +21 -0
  109. package/src/technologies/styling/css-modules.yaml +17 -0
  110. package/src/technologies/styling/daisyui.yaml +20 -0
  111. package/src/technologies/styling/material-ui.yaml +22 -0
  112. package/src/technologies/styling/shadcn-ui.yaml +20 -0
  113. package/src/technologies/styling/tailwindcss.yaml +20 -0
  114. package/tsconfig.json +11 -0
  115. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,461 @@
1
+ /**
2
+ * Learning Resources — Curated learning paths for technologies in the registry.
3
+ */
4
+ export const LEARNING_RESOURCES = {
5
+ nextjs: [
6
+ {
7
+ title: "Official Documentation",
8
+ url: "https://nextjs.org/docs",
9
+ type: "docs",
10
+ difficulty: "beginner",
11
+ },
12
+ {
13
+ title: "Learn Next.js",
14
+ url: "https://nextjs.org/learn",
15
+ type: "tutorial",
16
+ difficulty: "beginner",
17
+ },
18
+ {
19
+ title: "App Router Deep Dive",
20
+ url: "https://nextjs.org/docs/app",
21
+ type: "docs",
22
+ difficulty: "intermediate",
23
+ },
24
+ {
25
+ title: "Data Fetching Patterns",
26
+ url: "https://nextjs.org/docs/app/building-your-application/data-fetching",
27
+ type: "docs",
28
+ difficulty: "advanced",
29
+ },
30
+ ],
31
+ react: [
32
+ {
33
+ title: "Official Documentation",
34
+ url: "https://react.dev",
35
+ type: "docs",
36
+ difficulty: "beginner",
37
+ },
38
+ {
39
+ title: "React Quick Start",
40
+ url: "https://react.dev/learn",
41
+ type: "tutorial",
42
+ difficulty: "beginner",
43
+ },
44
+ {
45
+ title: "Thinking in React",
46
+ url: "https://react.dev/learn/thinking-in-react",
47
+ type: "tutorial",
48
+ difficulty: "intermediate",
49
+ },
50
+ {
51
+ title: "React Server Components",
52
+ url: "https://react.dev/reference/rsc/server-components",
53
+ type: "docs",
54
+ difficulty: "advanced",
55
+ },
56
+ ],
57
+ vue: [
58
+ {
59
+ title: "Official Documentation",
60
+ url: "https://vuejs.org/guide/introduction.html",
61
+ type: "docs",
62
+ difficulty: "beginner",
63
+ },
64
+ {
65
+ title: "Vue Tutorial",
66
+ url: "https://vuejs.org/tutorial/",
67
+ type: "tutorial",
68
+ difficulty: "beginner",
69
+ },
70
+ {
71
+ title: "Composition API In-Depth",
72
+ url: "https://vuejs.org/guide/extras/composition-api-faq.html",
73
+ type: "docs",
74
+ difficulty: "intermediate",
75
+ },
76
+ ],
77
+ svelte: [
78
+ {
79
+ title: "Official Documentation",
80
+ url: "https://svelte.dev/docs",
81
+ type: "docs",
82
+ difficulty: "beginner",
83
+ },
84
+ {
85
+ title: "Svelte Interactive Tutorial",
86
+ url: "https://learn.svelte.dev/",
87
+ type: "tutorial",
88
+ difficulty: "beginner",
89
+ },
90
+ {
91
+ title: "SvelteKit Documentation",
92
+ url: "https://svelte.dev/docs/kit/introduction",
93
+ type: "docs",
94
+ difficulty: "intermediate",
95
+ },
96
+ ],
97
+ express: [
98
+ {
99
+ title: "Official Documentation",
100
+ url: "https://expressjs.com/",
101
+ type: "docs",
102
+ difficulty: "beginner",
103
+ },
104
+ {
105
+ title: "Getting Started Guide",
106
+ url: "https://expressjs.com/en/starter/installing.html",
107
+ type: "tutorial",
108
+ difficulty: "beginner",
109
+ },
110
+ {
111
+ title: "Advanced Routing",
112
+ url: "https://expressjs.com/en/guide/routing.html",
113
+ type: "docs",
114
+ difficulty: "intermediate",
115
+ },
116
+ ],
117
+ fastapi: [
118
+ {
119
+ title: "Official Documentation",
120
+ url: "https://fastapi.tiangolo.com/",
121
+ type: "docs",
122
+ difficulty: "beginner",
123
+ },
124
+ {
125
+ title: "FastAPI Tutorial",
126
+ url: "https://fastapi.tiangolo.com/tutorial/",
127
+ type: "tutorial",
128
+ difficulty: "beginner",
129
+ },
130
+ {
131
+ title: "Advanced User Guide",
132
+ url: "https://fastapi.tiangolo.com/advanced/",
133
+ type: "docs",
134
+ difficulty: "advanced",
135
+ },
136
+ ],
137
+ django: [
138
+ {
139
+ title: "Official Documentation",
140
+ url: "https://docs.djangoproject.com/",
141
+ type: "docs",
142
+ difficulty: "beginner",
143
+ },
144
+ {
145
+ title: "Django Tutorial",
146
+ url: "https://docs.djangoproject.com/en/stable/intro/tutorial01/",
147
+ type: "tutorial",
148
+ difficulty: "beginner",
149
+ },
150
+ {
151
+ title: "Django REST Framework",
152
+ url: "https://www.django-rest-framework.org/tutorial/quickstart/",
153
+ type: "tutorial",
154
+ difficulty: "intermediate",
155
+ },
156
+ {
157
+ title: "Django Performance Optimization",
158
+ url: "https://docs.djangoproject.com/en/stable/topics/performance/",
159
+ type: "docs",
160
+ difficulty: "advanced",
161
+ },
162
+ ],
163
+ nestjs: [
164
+ {
165
+ title: "Official Documentation",
166
+ url: "https://docs.nestjs.com/",
167
+ type: "docs",
168
+ difficulty: "beginner",
169
+ },
170
+ {
171
+ title: "First Steps",
172
+ url: "https://docs.nestjs.com/first-steps",
173
+ type: "tutorial",
174
+ difficulty: "beginner",
175
+ },
176
+ {
177
+ title: "Custom Decorators & Guards",
178
+ url: "https://docs.nestjs.com/guards",
179
+ type: "docs",
180
+ difficulty: "intermediate",
181
+ },
182
+ {
183
+ title: "Microservices",
184
+ url: "https://docs.nestjs.com/microservices/basics",
185
+ type: "docs",
186
+ difficulty: "advanced",
187
+ },
188
+ ],
189
+ postgresql: [
190
+ {
191
+ title: "Official Documentation",
192
+ url: "https://www.postgresql.org/docs/current/",
193
+ type: "docs",
194
+ difficulty: "beginner",
195
+ },
196
+ {
197
+ title: "PostgreSQL Tutorial",
198
+ url: "https://www.postgresql.org/docs/current/tutorial.html",
199
+ type: "tutorial",
200
+ difficulty: "beginner",
201
+ },
202
+ {
203
+ title: "Performance Tips",
204
+ url: "https://www.postgresql.org/docs/current/performance-tips.html",
205
+ type: "docs",
206
+ difficulty: "intermediate",
207
+ },
208
+ {
209
+ title: "Indexing Best Practices",
210
+ url: "https://www.postgresql.org/docs/current/indexes.html",
211
+ type: "docs",
212
+ difficulty: "advanced",
213
+ },
214
+ ],
215
+ mongodb: [
216
+ {
217
+ title: "Official Documentation",
218
+ url: "https://www.mongodb.com/docs/manual/",
219
+ type: "docs",
220
+ difficulty: "beginner",
221
+ },
222
+ {
223
+ title: "MongoDB University",
224
+ url: "https://learn.mongodb.com/",
225
+ type: "course",
226
+ difficulty: "beginner",
227
+ },
228
+ {
229
+ title: "Aggregation Pipeline",
230
+ url: "https://www.mongodb.com/docs/manual/aggregation/",
231
+ type: "docs",
232
+ difficulty: "intermediate",
233
+ },
234
+ ],
235
+ redis: [
236
+ {
237
+ title: "Official Documentation",
238
+ url: "https://redis.io/docs/latest/",
239
+ type: "docs",
240
+ difficulty: "beginner",
241
+ },
242
+ {
243
+ title: "Redis University",
244
+ url: "https://university.redis.io/",
245
+ type: "course",
246
+ difficulty: "beginner",
247
+ },
248
+ {
249
+ title: "Data Structures In-Depth",
250
+ url: "https://redis.io/docs/latest/develop/data-types/",
251
+ type: "docs",
252
+ difficulty: "intermediate",
253
+ },
254
+ ],
255
+ prisma: [
256
+ {
257
+ title: "Official Documentation",
258
+ url: "https://www.prisma.io/docs",
259
+ type: "docs",
260
+ difficulty: "beginner",
261
+ },
262
+ {
263
+ title: "Quickstart",
264
+ url: "https://www.prisma.io/docs/getting-started/quickstart",
265
+ type: "tutorial",
266
+ difficulty: "beginner",
267
+ },
268
+ {
269
+ title: "Advanced Query Patterns",
270
+ url: "https://www.prisma.io/docs/orm/prisma-client/queries",
271
+ type: "docs",
272
+ difficulty: "intermediate",
273
+ },
274
+ ],
275
+ drizzle: [
276
+ {
277
+ title: "Official Documentation",
278
+ url: "https://orm.drizzle.team/docs/overview",
279
+ type: "docs",
280
+ difficulty: "beginner",
281
+ },
282
+ {
283
+ title: "Getting Started",
284
+ url: "https://orm.drizzle.team/docs/get-started",
285
+ type: "tutorial",
286
+ difficulty: "beginner",
287
+ },
288
+ {
289
+ title: "Joins & Relations",
290
+ url: "https://orm.drizzle.team/docs/joins",
291
+ type: "docs",
292
+ difficulty: "intermediate",
293
+ },
294
+ ],
295
+ tailwindcss: [
296
+ {
297
+ title: "Official Documentation",
298
+ url: "https://tailwindcss.com/docs",
299
+ type: "docs",
300
+ difficulty: "beginner",
301
+ },
302
+ {
303
+ title: "Installation Guide",
304
+ url: "https://tailwindcss.com/docs/installation",
305
+ type: "tutorial",
306
+ difficulty: "beginner",
307
+ },
308
+ {
309
+ title: "Customizing Your Theme",
310
+ url: "https://tailwindcss.com/docs/theme",
311
+ type: "docs",
312
+ difficulty: "intermediate",
313
+ },
314
+ ],
315
+ typescript: [
316
+ {
317
+ title: "Official Documentation",
318
+ url: "https://www.typescriptlang.org/docs/",
319
+ type: "docs",
320
+ difficulty: "beginner",
321
+ },
322
+ {
323
+ title: "TypeScript Handbook",
324
+ url: "https://www.typescriptlang.org/docs/handbook/intro.html",
325
+ type: "tutorial",
326
+ difficulty: "beginner",
327
+ },
328
+ {
329
+ title: "Advanced Types",
330
+ url: "https://www.typescriptlang.org/docs/handbook/2/types-from-types.html",
331
+ type: "docs",
332
+ difficulty: "intermediate",
333
+ },
334
+ {
335
+ title: "Type Challenges",
336
+ url: "https://github.com/type-challenges/type-challenges",
337
+ type: "tutorial",
338
+ difficulty: "advanced",
339
+ },
340
+ ],
341
+ docker: [
342
+ {
343
+ title: "Official Documentation",
344
+ url: "https://docs.docker.com/",
345
+ type: "docs",
346
+ difficulty: "beginner",
347
+ },
348
+ {
349
+ title: "Getting Started",
350
+ url: "https://docs.docker.com/get-started/",
351
+ type: "tutorial",
352
+ difficulty: "beginner",
353
+ },
354
+ {
355
+ title: "Docker Compose",
356
+ url: "https://docs.docker.com/compose/",
357
+ type: "docs",
358
+ difficulty: "intermediate",
359
+ },
360
+ {
361
+ title: "Multi-Stage Builds",
362
+ url: "https://docs.docker.com/build/building/multi-stage/",
363
+ type: "docs",
364
+ difficulty: "advanced",
365
+ },
366
+ ],
367
+ vitest: [
368
+ {
369
+ title: "Official Documentation",
370
+ url: "https://vitest.dev/guide/",
371
+ type: "docs",
372
+ difficulty: "beginner",
373
+ },
374
+ {
375
+ title: "Getting Started",
376
+ url: "https://vitest.dev/guide/",
377
+ type: "tutorial",
378
+ difficulty: "beginner",
379
+ },
380
+ {
381
+ title: "Mocking",
382
+ url: "https://vitest.dev/guide/mocking.html",
383
+ type: "docs",
384
+ difficulty: "intermediate",
385
+ },
386
+ ],
387
+ git: [
388
+ {
389
+ title: "Official Documentation",
390
+ url: "https://git-scm.com/doc",
391
+ type: "docs",
392
+ difficulty: "beginner",
393
+ },
394
+ {
395
+ title: "Pro Git Book",
396
+ url: "https://git-scm.com/book/en/v2",
397
+ type: "book",
398
+ difficulty: "beginner",
399
+ },
400
+ {
401
+ title: "Interactive Branching Tutorial",
402
+ url: "https://learngitbranching.js.org/",
403
+ type: "tutorial",
404
+ difficulty: "intermediate",
405
+ },
406
+ ],
407
+ nginx: [
408
+ {
409
+ title: "Official Documentation",
410
+ url: "https://nginx.org/en/docs/",
411
+ type: "docs",
412
+ difficulty: "beginner",
413
+ },
414
+ {
415
+ title: "Beginner's Guide",
416
+ url: "https://nginx.org/en/docs/beginners_guide.html",
417
+ type: "tutorial",
418
+ difficulty: "beginner",
419
+ },
420
+ {
421
+ title: "Reverse Proxy Configuration",
422
+ url: "https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/",
423
+ type: "docs",
424
+ difficulty: "intermediate",
425
+ },
426
+ ],
427
+ python: [
428
+ {
429
+ title: "Official Documentation",
430
+ url: "https://docs.python.org/3/",
431
+ type: "docs",
432
+ difficulty: "beginner",
433
+ },
434
+ {
435
+ title: "Python Tutorial",
436
+ url: "https://docs.python.org/3/tutorial/",
437
+ type: "tutorial",
438
+ difficulty: "beginner",
439
+ },
440
+ {
441
+ title: "Real Python Tutorials",
442
+ url: "https://realpython.com/",
443
+ type: "tutorial",
444
+ difficulty: "intermediate",
445
+ },
446
+ {
447
+ title: "Python Design Patterns",
448
+ url: "https://python-patterns.guide/",
449
+ type: "docs",
450
+ difficulty: "advanced",
451
+ },
452
+ ],
453
+ };
454
+ /**
455
+ * Get learning resources for a technology by its ID.
456
+ * Returns undefined if no resources are available.
457
+ */
458
+ export function getLearningResources(technologyId) {
459
+ return LEARNING_RESOURCES[technologyId];
460
+ }
461
+ //# sourceMappingURL=learning-resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learning-resources.js","sourceRoot":"","sources":["../src/learning-resources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Registry Loader — Reads and validates technology YAML files.
3
+ */
4
+ import type { Technology } from "@stackweld/core";
5
+ /**
6
+ * Load all technologies from the YAML registry.
7
+ * Validates each one against the JSON Schema.
8
+ */
9
+ export declare function loadAllTechnologies(): Technology[];
10
+ /**
11
+ * Load a single technology by ID.
12
+ */
13
+ export declare function loadTechnology(id: string): Technology | null;
14
+ /**
15
+ * Get all technology IDs.
16
+ */
17
+ export declare function listTechnologyIds(): string[];
18
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAclD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,UAAU,EAAE,CA2BlD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAG5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAE5C"}
package/dist/loader.js ADDED
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Registry Loader — Reads and validates technology YAML files.
3
+ */
4
+ import * as fs from "node:fs";
5
+ import * as path from "node:path";
6
+ import Ajv from "ajv";
7
+ import { parse as parseYaml } from "yaml";
8
+ import { technologySchema } from "./schema.js";
9
+ const ajv = new Ajv({ allErrors: true });
10
+ const validate = ajv.compile(technologySchema);
11
+ // Resolve technologies directory — works from both src/ (dev) and dist/ (build)
12
+ const thisDir = path.dirname(new URL(import.meta.url).pathname);
13
+ const distTechDir = path.join(thisDir, "technologies");
14
+ const srcTechDir = path.join(thisDir, "..", "src", "technologies");
15
+ const TECH_DIR = fs.existsSync(distTechDir) ? distTechDir : srcTechDir;
16
+ /**
17
+ * Load all technologies from the YAML registry.
18
+ * Validates each one against the JSON Schema.
19
+ */
20
+ export function loadAllTechnologies() {
21
+ const technologies = [];
22
+ const categories = fs.readdirSync(TECH_DIR);
23
+ for (const category of categories) {
24
+ const categoryPath = path.join(TECH_DIR, category);
25
+ if (!fs.statSync(categoryPath).isDirectory())
26
+ continue;
27
+ const files = fs
28
+ .readdirSync(categoryPath)
29
+ .filter((f) => f.endsWith(".yaml") || f.endsWith(".yml"));
30
+ for (const file of files) {
31
+ const filePath = path.join(categoryPath, file);
32
+ const raw = fs.readFileSync(filePath, "utf-8");
33
+ const data = parseYaml(raw);
34
+ if (!validate(data)) {
35
+ const errors = validate.errors?.map((e) => `${e.instancePath}: ${e.message}`).join(", ");
36
+ throw new Error(`Invalid technology file ${file}: ${errors}`);
37
+ }
38
+ technologies.push(data);
39
+ }
40
+ }
41
+ return technologies;
42
+ }
43
+ /**
44
+ * Load a single technology by ID.
45
+ */
46
+ export function loadTechnology(id) {
47
+ const all = loadAllTechnologies();
48
+ return all.find((t) => t.id === id) ?? null;
49
+ }
50
+ /**
51
+ * Get all technology IDs.
52
+ */
53
+ export function listTechnologyIds() {
54
+ return loadAllTechnologies().map((t) => t.id);
55
+ }
56
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}