@immense/vue-pom-generator 1.0.59 → 1.0.60

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/README.md CHANGED
@@ -12,10 +12,11 @@ If you already use Playwright with `getByTestId`, the point is simple: this pack
12
12
  - **Injects test ids during Vue compilation, not at runtime.** It hooks into the Vue template compiler and rewrites the compiled template output.
13
13
  - **Uses real template signals to name ids and methods.** Click handlers, `v-model`, `id`/`name`, `:to`, wrapper configuration, and a few targeted fallbacks all feed the generated API.
14
14
  - **Generates TypeScript POM output as either one aggregate or split per class, always with a stable `index.ts` barrel.**
15
+ - **Describes generated Playwright locators** with deterministic human-readable labels via `Locator.describe()`.
15
16
  - **Can generate Playwright fixtures** so tests can request `userListPage` instead of constructing `new UserListPage(page)` manually.
16
17
  - **Can fail fast on unnameable wrapper-button actions** so complex inline handlers do not silently degrade into low-signal generated APIs.
17
18
  - **Can emit a single C# POM file** for Playwright .NET consumers.
18
- - **Exposes `virtual:testids`** so your app can import the current collected test-id manifest at runtime.
19
+ - **Exposes `virtual:testids` and `virtual:pom-manifest`** so your app can inspect collected ids and generated POM metadata at runtime.
19
20
  - **Ships ESLint rules** to remove legacy manually-authored test ids, ban raw `page` fixture usage in spec callbacks, and discourage raw locator actions on generated getters.
20
21
 
21
22
  ## What this does not do
@@ -347,8 +348,8 @@ This is important if you are deciding whether the tool will fit into a real code
347
348
 
348
349
  - **Dev server:** on startup, it scans the configured Vue page/component/layout directories (or the directories resolved from Nuxt config in Nuxt mode), compiles each `.vue` file into a snapshot, writes the configured TypeScript outputs once, then batches add/change/delete events and regenerates incrementally.
349
350
  - **Build:** it generates from the richest build pass it sees, which matters because Vite can run multiple passes (for example SSR plus client). The generator avoids letting a thinner pass clobber a richer one.
350
- - **Always-on virtual module:** `virtual:testids` is registered whether generation is enabled or disabled.
351
- - **Generation can be disabled:** `generation: false` still keeps compile-time test-id injection and the virtual module, but skips emitted POM files.
351
+ - **Always-on virtual modules:** `virtual:testids` and `virtual:pom-manifest` are registered whether generation is enabled or disabled.
352
+ - **Generation can be disabled:** `generation: false` still keeps compile-time test-id injection and the virtual modules, but skips emitted POM files.
352
353
 
353
354
  ## Router-aware navigation: the real semantics
354
355
 
@@ -680,27 +681,49 @@ This package registers a Vite virtual module named `virtual:testids`.
680
681
  Usage:
681
682
 
682
683
  ```ts
683
- import { testIdManifest } from "virtual:testids";
684
+ import { pomManifest, testIdManifest } from "virtual:testids";
684
685
 
685
686
  console.log(testIdManifest.UserEditorPage);
687
+ console.log(pomManifest.UserEditorPage.entries);
686
688
  ```
687
689
 
688
690
  What it contains:
689
691
 
690
692
  - an object keyed by component name
691
- - each value is a sorted array of collected test ids for that component
693
+ - `testIdManifest`: each value is a sorted array of collected test ids for that component
694
+ - `pomManifest`: richer per-component metadata including source file, generated locator/property names, and generated action names
695
+ - each manifest entry also carries `locatorDescription`, which matches the human-readable label used by generated Playwright locators
692
696
 
693
697
  What it is good for:
694
698
 
695
699
  - runtime inspection
696
700
  - analytics / logging helpers that need the current generated ids
697
- - debugging what the generator has collected
701
+ - debugging what the generator has collected and generated
702
+ - keeping manifest-driven tools aligned with the same locator descriptions shown in Playwright traces
698
703
 
699
704
  What it is not:
700
705
 
701
- - a full metadata export
702
706
  - a generated source file on disk
703
707
 
