@beignet/cli 0.0.52 → 0.0.53

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 (68) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +131 -1
  3. package/dist/analysis/layers.d.ts +2 -0
  4. package/dist/analysis/layers.d.ts.map +1 -1
  5. package/dist/analysis/layers.js +5 -0
  6. package/dist/analysis/layers.js.map +1 -1
  7. package/dist/analysis/port-wiring.d.ts +4 -2
  8. package/dist/analysis/port-wiring.d.ts.map +1 -1
  9. package/dist/analysis/port-wiring.js +39 -10
  10. package/dist/analysis/port-wiring.js.map +1 -1
  11. package/dist/analysis/source-index.d.ts +2 -1
  12. package/dist/analysis/source-index.d.ts.map +1 -1
  13. package/dist/analysis/source-index.js +34 -5
  14. package/dist/analysis/source-index.js.map +1 -1
  15. package/dist/analysis/workspace-routes.d.ts +8 -0
  16. package/dist/analysis/workspace-routes.d.ts.map +1 -0
  17. package/dist/analysis/workspace-routes.js +291 -0
  18. package/dist/analysis/workspace-routes.js.map +1 -0
  19. package/dist/analysis/workspace.d.ts +24 -3
  20. package/dist/analysis/workspace.d.ts.map +1 -1
  21. package/dist/analysis/workspace.js +166 -21
  22. package/dist/analysis/workspace.js.map +1 -1
  23. package/dist/app-map-changes.d.ts.map +1 -1
  24. package/dist/app-map-changes.js +19 -7
  25. package/dist/app-map-changes.js.map +1 -1
  26. package/dist/app-map.d.ts.map +1 -1
  27. package/dist/app-map.js +58 -55
  28. package/dist/app-map.js.map +1 -1
  29. package/dist/config.d.ts +7 -0
  30. package/dist/config.d.ts.map +1 -1
  31. package/dist/config.js +19 -0
  32. package/dist/config.js.map +1 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +20 -0
  35. package/dist/index.js.map +1 -1
  36. package/dist/inspect.d.ts.map +1 -1
  37. package/dist/inspect.js +89 -21
  38. package/dist/inspect.js.map +1 -1
  39. package/dist/lint.d.ts.map +1 -1
  40. package/dist/lint.js +106 -38
  41. package/dist/lint.js.map +1 -1
  42. package/dist/make/shared.js +1 -1
  43. package/dist/make.js +18 -1
  44. package/dist/make.js.map +1 -1
  45. package/dist/provider-add.js +2 -2
  46. package/dist/provider-add.js.map +1 -1
  47. package/dist/provider-audit.d.ts.map +1 -1
  48. package/dist/provider-audit.js +22 -6
  49. package/dist/provider-audit.js.map +1 -1
  50. package/dist/templates/shared.js +3 -3
  51. package/package.json +3 -2
  52. package/skills/app-structure/SKILL.md +42 -0
  53. package/src/analysis/layers.ts +9 -0
  54. package/src/analysis/port-wiring.ts +66 -10
  55. package/src/analysis/source-index.ts +56 -4
  56. package/src/analysis/workspace-routes.ts +385 -0
  57. package/src/analysis/workspace.ts +281 -34
  58. package/src/app-map-changes.ts +31 -5
  59. package/src/app-map.ts +75 -75
  60. package/src/config.ts +33 -0
  61. package/src/index.ts +25 -0
  62. package/src/inspect.ts +123 -16
  63. package/src/lint.ts +146 -43
  64. package/src/make/shared.ts +1 -1
  65. package/src/make.ts +31 -1
  66. package/src/provider-add.ts +2 -2
  67. package/src/provider-audit.ts +30 -10
  68. package/src/templates/shared.ts +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # @beignet/cli
2
2
 
3
+ ## 0.0.53
4
+
5
+ ### Patch Changes
6
+
7
+ - 6ef881c: Reject incompatible default route-binder inputs at compile time and classify
8
+ type-erased runtime mismatches as framework-owned validation errors. Generated
9
+ resource cursors now remain optional at the request boundary and normalize to
10
+ nullable repository pagination state inside the use case.
11
+ - 71f1de1: Generate StoragePort imports from the public ports subpath for S3 and Vercel Blob setup, including apps that already declare local storage.
12
+ - e1a559d: Add authenticated string encryption through EncryptionPort and createEncryption, with optional context binding, decryption through previous keys, and non-sensitive failure errors. Add beignet encryption key for key generation, server import checks, and guidance for rotation and recovery.
13
+ - ce6a5f6: Require patched Next.js and Nodemailer releases, and use them in generated apps and SMTP provider setup.
14
+ - faf58ad: Clarify form adapter installation and migration, document TanStack Form UI
15
+ generator restrictions, and correct React Form reference examples.
16
+ - edebbea: Add `@beignet/react-form`, a TanStack Form adapter that installs a contract body schema as a Standard Schema validator, types the `onServer` error slot, and maps client errors with `serverErrorMap`. `beignet lint` keeps the form packages out of domain and use-case code, `beignet doctor` expects `client/forms.ts` for either form adapter, and `beignet make feature --with ui` refuses to add React Hook Form components to an app that depends on `@beignet/react-form`.
17
+ - 4df0522: Add typed `cacheEntries` and `updateCachedQueries` helpers with partial parameter matching, and declarative, awaited mutation invalidation. Preserve native query metadata and snapshot success defaults for each executing mutation. Prevent recursive execution of composed mutation defaults. Append an `infinite` segment to generated infinite-query keys so manually seeded and hydrated infinite data stays separate from standard responses; discard persisted infinite caches from the old key format when upgrading. Reserve the `beignet` key prefix for contract data. Require TanStack React Query 5.102 or newer and align generated dependency ranges.
18
+ - 8f98e8b: Add opt-in workspace source analysis for shared application and infrastructure packages. Follow package exports in architecture lint, route inspection, port wiring, and app maps while keeping generators and repairs app-local.
19
+
20
+ Preserve per-file Next.js handlers, trace route registration from the exported server, reject imports into omitted source packages, and follow wiring aliases when inferring application ports.
21
+
22
+ Resolve package import aliases, import-then-export barrels, and contract aliases by source declaration so repeated export names and loader-local variables do not produce incorrect route matches.
23
+
24
+ - Updated dependencies [6ef881c]
25
+ - Updated dependencies [e1a559d]
26
+ - Updated dependencies [edebbea]
27
+ - @beignet/core@0.0.53
28
+
3
29
  ## 0.0.52
4
30
 
5
31
  ### Patch Changes
