@prisma/orm-framework 8.0.0-rc.14-dev.17 → 8.0.0-rc.14-dev.19

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.
@@ -1 +1 @@
1
- {"version":3,"file":"psl-parser.d.mts","names":[],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/index.d.mts"],"mappings":"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"}
1
+ {"version":3,"file":"psl-parser.d.mts","names":[],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/index.d.mts"],"mappings":"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"}
@@ -4,9 +4,9 @@ import { a as or, i as okVoid, n as notOk, r as ok, t as and } from "./result-8O
4
4
  import { b as isAuthoringModelAttributeDescriptor, x as isAuthoringPslBlockDescriptor } from "./temporal-presets-DzBBD4St-BaL1QaZ7.mjs";
5
5
  import { a as flatPslModels, c as namespacePslExtensionBlocks } from "./psl-ast-CyvE6CR-.mjs";
6
6
  import { n as isPslIdentifier } from "./tokenizer-BMz7z2KR-J0yZ4im3.mjs";
7
- import { C as TaggedLiteralExprAst, S as StringLiteralExprAst, T as TypesBlockAst, _ as NumberLiteralExprAst, a as CompositeTypeDeclarationAst, d as IdentifierAst, g as NamespaceDeclarationAst, i as BooleanLiteralExprAst, l as FunctionCallAst, m as ModelDeclarationAst, t as ArrayLiteralAst, u as GenericBlockDeclarationAst, y as ObjectLiteralExprAst } from "./declarations-C0VwsVFX-BcP1Nyv4.mjs";
7
+ import { C as TaggedLiteralExprAst, S as StringLiteralExprAst, T as TypesBlockAst, _ as NumberLiteralExprAst, a as CompositeTypeDeclarationAst, b as PathExprAst, d as IdentifierAst, g as NamespaceDeclarationAst, i as BooleanLiteralExprAst, l as FunctionCallAst, m as ModelDeclarationAst, t as ArrayLiteralAst, u as GenericBlockDeclarationAst, y as ObjectLiteralExprAst } from "./declarations-BauPuujx-UErcHFt5.mjs";
8
8
  import { a as mapPslDiagnostics, c as readResolvedAttributes, i as keywordPslSpan, l as readResolvedConstructorCall, n as diagnosticFromSpan, o as nodePslSpan, r as diagnosticSource, s as readResolvedAttribute, t as createPslDiagnosticCollector } from "./resolve-GE34dgM6-D33m6YEw.mjs";
9
- //#region ../../../1-framework/2-authoring/psl-parser/dist/symbol-table-0DYRY2eQ.mjs
9
+ //#region ../../../1-framework/2-authoring/psl-parser/dist/symbol-table-BdtlVJfe.mjs
10
10
  function* modelAttributeDescriptors(namespace) {
11
11
  for (const value of Object.values(namespace)) {
12
12
  if (isAuthoringModelAttributeDescriptor(value)) {
@@ -37,6 +37,57 @@ function resolveDescribeUnresolvedType(pslDiagnostics) {
37
37
  if (pslDiagnostics?.describeUnresolvedType === void 0) return;
38
38
  return blindCast(pslDiagnostics.describeUnresolvedType);
39
39
  }
40
+ function writtenEntityReference(node) {
41
+ const name = IdentifierAst.cast(node)?.name();
42
+ if (name !== void 0) return {
43
+ namespace: void 0,
44
+ name
45
+ };
46
+ const path = PathExprAst.cast(node)?.path();
47
+ if (path === void 0 || path.length !== 2) return void 0;
48
+ const [namespace, member] = path;
49
+ return namespace === void 0 || member === void 0 ? void 0 : {
50
+ namespace,
51
+ name: member
52
+ };
53
+ }
54
+ function describeWrittenEntityReference(reference) {
55
+ return reference.namespace === void 0 ? reference.name : `${reference.namespace}.${reference.name}`;
56
+ }
57
+ const references = /* @__PURE__ */ new WeakMap();
58
+ function entityReference(resolution) {
59
+ switch (resolution.kind) {
60
+ case "model":
61
+ case "compositeType":
62
+ case "namedType":
63
+ case "block": return interned(resolution.symbol, resolution.namespace);
64
+ default: return;
65
+ }
66
+ }
67
+ function interned(declaration, namespace) {
68
+ const existing = references.get(declaration);
69
+ if (existing !== void 0) return existing;
70
+ const reference = {
71
+ declaration,
72
+ namespace
73
+ };
74
+ references.set(declaration, reference);
75
+ return reference;
76
+ }
77
+ function matchesSelector(reference, expected) {
78
+ const declaration = reference.declaration;
79
+ if (declaration.kind !== expected.kind) return false;
80
+ return expected.kind !== "block" || declaration.kind === "block" && declaration.keyword === expected.keyword;
81
+ }
82
+ function describeResolution(resolution) {
83
+ switch (resolution.kind) {
84
+ case "block": return resolution.symbol.keyword;
85
+ case "contributedType": return "scalar type";
86
+ case "crossSpace": return "cross-space reference";
87
+ case "unresolved": return "unresolved name";
88
+ default: return resolution.kind;
89
+ }
90
+ }
40
91
  function blockSpecFactoryOf(descriptor) {
41
92
  return blindCast(descriptor.spec);
42
93
  }
@@ -431,10 +482,7 @@ function bind(options) {
431
482
  function bindBlock(block, ctx) {
432
483
  const descriptor = findBlockDescriptor(ctx.pslBlockDescriptors, block.keyword);
433
484
  if (descriptor === void 0) return;
434
- const spec = blockSpecFactoryOf(descriptor)({
435
- symbols: ctx.symbolTable,
436
- block
437
- });
485
+ const spec = blockSpecFactoryOf(descriptor)({ symbols: ctx.symbolTable });
438
486
  for (const entry of block.node.entries()) {
439
487
  const key = entry.key()?.name();
440
488
  if (key === void 0) continue;
@@ -448,10 +496,7 @@ function bindBlock(block, ctx) {
448
496
  for (const attribute of readResolvedAttributes(block.node.attributes(), ctx.sources)) {
449
497
  const factory = attributeSpecs[attribute.name];
450
498
  if (factory === void 0) continue;
451
- bindArguments(attribute, blindCast(factory)({
452
- symbols: ctx.symbolTable,
453
- block
454
- }), ctx);
499
+ bindArguments(attribute, blindCast(factory)({ symbols: ctx.symbolTable }), ctx);
455
500
  }
456
501
  }
457
502
  function bindExpression(rule, expression, ctx, modelContext) {
@@ -527,14 +572,14 @@ function tryBindExpression(rule, expression, ctx, modelContext) {
527
572
  }
528
573
  case "entityRef": {
529
574
  const node = expression.syntax;
530
- const name = IdentifierAst.cast(node)?.name();
531
- if (name === void 0) return {
575
+ const written = writtenEntityReference(node);
576
+ if (written === void 0) return {
532
577
  matched: false,
533
578
  references,
534
579
  diagnostics
535
580
  };
536
581
  const failures = [];
537
- const resolution = resolveEntity(name, node, {
582
+ const resolution = resolveEntity(written, node, {
538
583
  ...ctx,
539
584
  diagnostics: failures
540
585
  });
@@ -683,15 +728,23 @@ function targetFields(target) {
683
728
  if (target === void 0) return void 0;
684
729
  if (target.kind === "model" || target.kind === "compositeType") return target.symbol.fields;
685
730
  }
686
- function resolveEntity(name, node, ctx) {
687
- const found = ctx.scope.lookup(name);
731
+ function resolveEntity(written, node, ctx) {
732
+ const found = written.namespace === void 0 ? ctx.scope.lookup(written.name) : qualifiedMember(written.namespace, written.name, ctx.scope);
688
733
  if (found === void 0) {
689
- report(`Cannot find entity "${name}"`, node, ctx, "entity");
734
+ const name = describeWrittenEntityReference(written);
735
+ if (written.name !== "") report(`Cannot find entity "${name}"`, node, ctx, "entity");
690
736
  return {
691
737
  kind: "unresolved",
692
738
  name
693
739
  };
694
740
  }
741
+ if ("badQualifier" in found) {
742
+ report(found.badQualifier, node, ctx, "entity");
743
+ return {
744
+ kind: "unresolved",
745
+ name: found.qualifier
746
+ };
747
+ }
695
748
  return found;
696
749
  }
697
750
  function report(message, node, ctx, reference) {
@@ -1032,40 +1085,6 @@ function bool() {
1032
1085
  }
1033
1086
  };
1034
1087
  }
1035
- const references = /* @__PURE__ */ new WeakMap();
1036
- function entityReference(resolution) {
1037
- switch (resolution.kind) {
1038
- case "model":
1039
- case "compositeType":
1040
- case "namedType":
1041
- case "block": return interned(resolution.symbol, resolution.namespace);
1042
- default: return;
1043
- }
1044
- }
1045
- function interned(declaration, namespace) {
1046
- const existing = references.get(declaration);
1047
- if (existing !== void 0) return existing;
1048
- const reference = {
1049
- declaration,
1050
- namespace
1051
- };
1052
- references.set(declaration, reference);
1053
- return reference;
1054
- }
1055
- function matchesSelector(reference, expected) {
1056
- const declaration = reference.declaration;
1057
- if (declaration.kind !== expected.kind) return false;
1058
- return expected.kind !== "block" || declaration.kind === "block" && declaration.keyword === expected.keyword;
1059
- }
1060
- function describeResolution(resolution) {
1061
- switch (resolution.kind) {
1062
- case "block": return resolution.symbol.keyword;
1063
- case "contributedType": return "scalar type";
1064
- case "crossSpace": return "cross-space reference";
1065
- case "unresolved": return "unresolved name";
1066
- default: return resolution.kind;
1067
- }
1068
- }
1069
1088
  function entityRef(expected) {
1070
1089
  const label = `${expected.kind === "block" ? expected.keyword : expected.kind} reference`;
1071
1090
  return {
@@ -1073,8 +1092,9 @@ function entityRef(expected) {
1073
1092
  label,
1074
1093
  expected,
1075
1094
  parse: (arg, ctx) => {
1076
- const name = IdentifierAst.cast(arg.syntax)?.name();
1077
- if (name === void 0) return notOk([leafDiagnostic(ctx, arg, `Expected ${label}`)]);
1095
+ const written = writtenEntityReference(arg.syntax);
1096
+ if (written === void 0) return notOk([leafDiagnostic(ctx, arg, `Expected ${label}`)]);
1097
+ const name = describeWrittenEntityReference(written);
1078
1098
  const resolution = ctx.binder.symbolForNode(arg.syntax);
1079
1099
  if (resolution === void 0 || resolution.kind === "unresolved") return notOk([]);
1080
1100
  const reference = entityReference(resolution);
@@ -1556,7 +1576,8 @@ function interpretExtensionBlock(input) {
1556
1576
  const ctx = {
1557
1577
  sources,
1558
1578
  symbols,
1559
- binder
1579
+ binder,
1580
+ selfBlock: block
1560
1581
  };
1561
1582
  const entries = spec.mode === "struct" ? interpretStructBlock(block, spec, ctx) : interpretMapBlock(block, spec, ctx);
1562
1583
  const diagnostics = [...entries.diagnostics];
@@ -1698,14 +1719,12 @@ function interpretExtensionBlockAttributes(input) {
1698
1719
  continue;
1699
1720
  }
1700
1721
  seenNames.add(name);
1701
- const spec = blindCast(declared[name])({
1702
- symbols,
1703
- block
1704
- });
1722
+ const spec = blindCast(declared[name])({ symbols });
1705
1723
  const result = interpretAttribute(attribute, spec, {
1706
1724
  sources,
1707
1725
  symbols,
1708
- binder
1726
+ binder,
1727
+ selfBlock: block
1709
1728
  });
1710
1729
  if (result.ok) {
1711
1730
  const argSpans = Object.create(null);
@@ -1744,10 +1763,7 @@ function interpretExtensionBlocks(input) {
1744
1763
  const parsed = interpretExtensionBlock({
1745
1764
  block,
1746
1765
  descriptor,
1747
- spec: blockSpecFactoryOf(descriptor)({
1748
- symbols: symbolTable,
1749
- block
1750
- }),
1766
+ spec: blockSpecFactoryOf(descriptor)({ symbols: symbolTable }),
1751
1767
  symbols: symbolTable,
1752
1768
  sources,
1753
1769
  binder