prisma-next 0.5.0-dev.67 → 0.5.0-dev.68

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 (63) hide show
  1. package/dist/cli.mjs +8 -8
  2. package/dist/cli.mjs.map +1 -1
  3. package/dist/client-0ZX24FXF.mjs +1398 -0
  4. package/dist/client-0ZX24FXF.mjs.map +1 -0
  5. package/dist/commands/contract-emit.mjs +1 -1
  6. package/dist/commands/contract-infer.mjs +1 -1
  7. package/dist/commands/db-init.d.mts.map +1 -1
  8. package/dist/commands/db-init.mjs +7 -5
  9. package/dist/commands/db-init.mjs.map +1 -1
  10. package/dist/commands/db-schema.mjs +2 -2
  11. package/dist/commands/db-sign.mjs +2 -2
  12. package/dist/commands/db-update.d.mts.map +1 -1
  13. package/dist/commands/db-update.mjs +7 -5
  14. package/dist/commands/db-update.mjs.map +1 -1
  15. package/dist/commands/db-verify.d.mts.map +1 -1
  16. package/dist/commands/db-verify.mjs +1 -320
  17. package/dist/commands/migration-apply.mjs +11 -11
  18. package/dist/commands/migration-apply.mjs.map +1 -1
  19. package/dist/commands/migration-new.mjs +5 -5
  20. package/dist/commands/migration-new.mjs.map +1 -1
  21. package/dist/commands/migration-plan.d.mts.map +1 -1
  22. package/dist/commands/migration-plan.mjs +1 -344
  23. package/dist/commands/migration-ref.d.mts +1 -1
  24. package/dist/commands/migration-ref.mjs +1 -1
  25. package/dist/commands/migration-show.d.mts +1 -1
  26. package/dist/commands/migration-show.d.mts.map +1 -1
  27. package/dist/commands/migration-show.mjs +8 -7
  28. package/dist/commands/migration-show.mjs.map +1 -1
  29. package/dist/commands/migration-status.mjs +1 -1
  30. package/dist/{contract-emit-B0nGrDtk.mjs → contract-emit-DkMqO7f2.mjs} +2 -2
  31. package/dist/{contract-emit-B0nGrDtk.mjs.map → contract-emit-DkMqO7f2.mjs.map} +1 -1
  32. package/dist/{contract-infer-BjMJaOOa.mjs → contract-infer-BDKAE0B0.mjs} +3 -3
  33. package/dist/{contract-infer-BjMJaOOa.mjs.map → contract-infer-BDKAE0B0.mjs.map} +1 -1
  34. package/dist/db-verify-B4TdDKOI.mjs +403 -0
  35. package/dist/db-verify-B4TdDKOI.mjs.map +1 -0
  36. package/dist/exports/control-api.d.mts +201 -3
  37. package/dist/exports/control-api.d.mts.map +1 -1
  38. package/dist/exports/control-api.mjs +2 -2
  39. package/dist/exports/index.d.mts.map +1 -1
  40. package/dist/exports/index.mjs +17 -17
  41. package/dist/exports/index.mjs.map +1 -1
  42. package/dist/exports/init-output.mjs +1 -1
  43. package/dist/{init-C3qdc0Sh.mjs → init-Deo7U8_U.mjs} +2 -2
  44. package/dist/{init-C3qdc0Sh.mjs.map → init-Deo7U8_U.mjs.map} +1 -1
  45. package/dist/{inspect-live-schema-33rxnu0K.mjs → inspect-live-schema-BAgQMYpD.mjs} +3 -3
  46. package/dist/{inspect-live-schema-33rxnu0K.mjs.map → inspect-live-schema-BAgQMYpD.mjs.map} +1 -1
  47. package/dist/{migration-command-scaffold-DQo4R0XT.mjs → migration-command-scaffold-B8J702Uh.mjs} +3 -3
  48. package/dist/{migration-command-scaffold-DQo4R0XT.mjs.map → migration-command-scaffold-B8J702Uh.mjs.map} +1 -1
  49. package/dist/migration-plan-BcKNnTM7.mjs +530 -0
  50. package/dist/migration-plan-BcKNnTM7.mjs.map +1 -0
  51. package/dist/{migration-status-C_2FSkbf.mjs → migration-status-CjwB2of-.mjs} +6 -6
  52. package/dist/{migration-status-C_2FSkbf.mjs.map → migration-status-CjwB2of-.mjs.map} +1 -1
  53. package/dist/{output-BTgnZ5c_.mjs → output-DnjfCC_u.mjs} +1 -1
  54. package/dist/{output-BTgnZ5c_.mjs.map → output-DnjfCC_u.mjs.map} +1 -1
  55. package/dist/{result-handler-C0QeiqKO.mjs → result-handler-DWb1rFS-.mjs} +18 -3
  56. package/dist/result-handler-DWb1rFS-.mjs.map +1 -0
  57. package/package.json +11 -11
  58. package/dist/client-CW1hcUtM.mjs +0 -1025
  59. package/dist/client-CW1hcUtM.mjs.map +0 -1
  60. package/dist/commands/db-verify.mjs.map +0 -1
  61. package/dist/commands/migration-plan.mjs.map +0 -1
  62. package/dist/result-handler-C0QeiqKO.mjs.map +0 -1
  63. /package/dist/{cli-errors-BWn943z2.d.mts → cli-errors-QH8kf-C2.d.mts} +0 -0
@@ -1,10 +1,70 @@
1
+ import { t as CliStructuredError } from "../cli-errors-QH8kf-C2.mjs";
1
2
  import { Result } from "@prisma-next/utils/result";
2
3
  import { ContractSourceDiagnostics, ContractSourceProvider } from "@prisma-next/config/config-types";
3
- import { ControlAdapterDescriptor, ControlDriverDescriptor, ControlExtensionDescriptor, ControlFamilyDescriptor, ControlStack, ControlTargetDescriptor, CoreSchemaView, MigrationPlanOperation, MigrationPlannerConflict, OperationPreview, SignDatabaseResult, SignDatabaseResult as SignDatabaseResult$1, VerifyDatabaseResult, VerifyDatabaseResult as VerifyDatabaseResult$1, VerifyDatabaseSchemaResult, VerifyDatabaseSchemaResult as VerifyDatabaseSchemaResult$1 } from "@prisma-next/framework-components/control";
4
+ import { ControlAdapterDescriptor, ControlDriverDescriptor, ControlDriverInstance, ControlExtensionDescriptor, ControlFamilyDescriptor, ControlFamilyInstance, ControlStack, ControlTargetDescriptor, CoreSchemaView, MigrationPlanOperation, MigrationPlannerConflict, OperationPreview, SignDatabaseResult, SignDatabaseResult as SignDatabaseResult$1, TargetMigrationsCapability, VerifyDatabaseResult, VerifyDatabaseResult as VerifyDatabaseResult$1, VerifyDatabaseSchemaResult, VerifyDatabaseSchemaResult as VerifyDatabaseSchemaResult$1 } from "@prisma-next/framework-components/control";
4
5
  import { TargetBoundComponentDescriptor } from "@prisma-next/framework-components/components";