708
+ ## `virtual:pom-manifest`
709
+
710
+ This package also registers `virtual:pom-manifest` for consumers that only want the richer discoverability surface.
711
+
712
+ Usage:
713
+
714
+ ```ts
715
+ import { pomManifest } from "virtual:pom-manifest";
716
+
717
+ console.log(pomManifest.UserEditorPage.sourceFile);
718
+ console.log(pomManifest.UserEditorPage.entries.map(entry => entry.generatedActionNames));
719
+ ```
720
+
721
+ What it contains:
722
+
723
+ - an object keyed by component/page object model class name
724
+ - for each component: source file, whether it is a view or component, sorted test ids, and rich entry metadata
725
+ - for each entry: test id, semantic name, inferred role, generated property name, generated action names, and collected compiler metadata when available
726
+
704
727
  ## ESLint rules that actually ship
705
728
 
706
729
  The package exports `@immense/vue-pom-generator/eslint`.
package/RELEASE_NOTES.md CHANGED
@@ -1,93 +1,45 @@
1
- # Release Notes: v1.0.59
1
+ ## Highlights
2
2
 
3
- ## Highlights
4
-
5
- - **Major refactoring** of POM generation logic for improved maintainability and reliability
6
- - **Zero runtime dependencies** all runtime dependencies eliminated
7
- - **Enhanced Nuxt support** – resolved app-root dev POM clobber and improved local app
8
- integration
9
- - **Split Playwright POM output** – added separate output files for better discoverability
10
- - **Fail-fast error handling** – added early validation for dev snapshot generation and
11
- unnameable handlers
12
- - **Expanded test coverage** – new build–serve parity regression tests and additional test
13
- suites
3
+ - **Manifest and locator descriptions**: Page Object Model (POM) manifests now include
4
+ human-readable descriptions for both routes and locators, improving discoverability and
5
+ developer experience
6
+ - **New discoverability module**: Added `pom-discoverability.ts` to centralize description
7
+ generation and introspection logic
8
+ - **Enhanced test coverage**: Expanded tests for class generation, virtual modules, and base
9
+ page functionality
14
10
 
15
11
  ## Changes
16
12
 
