@living-architecture/riviere-extract-config 0.4.2 → 0.4.4

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.
@@ -6,7 +6,7 @@ export type FindTarget = 'classes' | 'methods' | 'functions';
6
6
  * Standard architectural component types recognized by the Riviere extractor.
7
7
  * Each type represents a distinct role in the system's flow-based architecture.
8
8
  */
9
- export type ComponentType = 'api' | 'useCase' | 'domainOp' | 'event' | 'eventHandler' | 'ui';
9
+ export type ComponentType = 'api' | 'useCase' | 'domainOp' | 'event' | 'eventHandler' | 'eventPublisher' | 'ui';
10
10
  /** Matches elements with a specific decorator. */
11
11
  export interface HasDecoratorPredicate {
12
12
  hasDecorator: {
@@ -161,6 +161,47 @@ export interface DetectionRule {
161
161
  export type ComponentRule = NotUsed | DetectionRule;
162
162
  /** User-defined component types with their detection rules. */
163
163
  export type CustomTypes = Record<string, DetectionRule>;
164
+ /** Connection detection strategy. */
165
+ export type ConnectionFindTarget = 'methodCalls';
166
+ /** Connection link type indicating sync or async communication. */
167
+ export type ConnectionLinkType = 'sync' | 'async';
168
+ /** Matches a method call site for connection detection. */
169
+ export interface ConnectionCallSiteMatch {
170
+ methodName?: string;
171
+ receiverType?: string;
172
+ callerHasDecorator?: string[];
173
+ calleeType?: {
174
+ hasDecorator: string;
175
+ };
176
+ }
177
+ /** Extracts static type of argument at position. */
178
+ export interface FromArgumentExtractionRule {
179
+ fromArgument: number;
180
+ }
181
+ /** Extracts the static type name of the receiver. */
182
+ export interface FromReceiverTypeExtractionRule {
183
+ fromReceiverType: true;
184
+ }
185
+ /** Extracts the static type name of the caller. */
186
+ export interface FromCallerTypeExtractionRule {
187
+ fromCallerType: true;
188
+ }
189
+ /** Union of connection-specific extraction rule types. */
190
+ export type ConnectionExtractionRule = FromArgumentExtractionRule | FromReceiverTypeExtractionRule | FromCallerTypeExtractionRule;
191
+ /** Connection extraction rules mapping field names to extraction rules. */
192
+ export type ConnectionExtractBlock = Record<string, ConnectionExtractionRule>;
193
+ /** A pattern for detecting connections between components. */
194
+ export interface ConnectionPattern {
195
+ name: string;
196
+ find: ConnectionFindTarget;
197
+ where: ConnectionCallSiteMatch;
198
+ extract?: ConnectionExtractBlock;
199
+ linkType: ConnectionLinkType;
200
+ }
201
+ /** Connection detection configuration with pattern definitions. */
202
+ export interface ConnectionsConfig {
203
+ patterns: ConnectionPattern[];
204
+ }
164
205
  /**
165
206
  * Reference to an external module definition file.
166
207
  * The CLI expands these references before extraction by loading the referenced file.
@@ -182,8 +223,10 @@ export interface ModuleConfig {
182
223
  domainOp?: ComponentRule;
183
224
  event?: ComponentRule;
184
225
  eventHandler?: ComponentRule;
226
+ eventPublisher?: ComponentRule;
185
227
  ui?: ComponentRule;
186
228
  customTypes?: CustomTypes;
229
+ connections?: ConnectionsConfig;
187
230
  }
188
231
  /**
189
232
  * A fully resolved module with all component rules.
@@ -197,6 +240,7 @@ export interface Module {
197
240
  domainOp: ComponentRule;
198
241
  event: ComponentRule;
199
242
  eventHandler: ComponentRule;
243
+ eventPublisher: ComponentRule;
200
244
  ui: ComponentRule;
201
245
  customTypes?: CustomTypes;
202
246
  }
@@ -208,6 +252,7 @@ export interface Module {
208
252
  export interface ExtractionConfig {
209
253
  $schema?: string;
210
254
  modules: ModuleConfig[];
255
+ connections?: ConnectionsConfig;
211
256
  }
212
257
  /**
213
258
  * Fully resolved extraction config ready for the extractor.
@@ -217,4 +262,4 @@ export interface ResolvedExtractionConfig {
217
262
  $schema?: string;
218
263
  modules: Module[];
219
264
  }
220
- //# sourceMappingURL=types.d.ts.map
265
+ //# sourceMappingURL=extraction-config-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction-config-schema.d.ts","sourceRoot":"","sources":["../src/extraction-config-schema.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from './types';
1
+ export * from './extraction-config-schema';
2
2
  export { isValidExtractionConfig, validateExtractionConfig, validateExtractionConfigSchema, parseExtractionConfig, formatValidationErrors, mapAjvErrors, ExtractionConfigValidationError, type ValidationError, type ValidationResult, } from './validation';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,+BAA+B,EAC/B,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,+BAA+B,EAC/B,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAA"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export * from './types';
1
+ export * from './extraction-config-schema';
2
2
  export { isValidExtractionConfig, validateExtractionConfig, validateExtractionConfigSchema, parseExtractionConfig, formatValidationErrors, mapAjvErrors, ExtractionConfigValidationError, } from './validation';
@@ -1,4 +1,4 @@
1
- import type { ExtractionConfig, ResolvedExtractionConfig, Module } from './types';
1
+ import type { ExtractionConfig, ResolvedExtractionConfig, Module } from './extraction-config-schema';
2
2
  export declare function createModuleWithoutPath(): Omit<Module, 'path'>;
3
3
  export declare function createModuleWithoutApi(): Omit<Module, 'api'>;
4
4
  export declare function createMinimalModule(): Module;
@@ -1 +1 @@
1
- {"version":3,"file":"validation-fixtures.d.ts","sourceRoot":"","sources":["../src/validation-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,EACnD,MAAM,SAAS,CAAA;AAEhB,wBAAgB,uBAAuB,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAU9D;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAU5D;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAW5C;AAED,wBAAgB,mBAAmB,IAAI,gBAAgB,CAEtD;AAED,wBAAgB,oBAAoB,IAAI,wBAAwB,CAE/D;AAED,wBAAgB,mBAAmB,IAAI;IACrC,MAAM,EAAE,gBAAgB,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;CACf,CAOA;AAED,wBAAgB,gBAAgB,IAAI,gBAAgB,CAmCnD"}
1
+ {"version":3,"file":"validation-fixtures.d.ts","sourceRoot":"","sources":["../src/validation-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,EACnD,MAAM,4BAA4B,CAAA;AAEnC,wBAAgB,uBAAuB,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAW9D;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAW5D;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAY5C;AAED,wBAAgB,mBAAmB,IAAI,gBAAgB,CAEtD;AAED,wBAAgB,oBAAoB,IAAI,wBAAwB,CAE/D;AAED,wBAAgB,mBAAmB,IAAI;IACrC,MAAM,EAAE,gBAAgB,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;CACf,CAOA;AAED,wBAAgB,gBAAgB,IAAI,gBAAgB,CAoCnD"}
@@ -6,6 +6,7 @@ export function createModuleWithoutPath() {
6
6
  domainOp: { notUsed: true },
7
7
  event: { notUsed: true },
8
8
  eventHandler: { notUsed: true },
9
+ eventPublisher: { notUsed: true },
9
10
  ui: { notUsed: true },
10
11
  };
11
12
  }
@@ -17,6 +18,7 @@ export function createModuleWithoutApi() {
17
18
  domainOp: { notUsed: true },
18
19
  event: { notUsed: true },
19
20
  eventHandler: { notUsed: true },
21
+ eventPublisher: { notUsed: true },
20
22
  ui: { notUsed: true },
21
23
  };
22
24
  }
@@ -29,6 +31,7 @@ export function createMinimalModule() {
29
31
  domainOp: { notUsed: true },
30
32
  event: { notUsed: true },
31
33
  eventHandler: { notUsed: true },
34
+ eventPublisher: { notUsed: true },
32
35
  ui: { notUsed: true },
33
36
  };
34
37
  }
@@ -77,6 +80,7 @@ export function createFullConfig() {
77
80
  find: 'classes',
78
81
  where: { implementsInterface: { name: 'EventHandler' } },
79
82
  },
83
+ eventPublisher: { notUsed: true },
80
84
  ui: { notUsed: true },
81
85
  },
82
86
  ],
@@ -1,4 +1,4 @@
1
- import type { ExtractionConfig } from './types';
1
+ import type { ExtractionConfig } from './extraction-config-schema';
2
2
  /**
3
3
  * Type guard checking if data is a valid ExtractionConfig.
4
4
  * @param data - Data to validate.
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACoB,gBAAgB,EAC/C,MAAM,SAAS,CAAA;AA8BhB;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,gBAAgB,CAE/E;AAED,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,mDAAmD;AACnD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,eAAe,EAAE,CAAA;CAC1B;AAED,4DAA4D;AAC5D,qBAAa,+BAAgC,SAAQ,KAAK;aAE5B,MAAM,EAAE,eAAe,EAAE;IADrD,mEAAmE;gBACvC,MAAM,EAAE,eAAe,EAAE;CAItD;AASD,UAAU,YAAY;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,EAAE,CAQzF;AAgED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAa9E;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAqBxE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAExE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAMrE"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,gBAAgB,EAEjB,MAAM,4BAA4B,CAAA;AAgCnC;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,gBAAgB,CAE/E;AAED,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,mDAAmD;AACnD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,eAAe,EAAE,CAAA;CAC1B;AAED,4DAA4D;AAC5D,qBAAa,+BAAgC,SAAQ,KAAK;aAE5B,MAAM,EAAE,eAAe,EAAE;IADrD,mEAAmE;gBACvC,MAAM,EAAE,eAAe,EAAE;CAItD;AASD,UAAU,YAAY;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,EAAE,CAQzF;AAgED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAa9E;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAqBxE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAExE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAMrE"}
@@ -9,6 +9,7 @@ const REQUIRED_FIELDS = {
9
9
  api: ['apiType'],
10
10
  event: ['eventName'],
11
11
  eventHandler: ['subscribedEvents'],
12
+ eventPublisher: [],
12
13
  domainOp: ['operationName'],
13
14
  ui: ['route'],
14
15
  useCase: [],
@@ -19,6 +20,7 @@ const COMPONENT_TYPES = [
19
20
  'domainOp',
20
21
  'event',
21
22
  'eventHandler',
23
+ 'eventPublisher',
22
24
  'ui',
23
25
  ];
24
26
  const ajv = new Ajv({ allErrors: true });
@@ -21,6 +21,10 @@
21
21
  { "$ref": "#/$defs/moduleRef" }
22
22
  ]
23
23
  }
24
+ },
25
+ "connections": {
26
+ "$ref": "#/$defs/connectionsConfig",
27
+ "description": "Global connection detection patterns inherited by all modules"
24
28
  }
25
29
  },
26
30
  "$defs": {
@@ -78,6 +82,10 @@
78
82
  "$ref": "#/$defs/componentRule",
79
83
  "description": "Detection rule for EventHandler components"
80
84
  },
85
+ "eventPublisher": {
86
+ "$ref": "#/$defs/componentRule",
87
+ "description": "Detection rule for EventPublisher components"
88
+ },
81
89
  "ui": {
82
90
  "$ref": "#/$defs/componentRule",
83
91
  "description": "Detection rule for UI components"
@@ -88,6 +96,10 @@
88
96
  "additionalProperties": {
89
97
  "$ref": "#/$defs/detectionRule"
90
98
  }
99
+ },
100
+ "connections": {
101
+ "$ref": "#/$defs/connectionsConfig",
102
+ "description": "Module-level connection detection patterns additive to global"
91
103
  }
92
104
  },
93
105
  "if": {
@@ -96,7 +108,7 @@
96
108
  }
97
109
  },
98
110
  "then": {
99
- "required": ["api", "useCase", "domainOp", "event", "eventHandler", "ui"]
111
+ "required": ["api", "useCase", "domainOp", "event", "eventHandler", "eventPublisher", "ui"]
100
112
  }
101
113
  },
102
114
  "componentRule": {
@@ -586,6 +598,146 @@
586
598
  "description": "Any predicate must match"
587
599
  }
588
600
  }
601
+ },
602
+ "connectionsConfig": {
603
+ "type": "object",
604
+ "description": "Connection detection configuration with pattern definitions",
605
+ "required": ["patterns"],
606
+ "additionalProperties": false,
607
+ "properties": {
608
+ "patterns": {
609
+ "type": "array",
610
+ "description": "Connection detection patterns",
611
+ "minItems": 1,
612
+ "items": {
613
+ "$ref": "#/$defs/connectionPattern"
614
+ }
615
+ }
616
+ }
617
+ },
618
+ "connectionPattern": {
619
+ "type": "object",
620
+ "description": "A pattern for detecting connections between components",
621
+ "required": ["name", "find", "where", "linkType"],
622
+ "additionalProperties": false,
623
+ "properties": {
624
+ "name": {
625
+ "type": "string",
626
+ "description": "Pattern identifier",
627
+ "minLength": 1
628
+ },
629
+ "find": {
630
+ "$ref": "#/$defs/connectionFinder"
631
+ },
632
+ "where": {
633
+ "$ref": "#/$defs/connectionWhereClause"
634
+ },
635
+ "extract": {
636
+ "$ref": "#/$defs/connectionExtractBlock",
637
+ "description": "Extraction rules for connection metadata"
638
+ },
639
+ "linkType": {
640
+ "type": "string",
641
+ "description": "Type of connection: sync or async",
642
+ "enum": ["sync", "async"]
643
+ }
644
+ }
645
+ },
646
+ "connectionFinder": {
647
+ "type": "string",
648
+ "description": "The connection detection strategy",
649
+ "enum": ["methodCalls"]
650
+ },
651
+ "connectionWhereClause": {
652
+ "type": "object",
653
+ "description": "Filters for matching method calls",
654
+ "additionalProperties": false,
655
+ "minProperties": 1,
656
+ "properties": {
657
+ "methodName": {
658
+ "type": "string",
659
+ "description": "Method name to match",
660
+ "minLength": 1
661
+ },
662
+ "receiverType": {
663
+ "type": "string",
664
+ "description": "Type of the object being called",
665
+ "minLength": 1
666
+ },
667
+ "callerHasDecorator": {
668
+ "type": "array",
669
+ "description": "Decorators the calling class must have",
670
+ "items": {
671
+ "type": "string",
672
+ "minLength": 1
673
+ },
674
+ "minItems": 1
675
+ },
676
+ "calleeType": {
677
+ "type": "object",
678
+ "description": "Constraints on the callee type",
679
+ "required": ["hasDecorator"],
680
+ "additionalProperties": false,
681
+ "properties": {
682
+ "hasDecorator": {
683
+ "type": "string",
684
+ "description": "Decorator the callee type must have",
685
+ "minLength": 1
686
+ }
687
+ }
688
+ }
689
+ }
690
+ },
691
+ "connectionExtractBlock": {
692
+ "type": "object",
693
+ "description": "Extraction rules for connection metadata fields",
694
+ "additionalProperties": {
695
+ "$ref": "#/$defs/connectionExtractRule"
696
+ }
697
+ },
698
+ "connectionExtractRule": {
699
+ "oneOf": [
700
+ { "$ref": "#/$defs/fromArgumentExtractionRule" },
701
+ { "$ref": "#/$defs/fromReceiverTypeExtractionRule" },
702
+ { "$ref": "#/$defs/fromCallerTypeExtractionRule" }
703
+ ]
704
+ },
705
+ "fromArgumentExtractionRule": {
706
+ "type": "object",
707
+ "description": "Extracts static type of argument at position",
708
+ "required": ["fromArgument"],
709
+ "additionalProperties": false,
710
+ "properties": {
711
+ "fromArgument": {
712
+ "type": "integer",
713
+ "minimum": 0,
714
+ "description": "Argument position (zero-based)"
715
+ }
716
+ }
717
+ },
718
+ "fromReceiverTypeExtractionRule": {
719
+ "type": "object",
720
+ "description": "Extracts the static type name of the receiver",
721
+ "required": ["fromReceiverType"],
722
+ "additionalProperties": false,
723
+ "properties": {
724
+ "fromReceiverType": {
725
+ "type": "boolean",
726
+ "const": true
727
+ }
728
+ }
729
+ },
730
+ "fromCallerTypeExtractionRule": {
731
+ "type": "object",
732
+ "description": "Extracts the static type name of the caller",
733
+ "required": ["fromCallerType"],
734
+ "additionalProperties": false,
735
+ "properties": {
736
+ "fromCallerType": {
737
+ "type": "boolean",
738
+ "const": true
739
+ }
740
+ }
589
741
  }
590
742
  }
591
743
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@living-architecture/riviere-extract-config",
3
- "version": "0.4.2",
3
+ "version": "0.4.4",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
File without changes