package/README.md CHANGED
@@ -49,7 +49,7 @@ add. Passing any selection flag (`--api`, `--db`, `--providers`, or
49
49
  non-interactive defaults (the full-stack SQLite starter with `bun`) even on a
50
50
  terminal. Non-interactive runs in scripts and CI behave exactly as before.
51
51
 
52
- By default the CLI creates a Next.js app with:
52
+ By default the CLI creates an app using Next.js 16.3.3 or newer within v16, with:
53
53
 
54
54
  - Contract-first todos API routes
55
55
  - Better Auth routes and Beignet auth provider wiring
@@ -506,6 +506,110 @@ export default defineConfig({
506
506
  This affects CLI provider auditing only. It does not skip `createEnv(...)` or
507
507
  provider runtime configuration validation.
508
508
 
509
+ ## Workspace source packages
510
+
511
+ A web app and a worker can share Beignet application code and infrastructure
512
+ through ordinary workspace packages. Each runtime owns startup and shutdown;
513
+ shared packages export contracts, use cases, port types, and adapter factories.
514
+ Sharing an adapter implementation does not share an in-memory instance across
515
+ processes. Use the same persistent database or service when runtimes need shared
516
+ state.
517
+
518
+ Opt into source analysis from the app's `beignet.config.ts`:
519
+
520
+ ```ts
521
+ import { defineConfig } from "@beignet/cli/config";
522
+
523
+ export default defineConfig({
524
+ framework: "web",
525
+ workspace: {
526
+ packages: ["../../packages/application", "../../packages/infra"],
527
+ },
528
+ });
529
+ ```
530
+
531
+ List every source package to inspect, including transitive dependencies. Paths
532
+ are relative to the app and may point to sibling packages. Each package needs a
533
+ unique `package.json` name and must be reachable through declared dependencies
534
+ from the app. Package roots cannot overlap. Beignet does not discover or inspect
535
+ all of `node_modules`; install workspace dependencies using your package manager.
536
+ Turborepo can schedule the package scripts but is not required by Beignet.
537
+
538
+ Each package uses its own `beignet.config.*` paths and `tsconfig.json` (or
539
+ `jsconfig.json`). An application package can keep the usual `features/`, `ports/`,
540
+ and `lib/` layout. An infra package containing adapters under `src/` can declare:
541
+
542
+ ```ts
543
+ // packages/infra/beignet.config.ts
544
+ import { defineConfig } from "@beignet/cli/config";
545
+
546
+ export default defineConfig({
547
+ paths: { portWiring: "src/port-wiring.ts" },
548
+ });
549
+ ```
550
+
551
+ This identifies `src/` as the package's infrastructure layer. A package that
552
+ only exports adapter factories does not need a port-wiring file. The consuming
553
+ app can compose those factories in its own `infra/port-wiring.ts`.
554
+
555
+ Expose source entrypoints through package exports, for example:
556
+
557
+ ```json
558
+ {
559
+ "name": "@example/infra",
560
+ "private": true,
561
+ "type": "module",
562
+ "exports": { "./notes": "./src/notes.ts" },
563
+ "dependencies": { "@example/application": "workspace:*" }
564
+ }
565
+ ```
566
+
567
+ The normal TypeScript resolver handles exports, subpaths, conditions, package
568
+ imports, and configured aliases. Configure the consuming build and runtime to
569
+ resolve the same source. Beignet does not rewrite imports or redirect built
570
+ exports to guessed source files. Missing exports and entries that resolve only
571
+ to excluded build output produce `BEIGNET_WORKSPACE_IMPORT` diagnostics.
572
+
573
+ `beignet lint` follows imports and reexports across included packages and applies
574
+ each owner's architecture rules. Moving an adapter to a package does not make
575
+ it accessible to use cases or browser code. Cross-package imports require a
576
+ dependency declaration in the importing package, including type-only imports.
577
+ Relative imports, TypeScript aliases, and `package.json#imports` aliases that
578
+ resolve outside the configured source roots also produce a workspace diagnostic;
579
+ include the owning source package in `workspace.packages`. Aliases to installed
580
+ external dependencies remain external imports.
581
+
582
+ App-owned provider checks recognize reexported `AppPorts` declarations and
583
+ provider metadata in hoisted `node_modules` installations. Inferred declarations
584
+ such as `AppPorts = typeof initialPorts` follow the underlying wiring declaration
585
+ through reexport aliases. Barrels may import a symbol and then export it, including
586
+ type-only exports of shared port interfaces.
587
+
588
+ `beignet routes` and `doctor` inspect shared contracts and explicit
589
+ `defineRoutes(...)` / `defineRouteGroup(...)` composition from the selected
590
+ server. Inspection follows the exported `server` or the server returned by an
591
+ exported `getServer = createNextServerLoader(...)`. Unrelated server factories
592
+ do not register routes, and verified per-file Next.js handlers remain valid
593
+ without central registration. Contract matching follows imports and local aliases
594
+ to the declaration, so shared export names and loader-local variables remain
595
+ distinct. Computed or ambiguous workspace route registration produces
596
+ `BEIGNET_WORKSPACE_ROUTES_UNRESOLVED`. `map` and `explain` include shared source
597
+ and qualify shared feature names, for example `@example/application:notes`.
598
+ Evidence paths remain relative to the selected app and can contain `../`.
599
+ `map --changed` includes changes to configured source packages.
600
+
601
+ Keep lifecycle provider registration, environment configuration, database
602
+ commands, and operational workflow registries app-owned. Provider and
603
+ operational doctor checks still use those app conventions; this source analysis
604
+ does not make arbitrary imported runtime factories statically verifiable.
605
+ Worker-only packages can use `lint` to check their dependencies; the HTTP-focused
606
+ `routes` and `doctor` commands run against the web app.
607
+
608
+ Generators and doctor repairs remain scoped to the selected app. `paths.*`
609
+ values must still stay inside that app; `workspace.packages` grants read-only
610
+ analysis, not permission to generate or repair files in another package. The
611
+ standard single-app examples remain the default architecture.
612
+
509
613
  ## Generate a contract
510
614
 
511
615
  Use `make contract` when you want to start with the HTTP contract only:
@@ -582,6 +686,12 @@ invalidates the generated list query. If the app does not have one yet, the
582
686
  generator also creates the canonical `client/forms.ts` adapter and installs the
583
687
  React Hook Form dependencies.
584
688
 
689
+ The addon targets React Hook Form. In an app that depends on
690
+ `@beignet/react-form`, both `--with ui` and `--recipe full-slice` stop with
691
+ guidance. Generate the feature without those options, then write its component
692
+ using the [TanStack Form guide](https://beignetjs.com/react-form). You can still
693
+ select other addons with `--with`.
694
+
585
695
  Use the named full-slice recipe when you want a richer reference slice:
586
696
 
587
697
  ```bash
@@ -951,6 +1061,21 @@ Run `make event <feature.event>` first, then generate listeners for that event.
951
1061
  repeated runs skip identical files and avoid duplicate wiring. If a generated
952
1062
  file exists with different content, the command stops unless you pass `--force`.
953
1063
 
1064
+ ## Generate an encryption key
1065
+
1066
+ ```bash
1067
+ beignet encryption key
1068
+ beignet encryption key --json
1069
+ ```
1070
+
1071
+ Prints a new `base64:`-prefixed 256-bit key for
1072
+ `createEncryption(...)` from `@beignet/core/encryption`. JSON output contains
1073
+ `schemaVersion: 1` and `key`. The command works outside an app and does not
1074
+ read or update environment files. Put the key into your server secret store;
1075
+ keep command output out of shared logs and never replace a key without retaining
1076
+ the keys needed to read existing data. See [Encryption](https://beignetjs.com/encryption)
1077
+ for wiring, rolling rotation, and backup recovery.
1078
+
954
1079
  ## Database lifecycle
955
1080
 
956
1081
  Use `beignet db` from an app root to run database workflow scripts through one
@@ -1410,6 +1535,11 @@ Supported presets are `flags-openfeature`, `jobs-bullmq`, `jobs-inngest`,
1410
1535
  the exact file changes. The same presets can be selected at create time with
1411
1536
  `--providers`.
1412
1537
 
1538
+ The storage presets declare `StoragePort` from `@beignet/core/ports` and reuse
1539
+ that declaration if your app already has local storage. Before switching storage
1540
+ providers, remove the previous provider entry, import, and unused provider
1541
+ package; keep the app's `storage` port and deferred binding.
1542
+
1413
1543
  Use `beignet provider audit` when you want a report-only inventory of the
1414
1544
  provider packages installed in an app. The human audit prints provider
1415
1545
  metadata validity, registration status, required env, required tables, and
@@ -1,4 +1,6 @@
1
1
  import { type ResolvedBeignetConfig } from "../config.js";
2
+ import { type AnalysisWorkspace } from "./workspace.js";
3
+ export declare function classifyWorkspaceSourcePath(file: string, workspace: AnalysisWorkspace): SourceLayer;
2
4
  export type SourceLayer = "app" | "app-context" | "agent-capability" | "client" | "component" | "contract" | "domain" | "feature-helper" | "feature-port" | "infra" | "lib" | "policy" | "port" | "route" | "schema" | "seed" | "server" | "test" | "use-case" | "workflow" | "unknown";
3
5
  export declare function classifySourcePath(filePath: string, config: ResolvedBeignetConfig): SourceLayer;
4
6
  export declare function canonicalFeatureLayerPath(filePath: string, config: ResolvedBeignetConfig): string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"layers.d.ts","sourceRoot":"","sources":["../../src/analysis/layers.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,cAAc,CAAC;AAItB,MAAM,MAAM,WAAW,GACnB,KAAK,GACL,aAAa,GACb,kBAAkB,GAClB,QAAQ,GACR,WAAW,GACX,UAAU,GACV,QAAQ,GACR,gBAAgB,GAChB,cAAc,GACd,OAAO,GACP,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,GACP,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,MAAM,GACN,UAAU,GACV,UAAU,GACV,SAAS,CAAC;AA6Cd,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,qBAAqB,GAC5B,WAAW,CAuEb;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,qBAAqB,GAC5B,MAAM,GAAG,SAAS,CAmCpB"}
1
+ {"version":3,"file":"layers.d.ts","sourceRoot":"","sources":["../../src/analysis/layers.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,KAAK,iBAAiB,EAAiB,MAAM,gBAAgB,CAAC;AAEvE,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,iBAAiB,GAC3B,WAAW,CAGb;AAED,MAAM,MAAM,WAAW,GACnB,KAAK,GACL,aAAa,GACb,kBAAkB,GAClB,QAAQ,GACR,WAAW,GACX,UAAU,GACV,QAAQ,GACR,gBAAgB,GAChB,cAAc,GACd,OAAO,GACP,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,GACP,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,MAAM,GACN,UAAU,GACV,UAAU,GACV,SAAS,CAAC;AA6Cd,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,qBAAqB,GAC5B,WAAW,CAuEb;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,qBAAqB,GAC5B,MAAM,GAAG,SAAS,CAmCpB"}
@@ -2,6 +2,11 @@ import path from "node:path";
2
2
  import { clientDirPath, directoryPath, normalizePath, } from "../config.js";
3
3
  import { isAppTestFile } from "../test-discovery.js";
4
4
  import { stripSourceFileExtension } from "./source-files.js";
5
+ import { projectSource } from "./workspace.js";
6
+ export function classifyWorkspaceSourcePath(file, workspace) {
7
+ const source = projectSource(workspace, file);
8
+ return classifySourcePath(source.file, source.project.config);
9
+ }
5
10
  const canonicalFeatureDirectories = {
6
11
  client: "client",
7
12
  components: "component",
@@ -1 +1 @@
1
- {"version":3,"file":"layers.js","sourceRoot":"","sources":["../../src/analysis/layers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layers.js","sourceRoot":"","sources":["../../src/analysis/layers.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  import ts from "typescript";
2
2
  import type { ResolvedBeignetConfig } from "../config.js";
3
- import type { AnalysisWorkspace } from "./workspace.js";
3
+ import { type SourceIndex } from "./source-index.js";
4
+ import { type AnalysisWorkspace } from "./workspace.js";
4
5
  type PortAnalysisWorkspace = Pick<AnalysisWorkspace, "config" | "fileSet" | "readSourceFile">;
5
6
  export type PortWiringAnalysis = {
6
7
  portsFileExists: boolean;
7
8
  portWiringFileExists: boolean;
8
9
  properties: Map<string, ts.PropertySignature>;
10
+ propertyFiles: Map<string, string>;
9
11
  declared: Set<string>;
10
12
  bound: Set<string>;
11
13
  deferred: Set<string>;
@@ -13,7 +15,7 @@ export type PortWiringAnalysis = {
13
15
  declarationIndeterminate: boolean;
14
16
  indeterminate: boolean;
15
17
  };
16
- export declare function analyzePortWiring(workspace: PortAnalysisWorkspace): Promise<PortWiringAnalysis>;
18
+ export declare function analyzePortWiring(workspace: PortAnalysisWorkspace, sourceIndex?: SourceIndex): Promise<PortWiringAnalysis>;
17
19
  export declare function analyzePortWiringFiles(options: {
18
20
  targetDir: string;
19
21
  files: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"port-wiring.d.ts","sourceRoot":"","sources":["../../src/analysis/port-wiring.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,KAAK,qBAAqB,GAAG,IAAI,CAC/B,iBAAiB,EACjB,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CACxC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,eAAe,EAAE,OAAO,CAAC;IACzB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC9C,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,0BAA0B,EAAE,OAAO,CAAC;IACpC,wBAAwB,EAAE,OAAO,CAAC;IAClC,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,qBAAqB,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CA+G7B;AA0FD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,qBAAqB,CAAC;CAC/B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmB9B"}
1
+ {"version":3,"file":"port-wiring.d.ts","sourceRoot":"","sources":["../../src/analysis/port-wiring.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,gBAAgB,CAAC;AAExB,KAAK,qBAAqB,GAAG,IAAI,CAC/B,iBAAiB,EACjB,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CACxC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,eAAe,EAAE,OAAO,CAAC;IACzB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC9C,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,0BAA0B,EAAE,OAAO,CAAC;IACpC,wBAAwB,EAAE,OAAO,CAAC;IAClC,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,qBAAqB,EAChC,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAgJ7B;AAiGD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,qBAAqB,CAAC;CAC/B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAyB9B"}
@@ -2,11 +2,14 @@ import { readFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import ts from "typescript";
4
4
  import { sourceFileScriptKind } from "./source-files.js";
5
- export async function analyzePortWiring(workspace) {
5
+ import { createSourceIndex, } from "./source-index.js";
6
+ import { createAnalysisWorkspace, } from "./workspace.js";
7
+ export async function analyzePortWiring(workspace, sourceIndex) {
6
8
  const result = {
7
9
  portsFileExists: workspace.fileSet.has(workspace.config.paths.ports),
8
10
  portWiringFileExists: workspace.fileSet.has(workspace.config.paths.portWiring),
9
11
  properties: new Map(),
12
+ propertyFiles: new Map(),
10
13
  declared: new Set(),
11
14
  bound: new Set(),
12
15
  deferred: new Set(),
@@ -15,18 +18,25 @@ export async function analyzePortWiring(workspace) {
15
18
  indeterminate: false,
16
19
  };
17
20
  let inferredAppPortsName;
21
+ let inferredAppPortsReference;
18
22
  if (result.portsFileExists) {
19
- const sourceFile = await workspace.readSourceFile(workspace.config.paths.ports);
23
+ const reference = await sourceIndex?.resolveExport(workspace.config.paths.ports, "AppPorts");
24
+ const portsFile = reference?.file ?? workspace.config.paths.ports;
25
+ const portsName = reference?.exportName ?? "AppPorts";
26
+ const sourceFile = await workspace.readSourceFile(portsFile);
20
27
  const declarations = collectTypeDeclarations(sourceFile);
21
- inferredAppPortsName = inferredTypeQueryName("AppPorts", declarations);
28
+ inferredAppPortsName = inferredTypeQueryName(portsName, declarations);
29
+ if (inferredAppPortsName)
30
+ inferredAppPortsReference = await sourceIndex?.resolveName(portsFile, inferredAppPortsName);
22
31
  const collection = inferredAppPortsName
23
32
  ? { properties: [], indeterminate: false }
24
- : collectNamedTypeProperties("AppPorts", declarations, true);
33
+ : collectNamedTypeProperties(portsName, declarations, !sourceIndex);
25
34
  result.declarationIndeterminate = collection.indeterminate;
26
35
  for (const property of collection.properties) {
27
36
  const name = propertyName(property.name);
28
37
  if (name && !result.properties.has(name)) {
29
38
  result.properties.set(name, property);
39
+ result.propertyFiles.set(name, portsFile);
30
40
  result.declared.add(name);
31
41
  }
32
42
  }
@@ -36,10 +46,16 @@ export async function analyzePortWiring(workspace) {
36
46
  result.declarationIndeterminate = true;
37
47
  return result;
38
48
  }
39
- const sourceFile = await workspace.readSourceFile(workspace.config.paths.portWiring);
49
+ const wiringReference = await sourceIndex?.resolveExport(workspace.config.paths.portWiring, "initialPorts");
50
+ const sourceFile = await workspace.readSourceFile(wiringReference?.file ?? workspace.config.paths.portWiring);
40
51
  const values = collectVariableInitializers(sourceFile);
41
- const definitions = portDefinitionCalls(sourceFile);
42
- if (definitions.indeterminate)
52
+ const definitions = portDefinitionCalls(sourceFile, wiringReference?.declaration &&
53
+ ts.isVariableDeclaration(wiringReference.declaration) &&
54
+ ts.isIdentifier(wiringReference.declaration.name)
55
+ ? wiringReference.declaration.name.text
56
+ : wiringReference?.exportName);
57
+ if (definitions.indeterminate ||
58
+ (sourceIndex && definitions.calls.length === 0))
43
59
  result.indeterminate = true;
44
60
  for (const call of definitions.calls) {
45
61
  const objectArgument = call.arguments
@@ -93,7 +109,11 @@ export async function analyzePortWiring(workspace) {
93
109
  }
94
110
  if (inferredAppPortsName) {
95
111
  if (!definitions.indeterminate &&
96
- definitions.name === inferredAppPortsName) {
112
+ (sourceIndex
113
+ ? Boolean(inferredAppPortsReference?.declaration &&
114
+ inferredAppPortsReference.declaration ===
115
+ wiringReference?.declaration)
116
+ : definitions.name === inferredAppPortsName)) {
97
117
  result.appPortsInferredFromWiring = true;
98
118
  for (const name of result.bound)
99
119
  result.declared.add(name);
@@ -106,7 +126,7 @@ export async function analyzePortWiring(workspace) {
106
126
  }
107
127
  return result;
108
128
  }
109
- function portDefinitionCalls(sourceFile) {
129
+ function portDefinitionCalls(sourceFile, preferredName) {
110
130
  const exportedNames = locallyExportedNames(sourceFile);
111
131
  const candidates = [];
112
132
  for (const statement of sourceFile.statements) {
@@ -129,7 +149,10 @@ function portDefinitionCalls(sourceFile) {
129
149
  });
130
150
  }
131
151
  }
132
- const canonical = candidates.filter((candidate) => candidate.name === "initialPorts" && candidate.exported);
152
+ const canonical = candidates.filter((candidate) => candidate.name === (preferredName ?? "initialPorts") &&
153
+ candidate.exported);
154
+ if (preferredName && canonical.length === 0)
155
+ return { calls: [], indeterminate: true };
133
156
  const exported = candidates.filter((candidate) => candidate.exported);
134
157
  const selected = canonical.length > 0
135
158
  ? canonical
@@ -175,6 +198,12 @@ function definePortsCalls(node) {
175
198
  return calls;
176
199
  }
177
200
  export async function analyzePortWiringFiles(options) {
201
+ if (options.config.workspace.packages.length > 0) {
202
+ const workspace = await createAnalysisWorkspace(options.targetDir, {
203
+ config: options.config,
204
+ });
205
+ return analyzePortWiring(workspace, createSourceIndex(workspace));
206
+ }
178
207
  const sourceFiles = new Map();
179
208
  return analyzePortWiring({
180
209
  config: options.config,
@@ -1 +1 @@
1
- {"version":3,"file":"port-wiring.js","sourceRoot":"","sources":["../../src/analysis/port-wiring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAoBzD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAgC;IAEhC,MAAM,MAAM,GAAuB;QACjC,eAAe,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACpE,oBAAoB,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CACzC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAClC;QACD,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,QAAQ,EAAE,IAAI,GAAG,EAAE;QACnB,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,QAAQ,EAAE,IAAI,GAAG,EAAE;QACnB,0BAA0B,EAAE,KAAK;QACjC,wBAAwB,EAAE,KAAK;QAC/B,aAAa,EAAE,KAAK;KACrB,CAAC;IAEF,IAAI,oBAAwC,CAAC;IAC7C,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,cAAc,CAC/C,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAC7B,CAAC;QACF,MAAM,YAAY,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACzD,oBAAoB,GAAG,qBAAqB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,oBAAoB;YACrC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;YAC1C,CAAC,CAAC,0BAA0B,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QAC/D,MAAM,CAAC,wBAAwB,GAAG,UAAU,CAAC,aAAa,CAAC;QAC3D,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACtC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACjC,IAAI,oBAAoB;YAAE,MAAM,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACjE,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,cAAc,CAC/C,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAClC,CAAC;IACF,MAAM,MAAM,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,WAAW,CAAC,aAAa;QAAE,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;IAE3D,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS;aAClC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;aAC3D,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC;QACtC,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;YAC3D,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,sBAAsB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,sBAAsB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QACpE,IACE,CAAC,KAAK,CAAC,QAAQ;YACf,CAAC,KAAK,CAAC,aAAa;YACpB,CAAC,QAAQ,CAAC,QAAQ;YAClB,CAAC,QAAQ,CAAC,aAAa,EACvB,CAAC;YACD,IAAI,sBAAsB,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzD,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;YAC9B,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YAClD,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ;YAC/B,CAAC,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YACrE,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,UAAU,IAAI,EAAE,CAAC,yBAAyB,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3D,IAAI,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrD,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;YAC9B,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1B,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ;YACrC,CAAC,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YACxE,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,aAAa,IAAI,EAAE,CAAC,wBAAwB,CAAC,aAAa,CAAC,EAAE,CAAC;YAChE,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;gBACnE,IAAI,KAAK;oBAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;oBACjC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;YACnC,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,oBAAoB,EAAE,CAAC;QACzB,IACE,CAAC,WAAW,CAAC,aAAa;YAC1B,WAAW,CAAC,IAAI,KAAK,oBAAoB,EACzC,CAAC;YACD,MAAM,CAAC,0BAA0B,GAAG,IAAI,CAAC;YACzC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;gBAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC3D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ;gBAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAyB;IAKpD,MAAM,aAAa,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,UAAU,GAIV,EAAE,CAAC;IAET,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QAC9C,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;YAAE,SAAS;QACjD,MAAM,iBAAiB,GAAG,OAAO,CAC/B,SAAS,CAAC,SAAS,EAAE,IAAI,CACvB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAC5D,CACF,CAAC;QACF,KAAK,MAAM,WAAW,IAAI,SAAS,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;YACjE,IAAI,CAAC,WAAW,CAAC,WAAW;gBAAE,SAAS;YACvC,MAAM,KAAK,GAAG,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YACxD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACjC,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC;gBAC5C,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI;gBACvB,CAAC,CAAC,SAAS,CAAC;YACd,UAAU,CAAC,IAAI,CAAC;gBACd,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzB,QAAQ,EAAE,iBAAiB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACvE,KAAK;aACN,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CACjC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc,IAAI,SAAS,CAAC,QAAQ,CACvE,CAAC;IACF,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtE,MAAM,QAAQ,GACZ,SAAS,CAAC,MAAM,GAAG,CAAC;QAClB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YACnB,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,UAAU,CAAC;IAEnB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK;YACxB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,aAAa,EAAE,KAAK;SACrB,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IAEnE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC1B,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE;QAC3C,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAyB;IACrD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QAC9C,IACE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;YAClC,CAAC,SAAS,CAAC,YAAY;YACvB,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC;YAC1C,SAAS,CAAC,eAAe,EACzB,CAAC;YACD,SAAS;QACX,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YACtD,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa;IACrC,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;QACxB,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAI5C;IACC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAyB,CAAC;IACrD,OAAO,iBAAiB,CAAC;QACvB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/B,KAAK,CAAC,cAAc,CAAC,IAAI;YACvB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAC1B,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,IAAI,EACJ,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAC1D,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,oBAAoB,CAAC,IAAI,CAAC,CAC3B,CAAC;YACF,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAClC,OAAO,UAAU,CAAC;QACpB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AASD,SAAS,uBAAuB,CAAC,UAAyB;IACxD,MAAM,YAAY,GAAqB,IAAI,GAAG,EAAE,CAAC;IACjD,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QAC9C,IACE,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC;YACpC,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,EACpC,CAAC;YACD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,0BAA0B,CACjC,IAAY,EACZ,YAA8B,EAC9B,IAAI,GAAG,KAAK,EACZ,UAAU,IAAI,GAAG,EAAU;IAE3B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,UAAU,GAAuB;QACrC,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,KAAK;KACrB,CAAC;IACF,KAAK,MAAM,WAAW,IAAI,iBAAiB,EAAE,CAAC;QAC5C,IAAI,EAAE,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,UAAU,CAAC,UAAU,CAAC,IAAI,CACxB,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC,CACtD,CAAC;YACF,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;gBACvD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAChC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBACtC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;wBAChC,SAAS;oBACX,CAAC;oBACD,MAAM,SAAS,GAAG,0BAA0B,CAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,EACpB,YAAY,EACZ,KAAK,EACL,OAAO,CACR,CAAC;oBACF,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;oBACpD,UAAU,CAAC,aAAa,KAAK,SAAS,CAAC,aAAa,CAAC;gBACvD,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,yBAAyB,CACvC,WAAW,CAAC,IAAI,EAChB,YAAY,EACZ,OAAO,CACR,CAAC;QACF,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAClD,UAAU,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC;IACrD,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,yBAAyB,CAChC,IAAiB,EACjB,YAA8B,EAC9B,OAAoB;IAEpB,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC;YACvD,aAAa,EAAE,KAAK;SACrB,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACxC,yBAAyB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CACzD,CAAC;QACF,OAAO;YACL,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;YAC1D,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC;SAC9D,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnE,OAAO,0BAA0B,CAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAClB,YAAY,EACZ,KAAK,EACL,OAAO,CACR,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAY,EACZ,YAA8B;IAE9B,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjD,IACE,iBAAiB,EAAE,MAAM,KAAK,CAAC;QAC/B,CAAC,EAAE,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC,EAAE,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,CAAC,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EACpD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjD,CAAC;AAED,SAAS,2BAA2B,CAClC,UAAyB;IAEzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAChD,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QAC9C,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;YAAE,SAAS;QACjD,KAAK,MAAM,WAAW,IAAI,SAAS,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;YACjE,IAAI,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;gBACjE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAC7B,UAAyB,EACzB,MAAkC,EAClC,UAAU,IAAI,GAAG,EAAU;IAE3B,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IAC3E,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAyB;IACjD,IAAI,OAAO,GAAG,UAAU,CAAC;IACzB,OACE,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC;QACrC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC;QAC1B,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC;QACjC,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC;QACrC,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAC/B,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAC/B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAkC,EAClC,MAAmB;IAEnB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,IAAI,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACtB,CAAC;YACJ,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAkC,EAClC,IAAY;IAKZ,IAAI,QAGS,CAAC;IACd,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACvC,IAAI,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAClD,QAAQ,GAAG,SAAS,CAAC;YACrB,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,QAAQ,GAAG,SAAS,CAAC;YACrB,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,IAAI;YAAE,SAAS;QAC3B,IACE,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC;YAC/B,EAAE,CAAC,6BAA6B,CAAC,MAAM,CAAC,EACxC,CAAC;YACD,QAAQ,GAAG,MAAM,CAAC;YAClB,aAAa,GAAG,KAAK,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,SAAS,CAAC;YACrB,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAAgE;IAEhE,OAAO,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QACtC,CAAC,CAAC,QAAQ,CAAC,WAAW;QACtB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACpB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAuB;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,IAAI,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC,IAAI,CAAC;IACxD,IAAI,EAAE,CAAC,0BAA0B,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3E,IAAI,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;IACjE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,IAAa,EAAE,KAAwC;IACzE,MAAM,MAAM,GAAG,CAAC,KAAc,EAAQ,EAAE;QACtC,IAAI,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7C,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,IAAqB;IACzC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IAC5E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,UAAyB;IAC5C,IAAI,EAAE,CAAC,mBAAmB,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC,IAAI,CAAC;IAC/D,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"port-wiring.js","sourceRoot":"","sources":["../../src/analysis/port-wiring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,iBAAiB,GAGlB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAoBxB,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAgC,EAChC,WAAyB;IAEzB,MAAM,MAAM,GAAuB;QACjC,eAAe,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACpE,oBAAoB,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CACzC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAClC;QACD,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,aAAa,EAAE,IAAI,GAAG,EAAE;QACxB,QAAQ,EAAE,IAAI,GAAG,EAAE;QACnB,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,QAAQ,EAAE,IAAI,GAAG,EAAE;QACnB,0BAA0B,EAAE,KAAK;QACjC,wBAAwB,EAAE,KAAK;QAC/B,aAAa,EAAE,KAAK;KACrB,CAAC;IAEF,IAAI,oBAAwC,CAAC;IAC7C,IAAI,yBAA8D,CAAC;IACnE,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,MAAM,WAAW,EAAE,aAAa,CAChD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAC5B,UAAU,CACX,CAAC;QACF,MAAM,SAAS,GAAG,SAAS,EAAE,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAClE,MAAM,SAAS,GAAG,SAAS,EAAE,UAAU,IAAI,UAAU,CAAC;QACtD,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACzD,oBAAoB,GAAG,qBAAqB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACtE,IAAI,oBAAoB;YACtB,yBAAyB,GAAG,MAAM,WAAW,EAAE,WAAW,CACxD,SAAS,EACT,oBAAoB,CACrB,CAAC;QACJ,MAAM,UAAU,GAAG,oBAAoB;YACrC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;YAC1C,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC;QACtE,MAAM,CAAC,wBAAwB,GAAG,UAAU,CAAC,aAAa,CAAC;QAC3D,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACtC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAC1C,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACjC,IAAI,oBAAoB;YAAE,MAAM,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACjE,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,WAAW,EAAE,aAAa,CACtD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EACjC,cAAc,CACf,CAAC;IACF,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,cAAc,CAC/C,eAAe,EAAE,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAC3D,CAAC;IACF,MAAM,MAAM,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,mBAAmB,CACrC,UAAU,EACV,eAAe,EAAE,WAAW;QAC1B,EAAE,CAAC,qBAAqB,CAAC,eAAe,CAAC,WAAW,CAAC;QACrD,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC;QACjD,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI;QACvC,CAAC,CAAC,eAAe,EAAE,UAAU,CAChC,CAAC;IACF,IACE,WAAW,CAAC,aAAa;QACzB,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;QAE/C,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS;aAClC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;aAC3D,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC;QACtC,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;YAC3D,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,sBAAsB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,sBAAsB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QACpE,IACE,CAAC,KAAK,CAAC,QAAQ;YACf,CAAC,KAAK,CAAC,aAAa;YACpB,CAAC,QAAQ,CAAC,QAAQ;YAClB,CAAC,QAAQ,CAAC,aAAa,EACvB,CAAC;YACD,IAAI,sBAAsB,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzD,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;YAC9B,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YAClD,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ;YAC/B,CAAC,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YACrE,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,UAAU,IAAI,EAAE,CAAC,yBAAyB,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3D,IAAI,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrD,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;YAC9B,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1B,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ;YACrC,CAAC,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YACxE,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,aAAa,IAAI,EAAE,CAAC,wBAAwB,CAAC,aAAa,CAAC,EAAE,CAAC;YAChE,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;gBACnE,IAAI,KAAK;oBAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;oBACjC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;YACnC,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,oBAAoB,EAAE,CAAC;QACzB,IACE,CAAC,WAAW,CAAC,aAAa;YAC1B,CAAC,WAAW;gBACV,CAAC,CAAC,OAAO,CACL,yBAAyB,EAAE,WAAW;oBACpC,yBAAyB,CAAC,WAAW;wBACnC,eAAe,EAAE,WAAW,CACjC;gBACH,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,oBAAoB,CAAC,EAC9C,CAAC;YACD,MAAM,CAAC,0BAA0B,GAAG,IAAI,CAAC;YACzC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;gBAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC3D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ;gBAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAC1B,UAAyB,EACzB,aAAsB;IAMtB,MAAM,aAAa,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,UAAU,GAIV,EAAE,CAAC;IAET,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QAC9C,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;YAAE,SAAS;QACjD,MAAM,iBAAiB,GAAG,OAAO,CAC/B,SAAS,CAAC,SAAS,EAAE,IAAI,CACvB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAC5D,CACF,CAAC;QACF,KAAK,MAAM,WAAW,IAAI,SAAS,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;YACjE,IAAI,CAAC,WAAW,CAAC,WAAW;gBAAE,SAAS;YACvC,MAAM,KAAK,GAAG,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YACxD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACjC,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC;gBAC5C,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI;gBACvB,CAAC,CAAC,SAAS,CAAC;YACd,UAAU,CAAC,IAAI,CAAC;gBACd,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzB,QAAQ,EAAE,iBAAiB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACvE,KAAK;aACN,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CACjC,CAAC,SAAS,EAAE,EAAE,CACZ,SAAS,CAAC,IAAI,KAAK,CAAC,aAAa,IAAI,cAAc,CAAC;QACpD,SAAS,CAAC,QAAQ,CACrB,CAAC;IACF,IAAI,aAAa,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QACzC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtE,MAAM,QAAQ,GACZ,SAAS,CAAC,MAAM,GAAG,CAAC;QAClB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YACnB,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,UAAU,CAAC;IAEnB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK;YACxB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,aAAa,EAAE,KAAK;SACrB,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IAEnE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC1B,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE;QAC3C,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAyB;IACrD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QAC9C,IACE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;YAClC,CAAC,SAAS,CAAC,YAAY;YACvB,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC;YAC1C,SAAS,CAAC,eAAe,EACzB,CAAC;YACD,SAAS;QACX,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YACtD,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa;IACrC,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;QACxB,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAI5C;IACC,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,SAAS,EAAE;YACjE,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,OAAO,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAyB,CAAC;IACrD,OAAO,iBAAiB,CAAC;QACvB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/B,KAAK,CAAC,cAAc,CAAC,IAAI;YACvB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAC1B,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,IAAI,EACJ,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAC1D,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,oBAAoB,CAAC,IAAI,CAAC,CAC3B,CAAC;YACF,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAClC,OAAO,UAAU,CAAC;QACpB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AASD,SAAS,uBAAuB,CAAC,UAAyB;IACxD,MAAM,YAAY,GAAqB,IAAI,GAAG,EAAE,CAAC;IACjD,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QAC9C,IACE,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC;YACpC,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,EACpC,CAAC;YACD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,0BAA0B,CACjC,IAAY,EACZ,YAA8B,EAC9B,IAAI,GAAG,KAAK,EACZ,UAAU,IAAI,GAAG,EAAU;IAE3B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,UAAU,GAAuB;QACrC,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,KAAK;KACrB,CAAC;IACF,KAAK,MAAM,WAAW,IAAI,iBAAiB,EAAE,CAAC;QAC5C,IAAI,EAAE,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,UAAU,CAAC,UAAU,CAAC,IAAI,CACxB,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC,CACtD,CAAC;YACF,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;gBACvD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAChC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBACtC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;wBAChC,SAAS;oBACX,CAAC;oBACD,MAAM,SAAS,GAAG,0BAA0B,CAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,EACpB,YAAY,EACZ,KAAK,EACL,OAAO,CACR,CAAC;oBACF,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;oBACpD,UAAU,CAAC,aAAa,KAAK,SAAS,CAAC,aAAa,CAAC;gBACvD,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,yBAAyB,CACvC,WAAW,CAAC,IAAI,EAChB,YAAY,EACZ,OAAO,CACR,CAAC;QACF,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAClD,UAAU,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC;IACrD,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,yBAAyB,CAChC,IAAiB,EACjB,YAA8B,EAC9B,OAAoB;IAEpB,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC;YACvD,aAAa,EAAE,KAAK;SACrB,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACxC,yBAAyB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CACzD,CAAC;QACF,OAAO;YACL,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;YAC1D,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC;SAC9D,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnE,OAAO,0BAA0B,CAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAClB,YAAY,EACZ,KAAK,EACL,OAAO,CACR,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAY,EACZ,YAA8B;IAE9B,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjD,IACE,iBAAiB,EAAE,MAAM,KAAK,CAAC;QAC/B,CAAC,EAAE,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC,EAAE,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,CAAC,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EACpD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjD,CAAC;AAED,SAAS,2BAA2B,CAClC,UAAyB;IAEzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAChD,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QAC9C,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC;YAAE,SAAS;QACjD,KAAK,MAAM,WAAW,IAAI,SAAS,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;YACjE,IAAI,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;gBACjE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAC7B,UAAyB,EACzB,MAAkC,EAClC,UAAU,IAAI,GAAG,EAAU;IAE3B,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IAC3E,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAyB;IACjD,IAAI,OAAO,GAAG,UAAU,CAAC;IACzB,OACE,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC;QACrC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC;QAC1B,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC;QACjC,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC;QACrC,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAC/B,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAC/B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAkC,EAClC,MAAmB;IAEnB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,IAAI,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACtB,CAAC;YACJ,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAkC,EAClC,IAAY;IAKZ,IAAI,QAGS,CAAC;IACd,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACvC,IAAI,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAClD,QAAQ,GAAG,SAAS,CAAC;YACrB,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,QAAQ,GAAG,SAAS,CAAC;YACrB,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,IAAI;YAAE,SAAS;QAC3B,IACE,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC;YAC/B,EAAE,CAAC,6BAA6B,CAAC,MAAM,CAAC,EACxC,CAAC;YACD,QAAQ,GAAG,MAAM,CAAC;YAClB,aAAa,GAAG,KAAK,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,SAAS,CAAC;YACrB,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAAgE;IAEhE,OAAO,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QACtC,CAAC,CAAC,QAAQ,CAAC,WAAW;QACtB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACpB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAuB;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,IAAI,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC,IAAI,CAAC;IACxD,IAAI,EAAE,CAAC,0BAA0B,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3E,IAAI,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;IACjE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,IAAa,EAAE,KAAwC;IACzE,MAAM,MAAM,GAAG,CAAC,KAAc,EAAQ,EAAE;QACtC,IAAI,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7C,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,IAAqB;IACzC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IAC5E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,UAAyB;IAC5C,IAAI,EAAE,CAAC,mBAAmB,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC,IAAI,CAAC;IAC/D,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -25,7 +25,8 @@ export type ModuleReference = LocalImportReference & {
25
25
  };
26
26
  export type SourceIndex = {
27
27
  resolveName(file: string, name: string): Promise<ResolvedSourceReference | undefined>;
28
- resolveExpression(file: string, expression: ts.Expression): Promise<ResolvedSourceReference | undefined>;
28
+ resolveExpression(file: string, expression: ts.Expression, locals?: ReadonlyMap<string, ts.Declaration>): Promise<ResolvedSourceReference | undefined>;
29
+ resolveValue(file: string, expression: ts.Expression, locals?: ReadonlyMap<string, ts.Declaration>): Promise<ResolvedSourceReference | undefined>;
29
30
  resolveExport(file: string, exportName: string): Promise<ResolvedSourceReference | undefined>;
30
31
  sourceLocation(file: string, node: ts.Node, exportName?: string): Promise<AnalysisSourceLocation>;
31
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"source-index.d.ts","sourceRoot":"","sources":["../../src/analysis/source-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,KAAK,iBAAiB,EAGvB,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAAG;IACnD,MAAM,EAAE,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,eAAe,GAAG,SAAS,CAAC;IAC7E,oBAAoB,EAAE,OAAO,CAAC;CAC/B,CAAC;AAeF,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAAC;IAChD,iBAAiB,CACf,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,EAAE,CAAC,UAAU,GACxB,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAAC;IAChD,aAAa,CACX,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAAC;IAChD,cAAc,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACpC,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,GAAG,WAAW,CAsO3E;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,EAAE,CAAC,UAAU,GACxB,KAAK,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,EAAE,CAAC,mBAAmB,CAAA;CAAE,CAAC,CAiDpE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKzE;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,EAAE,CAAC,uBAAuB,EAClC,IAAI,EAAE,MAAM,GACX,EAAE,CAAC,kBAAkB,GAAG,SAAS,CAKnC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,GAAG,MAAM,GAAG,SAAS,CAGtE;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,KAAK,IAAI,GACvC,IAAI,CAMN;AAED,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAcjC;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,eAAe,EAAE,CAAC,CAoG5B"}
1
+ {"version":3,"file":"source-index.d.ts","sourceRoot":"","sources":["../../src/analysis/source-index.ts"],"names":[],"mappings":"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"}
@@ -60,8 +60,6 @@ export function createSourceIndex(workspace) {
60
60
  if (statement.exportClause &&
61
61
  ts.isNamedExports(statement.exportClause)) {
62
62
  for (const element of statement.exportClause.elements) {
63
- if (statement.isTypeOnly || element.isTypeOnly)
64
- continue;
65
63
  index.localExports.set(element.name.text, element.propertyName?.text ?? element.name.text);
66
64
  }
67
65
  }
@@ -124,6 +122,9 @@ export function createSourceIndex(workspace) {
124
122
  if (localDeclaration) {
125
123
  return { file, exportName, declaration: localDeclaration };
126
124
  }
125
+ const imported = localName ? index.imports.get(localName) : undefined;
126
+ if (imported?.kind === "named")
127
+ return resolveExport(imported.file, imported.exportName, visited);
127
128
  const reexport = index.reexports.get(exportName);
128
129
  if (reexport) {
129
130
  return ((await resolveExport(reexport.file, reexport.exportName, visited)) ?? {
@@ -138,7 +139,7 @@ export function createSourceIndex(workspace) {
138
139
  }
139
140
  return undefined;
140
141
  };
141
- return {
142
+ const sourceIndex = {
142
143
  async resolveName(file, name) {
143
144
  const index = await readIndex(file);
144
145
  const local = index.locals.get(name);
@@ -153,11 +154,11 @@ export function createSourceIndex(workspace) {
153
154
  exportName: binding.exportName,
154
155
  });
155
156
  },
156
- async resolveExpression(file, rawExpression) {
157
+ async resolveExpression(file, rawExpression, locals) {
157
158
  const expression = unwrapExpression(rawExpression);
158
159
  const index = await readIndex(file);
159
160
  if (ts.isIdentifier(expression)) {
160
- const local = index.declarations.get(expression.text);
161
+ const local = locals?.get(expression.text) ?? index.locals.get(expression.text);
161
162
  if (local) {
162
163
  return { file, exportName: expression.text, declaration: local };
163
164
  }
@@ -171,6 +172,9 @@ export function createSourceIndex(workspace) {
171
172
  }
172
173
  if (ts.isPropertyAccessExpression(expression) &&
173
174
  ts.isIdentifier(expression.expression)) {
175
+ if (locals?.has(expression.expression.text) ||
176
+ index.locals.has(expression.expression.text))
177
+ return undefined;
174
178
  const binding = index.imports.get(expression.expression.text);
175
179
  if (binding?.kind !== "namespace")
176
180
  return undefined;
@@ -181,6 +185,30 @@ export function createSourceIndex(workspace) {
181
185
  }
182
186
  return undefined;
183
187
  },
188
+ async resolveValue(file, expression, locals) {
189
+ const visited = new Set();
190
+ async function follow(file, rawExpression, locals) {
191
+ const expression = unwrapExpression(rawExpression);
192
+ const reference = await sourceIndex.resolveExpression(file, expression, locals);
193
+ const declaration = reference?.declaration;
194
+ if (!reference || !declaration || visited.has(declaration))
195
+ return undefined;
196
+ visited.add(declaration);
197
+ if (!ts.isVariableDeclaration(declaration) || !declaration.initializer)
198
+ return reference;
199
+ if (!ts.isVariableDeclarationList(declaration.parent) ||
200
+ !(declaration.parent.flags & ts.NodeFlags.Const))
201
+ return undefined;
202
+ const initializer = unwrapExpression(declaration.initializer);
203
+ if (!ts.isIdentifier(initializer) &&
204
+ !ts.isPropertyAccessExpression(initializer))
205
+ return reference;
206
+ const local = ts.isIdentifier(expression) &&
207
+ locals?.get(expression.text) === declaration;
208
+ return follow(reference.file, initializer, local ? locals : undefined);
209
+ }
210
+ return follow(file, expression, locals);
211
+ },
184
212
  resolveExport(file, exportName) {
185
213
  return resolveExport(file, exportName);
186
214
  },
@@ -195,6 +223,7 @@ export function createSourceIndex(workspace) {
195
223
  };
196
224
  },
197
225
  };
226
+ return sourceIndex;
198
227
  }
199
228
  export function exportedVariableDeclarations(sourceFile) {
200
229
  const declarations = [];