@ironbackend/core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.d.ts +33 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +123 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/rules/index.d.ts +36 -0
  7. package/dist/rules/index.d.ts.map +1 -0
  8. package/dist/rules/index.js +505 -0
  9. package/dist/rules/index.js.map +1 -0
  10. package/dist/security/index.d.ts +15 -0
  11. package/dist/security/index.d.ts.map +1 -0
  12. package/dist/security/index.js +243 -0
  13. package/dist/security/index.js.map +1 -0
  14. package/dist/stacks/index.d.ts +38 -0
  15. package/dist/stacks/index.d.ts.map +1 -0
  16. package/dist/stacks/index.js +193 -0
  17. package/dist/stacks/index.js.map +1 -0
  18. package/dist/styles/clean-monolith.d.ts +7 -0
  19. package/dist/styles/clean-monolith.d.ts.map +1 -0
  20. package/dist/styles/clean-monolith.js +124 -0
  21. package/dist/styles/clean-monolith.js.map +1 -0
  22. package/dist/styles/event-driven.d.ts +12 -0
  23. package/dist/styles/event-driven.d.ts.map +1 -0
  24. package/dist/styles/event-driven.js +247 -0
  25. package/dist/styles/event-driven.js.map +1 -0
  26. package/dist/styles/hexagonal.d.ts +7 -0
  27. package/dist/styles/hexagonal.d.ts.map +1 -0
  28. package/dist/styles/hexagonal.js +146 -0
  29. package/dist/styles/hexagonal.js.map +1 -0
  30. package/dist/styles/index.d.ts +33 -0
  31. package/dist/styles/index.d.ts.map +1 -0
  32. package/dist/styles/index.js +75 -0
  33. package/dist/styles/index.js.map +1 -0
  34. package/dist/styles/microservices.d.ts +12 -0
  35. package/dist/styles/microservices.d.ts.map +1 -0
  36. package/dist/styles/microservices.js +218 -0
  37. package/dist/styles/microservices.js.map +1 -0
  38. package/dist/styles/modular-monolith.d.ts +7 -0
  39. package/dist/styles/modular-monolith.d.ts.map +1 -0
  40. package/dist/styles/modular-monolith.js +131 -0
  41. package/dist/styles/modular-monolith.js.map +1 -0
  42. package/dist/styles/specialized.d.ts +17 -0
  43. package/dist/styles/specialized.d.ts.map +1 -0
  44. package/dist/styles/specialized.js +379 -0
  45. package/dist/styles/specialized.js.map +1 -0
  46. package/dist/types.d.ts +143 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +7 -0
  49. package/dist/types.js.map +1 -0
  50. package/package.json +56 -0