5
6
  import { Contract, ContractMarkerRecord } from "@prisma-next/contract/types";
6
7
  import { PslDocumentAst } from "@prisma-next/framework-components/psl-ast";
7
8
 
9
+ //#region src/control-api/operations/db-verify.d.ts
10
+ /**
11
+ * Inputs for the aggregate `db verify` operation.
12
+ *
13
+ * Loader → verifier pipeline. The loader (sole descriptor-import
14
+ * boundary) builds a {@link import('@prisma-next/migration-tools/aggregate').ContractSpaceAggregate};
15
+ * the aggregate verifier bundles `markerCheck` + per-space pre-projected
16
+ * `schemaCheck`. `mode: 'strict' | 'lenient'` maps directly to the user
17
+ * facing `--strict` flag.
18
+ */
19
+ interface ExecuteDbVerifyOptions<TFamilyId extends string, TTargetId extends string> {
20
+ readonly driver: ControlDriverInstance<TFamilyId, TTargetId>;
21
+ readonly familyInstance: ControlFamilyInstance<TFamilyId, unknown>;
22
+ readonly contract: Contract;
23
+ readonly migrationsDir: string;
24
+ readonly targetId: TTargetId;
25
+ readonly extensionPacks: ReadonlyArray<ControlExtensionDescriptor<TFamilyId, TTargetId>>;
26
+ readonly frameworkComponents: ReadonlyArray<TargetBoundComponentDescriptor<TFamilyId, TTargetId>>;
27
+ readonly mode: 'strict' | 'lenient';
28
+ readonly skipSchema: boolean;
29
+ readonly skipMarker: boolean;
30
+ readonly onProgress?: OnControlProgress;
31
+ }
32
+ /**
33
+ * Result of the aggregate verify operation.
34
+ *
35
+ * Marker-check failures are surfaced as a {@link CliStructuredError}
36
+ * (same envelope code `5002` the legacy `runContractSpaceVerifierMarkerCheck`
37
+ * emitted, so downstream tooling and integration tests assert on the
38
+ * same shape).
39
+ *
40
+ * On success, the per-space schema results are returned for the CLI to
41
+ * render. When `skipSchema` is true (`--marker-only`), the schema map
42
+ * is empty.
43
+ */
44
+ interface ExecuteDbVerifySuccess {
45
+ readonly schemaResults: ReadonlyMap<string, VerifyDatabaseSchemaResult$1>;
46
+ readonly memberOrder: readonly string[];
47
+ readonly appSpaceId: string;
48
+ }
49
+ type ExecuteDbVerifyResult = Result<ExecuteDbVerifySuccess, CliStructuredError>;
50
+ /**
51
+ * Loader → verifier pipeline shared by `db verify` modes (`full`,
52
+ * `marker-only`, `schema-only`).
53
+ *
54
+ * 1. **Load**: build a {@link import('@prisma-next/migration-tools/aggregate').ContractSpaceAggregate}
55
+ * from descriptors + on-disk on-disk artefacts. Layout / drift /
56
+ * integrity / disjointness violations short-circuit with a
57
+ * structured CLI error.
58
+ * 2. **Read DB state**: marker rows + (when `skipSchema` is `false`)
59
+ * schema introspection.
60
+ * 3. **Verify**: {@link verifyAggregate} returns per-space
61
+ * `markerCheck` + per-space pre-projected `schemaCheck` (closes F23).
62
+ * Marker mismatches map to `CliStructuredError` (code `5002`) so
63
+ * callers (CLI command) can render and exit. Schema results are
64
+ * returned to the caller verbatim.
65
+ */
66
+ declare function executeDbVerify<TFamilyId extends string, TTargetId extends string>(options: ExecuteDbVerifyOptions<TFamilyId, TTargetId>): Promise<ExecuteDbVerifyResult>;
67
+ //#endregion
8
68
  //#region src/control-api/types.d.ts
9
69
  /**
10
70
  * Options for creating a control client.
@@ -34,7 +94,7 @@ interface ControlClientOptions {
34
94
  /**
35
95
  * Action names for control-api operations that can emit progress events.
36
96
  */
37
- type ControlActionName = 'dbInit' | 'dbUpdate' | 'migrationApply' | 'verify' | 'schemaVerify' | 'sign' | 'introspect' | 'emit';
97
+ type ControlActionName = 'dbInit' | 'dbUpdate' | 'dbVerify' | 'migrationApply' | 'verify' | 'schemaVerify' | 'sign' | 'introspect' | 'emit';
38
98
  /**
39
99
  * Progress event emitted during control-api operation execution.
40
100
  *
@@ -143,6 +203,13 @@ interface DbInitOptions {
143
203
  * The type is driver-specific (e.g., string URL for Postgres).
144
204
  */
145
205
  readonly connection?: unknown;
206
+ /**
207
+ * On-disk migrations directory. Always required — every `db init`
208
+ * routes through the per-space flow, which reads on-disk
209
+ * `refs/head.json` and extension destination contracts from this
210
+ * root.
211
+ */
212
+ readonly migrationsDir: string;
146
213
  /** Optional progress callback for observing operation progress */
147
214
  readonly onProgress?: OnControlProgress;
148
215
  }
@@ -172,9 +239,33 @@ interface DbUpdateOptions {
172
239
  * or re-run with -y/--yes.
173
240
  */
174
241
  readonly acceptDataLoss?: boolean;
242
+ /**
243
+ * On-disk migrations directory. Always required — every `db update`
244
+ * routes through the per-space flow, which reads on-disk
245
+ * `refs/head.json` and extension destination contracts from this
246
+ * root.
247
+ */
248
+ readonly migrationsDir: string;
175
249
  /** Optional progress callback for observing operation progress */
176
250
  readonly onProgress?: OnControlProgress;
177
251
  }
