@conformetry/nx 0.0.39 → 0.0.41

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/CHANGELOG.md CHANGED
@@ -1,3 +1,36 @@
1
+ ## 0.0.41 (2026-10-18)
2
+
3
+ ### 🚀 Features
4
+
5
+ - **conformetry:** ✨ run configured generator hooks from the Nx plugin ([#1697](https://github.com/organizzolini/codebase/pull/1697), [#1683](https://github.com/organizzolini/codebase/issues/1683), [#1684](https://github.com/organizzolini/codebase/issues/1684), [#1685](https://github.com/organizzolini/codebase/issues/1685))
6
+ - ⚠️ **conformetry:** ✨ expose the filesystem and configuration directory to hooks ([#1695](https://github.com/organizzolini/codebase/pull/1695), [#1679](https://github.com/organizzolini/codebase/issues/1679))
7
+
8
+ ### ⚠️ Breaking Changes
9
+
10
+ - **conformetry:** ✨ expose the filesystem and configuration directory to hooks ([#1695](https://github.com/organizzolini/codebase/pull/1695), [#1679](https://github.com/organizzolini/codebase/issues/1679))
11
+ `GenerationService.runGenerator` in the published
12
+ `@conformetry/generation` now requires `configurationDirectoryPath`, so
13
+ an embedder calling it must pass the absolute directory of its
14
+ configuration file; the title carries `!` so the squash releases it as
15
+ such.
16
+ - This is stacked on #1693.
17
+
18
+ ### 🧱 Updated Dependencies
19
+
20
+ - Updated conformetry-configuration to 0.0.40
21
+ - Updated conformetry-generation to 0.0.40
22
+ - Updated conformetry-validation to 0.0.39
23
+ - Updated conformetry-output to 0.0.39
24
+
25
+ ## 0.0.40 (2026-10-18)
26
+
27
+ ### 🧱 Updated Dependencies
28
+
29
+ - Updated conformetry-configuration to 0.0.39
30
+ - Updated conformetry-generation to 0.0.39
31
+ - Updated conformetry-validation to 0.0.38
32
+ - Updated conformetry-output to 0.0.38
33
+
1
34
  ## 0.0.39 (2026-10-18)
2
35
 
3
36
  ### 🧱 Updated Dependencies
package/README.md CHANGED
@@ -159,9 +159,9 @@ Call stacks traced through `projects/ic-suite/conformetry/conformetry-nx`, deepe
159
159
 
160
160
  | Measure | Value |
161
161
  | --- | --- |
162
- | Callables | 129 |
162
+ | Callables | 130 |
163
163
  | Files | 49 |
164
- | Calls traced | 165 |
164
+ | Calls traced | 167 |
165
165
  | Call stacks | 8 |
166
166
  | Deepest stack | 15 |
167
167
  | Stacks through recursion | 0 |
@@ -183,11 +183,11 @@ What this project is judged against, as declared in its own `callidescope.config
183
183
  ```text
184
184
  🚀 validateExecutor(…): Promise<{ success: boolean; }> [projects/ic-suite/conformetry/conformetry-nx/src/executors/validate/executor.ts:16]
185
185
  ↳ Validates one project's instances against their conformetry templates.
186
- └─> PluginService.runValidation(args: RunValidationArguments): Promise<RunValidationResult> [projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:409]
186
+ └─> PluginService.runValidation(args: RunValidationArguments): Promise<RunValidationResult> [projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:447]
187
187
  ↳ Validates one project's instances and renders the report.
188
188
  └─> ValidationService.validate(args: RunValidationArguments): RunValidationResult [projects/ic-suite/conformetry/conformetry-validation/src/modules/validation/validation.service.ts:194]
189
189
  ↳ Validates every instance and returns the differences found.
190
- └─> ConfigurationService.matchInstances(…): ResolvedInstances [projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:264]
190
+ └─> ConfigurationService.matchInstances(…): ResolvedInstances [projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:257]
191
191
  ↳ Resolves every instance to the template, or templates, that explain it.
192
192
  └─> InstanceDiscoveryService.matchInstances(…): ResolvedInstances [projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:123]
193
193
  ↳ Resolves every instance to the template, or templates, that explain it.
@@ -215,11 +215,11 @@ What this project is judged against, as declared in its own `callidescope.config
215
215
  ```text
216
216
  🚀 runConformetryGenerator(…): Promise<string[]> [projects/ic-suite/conformetry/conformetry-nx/src/index.ts:93]
217
217
  ↳ Runs one configured generator against an Nx tree.
218
- └─> PluginService.runGenerator(args: RunGeneratorArguments): Promise<string[]> [projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:348]
218
+ └─> PluginService.runGenerator(args: RunGeneratorArguments): Promise<string[]> [projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:402]
219
219
  ↳ Runs one configured generator against an Nx tree.
220
- └─> PluginService.assertPluginInSync(args: { configurationPath: string; workspaceRoot: string; }): Promise<void> [projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:121]
220
+ └─> PluginService.assertPluginInSync(args: { configurationPath: string; workspaceRoot: string; }): Promise<void> [projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:122]
221
221
  ↳ Fails fast when the plugin would run against a stale or broken setup.
222
- └─> PluginService.assertEmittedPluginCurrent(args: { configurationPath: string; workspaceRoot: string; }): Promise<void> [projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:87]
222
+ └─> PluginService.assertEmittedPluginCurrent(args: { configurationPath: string; workspaceRoot: string; }): Promise<void> [projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:88]
223
223
  ↳ Fails when the emitted Nx plugin no longer matches the configuration. `generators.json` and its schemas are derived…
224
224
  └─> GeneratorService.emitPlugin(args: EmitPluginArguments): Promise<EmittedFile[]> [projects/ic-suite/conformetry/conformetry-nx/src/modules/generator/generator.service.ts:212]
225
225
  ↳ Returns every file the consumer's generator plugin consists of.
@@ -234,7 +234,7 @@ What this project is judged against, as declared in its own `callidescope.config
234
234
  ↳ Returns whether a group applies to a project.
235
235
  └─> ScopeService.isProjectGroup(group: ConformetryInstanceGroup): boolean [projects/ic-suite/conformetry/conformetry-nx/src/modules/scope/scope.service.ts:39]
236
236
  ↳ Whether a group locates its instances by project tag.
237
- └─> ConfigurationService.isProjectScoped(group: ConformetryInstanceGroup): boolean [projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:233]
237
+ └─> ConfigurationService.isProjectScoped(group: ConformetryInstanceGroup): boolean [projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:226]
238
238
  ↳ Whether a group locates its instances inside the hosts its tags select.
239
239
  └─> InstanceGroupService.isProjectScoped(group: ConformetryInstanceGroup): boolean [projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-group/instance-group.service.ts:42]
240
240
  ↳ Whether a group locates its instances inside the hosts its tags select.
@@ -260,7 +260,7 @@ What this project is judged against, as declared in its own `callidescope.config
260
260
  ↳ Returns whether a group applies to a project.
261
261
  └─> ScopeService.isProjectGroup(group: ConformetryInstanceGroup): boolean [projects/ic-suite/conformetry/conformetry-nx/src/modules/scope/scope.service.ts:39]
262
262
  ↳ Whether a group locates its instances by project tag.
263
- └─> ConfigurationService.isProjectScoped(group: ConformetryInstanceGroup): boolean [projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:233]
263
+ └─> ConfigurationService.isProjectScoped(group: ConformetryInstanceGroup): boolean [projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:226]
264
264
  ↳ Whether a group locates its instances inside the hosts its tags select.
265
265
  └─> InstanceGroupService.isProjectScoped(group: ConformetryInstanceGroup): boolean [projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-group/instance-group.service.ts:42]
266
266
  ↳ Whether a group locates its instances inside the hosts its tags select.
@@ -273,12 +273,12 @@ What this project is judged against, as declared in its own `callidescope.config
273
273
 
274
274
  ```text
275
275
  🚀 anonymous(…): Promise<CreateNodesResultArray> [projects/ic-suite/conformetry/conformetry-nx/src/index.ts:49]
276
- └─> PluginService.inferTargets(args: InferTargetsArguments): Promise<Map<string, InferredTargets>> [projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:283]
276
+ └─> PluginService.inferTargets(args: InferTargetsArguments): Promise<Map<string, InferredTargets>> [projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:335]
277
277
  ↳ Infers a validation target onto every project that holds at least one instance.
278
278
  └─> InstancesService.findProjectInstances(args: FindProjectInstancesArguments): Promise<Instance[]> [projects/ic-suite/conformetry/conformetry-nx/src/modules/instances/instances.service.ts:68]
279
279
  ↳ Expands every instance group that applies to a project, keeping only the instances that live inside it.
280
280
  └─> InstancesService.flatMap(…)(this: undefined, group: ConformetryInstanceGroup): Instance[] [projects/ic-suite/conformetry/conformetry-nx/src/modules/instances/instances.service.ts:84]
281
- └─> ConfigurationService.findInstances(args: FindInstancesArguments): Instance[] [projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:223]
281
+ └─> ConfigurationService.findInstances(args: FindInstancesArguments): Instance[] [projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:216]
282
282
  ↳ Expands instance globs into the instances that exist.
283
283
  └─> InstanceDiscoveryService.findInstances(args: FindInstancesArguments): Instance[] [projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-discovery/instance-discovery.service.ts:118]
284
284
  ↳ Expands instance globs into the instances that exist.
@@ -310,7 +310,7 @@ What this project is judged against, as declared in its own `callidescope.config
310
310
  ↳ Returns whether a group applies to a project.
311
311
  └─> ScopeService.isProjectGroup(group: ConformetryInstanceGroup): boolean [projects/ic-suite/conformetry/conformetry-nx/src/modules/scope/scope.service.ts:39]
312
312
  ↳ Whether a group locates its instances by project tag.
313
- └─> ConfigurationService.isProjectScoped(group: ConformetryInstanceGroup): boolean [projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:233]
313
+ └─> ConfigurationService.isProjectScoped(group: ConformetryInstanceGroup): boolean [projects/ic-suite/conformetry/conformetry-configuration/src/modules/configuration/configuration.service.ts:226]
314
314
  ↳ Whether a group locates its instances inside the hosts its tags select.
315
315
  └─> InstanceGroupService.isProjectScoped(group: ConformetryInstanceGroup): boolean [projects/ic-suite/conformetry/conformetry-configuration/src/modules/instance-group/instance-group.service.ts:42]
316
316
  ↳ Whether a group locates its instances inside the hosts its tags select.
@@ -350,12 +350,12 @@ What this project is judged against, as declared in its own `callidescope.config
350
350
 
351
351
  | Callable | Breadth | Calls directly | Location |
352
352
  | --- | --- | --- | --- |
353
- | `PluginService.runGenerator` | 9 | `PluginService.resolveOptions`, `PluginService.assertPluginInSync`, `ConfigurationService.loadConformetryConfiguration`, `PluginService.find(…)`, `PluginService.map(…)`, `AdapterService.createAdapters`, `OptionsService.resolveGeneratorInputs`, `GenerationService.runGenerator`, `PathsService.resolveGenerationPath` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:348` |
354
353
  | `bootstrapPlugin` | 9 | `resolveGeneratorService`, `resolveOptionsService`, `resolveProjectsService`, `GeneratorService.emitPlugin`, `OptionsService.resolveConfigurationPath`, `readNxConfiguration`, `ProjectsService.listWorkspaceProjects`, `writePlugin`, `linkPlugin` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/generator/bootstrap.utilities.ts:39` |
355
354
  | `syncGenerator` | 8 | `resolveGeneratorService`, `resolveOptionsService`, `resolveProjectsService`, `GeneratorService.emitPlugin`, `OptionsService.resolveConfigurationPath`, `readNxConfiguration`, `ProjectsService.listWorkspaceProjects`, `assign(…)` | `projects/ic-suite/conformetry/conformetry-nx/src/generators/sync/generator.ts:32` |
355
+ | `PluginService.runGenerator` | 7 | `PluginService.resolveOptions`, `PluginService.assertPluginInSync`, `PluginService.resolveGeneratorDefinition`, `AdapterService.createAdapters`, `OptionsService.resolveGeneratorInputs`, `GenerationService.runGenerator`, `PathsService.resolveGenerationPath` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:402` |
356
356
 
357
357
  <details>
358
- <summary>66 more callables</summary>
358
+ <summary>67 more callables</summary>
359
359
 
360
360
  | Callable | Breadth | Calls directly | Location |
361
361
  | --- | --- | --- | --- |
@@ -363,17 +363,18 @@ What this project is judged against, as declared in its own `callidescope.config
363
363
  | `InstancesService.findProjectInstances` | 6 | `ConfigurationService.loadConformetryConfiguration`, `InstancesService.filter(…)`, `InstancesService.flatMap(…)`, `InstancesService.flatMap(…)`, `InstancesService.flatMap(…)`, `InstancesService.filter(…)` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/instances/instances.service.ts:68` |
364
364
  | `PathsService.resolveAllowedDirectories` | 6 | `ConfigurationService.loadConformetryConfiguration`, `PathsService.flatMap(…)`, `PathsService.filter(…)`, `PathsService.find(…)`, `PathsService.some(…)`, `PathsService.map(…)` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/paths/paths.service.ts:126` |
365
365
  | `PathsService.resolveGenerationPath` | 6 | `PathsService.resolveAllowedDirectories`, `PathsService.resolveExplicitDirectory`, `PathsService.resolveNewProjectPath`, `InstancesService.findProjectInstances`, `PathsService.requireModulePath`, `PathsService.resolveProjectParentPath` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/paths/paths.service.ts:365` |
366
- | `PluginService.runValidation` | 6 | `PluginService.resolveOptions`, `PluginService.assertPluginInSync`, `ValidationService.validate`, `InstancesService.findProjectInstances`, `PluginService.resolveTemplates`, `ReportingService.formatReport` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:409` |
367
- | `PluginService.inferTargets` | 5 | `PluginService.resolveOptions`, `PluginService.resolveTemplateInputs`, `PluginService.filter(…)`, `ProjectsService.readProjectScope`, `InstancesService.findProjectInstances` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:283` |
366
+ | `PluginService.runValidation` | 6 | `PluginService.resolveOptions`, `PluginService.assertPluginInSync`, `ValidationService.validate`, `InstancesService.findProjectInstances`, `PluginService.resolveTemplates`, `ReportingService.formatReport` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:447` |
367
+ | `PluginService.inferTargets` | 5 | `PluginService.resolveOptions`, `PluginService.resolveTemplateInputs`, `PluginService.filter(…)`, `ProjectsService.readProjectScope`, `InstancesService.findProjectInstances` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:335` |
368
368
  | `ScopeService.resolveScopedProjectNames` | 4 | `ScopeService.filter(…)`, `ScopeService.toSorted(…)`, `ScopeService.map(…)`, `ScopeService.filter(…)` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/scope/scope.service.ts:135` |
369
369
  | `PathsService.resolveNewProjectPath` | 4 | `staticDirectoryPrefix`, `missingDirectoryError`, `PathsService.resolveTypeDirectoryPath`, `PathsService.assertDirectoryAllowed` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/paths/paths.service.ts:241` |
370
370
  | `ProjectsService.listWorkspaceProjects` | 4 | `ProjectsService.toSorted(…)`, `ProjectsService.map(…)`, `ProjectsService.listProjectConfigurationFiles`, `ProjectsService.readIgnoredPaths` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/projects/projects.service.ts:118` |
371
- | `PluginService.resolveTemplateInputs` | 4 | `ConfigurationService.loadConformetryConfiguration`, `PluginService.map(…)`, `PluginService.map(…)`, `buildTemplateHashCommand` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:234` |
371
+ | `PluginService.resolveGeneratorDefinition` | 4 | `ConfigurationService.resolveConfigurationPath`, `ConfigurationService.loadConformetryConfiguration`, `PluginService.find(…)`, `PluginService.map(…)` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:191` |
372
+ | `PluginService.resolveTemplateInputs` | 4 | `ConfigurationService.loadConformetryConfiguration`, `PluginService.map(…)`, `PluginService.map(…)`, `buildTemplateHashCommand` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:286` |
372
373
  | `anonymous` | 4 | `resolvePluginService`, `PluginService.inferTargets`, `filter(…)`, `map(…)` | `projects/ic-suite/conformetry/conformetry-nx/src/index.ts:49` |
373
374
  | `ScopeService.resolveGroup` | 3 | `ScopeService.matchesProject`, `ScopeService.isProjectGroup`, `ScopeService.map(…)` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/scope/scope.service.ts:75` |
374
375
  | `AdapterService.listDirectory` | 3 | `AdapterService.resolveTreePath`, `AdapterService.map(…)`, `AdapterService.map(…)` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/adapter/adapter.service.ts:42` |
375
376
  | `PathsService.resolveScopedDirectory` | 3 | `ConfigurationService.loadConformetryConfiguration`, `PathsService.find(…)`, `ScopeService.resolveScopedDirectory` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/paths/paths.service.ts:311` |
376
- | `PluginService.resolveOptions` | 3 | `OptionsService.readRegisteredConfigurationPath`, `PluginService.readNxConfiguration`, `OptionsService.resolvePluginOptions` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:193` |
377
+ | `PluginService.resolveOptions` | 3 | `OptionsService.readRegisteredConfigurationPath`, `PluginService.readNxConfiguration`, `OptionsService.resolvePluginOptions` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:245` |
377
378
  | `ScopeService.matchesProject` | 2 | `ScopeService.isProjectGroup`, `ScopeService.every(…)` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/scope/scope.service.ts:53` |
378
379
  | `ScopeService.resolveScopedDirectory` | 2 | `ScopeService.find(…)`, `ScopeService.findIndex(…)` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/scope/scope.service.ts:109` |
379
380
  | `GeneratorService.buildSchema` | 2 | `GeneratorService.stringify`, `GeneratorService.buildSchemaProperties` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/generator/generator.service.ts:122` |
@@ -386,9 +387,9 @@ What this project is judged against, as declared in its own `callidescope.config
386
387
  | `PathsService.resolveProjectParentPath` | 2 | `PathsService.resolveScopedDirectory`, `PathsService.resolveModuleParentPath` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/paths/paths.service.ts:281` |
387
388
  | `ProjectsService.readIgnoredPaths` | 2 | `ProjectsService.filter(…)`, `ProjectsService.map(…)` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/projects/projects.service.ts:97` |
388
389
  | `ProjectsService.readProjectScope` | 2 | `ProjectsService.isUnknownArray`, `ProjectsService.filter(…)` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/projects/projects.service.ts:134` |
389
- | `PluginService.assertEmittedPluginCurrent` | 2 | `GeneratorService.emitPlugin`, `ProjectsService.listWorkspaceProjects` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:87` |
390
- | `PluginService.assertPluginInSync` | 2 | `PluginService.assertTemplatesExist`, `PluginService.assertEmittedPluginCurrent` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:121` |
391
- | `PluginService.resolveTemplates` | 2 | `ConfigurationService.loadConformetryConfiguration`, `PluginService.map(…)` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:254` |
390
+ | `PluginService.assertEmittedPluginCurrent` | 2 | `GeneratorService.emitPlugin`, `ProjectsService.listWorkspaceProjects` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:88` |
391
+ | `PluginService.assertPluginInSync` | 2 | `PluginService.assertTemplatesExist`, `PluginService.assertEmittedPluginCurrent` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:122` |
392
+ | `PluginService.resolveTemplates` | 2 | `ConfigurationService.loadConformetryConfiguration`, `PluginService.map(…)` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:306` |
392
393
  | `runConformetryGenerator` | 2 | `resolvePluginService`, `PluginService.runGenerator` | `projects/ic-suite/conformetry/conformetry-nx/src/index.ts:93` |
393
394
  | `validateExecutor` | 2 | `resolvePluginService`, `PluginService.runValidation` | `projects/ic-suite/conformetry/conformetry-nx/src/executors/validate/executor.ts:16` |
394
395
  | `ScopeService.isProjectGroup` | 1 | `ConfigurationService.isProjectScoped` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/scope/scope.service.ts:39` |
@@ -417,8 +418,8 @@ What this project is judged against, as declared in its own `callidescope.config
417
418
  | `PathsService.resolveModuleParentPath` | 1 | `PathsService.toSorted(…)` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/paths/paths.service.ts:187` |
418
419
  | `PathsService.resolveModulePath` | 1 | `PathsService.find(…)` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/paths/paths.service.ts:219` |
419
420
  | `ProjectsService.map(…)` | 1 | `ProjectsService.readProjectScope` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/projects/projects.service.ts:124` |
420
- | `PluginService.assertTemplatesExist` | 1 | `ConfigurationService.loadConformetryConfiguration` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:137` |
421
- | `PluginService.map(…)` | 1 | `ConfigurationService.collectTemplate` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:263` |
421
+ | `PluginService.assertTemplatesExist` | 1 | `ConfigurationService.loadConformetryConfiguration` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:138` |
422
+ | `PluginService.map(…)` | 1 | `ConfigurationService.collectTemplate` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin.service.ts:315` |
422
423
  | `resolveGeneratorService` | 1 | `resolvePluginContext` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin-context.utilities.ts:18` |
423
424
  | `resolveOptionsService` | 1 | `resolvePluginContext` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin-context.utilities.ts:25` |
424
425
  | `resolvePluginService` | 1 | `resolvePluginContext` | `projects/ic-suite/conformetry/conformetry-nx/src/modules/plugin/plugin-context.utilities.ts:32` |
@@ -750,14 +751,14 @@ graph LR
750
751
 
751
752
  ### Project
752
753
 
753
- ![Lines of Code](https://img.shields.io/badge/Lines_of_Code-6786-22c55e?style=flat-square)
754
- ![Repository Size](https://img.shields.io/badge/Repository_Size-243.32_kB-6b7280?style=flat-square)
754
+ ![Lines of Code](https://img.shields.io/badge/Lines_of_Code-6979-22c55e?style=flat-square)
755
+ ![Repository Size](https://img.shields.io/badge/Repository_Size-251.20_kB-6b7280?style=flat-square)
755
756
  ![Folders](https://img.shields.io/badge/Folders-15-4a4a4a?style=flat-square)
756
757
  ![Source Files](https://img.shields.io/badge/Source_Files-69-3178c6?style=flat-square)
757
758
 
758
759
  ### Measured Targets
759
760
 
760
- ![Compiled JavaScript Size](https://img.shields.io/badge/Compiled_JavaScript_Size-11.86_kB_gzip-6b7280?style=flat-square)
761
+ ![Compiled JavaScript Size](https://img.shields.io/badge/Compiled_JavaScript_Size-11.94_kB_gzip-6b7280?style=flat-square)
761
762
 
762
763
  ### TypeScript
763
764
 
@@ -766,7 +767,7 @@ graph LR
766
767
  ![Generic Declarations](https://img.shields.io/badge/Generic_Declarations-0-0369a1?style=flat-square)
767
768
  ![Enums](https://img.shields.io/badge/Enums-0-f97316?style=flat-square)
768
769
  ![Decorators](https://img.shields.io/badge/Decorators-17-db2777?style=flat-square)
769
- ![Doc Comments](https://img.shields.io/badge/Doc_Comments-155-6366f1?style=flat-square)
770
+ ![Doc Comments](https://img.shields.io/badge/Doc_Comments-156-6366f1?style=flat-square)
770
771
  ![Static Methods](https://img.shields.io/badge/Static_Methods-0-166534?style=flat-square)
771
772
 
772
773
  ### JavaScript
@@ -775,15 +776,15 @@ graph LR
775
776
  ![Test Files](https://img.shields.io/badge/Test_Files-17-10b981?style=flat-square)
776
777
  ![External Packages](https://img.shields.io/badge/External_Packages-19-8b5cf6?style=flat-square)
777
778
  ![Classes](https://img.shields.io/badge/Classes-17-7c3aed?style=flat-square)
778
- ![Functions](https://img.shields.io/badge/Functions-319-16a34a?style=flat-square)
779
- ![Methods](https://img.shields.io/badge/Methods-94-15803d?style=flat-square)
780
- ![Sync Functions](https://img.shields.io/badge/Sync_Functions-260-4ade80?style=flat-square)
781
- ![Async Functions](https://img.shields.io/badge/Async_Functions-153-059669?style=flat-square)
782
- ![Constants](https://img.shields.io/badge/Constants-301-dc2626?style=flat-square)
783
- ![Imports](https://img.shields.io/badge/Imports-282-0284c7?style=flat-square)
779
+ ![Functions](https://img.shields.io/badge/Functions-325-16a34a?style=flat-square)
780
+ ![Methods](https://img.shields.io/badge/Methods-95-15803d?style=flat-square)
781
+ ![Sync Functions](https://img.shields.io/badge/Sync_Functions-261-4ade80?style=flat-square)
782
+ ![Async Functions](https://img.shields.io/badge/Async_Functions-159-059669?style=flat-square)
783
+ ![Constants](https://img.shields.io/badge/Constants-310-dc2626?style=flat-square)
784
+ ![Imports](https://img.shields.io/badge/Imports-285-0284c7?style=flat-square)
784
785
  ![Exported Symbols](https://img.shields.io/badge/Exported_Symbols-83-ea580c?style=flat-square)
785
- ![Comments](https://img.shields.io/badge/Comments-343-64748b?style=flat-square)
786
- ![Comment Lines](https://img.shields.io/badge/Comment_Lines-752-475569?style=flat-square)
786
+ ![Comments](https://img.shields.io/badge/Comments-344-64748b?style=flat-square)
787
+ ![Comment Lines](https://img.shields.io/badge/Comment_Lines-758-475569?style=flat-square)
787
788
  ![TODO Comments](https://img.shields.io/badge/TODO_Comments-0-ca8a04?style=flat-square)
788
789
 
789
790
  ### Python
@@ -939,23 +940,23 @@ graph LR
939
940
  ### Markdown
940
941
 
941
942
  ![Markdown Files](https://img.shields.io/badge/Markdown_Files-2-083fa1?style=flat-square)
942
- ![Markdown Lines](https://img.shields.io/badge/Markdown_Lines-567-1f6feb?style=flat-square)
943
+ ![Markdown Lines](https://img.shields.io/badge/Markdown_Lines-600-1f6feb?style=flat-square)
943
944
  ![H1](https://img.shields.io/badge/H1-1-7c3aed?style=flat-square)
944
- ![H2](https://img.shields.io/badge/H2-42-8b5cf6?style=flat-square)
945
- ![H3](https://img.shields.io/badge/H3-56-a78bfa?style=flat-square)
945
+ ![H2](https://img.shields.io/badge/H2-44-8b5cf6?style=flat-square)
946
+ ![H3](https://img.shields.io/badge/H3-60-a78bfa?style=flat-square)
946
947
  ![H4](https://img.shields.io/badge/H4-0-c4b5fd?style=flat-square)
947
948
  ![H5](https://img.shields.io/badge/H5-0-ddd6fe?style=flat-square)
948
949
  ![H6](https://img.shields.io/badge/H6-0-ede9fe?style=flat-square)
949
- ![Paragraphs](https://img.shields.io/badge/Paragraphs-189-64748b?style=flat-square)
950
- ![Lists](https://img.shields.io/badge/Lists-50-16a34a?style=flat-square)
951
- ![List Items](https://img.shields.io/badge/List_Items-169-22c55e?style=flat-square)
950
+ ![Paragraphs](https://img.shields.io/badge/Paragraphs-201-64748b?style=flat-square)
951
+ ![Lists](https://img.shields.io/badge/Lists-55-16a34a?style=flat-square)
952
+ ![List Items](https://img.shields.io/badge/List_Items-181-22c55e?style=flat-square)
952
953
  ![Task List Items](https://img.shields.io/badge/Task_List_Items-0-4ade80?style=flat-square)
953
954
  ![Tables](https://img.shields.io/badge/Tables-2-0284c7?style=flat-square)
954
955
  ![Table Rows](https://img.shields.io/badge/Table_Rows-10-0ea5e9?style=flat-square)
955
- ![Links](https://img.shields.io/badge/Links-23-059669?style=flat-square)
956
+ ![Links](https://img.shields.io/badge/Links-31-059669?style=flat-square)
956
957
  ![Images](https://img.shields.io/badge/Images-0-10b981?style=flat-square)
957
958
  ![Code Blocks](https://img.shields.io/badge/Code_Blocks-11-dc2626?style=flat-square)
958
- ![Inline Code](https://img.shields.io/badge/Inline_Code-72-ef4444?style=flat-square)
959
+ ![Inline Code](https://img.shields.io/badge/Inline_Code-76-ef4444?style=flat-square)
959
960
  ![Block Quotes](https://img.shields.io/badge/Block_Quotes-0-ca8a04?style=flat-square)
960
961
  ![Thematic Breaks](https://img.shields.io/badge/Thematic_Breaks-0-a16207?style=flat-square)
961
962
  <!-- codometer:end -->
@@ -1,4 +1,4 @@
1
- import { g as e, h as t, i as n, n as r, t as i, x as a } from "./plugin-context.utilities-tWMUbdpG.js";
1
+ import { g as e, h as t, i as n, n as r, t as i, x as a } from "./plugin-context.utilities-BpcJy_ln.js";
2
2
  import { existsSync as o, lstatSync as s, mkdirSync as c, readFileSync as l, realpathSync as u, rmSync as d, symlinkSync as f, writeFileSync as p } from "node:fs";
3
3
  import m from "node:path";
4
4
  //#region projects/ic-suite/conformetry/conformetry-nx/src/modules/generator/bootstrap.utilities.ts
@@ -863,6 +863,18 @@ var X, Z = X = class PluginService {
863
863
  let n = a.resolve(e, w);
864
864
  if (t(n)) return JSON.parse(r(n, "utf8"));
865
865
  }
866
+ async resolveGeneratorDefinition(e) {
867
+ let t = await this.configurationService.resolveConfigurationPath(e.configurationPath), n = await this.configurationService.loadConformetryConfiguration(t), r = n.find((t) => t.name === e.generatorName);
868
+ if (r === void 0) throw this.logger.error("🚫 Rejected an unknown generator", void 0, { generator: e.generatorName }), Error(`Unknown conformetry generator: ${e.generatorName}. Configured generators: ${n.map((e) => e.name).join(", ")}.`);
869
+ return {
870
+ configurationDirectoryPath: a.dirname(t),
871
+ definition: {
872
+ ...r.hooks === void 0 ? {} : { hooks: r.hooks },
873
+ name: r.name,
874
+ templateDirectoryPath: a.resolve(e.workspaceRoot, r.templatePath)
875
+ }
876
+ };
877
+ }
866
878
  resolveOptions(e) {
867
879
  let t = this.optionsService.readRegisteredConfigurationPath(this.readNxConfiguration(e.workspaceRoot)), n = typeof e.options == "object" && e.options !== null ? { ...e.options } : {};
868
880
  return this.optionsService.resolvePluginOptions({
@@ -919,31 +931,31 @@ var X, Z = X = class PluginService {
919
931
  configurationPath: t.configurationPath,
920
932
  workspaceRoot: e.workspaceRoot
921
933
  });
922
- let n = await this.configurationService.loadConformetryConfiguration(t.configurationPath), r = n.find((t) => t.name === e.generatorName);
923
- if (r === void 0) throw this.logger.error("🚫 Rejected an unknown generator", void 0, { generator: e.generatorName }), Error(`Unknown conformetry generator: ${e.generatorName}. Configured generators: ${n.map((e) => e.name).join(", ")}.`);
924
- let i = this.adapterService.createAdapters({
934
+ let { configurationDirectoryPath: n, definition: r } = await this.resolveGeneratorDefinition({
935
+ configurationPath: t.configurationPath,
936
+ generatorName: e.generatorName,
937
+ workspaceRoot: e.workspaceRoot
938
+ }), i = this.adapterService.createAdapters({
925
939
  tree: e.tree,
926
940
  workspaceRoot: e.workspaceRoot
927
- }), o = this.optionsService.resolveGeneratorInputs(e.options), { generatedFilePaths: s } = await this.generationService.runGenerator({
928
- definition: {
929
- name: r.name,
930
- templateDirectoryPath: a.resolve(e.workspaceRoot, r.templatePath)
931
- },
941
+ }), a = this.optionsService.resolveGeneratorInputs(e.options), { generatedFilePaths: o } = await this.generationService.runGenerator({
942
+ configurationDirectoryPath: n,
943
+ definition: r,
932
944
  filesystem: i.filesystem,
933
945
  formatter: i.formatter,
934
- inputs: o,
946
+ inputs: a,
935
947
  instancePath: await this.pathsService.resolveGenerationPath({
936
948
  configurationPath: t.configurationPath,
937
949
  generatorName: e.generatorName,
938
- inputs: o,
950
+ inputs: a,
939
951
  tree: e.tree,
940
952
  workspaceRoot: e.workspaceRoot
941
953
  })
942
954
  });
943
955
  return this.logger.info("✨ Generated instance files", void 0, {
944
- count: s.length,
956
+ count: o.length,
945
957
  generator: e.generatorName
946
- }), s;
958
+ }), o;
947
959
  }
948
960
  async runValidation(e) {
949
961
  let t = this.resolveOptions({
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { n as e } from "../bootstrap.utilities-DjU-tum6.js";
2
+ import { n as e } from "../bootstrap.utilities-D27Q12ga.js";
3
3
  //#region projects/ic-suite/conformetry/conformetry-nx/src/conformetry-nx.main.ts
4
4
  e(process.cwd());
5
5
  //#endregion
@@ -1,4 +1,4 @@
1
- import { r as e } from "../../../plugin-context.utilities-tWMUbdpG.js";
1
+ import { r as e } from "../../../plugin-context.utilities-BpcJy_ln.js";
2
2
  //#region projects/ic-suite/conformetry/conformetry-nx/src/executors/validate/executor.ts
3
3
  async function validateExecutor(t, n) {
4
4
  let r = n.projectName;
@@ -1,4 +1,4 @@
1
- import { _ as e, b as t, i as n, n as r, t as i, x as a } from "../../../plugin-context.utilities-tWMUbdpG.js";
1
+ import { _ as e, b as t, i as n, n as r, t as i, x as a } from "../../../plugin-context.utilities-BpcJy_ln.js";
2
2
  //#region projects/ic-suite/conformetry/conformetry-nx/src/generators/sync/generator.ts
3
3
  async function syncGenerator(a, o) {
4
4
  let s = await i(), c = await r(), l = await n(), u = await s.emitPlugin({
@@ -867,6 +867,14 @@ export declare class PluginService {
867
867
  private assertTemplatesExist;
868
868
  /** Reads the workspace's `nx.json`, or nothing when there is none. */
869
869
  private readNxConfiguration;
870
+ /**
871
+ * Finds one configured generator and shapes it the way the runtime takes it.
872
+ *
873
+ * The configuration path is resolved once, the way the command line does
874
+ * it, so the file the definition is loaded from and the directory its hooks
875
+ * are anchored to are the same file whichever directory `nx g` ran from.
876
+ */
877
+ private resolveGeneratorDefinition;
870
878
  /**
871
879
  * Resolves this plugin's options against the workspace's registration.
872
880
  *
@@ -911,6 +919,8 @@ export declare class PluginService {
911
919
  *
912
920
  * Nothing is written to disk here — the tree records the writes and Nx
913
921
  * decides whether to flush them, which is what makes `--dry-run` honest.
922
+ * The configured hooks are handed the same tree-backed adapter, so a write
923
+ * through `context.filesystem` is previewed and flushed like any other.
914
924
  */
915
925
  runGenerator(args: RunGeneratorArguments): Promise<string[]>;
916
926
  /** Validates one project's instances and renders the report. */
package/dist/src/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { a as e, c as t, d as n, f as r, l as i, m as a, o, p as s, r as c, s as l, u, v as d, y as f } from "../plugin-context.utilities-tWMUbdpG.js";
2
- import { n as p, t as m } from "../bootstrap.utilities-DjU-tum6.js";
1
+ import { a as e, c as t, d as n, f as r, l as i, m as a, o, p as s, r as c, s as l, u, v as d, y as f } from "../plugin-context.utilities-BpcJy_ln.js";
2
+ import { n as p, t as m } from "../bootstrap.utilities-D27Q12ga.js";
3
3
  import h from "node:path";
4
4
  //#region projects/ic-suite/conformetry/conformetry-nx/src/index.ts
5
5
  var g = {
package/package.json CHANGED
@@ -7,10 +7,10 @@
7
7
  "url": "https://github.com/organizzolini/codebase/issues"
8
8
  },
9
9
  "dependencies": {
10
- "@conformetry/configuration": "0.0.38",
11
- "@conformetry/generation": "0.0.38",
12
- "@conformetry/output": "0.0.37",
13
- "@conformetry/validation": "0.0.37",
10
+ "@conformetry/configuration": "0.0.40",
11
+ "@conformetry/generation": "0.0.40",
12
+ "@conformetry/output": "0.0.39",
13
+ "@conformetry/validation": "0.0.39",
14
14
  "@nestjs/common": "^11.1.21 || ^12.0.1",
15
15
  "@nestjs/core": "^11.1.21 || ^12.0.1",
16
16
  "@nx/devkit": "^23.0.0",
@@ -84,5 +84,5 @@
84
84
  "strict": true
85
85
  },
86
86
  "types": "./dist/src/index.d.ts",
87
- "version": "0.0.39"
87
+ "version": "0.0.41"
88
88
  }