@@ -0,0 +1,505 @@
1
+ "use strict";
2
+ /**
3
+ * IronBackend Design Rules
4
+ * Enforceable rules for backend development
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.rulesByCategory = exports.allRules = exports.asyncRules = exports.validationRules = exports.namingRules = exports.dataAccessRules = exports.transactionRules = exports.errorHandlingRules = exports.domainRules = exports.apiRules = void 0;
8
+ exports.getRulesByCategory = getRulesByCategory;
9
+ exports.getRule = getRule;
10
+ exports.getErrorRules = getErrorRules;
11
+ exports.getWarnRules = getWarnRules;
12
+ exports.formatRulesForPrompt = formatRulesForPrompt;
13
+ // ============================================================================
14
+ // API Design Rules
15
+ // ============================================================================
16
+ exports.apiRules = [
17
+ {
18
+ id: 'API-001',
19
+ category: 'API',
20
+ rule: 'All endpoints must have explicit request/response schemas',
21
+ severity: 'ERROR',
22
+ rationale: 'Without schemas, API contracts are implicit and prone to breaking changes'
23
+ },
24
+ {
25
+ id: 'API-002',
26
+ category: 'API',
27
+ rule: 'Use plural nouns for resource collections (/users, not /user)',
28
+ severity: 'ERROR',
29
+ rationale: 'Consistent naming convention makes APIs predictable'
30
+ },
31
+ {
32
+ id: 'API-003',
33
+ category: 'API',
34
+ rule: 'HTTP methods must match semantics (POST=create, PUT=replace, PATCH=partial, DELETE=remove)',
35
+ severity: 'ERROR',
36
+ rationale: 'Correct HTTP semantics enable proper caching, idempotency handling'
37
+ },
38
+ {
39
+ id: 'API-004',
40
+ category: 'API',
41
+ rule: 'Return 201 for creation, 200 for success, 204 for no content',
42
+ severity: 'WARN',
43
+ rationale: 'Correct status codes help clients handle responses appropriately'
44
+ },
45
+ {
46
+ id: 'API-005',
47
+ category: 'API',
48
+ rule: 'Pagination required for list endpoints returning > 20 items',
49
+ severity: 'ERROR',
50
+ rationale: 'Unbounded lists cause performance issues and memory problems'
51
+ },
52
+ {
53
+ id: 'API-006',
54
+ category: 'API',
55
+ rule: 'Include X-Request-ID header in all responses',
56
+ severity: 'WARN',
57
+ rationale: 'Request tracing is essential for debugging distributed systems'
58
+ },
59
+ {
60
+ id: 'API-007',
61
+ category: 'API',
62
+ rule: 'Version APIs in URL path (/v1/users) or header',
63
+ severity: 'ERROR',
64
+ rationale: 'Versioning prevents breaking changes from affecting existing clients'
65
+ },
66
+ {
67
+ id: 'API-008',
68
+ category: 'API',
69
+ rule: 'Error responses must include error code, message, and timestamp',
70
+ severity: 'ERROR',
71
+ rationale: 'Structured errors enable programmatic error handling'
72
+ },
73
+ {
74
+ id: 'API-009',
75
+ category: 'API',
76
+ rule: 'Rate limiting headers must be present (X-RateLimit-*)',
77
+ severity: 'WARN',
78
+ rationale: 'Clients need to know rate limits to implement backoff'
79
+ },
80
+ {
81
+ id: 'API-010',
82
+ category: 'API',
83
+ rule: 'No verbs in URL paths (/users/create is wrong, use POST /users)',
84
+ severity: 'ERROR',
85
+ rationale: 'HTTP methods provide the verb, URLs should be nouns'
86
+ }
87
+ ];
88
+ // ============================================================================
89
+ // Domain Modeling Rules
90
+ // ============================================================================
91
+ exports.domainRules = [
92
+ {
93
+ id: 'DOM-001',
94
+ category: 'DOMAIN',
95
+ rule: 'Entities must have immutable identifiers',
96
+ severity: 'ERROR',
97
+ rationale: 'Changing IDs breaks referential integrity'
98
+ },
99
+ {
100
+ id: 'DOM-002',
101
+ category: 'DOMAIN',
102
+ rule: 'Value objects must be immutable and compared by value',
103
+ severity: 'ERROR',
104
+ rationale: 'Mutable value objects cause subtle bugs in collections and caching'
105
+ },
106
+ {
107
+ id: 'DOM-003',
108
+ category: 'DOMAIN',
109
+ rule: 'Aggregates must have a single root entity',
110
+ severity: 'ERROR',
111
+ rationale: 'Multiple roots create ambiguous transaction boundaries'
112
+ },
113
+ {
114
+ id: 'DOM-004',
115
+ category: 'DOMAIN',
116
+ rule: 'Domain events named in past tense (OrderCreated, not CreateOrder)',
117
+ severity: 'ERROR',
118
+ rationale: 'Events represent facts that happened, not intentions'
119
+ },
120
+ {
121
+ id: 'DOM-005',
122
+ category: 'DOMAIN',
123
+ rule: 'Domain logic must not depend on framework code',
124
+ severity: 'ERROR',
125
+ rationale: 'Domain should be portable and testable without framework'
126
+ },
127
+ {
128
+ id: 'DOM-006',
129
+ category: 'DOMAIN',
130
+ rule: 'Business rules encapsulated in domain layer, not services',
131
+ severity: 'WARN',
132
+ rationale: 'Anemic domain models lead to scattered business logic'
133
+ },
134
+ {
135
+ id: 'DOM-007',
136
+ category: 'DOMAIN',
137
+ rule: 'No primitive obsession: use value objects for domain concepts',
138
+ severity: 'WARN',
139
+ rationale: 'Email, Money, UserId should be types, not strings/numbers'
140
+ },
141
+ {
142
+ id: 'DOM-008',
143
+ category: 'DOMAIN',
144
+ rule: 'Aggregate references by ID only, not object reference',
145
+ severity: 'ERROR',
146
+ rationale: 'Object references create coupling and lazy loading issues'
147
+ }
148
+ ];
149
+ // ============================================================================
150
+ // Error Handling Rules
151
+ // ============================================================================
152
+ exports.errorHandlingRules = [
153
+ {
154
+ id: 'ERR-001',
155
+ category: 'ERROR_HANDLING',
156
+ rule: 'Use typed exceptions/errors, not generic Error class',
157
+ severity: 'ERROR',
158
+ rationale: 'Typed exceptions enable proper error handling and recovery'
159
+ },
160
+ {
161
+ id: 'ERR-002',
162
+ category: 'ERROR_HANDLING',
163
+ rule: 'Exceptions must include error code and message',
164
+ severity: 'ERROR',
165
+ rationale: 'Error codes enable programmatic handling, messages for humans'
166
+ },
167
+ {
168
+ id: 'ERR-003',
169
+ category: 'ERROR_HANDLING',
170
+ rule: 'Never expose stack traces in production API responses',
171
+ severity: 'ERROR',
172
+ rationale: 'Stack traces leak implementation details and security info'
173
+ },
174
+ {
175
+ id: 'ERR-004',
176
+ category: 'ERROR_HANDLING',
177
+ rule: 'Log all errors with correlation ID',
178
+ severity: 'ERROR',
179
+ rationale: 'Correlation IDs enable tracing errors across services'
180
+ },
181
+ {
182
+ id: 'ERR-005',
183
+ category: 'ERROR_HANDLING',
184
+ rule: 'Distinguish between client errors (4xx) and server errors (5xx)',
185
+ severity: 'ERROR',
186
+ rationale: 'Clients need to know if error is their fault or server issue'
187
+ },
188
+ {
189
+ id: 'ERR-006',
190
+ category: 'ERROR_HANDLING',
191
+ rule: 'Implement global exception handler',
192
+ severity: 'ERROR',
193
+ rationale: 'Unhandled exceptions should never leak to clients'
194
+ },
195
+ {
196
+ id: 'ERR-007',
197
+ category: 'ERROR_HANDLING',
198
+ rule: 'Expected failures (validation) use Result type, not exceptions',
199
+ severity: 'WARN',
200
+ rationale: 'Exceptions for control flow are expensive and unclear'
201
+ },
202
+ {
203
+ id: 'ERR-008',
204
+ category: 'ERROR_HANDLING',
205
+ rule: 'Unexpected failures throw exceptions',
206
+ severity: 'WARN',
207
+ rationale: 'Exceptions signal truly exceptional conditions'
208
+ }
209
+ ];
210
+ // ============================================================================
211
+ // Transaction Rules
212
+ // ============================================================================
213
+ exports.transactionRules = [
214
+ {
215
+ id: 'TXN-001',
216
+ category: 'TRANSACTIONS',
217
+ rule: 'Transactions scoped to single aggregate modification',
218
+ severity: 'ERROR',
219
+ rationale: 'Cross-aggregate transactions create scaling bottlenecks'
220
+ },
221
+ {
222
+ id: 'TXN-002',
223
+ category: 'TRANSACTIONS',
224
+ rule: 'No transactions spanning multiple aggregates',
225
+ severity: 'ERROR',
226
+ rationale: 'Use saga pattern for cross-aggregate consistency instead'
227
+ },
228
+ {
229
+ id: 'TXN-003',
230
+ category: 'TRANSACTIONS',
231
+ rule: 'Use saga pattern for cross-aggregate consistency',
232
+ severity: 'WARN',
233
+ rationale: 'Sagas enable eventual consistency without distributed transactions'
234
+ },
235
+ {
236
+ id: 'TXN-004',
237
+ category: 'TRANSACTIONS',
238
+ rule: 'Transaction timeout must be explicit (< 30 seconds)',
239
+ severity: 'ERROR',
240
+ rationale: 'Long transactions cause lock contention and resource exhaustion'
241
+ },
242
+ {
243
+ id: 'TXN-005',
244
+ category: 'TRANSACTIONS',
245
+ rule: 'Read operations should not acquire write locks',
246
+ severity: 'WARN',
247
+ rationale: 'Unnecessary locking reduces concurrency'
248
+ },
249
+ {
250
+ id: 'TXN-006',
251
+ category: 'TRANSACTIONS',
252
+ rule: 'Retry logic required for transient failures',
253
+ severity: 'WARN',
254
+ rationale: 'Transient failures (deadlocks, timeouts) are recoverable'
255
+ }
256
+ ];
257
+ // ============================================================================
258
+ // Data Access Rules
259
+ // ============================================================================
260
+ exports.dataAccessRules = [
261
+ {
262
+ id: 'DAT-001',
263
+ category: 'DATA_ACCESS',
264
+ rule: 'Repositories return domain entities, not database records',
265
+ severity: 'ERROR',
266
+ rationale: 'Domain layer should not know about database structure'
267
+ },
268
+ {
269
+ id: 'DAT-002',
270
+ category: 'DATA_ACCESS',
271
+ rule: 'Query logic in repository, not in service layer',
272
+ severity: 'ERROR',
273
+ rationale: 'Repositories encapsulate data access, services orchestrate'
274
+ },
275
+ {
276
+ id: 'DAT-003',
277
+ category: 'DATA_ACCESS',
278
+ rule: 'No raw SQL in application code (except repository layer)',
279
+ severity: 'ERROR',
280
+ rationale: 'SQL scattered in app code is unmaintainable and insecure'
281
+ },
282
+ {
283
+ id: 'DAT-004',
284
+ category: 'DATA_ACCESS',
285
+ rule: 'Database indexes for all frequently-queried columns',
286
+ severity: 'WARN',
287
+ rationale: 'Missing indexes cause slow queries at scale'
288
+ },
289
+ {
290
+ id: 'DAT-005',
291
+ category: 'DATA_ACCESS',
292
+ rule: 'Connection pooling mandatory',
293
+ severity: 'ERROR',
294
+ rationale: 'Creating connections per request is expensive'
295
+ },
296
+ {
297
+ id: 'DAT-006',
298
+ category: 'DATA_ACCESS',
299
+ rule: 'No N+1 queries (use eager loading or batching)',
300
+ severity: 'ERROR',
301
+ rationale: 'N+1 queries cause severe performance degradation'
302
+ },
303
+ {
304
+ id: 'DAT-007',
305
+ category: 'DATA_ACCESS',
306
+ rule: 'Soft delete preferred over hard delete for audit trails',
307
+ severity: 'WARN',
308
+ rationale: 'Hard deletes lose historical data and break referential integrity'
309
+ }
310
+ ];
311
+ // ============================================================================
312
+ // Naming Rules
313
+ // ============================================================================
314
+ exports.namingRules = [
315
+ {
316
+ id: 'NAM-001',
317
+ category: 'NAMING',
318
+ rule: 'Classes use PascalCase',
319
+ severity: 'ERROR',
320
+ rationale: 'Consistent naming convention across all code'
321
+ },
322
+ {
323
+ id: 'NAM-002',
324
+ category: 'NAMING',
325
+ rule: 'Methods/functions use camelCase',
326
+ severity: 'ERROR',
327
+ rationale: 'Consistent naming convention across all code'
328
+ },
329
+ {
330
+ id: 'NAM-003',
331
+ category: 'NAMING',
332
+ rule: 'Constants use SCREAMING_SNAKE_CASE',
333
+ severity: 'ERROR',
334
+ rationale: 'Constants should be visually distinct from variables'
335
+ },
336
+ {
337
+ id: 'NAM-004',
338
+ category: 'NAMING',
339
+ rule: 'Interfaces prefixed with I or suffixed with role (Repository, Service)',
340
+ severity: 'WARN',
341
+ rationale: 'Interfaces should be distinguishable from implementations'
342
+ },
343
+ {
344
+ id: 'NAM-005',
345
+ category: 'NAMING',
346
+ rule: 'Boolean variables prefixed with is, has, should, can',
347
+ severity: 'WARN',
348
+ rationale: 'Boolean intent should be clear from the name'
349
+ },
350
+ {
351
+ id: 'NAM-006',
352
+ category: 'NAMING',
353
+ rule: 'Avoid abbreviations except widely-known ones (ID, HTTP, URL)',
354
+ severity: 'ERROR',
355
+ rationale: 'Abbreviations reduce readability and cause inconsistency'
356
+ },
357
+ {
358
+ id: 'NAM-007',
359
+ category: 'NAMING',
360
+ rule: 'Collection variables use plural nouns',
361
+ severity: 'ERROR',
362
+ rationale: 'users is clearly a collection, user is ambiguous'
363
+ }
364
+ ];
365
+ // ============================================================================
366
+ // Validation Rules
367
+ // ============================================================================
368
+ exports.validationRules = [
369
+ {
370
+ id: 'VAL-001',
371
+ category: 'VALIDATION',
372
+ rule: 'Validate at system boundaries (API input)',
373
+ severity: 'ERROR',
374
+ rationale: 'Never trust input from outside the system'
375
+ },
376
+ {
377
+ id: 'VAL-002',
378
+ category: 'VALIDATION',
379
+ rule: 'Use schema validation libraries, not manual checks',
380
+ severity: 'WARN',
381
+ rationale: 'Schema validators are consistent, tested, and declarative'
382
+ },
383
+ {
384
+ id: 'VAL-003',
385
+ category: 'VALIDATION',
386
+ rule: 'Return all validation errors at once, not one at a time',
387
+ severity: 'ERROR',
388
+ rationale: 'Users should fix all issues in one attempt'
389
+ },
390
+ {
391
+ id: 'VAL-004',
392
+ category: 'VALIDATION',
393
+ rule: 'Domain entities validate invariants on construction',
394
+ severity: 'ERROR',
395
+ rationale: 'Invalid entities should never exist in memory'
396
+ },
397
+ {
398
+ id: 'VAL-005',
399
+ category: 'VALIDATION',
400
+ rule: 'Sanitize all user input before storage',
401
+ severity: 'ERROR',
402
+ rationale: 'Unsanitized input enables injection attacks'
403
+ }
404
+ ];
405
+ // ============================================================================
406
+ // Async / Concurrency Rules
407
+ // ============================================================================
408
+ exports.asyncRules = [
409
+ {
410
+ id: 'ASY-001',
411
+ category: 'ASYNC',
412
+ rule: 'Async handlers must be idempotent',
413
+ severity: 'ERROR',
414
+ rationale: 'Messages can be delivered multiple times'
415
+ },
416
+ {
417
+ id: 'ASY-002',
418
+ category: 'ASYNC',
419
+ rule: 'Include message ID for deduplication',
420
+ severity: 'ERROR',
421
+ rationale: 'Deduplication requires a unique identifier'
422
+ },
423
+ {
424
+ id: 'ASY-003',
425
+ category: 'ASYNC',
426
+ rule: 'Dead letter queue required for failed messages',
427
+ severity: 'ERROR',
428
+ rationale: 'Failed messages should not block the queue or be lost'
429
+ },
430
+ {
431
+ id: 'ASY-004',
432
+ category: 'ASYNC',
433
+ rule: 'Set explicit timeout for async operations',
434
+ severity: 'ERROR',
435
+ rationale: 'Operations without timeout can hang forever'
436
+ },
437
+ {
438
+ id: 'ASY-005',
439
+ category: 'ASYNC',
440
+ rule: 'Use optimistic locking for concurrent updates',
441
+ severity: 'WARN',
442
+ rationale: 'Optimistic locking is more scalable than pessimistic'
443
+ },
444
+ {
445
+ id: 'ASY-006',
446
+ category: 'ASYNC',
447
+ rule: 'Document eventual consistency boundaries',
448
+ severity: 'WARN',
449
+ rationale: 'Developers need to know where data can be stale'
450
+ }
451
+ ];
452
+ // ============================================================================
453
+ // Aggregated Exports
454
+ // ============================================================================
455
+ exports.allRules = [
456
+ ...exports.apiRules,
457
+ ...exports.domainRules,
458
+ ...exports.errorHandlingRules,
459
+ ...exports.transactionRules,
460
+ ...exports.dataAccessRules,
461
+ ...exports.namingRules,
462
+ ...exports.validationRules,
463
+ ...exports.asyncRules,
464
+ ];
465
+ exports.rulesByCategory = {
466
+ 'API': exports.apiRules,
467
+ 'DOMAIN': exports.domainRules,
468
+ 'ERROR_HANDLING': exports.errorHandlingRules,
469
+ 'TRANSACTIONS': exports.transactionRules,
470
+ 'DATA_ACCESS': exports.dataAccessRules,
471
+ 'NAMING': exports.namingRules,
472
+ 'VALIDATION': exports.validationRules,
473
+ 'ASYNC': exports.asyncRules,
474
+ };
475
+ /**
476
+ * Get rules by category
477
+ */
478
+ function getRulesByCategory(category) {
479
+ return exports.rulesByCategory[category] || [];
480
+ }
481
+ /**
482
+ * Get rule by ID
483
+ */
484
+ function getRule(id) {
485
+ return exports.allRules.find(rule => rule.id === id);
486
+ }
487
+ /**
488
+ * Get all ERROR severity rules
489
+ */
490
+ function getErrorRules() {
491
+ return exports.allRules.filter(rule => rule.severity === 'ERROR');
492
+ }
493
+ /**
494
+ * Get all WARN severity rules
495
+ */
496
+ function getWarnRules() {
497
+ return exports.allRules.filter(rule => rule.severity === 'WARN');
498
+ }
499
+ /**
500
+ * Format rules for AI prompt
501
+ */
502
+ function formatRulesForPrompt(rules) {
503
+ return rules.map(rule => `[${rule.severity}] ${rule.id}: ${rule.rule}`).join('\n');
504
+ }
505
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * IronBackend Security & Reliability Playbooks
3
+ */
4
+ import type { SecurityPlaybook, AuthConfig } from '../types.js';
5
+ export declare const authStrategies: AuthConfig[];
6
+ export declare const securityPlaybook: SecurityPlaybook;
7
+ /**
8
+ * Get authentication strategy by type
9
+ */
10
+ export declare function getAuthStrategy(strategy: string): AuthConfig | undefined;
11
+ /**
12
+ * Format security playbook section for prompt
13
+ */
14
+ export declare function formatSecurityForPrompt(): string;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAMhE,eAAO,MAAM,cAAc,EAAE,UAAU,EAiFtC,CAAC;AAMF,eAAO,MAAM,gBAAgB,EAAE,gBAoH9B,CAAC;AAEF;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAExE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CA0BhD"}