252
+ /**
253
+ * Options for the dbVerify operation.
254
+ *
255
+ * Drives the loader → aggregate-verifier pipeline. `strict` maps to
256
+ * `verifyAggregate({ mode: 'strict' | 'lenient' })`; `skipSchema`
257
+ * mirrors the `--marker-only` CLI flag and short-circuits the schema
258
+ * portion of the verifier.
259
+ */
260
+ interface DbVerifyOptions {
261
+ readonly contract: unknown;
262
+ readonly migrationsDir: string;
263
+ readonly strict: boolean;
264
+ readonly skipSchema: boolean;
265
+ readonly skipMarker: boolean;
266
+ readonly connection?: unknown;
267
+ readonly onProgress?: OnControlProgress;
268
+ }
178
269
  /**
179
270
  * Options for the introspect operation.
180
271
  */
@@ -574,6 +665,20 @@ interface ControlClient {
574
665
  * @throws If not connected, target doesn't support migrations, or infrastructure failure
575
666
  */
576
667
  dbUpdate(options: DbUpdateOptions): Promise<DbUpdateResult>;
668
+ /**
669
+ * Verifies the database against every contract space (app + extensions).
670
+ *
671
+ * Loader → aggregate-verifier pipeline:
672
+ * - The loader catches layout / drift / disjointness violations.
673
+ * - The aggregate verifier surfaces marker-vs-on-disk drift and orphan
674
+ * markers, and (unless `skipSchema` is true) per-space schema
675
+ * verification with pre-projection (closes F23).
676
+ *
677
+ * @returns Result pattern: per-space schema results on success;
678
+ * structured CLI error on marker / loader failure.
679
+ * @throws If not connected or infrastructure failure
680
+ */
681
+ dbVerify(options: DbVerifyOptions): Promise<ExecuteDbVerifyResult>;
577
682
  /**
578
683
  * Reads the contract marker from the database.
579
684
  * Returns null if no marker exists (fresh database).
@@ -581,6 +686,12 @@ interface ControlClient {
581
686
  * @throws If not connected or infrastructure failure
582
687
  */
583
688
  readMarker(): Promise<ContractMarkerRecord | null>;
689
+ /**
690
+ * Reads every marker row (one per contract space). Used by the
691
+ * per-space verifier to detect orphan marker rows and marker-vs-on-disk
692
+ * drift after a database connection has been established.
693
+ */
694
+ readAllMarkers(): Promise<ReadonlyMap<string, ContractMarkerRecord>>;
584
695
  /**
585
696
  * Applies pre-planned on-disk migrations to the database.
586
697
  * Each migration runs in its own transaction with full execution checks.
@@ -677,8 +788,95 @@ declare function enrichContract(ir: Contract, components: ReadonlyArray<TargetBo
677
788
  */
678
789
  declare function executeContractEmit(options: ContractEmitOptions): Promise<ContractEmitResult>;
679
790
  //#endregion
791
+ //#region src/control-api/operations/db-init.d.ts
792
+ /**
793
+ * Options for executing the `db init` operation.
794
+ *
795
+ * `db init` runs the loader → planner → runner pipeline:
796
+ *
797
+ * 1. {@link executeAggregateApply} loads a `ContractSpaceAggregate` via
798
+ * {@link import('@prisma-next/migration-tools/aggregate').loadContractSpaceAggregate}
799
+ * from the supplied descriptor set + on-disk on-disk artefacts.
800
+ * 2. The aggregate planner runs with `callerPolicy.ignoreGraphFor`
801
+ * locked to the app member — synth strategy for the app, graph-walk
802
+ * for every extension.
803
+ * 3. The runner's `executeAcrossSpaces` applies the per-space plans
804
+ * inside one outer transaction.
805
+ *
806
+ * `extensionPacks` mirrors `Config.extensionPacks` (descriptor list).
807
+ * The loader (sub-spec § Loader) is the sole descriptor-import boundary.
808
+ */
809
+ interface ExecuteDbInitOptions<TFamilyId extends string, TTargetId extends string> {
810
+ readonly driver: ControlDriverInstance<TFamilyId, TTargetId>;
811
+ readonly familyInstance: ControlFamilyInstance<TFamilyId, unknown>;
812
+ readonly contract: Contract;
813
+ readonly mode: 'plan' | 'apply';
814
+ readonly migrations: TargetMigrationsCapability<TFamilyId, TTargetId, ControlFamilyInstance<TFamilyId, unknown>>;
815
+ readonly frameworkComponents: ReadonlyArray<TargetBoundComponentDescriptor<TFamilyId, TTargetId>>;
816
+ /**
817
+ * On-disk migrations directory the aggregate loader reads on-disk
818
+ * artefacts from. Required.
819
+ */
820
+ readonly migrationsDir: string;
821
+ /**
822
+ * Resolved adapter target id. Threaded through to the loader for
823
+ * target-consistency checks across descriptors and the app contract.
824
+ */
825
+ readonly targetId: TTargetId;
826
+ /**
827
+ * Declared extension descriptors. Defaults to an empty list, which
828
+ * routes through the same loader → planner → runner pipeline with no
829
+ * extension members in the aggregate.
830
+ */
831
+ readonly extensionPacks?: ReadonlyArray<ControlExtensionDescriptor<TFamilyId, TTargetId>>;
832
+ /** Optional progress callback for observing operation progress */
833
+ readonly onProgress?: OnControlProgress;
834
+ }
835
+ /**
836
+ * Execute `db init` against the configured contract.
837
+ *
838
+ * Routes through the loader → planner → runner pipeline (sub-spec
839
+ * "Commit-by-commit § Commit 4"). Always additive-only; destructive
840
+ * changes belong to `db update`.
841
+ */
842
+ declare function executeDbInit<TFamilyId extends string, TTargetId extends string>(options: ExecuteDbInitOptions<TFamilyId, TTargetId>): Promise<DbInitResult>;
843
+ //#endregion
844
+ //#region src/control-api/operations/db-update.d.ts
845
+ /**
846
+ * Options for the `db update` operation.
847
+ *
848
+ * Same loader → planner → runner pipeline as `db init`, but with the
849
+ * widened operation policy (additive + widening + destructive). The
850
+ * destructive-change confirmation gate runs at this layer: when
851
+ * `mode === 'apply'` and `acceptDataLoss` is `false`, the operation
852
+ * pre-plans, surfaces destructive ops to the caller, and aborts.
853
+ */
854
+ interface ExecuteDbUpdateOptions<TFamilyId extends string, TTargetId extends string> {
855
+ readonly driver: ControlDriverInstance<TFamilyId, TTargetId>;
856
+ readonly familyInstance: ControlFamilyInstance<TFamilyId, unknown>;
857
+ readonly contract: Contract;
858
+ readonly mode: 'plan' | 'apply';
859
+ readonly migrations: TargetMigrationsCapability<TFamilyId, TTargetId, ControlFamilyInstance<TFamilyId, unknown>>;
860
+ readonly frameworkComponents: ReadonlyArray<TargetBoundComponentDescriptor<TFamilyId, TTargetId>>;
861
+ readonly acceptDataLoss?: boolean;
862
+ readonly migrationsDir: string;
863
+ readonly targetId: TTargetId;
864
+ readonly extensionPacks?: ReadonlyArray<ControlExtensionDescriptor<TFamilyId, TTargetId>>;
865
+ readonly onProgress?: OnControlProgress;
866
+ }
867
+ /**
868
+ * Execute `db update` against the configured contract.
869
+ *
870
+ * Routes through the loader → planner → runner pipeline. Destructive
871
+ * operations require either `acceptDataLoss: true` or a prior
872
+ * `mode: 'plan'` invocation that surfaces the destructive ops; the
873
+ * confirmation gate is implemented here so the lower-level applier
874
+ * remains policy-agnostic.
875
+ */
876
+ declare function executeDbUpdate<TFamilyId extends string, TTargetId extends string>(options: ExecuteDbUpdateOptions<TFamilyId, TTargetId>): Promise<DbUpdateResult>;
877
+ //#endregion
680
878
  //#region src/utils/emit-queue.d.ts
681
879
  declare function disposeEmitQueue(outputJsonPath: string): void;
682
880
  //#endregion
683
- export { type ContractEmitOptions, type ContractEmitResult, type ControlActionName, type ControlClient, type ControlClientOptions, type ControlProgressEvent, type ControlStack, type DbInitFailure, type DbInitFailureCode, type DbInitOptions, type DbInitResult, type DbInitSuccess, type DbUpdateFailure, type DbUpdateFailureCode, type DbUpdateOptions, type DbUpdateResult, type DbUpdateSuccess, type EmitContractConfig, type EmitFailure, type EmitFailureCode, type EmitOptions, type EmitResult, type EmitSuccess, type IntrospectOptions, type OnControlProgress, type SchemaVerifyOptions, type SignDatabaseResult, type SignOptions, type VerifyDatabaseResult, type VerifyDatabaseSchemaResult, type VerifyOptions, createControlClient, disposeEmitQueue, enrichContract, executeContractEmit };
881
+ export { type ContractEmitOptions, type ContractEmitResult, type ControlActionName, type ControlClient, type ControlClientOptions, type ControlProgressEvent, type ControlStack, type DbInitFailure, type DbInitFailureCode, type DbInitOptions, type DbInitResult, type DbInitSuccess, type DbUpdateFailure, type DbUpdateFailureCode, type DbUpdateOptions, type DbUpdateResult, type DbUpdateSuccess, type EmitContractConfig, type EmitFailure, type EmitFailureCode, type EmitOptions, type EmitResult, type EmitSuccess, type ExecuteDbInitOptions, type ExecuteDbUpdateOptions, type ExecuteDbVerifyOptions, type ExecuteDbVerifyResult, type IntrospectOptions, type OnControlProgress, type SchemaVerifyOptions, type SignDatabaseResult, type SignOptions, type VerifyDatabaseResult, type VerifyDatabaseSchemaResult, type VerifyOptions, createControlClient, disposeEmitQueue, enrichContract, executeContractEmit, executeDbInit, executeDbUpdate, executeDbVerify };
684
882
  //# sourceMappingURL=control-api.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"control-api.d.mts","names":[],"sources":["../../src/control-api/types.ts","../../src/control-api/client.ts","../../src/control-api/contract-enrichment.ts","../../src/control-api/operations/contract-emit.ts","../../src/utils/emit-queue.ts"],"mappings":"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"}
1
+ {"version":3,"file":"control-api.d.mts","names":[],"sources":["../../src/control-api/operations/db-verify.ts","../../src/control-api/types.ts","../../src/control-api/client.ts","../../src/control-api/contract-enrichment.ts","../../src/control-api/operations/contract-emit.ts","../../src/control-api/operations/db-init.ts","../../src/control-api/operations/db-update.ts","../../src/utils/emit-queue.ts"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { n as executeContractEmit, r as disposeEmitQueue } from "../contract-emit-B3ChISB_.mjs";
2
2
  import { t as enrichContract } from "../contract-enrichment-CF6ogEJ_.mjs";
3
- import { t as createControlClient } from "../client-CW1hcUtM.mjs";
4
- export { createControlClient, disposeEmitQueue, enrichContract, executeContractEmit };
3
+ import { i as executeDbInit, n as executeDbVerify, r as executeDbUpdate, t as createControlClient } from "../client-0ZX24FXF.mjs";
4
+ export { createControlClient, disposeEmitQueue, enrichContract, executeContractEmit, executeDbInit, executeDbUpdate, executeDbVerify };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/load-ts-contract.ts"],"mappings":";;;;UAQiB,qBAAA;EAAA,SACN,SAAA,GAAY,aAAA;AAAA;AADvB;;;;;AA+GA;;;;;;;;;;AA/GA,iBA+GsB,kBAAA,CACpB,SAAA,UACA,OAAA,GAAU,qBAAA,GACT,OAAA,CAAQ,QAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/load-ts-contract.ts"],"mappings":";;;;UAQiB,qBAAA;EAAA,SACN,SAAA,GAAY,aAAA;AAAA;AADvB;;;;;AA6HA;;;;;;;;;;AA7HA,iBA6HsB,kBAAA,CACpB,SAAA,UACA,OAAA,GAAU,qBAAA,GACT,OAAA,CAAQ,QAAA"}
@@ -1,5 +1,5 @@
1
- import { t as createContractEmitCommand } from "../contract-emit-B0nGrDtk.mjs";
2
- import { join } from "pathe";
1
+ import { t as createContractEmitCommand } from "../contract-emit-DkMqO7f2.mjs";
2
+ import { join, resolve } from "pathe";
3
3
  import { existsSync, unlinkSync, writeFileSync } from "node:fs";
4
4
  import { tmpdir } from "node:os";
5
5
  import { pathToFileURL } from "node:url";
@@ -45,17 +45,24 @@ function validatePurity(value) {
45
45
  throw new Error("Contract export is not JSON-serializable");
46
46
  }
47
47
  }
48
- function createImportAllowlistPlugin(allowlist, entryPath) {
48
+ function createImportAllowlistPlugin(allowlist, entryPath, collected) {
49
+ const entryAbs = resolve(entryPath);
50
+ function isFromEntry(importer) {
51
+ return importer === entryAbs || importer === entryPath || importer === "<stdin>";
52
+ }
49
53
  return {
50
54
  name: "import-allowlist",
51
55
  setup(build) {
52
56
  build.onResolve({ filter: /.*/ }, (args) => {
53
57
  if (args.kind === "entry-point") return;
54
58
  if (args.path.startsWith(".") || args.path.startsWith("/")) return;
55
- if ((args.importer === entryPath || args.importer === "<stdin>") && !isAllowedImport(args.path, allowlist)) return {
56
- path: args.path,
57
- external: true
58
- };
59
+ if (isFromEntry(args.importer) && !isAllowedImport(args.path, allowlist)) {
60
+ collected.add(args.path);
61
+ return {
62
+ path: args.path,
63
+ external: true
64
+ };
65
+ }
59
66
  });
60
67
  }
61
68
  };
@@ -79,6 +86,7 @@ async function loadContractFromTs(entryPath, options) {
79
86
  const allowlist = options?.allowlist ?? DEFAULT_ALLOWLIST;
80
87
  if (!existsSync(entryPath)) throw new Error(`Contract file not found: ${entryPath}`);
81
88
  const tempFile = join(tmpdir(), `prisma-next-contract-${Date.now()}-${Math.random().toString(36).slice(2)}.mjs`);
89
+ const disallowedFromEntry = /* @__PURE__ */ new Set();
82
90
  try {
83
91
  const result = await build({
84
92
  entryPoints: [entryPath],
@@ -89,7 +97,7 @@ async function loadContractFromTs(entryPath, options) {
89
97
  outfile: tempFile,
90
98
  write: false,
91
99
  metafile: true,
92
- plugins: [createImportAllowlistPlugin(allowlist, entryPath)],
100
+ plugins: [createImportAllowlistPlugin(allowlist, entryPath, disallowedFromEntry)],
93
101
  logLevel: "error"
94
102
  });
95
103
  if (result.errors.length > 0) {
@@ -97,15 +105,7 @@ async function loadContractFromTs(entryPath, options) {
97
105
  throw new Error(`Failed to bundle contract file: ${errorMessages}`);
98
106
  }
99
107
  if (!result.outputFiles || result.outputFiles.length === 0) throw new Error("No output files generated from bundling");
100
- const disallowedImports = [];
101
- if (result.metafile) {
102
- const inputs = result.metafile.inputs;
103
- for (const [, inputData] of Object.entries(inputs)) {
104
- const imports = inputData.imports || [];
105
- for (const imp of imports) if (imp.external && !imp.path.startsWith(".") && !imp.path.startsWith("/") && !isAllowedImport(imp.path, allowlist)) disallowedImports.push(imp.path);
106
- }
107
- }
108
- if (disallowedImports.length > 0) throw new Error(`Disallowed imports detected. Only imports matching the allowlist are permitted:\n Allowlist: ${allowlist.join(", ")}\n Disallowed imports: ${disallowedImports.join(", ")}\n\nOnly @prisma-next/* packages are allowed in contract files.`);
108
+ if (disallowedFromEntry.size > 0) throw new Error(`Disallowed imports detected. Only imports matching the allowlist are permitted:\n Allowlist: ${allowlist.join(", ")}\n Disallowed imports: ${[...disallowedFromEntry].join(", ")}`);
109
109
  const bundleContent = result.outputFiles[0]?.text;
110
110
  if (bundleContent === void 0) throw new Error("Bundle content is undefined");
111
111
  writeFileSync(tempFile, bundleContent, "utf-8");
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/load-ts-contract.ts"],"sourcesContent":["import { existsSync, unlinkSync, writeFileSync } from 'node:fs';\nimport { tmpdir } from 'node:os';\nimport { pathToFileURL } from 'node:url';\nimport type { Contract } from '@prisma-next/contract/types';\nimport type { Plugin } from 'esbuild';\nimport { build } from 'esbuild';\nimport { join } from 'pathe';\n\nexport interface LoadTsContractOptions {\n readonly allowlist?: ReadonlyArray<string>;\n}\n\nconst DEFAULT_ALLOWLIST = ['@prisma-next/*', 'node:crypto'];\n\nfunction isAllowedImport(importPath: string, allowlist: ReadonlyArray<string>): boolean {\n for (const pattern of allowlist) {\n if (pattern.endsWith('/*')) {\n const prefix = pattern.slice(0, -2);\n if (importPath === prefix || importPath.startsWith(`${prefix}/`)) {\n return true;\n }\n } else if (pattern.endsWith('*')) {\n const prefix = pattern.slice(0, -1);\n if (importPath.startsWith(prefix)) {\n return true;\n }\n } else if (importPath === pattern) {\n return true;\n }\n }\n return false;\n}\n\nfunction validatePurity(value: unknown): void {\n if (typeof value !== 'object' || value === null) {\n return;\n }\n\n const path = new WeakSet();\n\n function check(value: unknown): void {\n if (value === null || typeof value !== 'object') {\n return;\n }\n\n if (path.has(value)) {\n throw new Error('Contract export contains circular references');\n }\n path.add(value);\n\n try {\n for (const key in value) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor && (descriptor.get || descriptor.set)) {\n throw new Error(`Contract export contains getter/setter at key \"${key}\"`);\n }\n if (descriptor && typeof descriptor.value === 'function') {\n throw new Error(`Contract export contains function at key \"${key}\"`);\n }\n check((value as Record<string, unknown>)[key]);\n }\n } finally {\n path.delete(value);\n }\n }\n\n try {\n check(value);\n JSON.stringify(value);\n } catch (error) {\n if (error instanceof Error) {\n if (error.message.includes('getter') || error.message.includes('circular')) {\n throw error;\n }\n throw new Error(`Contract export is not JSON-serializable: ${error.message}`);\n }\n throw new Error('Contract export is not JSON-serializable');\n }\n}\n\nfunction createImportAllowlistPlugin(allowlist: ReadonlyArray<string>, entryPath: string): Plugin {\n return {\n name: 'import-allowlist',\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n if (args.kind === 'entry-point') {\n return undefined;\n }\n if (args.path.startsWith('.') || args.path.startsWith('/')) {\n return undefined;\n }\n const isFromEntryPoint = args.importer === entryPath || args.importer === '<stdin>';\n if (isFromEntryPoint && !isAllowedImport(args.path, allowlist)) {\n return {\n path: args.path,\n external: true,\n };\n }\n return undefined;\n });\n },\n };\n}\n\n/**\n * Loads a contract from a TypeScript file and returns it as Contract.\n *\n * **Responsibility: Parsing Only**\n * This function loads and parses a TypeScript contract file. It does NOT normalize the contract.\n * The contract should already be normalized if it was built using the contract builder.\n *\n * Normalization must happen in the contract builder when the contract is created.\n * This function only validates that the contract is JSON-serializable and returns it as-is.\n *\n * @param entryPath - Path to the TypeScript contract file\n * @param options - Optional configuration (import allowlist)\n * @returns The contract as Contract (should already be normalized)\n * @throws Error if the contract cannot be loaded or is not JSON-serializable\n */\nexport async function loadContractFromTs(\n entryPath: string,\n options?: LoadTsContractOptions,\n): Promise<Contract> {\n const allowlist = options?.allowlist ?? DEFAULT_ALLOWLIST;\n\n if (!existsSync(entryPath)) {\n throw new Error(`Contract file not found: ${entryPath}`);\n }\n\n const tempFile = join(\n tmpdir(),\n `prisma-next-contract-${Date.now()}-${Math.random().toString(36).slice(2)}.mjs`,\n );\n\n try {\n const result = await build({\n entryPoints: [entryPath],\n bundle: true,\n format: 'esm',\n platform: 'node',\n target: 'es2022',\n outfile: tempFile,\n write: false,\n metafile: true,\n plugins: [createImportAllowlistPlugin(allowlist, entryPath)],\n logLevel: 'error',\n });\n\n if (result.errors.length > 0) {\n const errorMessages = result.errors.map((e: { text: string }) => e.text).join('\\n');\n throw new Error(`Failed to bundle contract file: ${errorMessages}`);\n }\n\n if (!result.outputFiles || result.outputFiles.length === 0) {\n throw new Error('No output files generated from bundling');\n }\n\n const disallowedImports: string[] = [];\n if (result.metafile) {\n const inputs = result.metafile.inputs;\n for (const [, inputData] of Object.entries(inputs)) {\n const imports =\n (inputData as { imports?: Array<{ path: string; external?: boolean }> }).imports || [];\n for (const imp of imports) {\n if (\n imp.external &&\n !imp.path.startsWith('.') &&\n !imp.path.startsWith('/') &&\n !isAllowedImport(imp.path, allowlist)\n ) {\n disallowedImports.push(imp.path);\n }\n }\n }\n }\n\n if (disallowedImports.length > 0) {\n throw new Error(\n `Disallowed imports detected. Only imports matching the allowlist are permitted:\\n Allowlist: ${allowlist.join(', ')}\\n Disallowed imports: ${disallowedImports.join(', ')}\\n\\nOnly @prisma-next/* packages are allowed in contract files.`,\n );\n }\n\n const bundleContent = result.outputFiles[0]?.text;\n if (bundleContent === undefined) {\n throw new Error('Bundle content is undefined');\n }\n writeFileSync(tempFile, bundleContent, 'utf-8');\n\n const module = (await import(/* @vite-ignore */ pathToFileURL(tempFile).href)) as {\n default?: unknown;\n contract?: unknown;\n };\n unlinkSync(tempFile);\n\n let contract: unknown;\n\n if (module.default !== undefined) {\n contract = module.default;\n } else if (module.contract !== undefined) {\n contract = module.contract;\n } else {\n throw new Error(\n `Contract file must export a contract as default export or named export 'contract'. Found exports: ${Object.keys(module as Record<string, unknown>).join(', ') || 'none'}`,\n );\n }\n\n if (typeof contract !== 'object' || contract === null) {\n throw new Error(`Contract export must be an object, got ${typeof contract}`);\n }\n\n validatePurity(contract);\n\n return contract as Contract;\n } catch (error) {\n try {\n if (tempFile) {\n unlinkSync(tempFile);\n }\n } catch {\n // Ignore cleanup errors\n }\n\n if (error instanceof Error) {\n throw error;\n }\n throw new Error(`Failed to load contract from ${entryPath}: ${String(error)}`);\n }\n}\n"],"mappings":";;;;;;;AAYA,MAAM,oBAAoB,CAAC,kBAAkB,cAAc;AAE3D,SAAS,gBAAgB,YAAoB,WAA2C;CACtF,KAAK,MAAM,WAAW,WACpB,IAAI,QAAQ,SAAS,KAAK,EAAE;EAC1B,MAAM,SAAS,QAAQ,MAAM,GAAG,GAAG;EACnC,IAAI,eAAe,UAAU,WAAW,WAAW,GAAG,OAAO,GAAG,EAC9D,OAAO;QAEJ,IAAI,QAAQ,SAAS,IAAI,EAAE;EAChC,MAAM,SAAS,QAAQ,MAAM,GAAG,GAAG;EACnC,IAAI,WAAW,WAAW,OAAO,EAC/B,OAAO;QAEJ,IAAI,eAAe,SACxB,OAAO;CAGX,OAAO;;AAGT,SAAS,eAAe,OAAsB;CAC5C,IAAI,OAAO,UAAU,YAAY,UAAU,MACzC;CAGF,MAAM,uBAAO,IAAI,SAAS;CAE1B,SAAS,MAAM,OAAsB;EACnC,IAAI,UAAU,QAAQ,OAAO,UAAU,UACrC;EAGF,IAAI,KAAK,IAAI,MAAM,EACjB,MAAM,IAAI,MAAM,+CAA+C;EAEjE,KAAK,IAAI,MAAM;EAEf,IAAI;GACF,KAAK,MAAM,OAAO,OAAO;IACvB,MAAM,aAAa,OAAO,yBAAyB,OAAO,IAAI;IAC9D,IAAI,eAAe,WAAW,OAAO,WAAW,MAC9C,MAAM,IAAI,MAAM,kDAAkD,IAAI,GAAG;IAE3E,IAAI,cAAc,OAAO,WAAW,UAAU,YAC5C,MAAM,IAAI,MAAM,6CAA6C,IAAI,GAAG;IAEtE,MAAO,MAAkC,KAAK;;YAExC;GACR,KAAK,OAAO,MAAM;;;CAItB,IAAI;EACF,MAAM,MAAM;EACZ,KAAK,UAAU,MAAM;UACd,OAAO;EACd,IAAI,iBAAiB,OAAO;GAC1B,IAAI,MAAM,QAAQ,SAAS,SAAS,IAAI,MAAM,QAAQ,SAAS,WAAW,EACxE,MAAM;GAER,MAAM,IAAI,MAAM,6CAA6C,MAAM,UAAU;;EAE/E,MAAM,IAAI,MAAM,2CAA2C;;;AAI/D,SAAS,4BAA4B,WAAkC,WAA2B;CAChG,OAAO;EACL,MAAM;EACN,MAAM,OAAO;GACX,MAAM,UAAU,EAAE,QAAQ,MAAM,GAAG,SAAS;IAC1C,IAAI,KAAK,SAAS,eAChB;IAEF,IAAI,KAAK,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,WAAW,IAAI,EACxD;IAGF,KADyB,KAAK,aAAa,aAAa,KAAK,aAAa,cAClD,CAAC,gBAAgB,KAAK,MAAM,UAAU,EAC5D,OAAO;KACL,MAAM,KAAK;KACX,UAAU;KACX;KAGH;;EAEL;;;;;;;;;;;;;;;;;AAkBH,eAAsB,mBACpB,WACA,SACmB;CACnB,MAAM,YAAY,SAAS,aAAa;CAExC,IAAI,CAAC,WAAW,UAAU,EACxB,MAAM,IAAI,MAAM,4BAA4B,YAAY;CAG1D,MAAM,WAAW,KACf,QAAQ,EACR,wBAAwB,KAAK,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,CAAC,MAC3E;CAED,IAAI;EACF,MAAM,SAAS,MAAM,MAAM;GACzB,aAAa,CAAC,UAAU;GACxB,QAAQ;GACR,QAAQ;GACR,UAAU;GACV,QAAQ;GACR,SAAS;GACT,OAAO;GACP,UAAU;GACV,SAAS,CAAC,4BAA4B,WAAW,UAAU,CAAC;GAC5D,UAAU;GACX,CAAC;EAEF,IAAI,OAAO,OAAO,SAAS,GAAG;GAC5B,MAAM,gBAAgB,OAAO,OAAO,KAAK,MAAwB,EAAE,KAAK,CAAC,KAAK,KAAK;GACnF,MAAM,IAAI,MAAM,mCAAmC,gBAAgB;;EAGrE,IAAI,CAAC,OAAO,eAAe,OAAO,YAAY,WAAW,GACvD,MAAM,IAAI,MAAM,0CAA0C;EAG5D,MAAM,oBAA8B,EAAE;EACtC,IAAI,OAAO,UAAU;GACnB,MAAM,SAAS,OAAO,SAAS;GAC/B,KAAK,MAAM,GAAG,cAAc,OAAO,QAAQ,OAAO,EAAE;IAClD,MAAM,UACH,UAAwE,WAAW,EAAE;IACxF,KAAK,MAAM,OAAO,SAChB,IACE,IAAI,YACJ,CAAC,IAAI,KAAK,WAAW,IAAI,IACzB,CAAC,IAAI,KAAK,WAAW,IAAI,IACzB,CAAC,gBAAgB,IAAI,MAAM,UAAU,EAErC,kBAAkB,KAAK,IAAI,KAAK;;;EAMxC,IAAI,kBAAkB,SAAS,GAC7B,MAAM,IAAI,MACR,iGAAiG,UAAU,KAAK,KAAK,CAAC,0BAA0B,kBAAkB,KAAK,KAAK,CAAC,iEAC9K;EAGH,MAAM,gBAAgB,OAAO,YAAY,IAAI;EAC7C,IAAI,kBAAkB,KAAA,GACpB,MAAM,IAAI,MAAM,8BAA8B;EAEhD,cAAc,UAAU,eAAe,QAAQ;EAE/C,MAAM,SAAU,MAAM;;GAA0B,cAAc,SAAS,CAAC;;EAIxE,WAAW,SAAS;EAEpB,IAAI;EAEJ,IAAI,OAAO,YAAY,KAAA,GACrB,WAAW,OAAO;OACb,IAAI,OAAO,aAAa,KAAA,GAC7B,WAAW,OAAO;OAElB,MAAM,IAAI,MACR,qGAAqG,OAAO,KAAK,OAAkC,CAAC,KAAK,KAAK,IAAI,SACnK;EAGH,IAAI,OAAO,aAAa,YAAY,aAAa,MAC/C,MAAM,IAAI,MAAM,0CAA0C,OAAO,WAAW;EAG9E,eAAe,SAAS;EAExB,OAAO;UACA,OAAO;EACd,IAAI;GACF,IAAI,UACF,WAAW,SAAS;UAEhB;EAIR,IAAI,iBAAiB,OACnB,MAAM;EAER,MAAM,IAAI,MAAM,gCAAgC,UAAU,IAAI,OAAO,MAAM,GAAG"}
1
+ {"version":3,"file":"index.mjs","names":["resolvePath"],"sources":["../../src/load-ts-contract.ts"],"sourcesContent":["import { existsSync, unlinkSync, writeFileSync } from 'node:fs';\nimport { tmpdir } from 'node:os';\nimport { pathToFileURL } from 'node:url';\nimport type { Contract } from '@prisma-next/contract/types';\nimport type { Plugin } from 'esbuild';\nimport { build } from 'esbuild';\nimport { join, resolve as resolvePath } from 'pathe';\n\nexport interface LoadTsContractOptions {\n readonly allowlist?: ReadonlyArray<string>;\n}\n\nconst DEFAULT_ALLOWLIST = ['@prisma-next/*', 'node:crypto'];\n\nfunction isAllowedImport(importPath: string, allowlist: ReadonlyArray<string>): boolean {\n for (const pattern of allowlist) {\n if (pattern.endsWith('/*')) {\n const prefix = pattern.slice(0, -2);\n if (importPath === prefix || importPath.startsWith(`${prefix}/`)) {\n return true;\n }\n } else if (pattern.endsWith('*')) {\n const prefix = pattern.slice(0, -1);\n if (importPath.startsWith(prefix)) {\n return true;\n }\n } else if (importPath === pattern) {\n return true;\n }\n }\n return false;\n}\n\nfunction validatePurity(value: unknown): void {\n if (typeof value !== 'object' || value === null) {\n return;\n }\n\n const path = new WeakSet();\n\n function check(value: unknown): void {\n if (value === null || typeof value !== 'object') {\n return;\n }\n\n if (path.has(value)) {\n throw new Error('Contract export contains circular references');\n }\n path.add(value);\n\n try {\n for (const key in value) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor && (descriptor.get || descriptor.set)) {\n throw new Error(`Contract export contains getter/setter at key \"${key}\"`);\n }\n if (descriptor && typeof descriptor.value === 'function') {\n throw new Error(`Contract export contains function at key \"${key}\"`);\n }\n check((value as Record<string, unknown>)[key]);\n }\n } finally {\n path.delete(value);\n }\n }\n\n try {\n check(value);\n JSON.stringify(value);\n } catch (error) {\n if (error instanceof Error) {\n if (error.message.includes('getter') || error.message.includes('circular')) {\n throw error;\n }\n throw new Error(`Contract export is not JSON-serializable: ${error.message}`);\n }\n throw new Error('Contract export is not JSON-serializable');\n }\n}\n\nfunction createImportAllowlistPlugin(\n allowlist: ReadonlyArray<string>,\n entryPath: string,\n collected: Set<string>,\n): Plugin {\n // Match against several path forms that esbuild may use as the importer:\n // the absolute resolved entry, the value the caller passed (which may be\n // relative), and the conventional `<stdin>` placeholder. This is more\n // forgiving than `===` against a single form, which broke when esbuild\n // resolved the entry to an absolute path while the caller passed a\n // relative one (or vice versa).\n const entryAbs = resolvePath(entryPath);\n function isFromEntry(importer: string): boolean {\n return importer === entryAbs || importer === entryPath || importer === '<stdin>';\n }\n return {\n name: 'import-allowlist',\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n if (args.kind === 'entry-point') {\n return undefined;\n }\n if (args.path.startsWith('.') || args.path.startsWith('/')) {\n return undefined;\n }\n if (isFromEntry(args.importer) && !isAllowedImport(args.path, allowlist)) {\n collected.add(args.path);\n return {\n path: args.path,\n external: true,\n };\n }\n return undefined;\n });\n },\n };\n}\n\n/**\n * Loads a contract from a TypeScript file and returns it as Contract.\n *\n * **Responsibility: Parsing Only**\n * This function loads and parses a TypeScript contract file. It does NOT normalize the contract.\n * The contract should already be normalized if it was built using the contract builder.\n *\n * Normalization must happen in the contract builder when the contract is created.\n * This function only validates that the contract is JSON-serializable and returns it as-is.\n *\n * @param entryPath - Path to the TypeScript contract file\n * @param options - Optional configuration (import allowlist)\n * @returns The contract as Contract (should already be normalized)\n * @throws Error if the contract cannot be loaded or is not JSON-serializable\n */\nexport async function loadContractFromTs(\n entryPath: string,\n options?: LoadTsContractOptions,\n): Promise<Contract> {\n const allowlist = options?.allowlist ?? DEFAULT_ALLOWLIST;\n\n if (!existsSync(entryPath)) {\n throw new Error(`Contract file not found: ${entryPath}`);\n }\n\n const tempFile = join(\n tmpdir(),\n `prisma-next-contract-${Date.now()}-${Math.random().toString(36).slice(2)}.mjs`,\n );\n\n // Disallowed imports are collected by the allowlist resolver plugin itself,\n // which has the `importer` context to distinguish entry-direct imports from\n // transitive imports made inside allowlisted (`@prisma-next/*`) dependencies.\n // The metafile is intentionally not re-walked: it would surface internal\n // `node:*` imports inside framework code as false positives.\n const disallowedFromEntry = new Set<string>();\n\n try {\n const result = await build({\n entryPoints: [entryPath],\n bundle: true,\n format: 'esm',\n platform: 'node',\n target: 'es2022',\n outfile: tempFile,\n write: false,\n metafile: true,\n plugins: [createImportAllowlistPlugin(allowlist, entryPath, disallowedFromEntry)],\n logLevel: 'error',\n });\n\n if (result.errors.length > 0) {\n const errorMessages = result.errors.map((e: { text: string }) => e.text).join('\\n');\n throw new Error(`Failed to bundle contract file: ${errorMessages}`);\n }\n\n if (!result.outputFiles || result.outputFiles.length === 0) {\n throw new Error('No output files generated from bundling');\n }\n\n if (disallowedFromEntry.size > 0) {\n throw new Error(\n `Disallowed imports detected. Only imports matching the allowlist are permitted:\\n Allowlist: ${allowlist.join(', ')}\\n Disallowed imports: ${[...disallowedFromEntry].join(', ')}`,\n );\n }\n\n const bundleContent = result.outputFiles[0]?.text;\n if (bundleContent === undefined) {\n throw new Error('Bundle content is undefined');\n }\n writeFileSync(tempFile, bundleContent, 'utf-8');\n\n const module = (await import(/* @vite-ignore */ pathToFileURL(tempFile).href)) as {\n default?: unknown;\n contract?: unknown;\n };\n unlinkSync(tempFile);\n\n let contract: unknown;\n\n if (module.default !== undefined) {\n contract = module.default;\n } else if (module.contract !== undefined) {\n contract = module.contract;\n } else {\n throw new Error(\n `Contract file must export a contract as default export or named export 'contract'. Found exports: ${Object.keys(module as Record<string, unknown>).join(', ') || 'none'}`,\n );\n }\n\n if (typeof contract !== 'object' || contract === null) {\n throw new Error(`Contract export must be an object, got ${typeof contract}`);\n }\n\n validatePurity(contract);\n\n return contract as Contract;\n } catch (error) {\n try {\n if (tempFile) {\n unlinkSync(tempFile);\n }\n } catch {\n // Ignore cleanup errors\n }\n\n if (error instanceof Error) {\n throw error;\n }\n throw new Error(`Failed to load contract from ${entryPath}: ${String(error)}`);\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { t as InitOutputSchema } from "../output-BTgnZ5c_.mjs";
1
+ import { t as InitOutputSchema } from "../output-DnjfCC_u.mjs";
2
2
  export { InitOutputSchema };
@@ -1,6 +1,6 @@
1
1
  import { t as CliStructuredError } from "./cli-errors-D3_sMh2K.mjs";
2
2
  import { i as formatErrorOutput, r as formatErrorJson, t as TerminalUI } from "./terminal-ui-zaRDhJnP.mjs";
3
- import { i as renderInitOutro, n as buildNextSteps, r as formatInitJson, t as InitOutputSchema } from "./output-BTgnZ5c_.mjs";
3
+ import { i as renderInitOutro, n as buildNextSteps, r as formatInitJson, t as InitOutputSchema } from "./output-DnjfCC_u.mjs";
4
4
  import { createRequire } from "node:module";
5
5
  import { dirname, extname, isAbsolute, join, normalize } from "pathe";
6
6
  import * as clack from "@clack/prompts";
@@ -2050,4 +2050,4 @@ function causeMessage(err) {
2050
2050
  //#endregion
2051
2051
  export { runInit };
2052
2052
 
2053
- //# sourceMappingURL=init-C3qdc0Sh.mjs.map
2053
+ //# sourceMappingURL=init-Deo7U8_U.mjs.map