17
- **Core Generation & Architecture**
18
- - Refactored POM generation logic across class-generation, method-generation, transform, and
19
- utils modules
20
- - Added `pom-params.ts` and `pom-patterns.ts` modules to centralize generation logic
21
- - Improved routing `to-directive` handling for awaited handler wrappers
22
-
23
- **Plugin System**
24
- - Added `resolved-generation-options.ts` and `resolved-injection-options.ts` for clearer plugin
25
- configuration
26
- - Enhanced `create-vue-pom-generator-plugins`, build-plugin, and dev-plugin implementations
27
- - Relaxed Vite peer dependency range for broader compatibility (#13)
28
-
29
- **Bug Fixes**
30
- - Fixed reparsing of generated test IDs (#21)
31
- - Hardened local app integration (#19)
32
- - Restored router DOM globals after introspection (#18)
33
- - Resolved Nuxt app-root dev POM clobber (#15)
34
- - Fixed keyed POM dedupe and C# navigation returns (#4)
35
-
36
- **Error Handling & Validation**
37
- - Added fail-fast on unnameable wrapper handlers (#11)
38
- - Added fail-fast on dev snapshot generation errors (#6)
39
- - Guarded manual releases (#16)
13
+ **Core Features**
14
+ - Added manifest and locator description generation for improved POM documentation (#24)
15
+ - Implemented new `pom-discoverability.ts` module for centralized description handling
40
16
 
41
- **Developer Experience**
42
- - Split Playwright POM output for improved discoverability (#12)
43
- - Achieved dev-mode POM generation parity with build mode (#5)
44
- - Added PR release-notes preview comments (#1)
17
+ **Generator Improvements**
18
+ - Enhanced `manifest-generator.ts` with description support (+256 lines)
19
+ - Updated method generation to include locator descriptions
20
+ - Improved base page class generation with description metadata
45
21
 
46
- **Dependencies**
47
- - Eliminated all runtime dependencies (#9)
48
- - Updated package-lock.json to reflect dependency changes
22
+ **Plugin & Integration**
23
+ - Updated virtual module system to support description exports
24
+ - Enhanced Vite plugin integration for description handling
49
25
 
50
- **Testing**
51
- - Added build–serve parity regression tests (#7)
52
- - Added `base-page.test.ts`, `resolved-injection-options.test.ts`, and `playwright.d.ts` fixture
53
- - Expanded coverage in class-generation, transform, utils, and options tests
26
+ **Testing & Documentation**
27
+ - Added class generation coverage tests
28
+ - Expanded virtual test ID tests with description validation
29
+ - Updated README with new feature documentation
30
+ - Refreshed generated TypeScript fixtures
54
31
 
55
32
  ## Breaking Changes
56
33
 
57
- None.
34
+ None
58
35
 
59
36
  ## Pull Requests Included
60
37
 
61
- - #21 fix: avoid reparsing generated test ids
62
- (https://github.com/immense/vue-pom-generator/pull/21)
63
- - #19 fix: harden local app integration (https://github.com/immense/vue-pom-generator/pull/19)
64
- - #18 fix: restore router DOM globals after introspection
65
- (https://github.com/immense/vue-pom-generator/pull/18)
66
- - #17 fix: support awaited handler wrappers
67
- (https://github.com/immense/vue-pom-generator/pull/17)
68
- - #16 fix: guard manual releases (https://github.com/immense/vue-pom-generator/pull/16)
69
- - #15 fix: resolve Nuxt app-root dev POM clobber
70
- (https://github.com/immense/vue-pom-generator/pull/15)
71
- - #13 Relax Vite peer dependency range (https://github.com/immense/vue-pom-generator/pull/13)
72
- - #12 feat: add split Playwright POM output for discoverability
73
- (https://github.com/immense/vue-pom-generator/pull/12)
74
- - #11 feat: fail fast on unnameable wrapper handlers
75
- (https://github.com/immense/vue-pom-generator/pull/11)
76
- - #9 refactor(deps): eliminate all runtime dependencies
77
- (https://github.com/immense/vue-pom-generator/pull/9)
78
- - #7 test: add build–serve parity regression tests
79
- (https://github.com/immense/vue-pom-generator/pull/7)
80
- - #6 fix: fail fast on dev snapshot generation errors
81
- (https://github.com/immense/vue-pom-generator/pull/6)
82
- - #5 fix: dev-mode POM generation parity with build mode
83
- (https://github.com/immense/vue-pom-generator/pull/5)
84
- - #4 Fix keyed POM dedupe and C# navigation returns
85
- (https://github.com/immense/vue-pom-generator/pull/4)
86
- - #1 Add PR release-notes preview comments (https://github.com/immense/vue-pom-generator/pull/1)
38
+ - #24 feat: add manifest and locator descriptions
39
+ (https://github.com/immense/vue-pom-generator/pull/24)
87
40
 
88
41
  ## Testing
89
42
 
90
- Comprehensive test coverage expansion with new test suites for base-page,
91
- resolved-injection-options, and build–serve parity. Existing test suites updated to reflect
92
- refactored architecture. All tests passing.
43
+ All changes include corresponding test coverage. Added new test suites for class generation
44
+ coverage and expanded virtual module tests to validate description functionality.
93
45
 
@@ -233,12 +233,22 @@ export class BasePage {
233
233
  return `[${this.testIdAttribute}="${testId}"]`;
234
234
  }
235
235
 
236
- protected locatorByTestId(testId: string): PwLocator {
237
- return this.page.locator(this.selectorForTestId(testId));
236
+ protected describeLocator(locator: PwLocator, description?: string): PwLocator {
237
+ const normalizedDescription = description?.trim();
238
+ return normalizedDescription ? locator.describe(normalizedDescription) : locator;
238
239
  }
239
240
 
240
- protected locatorWithinTestIdByLabel(rootTestId: string, label: string, options?: { exact?: boolean }): PwLocator {
241
- return this.locatorByTestId(rootTestId).getByLabel(label, { exact: options?.exact ?? true });
241
+ protected locatorByTestId(testId: string, description?: string): PwLocator {
242
+ return this.describeLocator(this.page.locator(this.selectorForTestId(testId)), description);
243
+ }
244
+
245
+ protected locatorWithinTestIdByLabel(
246
+ rootTestId: string,
247
+ label: string,
248
+ options?: { exact?: boolean; description?: string },
249
+ ): PwLocator {
250
+ const locator = this.locatorByTestId(rootTestId).getByLabel(label, { exact: options?.exact ?? true });
251
+ return this.describeLocator(locator, options?.description);
242
252
  }
243
253
 
244
254
  /**
@@ -488,8 +498,14 @@ export class BasePage {
488
498
  * Clicks on an element with the specified data-testid
489
499
  * @param testId The data-testid of the element to click
490
500
  */
491
- public async clickByTestId(testId: string, annotationText: string = "", wait: boolean = true): Promise<void> {
492
- await this.pointer.animateCursorToElement(this.selectorForTestId(testId), true, 200, annotationText, {
501
+ public async clickByTestId(
502
+ testId: string,
503
+ annotationText: string = "",
504
+ wait: boolean = true,
505
+ description?: string,
506
+ ): Promise<void> {
507
+ const locator = this.locatorByTestId(testId, description);
508
+ await this.pointer.animateCursorToElement(locator, true, 200, annotationText, {
493
509
  afterClick: async ({ testId: clickedTestId, instrumented }: AfterPointerClickInfo) => {
494
510
  if (!wait) return;
495
511
  if (!clickedTestId || !instrumented) return;
@@ -513,14 +529,23 @@ export class BasePage {
513
529
  label: string,
514
530
  annotationText: string = "",
515
531
  wait: boolean = true,
516
- options?: { exact?: boolean },
532
+ options?: { exact?: boolean; description?: string },
517
533
  ): Promise<void> {
518
- const locator = this.locatorWithinTestIdByLabel(rootTestId, label, { exact: options?.exact });
534
+ const locator = this.locatorWithinTestIdByLabel(rootTestId, label, {
535
+ exact: options?.exact,
536
+ description: options?.description,
537
+ });
519
538
  await this.clickLocator(locator, annotationText, wait);
520
539
  }
521
540
 
522
- protected async fillInputByTestId(testId: string, text: string, annotationText: string = ""): Promise<void> {
523
- await this.pointer.animateCursorToElementAndClickAndFill(this.selectorForTestId(testId), text, true, 200, annotationText, {
541
+ protected async fillInputByTestId(
542
+ testId: string,
543
+ text: string,
544
+ annotationText: string = "",
545
+ description?: string,
546
+ ): Promise<void> {
547
+ const locator = this.locatorByTestId(testId, description);
548
+ await this.pointer.animateCursorToElementAndClickAndFill(locator, text, true, 200, annotationText, {
524
549
  afterClick: async ({ testId: clickedTestId, instrumented }: AfterPointerClickInfo) => {
525
550
  if (!clickedTestId || !instrumented) return;
526
551
  await this.waitForTestIdClickEventAfter(clickedTestId);
@@ -532,8 +557,14 @@ export class BasePage {
532
557
  * Interacts with a vue-select control rooted by a data-testid.
533
558
  * This is emitted frequently by the generator; keeping it here reduces per-page duplicated code.
534
559
  */
535
- protected async selectVSelectByTestId(testId: string, value: string, timeOut: number = 500, annotationText: string = ""): Promise<void> {
536
- const root = this.locatorByTestId(testId);
560
+ protected async selectVSelectByTestId(
561
+ testId: string,
562
+ value: string,
563
+ timeOut: number = 500,
564
+ annotationText: string = "",
565
+ description?: string,
566
+ ): Promise<void> {
567
+ const root = this.locatorByTestId(testId, description);
537
568
  const input = root.locator("input");
538
569
 
539
570
  await this.pointer.animateCursorToElement(input, false, 200, annotationText);
@@ -28,6 +28,7 @@ import {
28
28
  uniquePomStringPatterns,
29
29
  type PomStringPattern,
30
30
  } from "../pom-patterns";
31
+ import { buildPomLocatorDescription, stripPomActionPrefix } from "../pom-discoverability";
31
32
  import { introspectNuxtPages, parseRouterFileFromCwd } from "../router-introspection";
32
33
  import {
33
34
  addExportAll,
@@ -348,7 +349,7 @@ function getSelectorPatterns(selector: PomSelectorSpec): PomStringPattern[] {
348
349
  : [selector.rootTestId, selector.label];
349
350
  }
350
351
 
351
- function generateExtraClickMethodMembers(spec: PomExtraClickMethodSpec): TypeScriptClassMember[] {
352
+ function generateExtraClickMethodMembers(spec: PomExtraClickMethodSpec, componentName: string): TypeScriptClassMember[] {
352
353
  if (spec.kind !== "click") {
353
354
  return [];
354
355
  }
@@ -365,20 +366,15 @@ function generateExtraClickMethodMembers(spec: PomExtraClickMethodSpec): TypeScr
365
366
  const hasWait = signatureSpecs.some(param => param.name === "wait");
366
367
  const annotationArg = hasAnnotationText ? "annotationText" : "\"\"";
367
368
  const waitArg = hasWait ? "wait" : "true";
369
+ const locatorDescription = JSON.stringify(buildPomLocatorDescription({
370
+ componentName,
371
+ methodName: stripPomActionPrefix(spec.name),
372
+ nativeRole: "button",
373
+ }));
368
374
 
369
375
  if (spec.selector.kind === "testId") {
370
376
  const testIdBinding = bindTypeScriptPomPattern(spec.selector.testId, "testId");
371
377
 
372
- const clickArgs: string[] = [];
373
- clickArgs.push(testIdBinding.expression);
374
-
375
- if (hasAnnotationText || hasWait) {
376
- clickArgs.push(annotationArg);
377
- }
378
- if (hasWait) {
379
- clickArgs.push(waitArg);
380
- }
381
-
382
378
  return [
383
379
  createClassMethod({
384
380
  name: spec.name,
@@ -391,7 +387,7 @@ function generateExtraClickMethodMembers(spec: PomExtraClickMethodSpec): TypeScr
391
387
  for (const statement of testIdBinding.setupStatements) {
392
388
  writer.writeLine(statement);
393
389
  }
394
- writer.writeLine(`await this.clickByTestId(${clickArgs.join(", ")});`);
390
+ writer.writeLine(`await this.clickByTestId(${testIdBinding.expression}, ${annotationArg}, ${waitArg}, ${locatorDescription});`);
395
391
  },
396
392
  }),
397
393
  ];
@@ -414,18 +410,23 @@ function generateExtraClickMethodMembers(spec: PomExtraClickMethodSpec): TypeScr
414
410
  for (const statement of labelBinding.setupStatements) {
415
411
  writer.writeLine(statement);
416
412
  }
417
- writer.writeLine(`await this.clickWithinTestIdByLabel(${rootBinding.expression}, ${labelBinding.expression}, ${annotationArg}, ${waitArg});`);
413
+ writer.writeLine(`await this.clickWithinTestIdByLabel(${rootBinding.expression}, ${labelBinding.expression}, ${annotationArg}, ${waitArg}, { description: ${locatorDescription} });`);
418
414
  },
419
415
  }),
420
416
  ];
421
417
  }
422
418
 
423
- function generateMethodMembersFromPom(primary: PomPrimarySpec, targetPageObjectModelClass?: string): TypeScriptClassMember[] {
419
+ function generateMethodMembersFromPom(
420
+ componentName: string,
421
+ primary: PomPrimarySpec,
422
+ targetPageObjectModelClass?: string,
423
+ ): TypeScriptClassMember[] {
424
424
  if (primary.emitPrimary === false) {
425
425
  return [];
426
426
  }
427
427
 
428
428
  return generateViewObjectModelMembers(
429
+ componentName,
429
430
  targetPageObjectModelClass,
430
431
  primary.methodName,
431
432
  primary.nativeRole,
@@ -436,7 +437,7 @@ function generateMethodMembersFromPom(primary: PomPrimarySpec, targetPageObjectM
436
437
  );
437
438
  }
438
439
 
439
- function generateMethodsContentForDependencies(dependencies: IComponentDependencies): TypeScriptClassMember[] {
440
+ function generateMethodsContentForDependencies(componentName: string, dependencies: IComponentDependencies): TypeScriptClassMember[] {
440
441
  const entries = Array.from(dependencies.dataTestIdSet ?? []);
441
442
  const primarySpecsAll = entries
442
443
  .map(e => ({ pom: e.pom, target: e.targetPageObjectModelClass }))
@@ -475,11 +476,11 @@ function generateMethodsContentForDependencies(dependencies: IComponentDependenc
475
476
 
476
477
  const members: TypeScriptClassMember[] = [];
477
478
  for (const { pom, target } of primarySpecs) {
478
- members.push(...generateMethodMembersFromPom(pom, target));
479
+ members.push(...generateMethodMembersFromPom(componentName, pom, target));
479
480
  }
480
481
 
481
482
  for (const extra of extras) {
482
- members.push(...generateExtraClickMethodMembers(extra));
483
+ members.push(...generateExtraClickMethodMembers(extra, componentName));
483
484
  }
484
485
 
485
486
  return members;
@@ -1698,7 +1699,7 @@ function prepareViewObjectModelClass(
1698
1699
  members.push(...generateGoToSelfMethod(className));
1699
1700
  }
1700
1701
 
1701
- members.push(...generateMethodsContentForDependencies(dependencies));
1702
+ members.push(...generateMethodsContentForDependencies(componentName, dependencies));
1702
1703
 
1703
1704
  return {
1704
1705
  className,
@@ -52,9 +52,11 @@ export declare class BasePage {
52
52
  get screencast(): PwPage["screencast"];
53
53
  private waitForTestIdClickEventAfter;
54
54
  protected selectorForTestId(testId: string): string;
55
- protected locatorByTestId(testId: string): PwLocator;
55
+ protected describeLocator(locator: PwLocator, description?: string): PwLocator;
56
+ protected locatorByTestId(testId: string, description?: string): PwLocator;
56
57
  protected locatorWithinTestIdByLabel(rootTestId: string, label: string, options?: {
57
58
  exact?: boolean;
59
+ description?: string;
58
60
  }): PwLocator;
59
61
  /**
60
62
  * Animates the pointer to an element.
@@ -90,17 +92,18 @@ export declare class BasePage {
90
92
  * Clicks on an element with the specified data-testid
91
93
  * @param testId The data-testid of the element to click
92
94
  */
93
- clickByTestId(testId: string, annotationText?: string, wait?: boolean): Promise<void>;
95
+ clickByTestId(testId: string, annotationText?: string, wait?: boolean, description?: string): Promise<void>;
94
96
  clickLocator(locator: PwLocator, annotationText?: string, wait?: boolean): Promise<void>;
95
97
  protected clickWithinTestIdByLabel(rootTestId: string, label: string, annotationText?: string, wait?: boolean, options?: {
96
98
  exact?: boolean;
99
+ description?: string;
97
100
  }): Promise<void>;
98
- protected fillInputByTestId(testId: string, text: string, annotationText?: string): Promise<void>;
101
+ protected fillInputByTestId(testId: string, text: string, annotationText?: string, description?: string): Promise<void>;
99
102
  /**
100
103
  * Interacts with a vue-select control rooted by a data-testid.
101
104
  * This is emitted frequently by the generator; keeping it here reduces per-page duplicated code.
102
105
  */
103
- protected selectVSelectByTestId(testId: string, value: string, timeOut?: number, annotationText?: string): Promise<void>;
106
+ protected selectVSelectByTestId(testId: string, value: string, timeOut?: number, annotationText?: string, description?: string): Promise<void>;
104
107
  fillInputByLocator(locator: PwLocator, text: string, annotationText?: string): Promise<void>;
105
108
  protected clickByAriaLabel(ariaLabel: string, annotationText?: string): Promise<void>;
106
109
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"base-page.d.ts","sourceRoot":"","sources":["../../class-generation/base-page.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-page.d.ts","sourceRoot":"","sources":["../../class-generation/base-page.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../class-generation/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAkC,oCAAoC,EAAE,MAAM,sBAAsB,CAAC;AAwC5G,OAAO,EACL,sBAAsB,EAOvB,MAAM,UAAU,CAAC;AAQlB,OAAO,EAAE,oCAAoC,EAAE,CAAC;AA2ChD,UAAU,SAAS;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,GAAG,oBAAoB,CAAC;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AASD,MAAM,MAAM,yBAAyB,GAAG,YAAY,GAAG,OAAO,CAAC;AAqW/D,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;;;;;;;OAeG;IACH,gBAAgB,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAE1D;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhD;;;;;OAKG;IACH,oCAAoC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAEzD;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAE7C,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,uDAAuD;IACvD,aAAa,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;IAEvC;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IAEtD,6BAA6B;IAC7B,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,6EAA6E;IAC7E,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,mDAAmD;IACnD,UAAU,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC;IAEnC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAClD;AAsCD,wBAAsB,aAAa,CACjC,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAC1D,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,iBAAiB,EAAE,MAAM,EACzB,OAAO,GAAE,oBAAyB,iBAoGnC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../class-generation/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAkC,oCAAoC,EAAE,MAAM,sBAAsB,CAAC;AAyC5G,OAAO,EACL,sBAAsB,EAOvB,MAAM,UAAU,CAAC;AAQlB,OAAO,EAAE,oCAAoC,EAAE,CAAC;AA2ChD,UAAU,SAAS;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,GAAG,oBAAoB,CAAC;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AASD,MAAM,MAAM,yBAAyB,GAAG,YAAY,GAAG,OAAO,CAAC;AAqW/D,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;;;;;;;OAeG;IACH,gBAAgB,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAE1D;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhD;;;;;OAKG;IACH,oCAAoC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAEzD;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAE7C,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,uDAAuD;IACvD,aAAa,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;IAEvC;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IAEtD,6BAA6B;IAC7B,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,6EAA6E;IAC7E,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,mDAAmD;IACnD,UAAU,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC;IAEnC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAClD;AAsCD,wBAAsB,aAAa,CACjC,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAC1D,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,iBAAiB,EAAE,MAAM,EACzB,OAAO,GAAE,oBAAyB,iBAoGnC"}