@party-stack/ontology 0.13.2 → 0.15.0

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 (96) hide show
  1. package/lib/examples/blog.d.ts +29 -24
  2. package/lib/examples/blog.d.ts.map +1 -1
  3. package/lib/examples/blog.js +16 -9
  4. package/lib/examples/blog.js.map +1 -1
  5. package/lib/generate/ontology.test.js +9 -3
  6. package/lib/generate/ontology.test.js.map +1 -1
  7. package/lib/generate/types.test.js +3 -3
  8. package/lib/generate/types.test.js.map +1 -1
  9. package/lib/index.d.ts +2 -0
  10. package/lib/index.d.ts.map +1 -1
  11. package/lib/index.js +1 -0
  12. package/lib/index.js.map +1 -1
  13. package/lib/infer.test.js +1 -1
  14. package/lib/infer.test.js.map +1 -1
  15. package/lib/ir/generated/builders.d.ts +92 -36
  16. package/lib/ir/generated/builders.d.ts.map +1 -1
  17. package/lib/ir/generated/builders.js +25 -8
  18. package/lib/ir/generated/builders.js.map +1 -1
  19. package/lib/ir/generated/types.d.ts +50 -15
  20. package/lib/ir/generated/types.d.ts.map +1 -1
  21. package/lib/ir/schema.d.ts +196 -32
  22. package/lib/ir/schema.d.ts.map +1 -1
  23. package/lib/ir/schema.js +162 -24
  24. package/lib/ir/schema.js.map +1 -1
  25. package/lib/ir/validate.d.ts +3 -11
  26. package/lib/ir/validate.d.ts.map +1 -1
  27. package/lib/ir/validate.js +240 -86
  28. package/lib/ir/validate.js.map +1 -1
  29. package/lib/ir/validate.test.js +220 -21
  30. package/lib/ir/validate.test.js.map +1 -1
  31. package/lib/lenses.d.ts.map +1 -1
  32. package/lib/lenses.js +6 -7
  33. package/lib/lenses.js.map +1 -1
  34. package/lib/live/LiveOntology.test.js +86 -0
  35. package/lib/live/LiveOntology.test.js.map +1 -1
  36. package/lib/live/OntologyBackendAdapter.d.ts +11 -0
  37. package/lib/live/OntologyBackendAdapter.d.ts.map +1 -1
  38. package/lib/live/actions/createLiveOntologyAction.d.ts +13 -1
  39. package/lib/live/actions/createLiveOntologyAction.d.ts.map +1 -1
  40. package/lib/live/actions/createLiveOntologyAction.js +12 -9
  41. package/lib/live/actions/createLiveOntologyAction.js.map +1 -1
  42. package/lib/live/actions/createLiveOntologyActions.d.ts.map +1 -1
  43. package/lib/live/actions/createLiveOntologyActions.js +25 -0
  44. package/lib/live/actions/createLiveOntologyActions.js.map +1 -1
  45. package/lib/live/expression.d.ts +6 -4
  46. package/lib/live/expression.d.ts.map +1 -1
  47. package/lib/live/expression.js +183 -42
  48. package/lib/live/expression.js.map +1 -1
  49. package/lib/live/expression.test.js +194 -7
  50. package/lib/live/expression.test.js.map +1 -1
  51. package/lib/live/mutators/OntologyEdits.d.ts.map +1 -1
  52. package/lib/live/mutators/OntologyEdits.js +5 -5
  53. package/lib/live/mutators/OntologyEdits.js.map +1 -1
  54. package/lib/live/mutators/createMutatorTx.d.ts.map +1 -1
  55. package/lib/live/mutators/createMutatorTx.js +13 -3
  56. package/lib/live/mutators/createMutatorTx.js.map +1 -1
  57. package/lib/live/mutators/createMutatorTx.test.js +95 -2
  58. package/lib/live/mutators/createMutatorTx.test.js.map +1 -1
  59. package/lib/meta/generated/live.d.ts +1 -2
  60. package/lib/meta/generated/live.d.ts.map +1 -1
  61. package/lib/meta/generated/live.js.map +1 -1
  62. package/lib/meta/generated/types.d.ts +50 -15
  63. package/lib/meta/generated/types.d.ts.map +1 -1
  64. package/lib/utils/index.d.ts +4 -0
  65. package/lib/utils/index.d.ts.map +1 -1
  66. package/lib/utils/index.js +3 -0
  67. package/lib/utils/index.js.map +1 -1
  68. package/lib/utils/links.d.ts +47 -0
  69. package/lib/utils/links.d.ts.map +1 -0
  70. package/lib/utils/links.js +20 -0
  71. package/lib/utils/links.js.map +1 -0
  72. package/lib/utils/links.test.d.ts +2 -0
  73. package/lib/utils/links.test.d.ts.map +1 -0
  74. package/lib/utils/links.test.js +109 -0
  75. package/lib/utils/links.test.js.map +1 -0
  76. package/lib/utils/paths.d.ts +4 -0
  77. package/lib/utils/paths.d.ts.map +1 -0
  78. package/lib/utils/paths.js +54 -0
  79. package/lib/utils/paths.js.map +1 -0
  80. package/lib/utils/paths.test.d.ts +2 -0
  81. package/lib/utils/paths.test.d.ts.map +1 -0
  82. package/lib/utils/paths.test.js +33 -0
  83. package/lib/utils/paths.test.js.map +1 -0
  84. package/lib/utils/uncertain.d.ts +9 -0
  85. package/lib/utils/uncertain.d.ts.map +1 -0
  86. package/lib/utils/uncertain.js +12 -0
  87. package/lib/utils/uncertain.js.map +1 -0
  88. package/lib/utils/uncertain.test.d.ts +2 -0
  89. package/lib/utils/uncertain.test.d.ts.map +1 -0
  90. package/lib/utils/uncertain.test.js +14 -0
  91. package/lib/utils/uncertain.test.js.map +1 -0
  92. package/lib/utils/validation.d.ts +5 -0
  93. package/lib/utils/validation.d.ts.map +1 -0
  94. package/lib/utils/validation.js +2 -0
  95. package/lib/utils/validation.js.map +1 -0
  96. package/package.json +2 -4
@@ -1,3 +1,4 @@
1
+ import { isLinkHopFromForeignKeySource, resolveLinkHop, } from "../utils/links.js";
1
2
  import { unwrapType } from "../utils/types.js";
2
3
  import { ImageMediaTypeOptions } from "./generated/constants.js";
3
4
  // TODO: Replace this attachment-specific range validation with real numeric constraints in the meta ontology.
@@ -68,7 +69,7 @@ function validateTypeDef(type, path, valueTypeNames, objectTypeNames) {
68
69
  case "attachment":
69
70
  return validateAttachmentConstraints(type).map((error) => ({
70
71
  ...error,
71
- path: [...path, ...error.path],
72
+ path: [...path, ...(error.path ?? [])],
72
73
  }));
73
74
  case "objectReference":
74
75
  return objectTypeNames.has(type.value.objectType)
@@ -179,7 +180,7 @@ function resolveType(type, valueTypes, seen = new Set()) {
179
180
  }
180
181
  return resolveType(resolved, valueTypes, new Set([...seen, name]));
181
182
  }
182
- function resolveParameterReferenceType(type, path, valueTypes, objectTypes) {
183
+ function resolveFieldType(type, path, valueTypes) {
183
184
  const resolvedType = resolveType(type, valueTypes);
184
185
  if (!resolvedType) {
185
186
  return undefined;
@@ -190,77 +191,240 @@ function resolveParameterReferenceType(type, path, valueTypes, objectTypes) {
190
191
  const [segment, ...rest] = path;
191
192
  switch (resolvedType.kind) {
192
193
  case "optional":
193
- return resolveParameterReferenceType(resolvedType.value.type, path, valueTypes, objectTypes);
194
+ return resolveFieldType(resolvedType.value.type, path, valueTypes);
194
195
  case "struct": {
195
196
  const field = resolvedType.value.fields.find((candidate) => candidate.name === segment);
196
- return field
197
- ? resolveParameterReferenceType(field.type, rest, valueTypes, objectTypes)
197
+ return field ? resolveFieldType(field.type, rest, valueTypes) : undefined;
198
+ }
199
+ default:
200
+ return undefined;
201
+ }
202
+ }
203
+ function resolveExpressionType(expression, parameters, valueTypes, objectTypes, linkTypes, contextType, locals) {
204
+ switch (expression.kind) {
205
+ case "inputReference":
206
+ return parameters.get(expression.value.name)?.type;
207
+ case "contextReference":
208
+ return contextType
209
+ ? resolveFieldType(contextType, [expression.value.name], valueTypes)
210
+ : undefined;
211
+ case "localReference":
212
+ return locals.get(expression.value.name);
213
+ case "getAt": {
214
+ const sourceType = resolveExpressionType(expression.value.source, parameters, valueTypes, objectTypes, linkTypes, contextType, locals);
215
+ if (!sourceType || expression.value.path.length === 0) {
216
+ return undefined;
217
+ }
218
+ if (sourceType.kind === "ontologyObject") {
219
+ const [propertyName, ...rest] = expression.value.path;
220
+ const property = objectTypes
221
+ .get(sourceType.objectType)
222
+ ?.properties.find((candidate) => candidate.name === propertyName);
223
+ return property
224
+ ? resolveFieldType(property.type, rest, valueTypes)
225
+ : undefined;
226
+ }
227
+ return resolveFieldType(sourceType, expression.value.path, valueTypes);
228
+ }
229
+ case "objectLookup": {
230
+ const referenceType = resolveExpressionType(expression.value.reference, parameters, valueTypes, objectTypes, linkTypes, contextType, locals);
231
+ const resolved = referenceType?.kind === "ontologyObject"
232
+ ? undefined
233
+ : referenceType
234
+ ? unwrapOptionalType(referenceType, valueTypes)
235
+ : undefined;
236
+ return resolved?.kind === "objectReference"
237
+ ? {
238
+ kind: "ontologyObject",
239
+ objectType: resolved.value.objectType,
240
+ }
198
241
  : undefined;
199
242
  }
200
- case "objectReference": {
201
- const objectType = objectTypes.get(resolvedType.value.objectType);
202
- if (!objectType) {
243
+ case "linkHop": {
244
+ const sourceType = resolveExpressionType(expression.value.source, parameters, valueTypes, objectTypes, linkTypes, contextType, locals);
245
+ if (sourceType?.kind !== "ontologyObject") {
246
+ return undefined;
247
+ }
248
+ const link = resolveLinkHop({
249
+ objectTypes: [...objectTypes.values()],
250
+ linkTypes: [...linkTypes],
251
+ }, sourceType.objectType, expression.value.link);
252
+ if (!link)
253
+ return undefined;
254
+ const foreignKeyOnSource = isLinkHopFromForeignKeySource(link, sourceType.objectType, expression.value.link);
255
+ if (!foreignKeyOnSource &&
256
+ link.cardinality === "many") {
257
+ return undefined;
258
+ }
259
+ return {
260
+ kind: "ontologyObject",
261
+ objectType: foreignKeyOnSource
262
+ ? link.target.objectType
263
+ : link.source.objectType,
264
+ };
265
+ }
266
+ case "struct":
267
+ return {
268
+ kind: "struct",
269
+ value: {
270
+ fields: expression.value.fields.map((field) => ({
271
+ name: field.name,
272
+ displayName: field.name,
273
+ type: (() => {
274
+ const resolved = resolveExpressionType(field.value, parameters, valueTypes, objectTypes, linkTypes, contextType, locals);
275
+ return resolved &&
276
+ resolved.kind !== "ontologyObject"
277
+ ? resolved
278
+ : {
279
+ kind: "unknown",
280
+ value: {},
281
+ };
282
+ })(),
283
+ })),
284
+ },
285
+ };
286
+ case "map": {
287
+ const sourceType = resolveExpressionType(expression.value.source, parameters, valueTypes, objectTypes, linkTypes, contextType, locals);
288
+ const listType = sourceType &&
289
+ sourceType.kind !== "ontologyObject"
290
+ ? unwrapOptionalType(sourceType, valueTypes)
291
+ : undefined;
292
+ if (listType?.kind !== "list") {
203
293
  return undefined;
204
294
  }
205
- const property = objectType.properties.find((candidate) => candidate.name === segment);
206
- return property
207
- ? resolveParameterReferenceType(property.type, rest, valueTypes, objectTypes)
295
+ const bodyLocals = new Map(locals);
296
+ bodyLocals.set(expression.value.binding, listType.value.elementType);
297
+ const bodyType = resolveExpressionType(expression.value.body, parameters, valueTypes, objectTypes, linkTypes, contextType, bodyLocals);
298
+ return bodyType && bodyType.kind !== "ontologyObject"
299
+ ? {
300
+ kind: "list",
301
+ value: { elementType: bodyType },
302
+ }
208
303
  : undefined;
209
304
  }
210
- default:
211
- return undefined;
305
+ case "literal":
306
+ return { kind: "unknown", value: {} };
307
+ case "uuid":
308
+ return { kind: "string", value: {} };
309
+ case "now":
310
+ return { kind: "timestamp", value: {} };
212
311
  }
213
312
  }
214
- function validateExpression(expression, parameters, path, valueTypes, objectTypes, contextType) {
313
+ function validateExpression(expression, parameters, path, valueTypes, objectTypes, linkTypes, contextType, locals = new Map()) {
215
314
  switch (expression.kind) {
216
- case "valueReference": {
217
- if (expression.value.path.length === 0) {
218
- return [{ message: "Value references must include a parameter path.", path: [...path, "path"] }];
219
- }
220
- const [parameterName, ...parameterPath] = expression.value.path;
221
- const parameter = parameters.get(parameterName);
315
+ case "inputReference": {
316
+ const parameter = parameters.get(expression.value.name);
222
317
  if (!parameter) {
223
318
  return [
224
319
  {
225
- message: `Unknown action parameter: "${parameterName}".`,
226
- path: [...path, "path", 0],
320
+ message: `Unknown action parameter: "${expression.value.name}".`,
321
+ path: [...path, "name"],
227
322
  },
228
323
  ];
229
324
  }
230
- return resolveParameterReferenceType(parameter.type, parameterPath, valueTypes, objectTypes)
231
- ? []
232
- : [
233
- {
234
- message: `Invalid value reference path on "${parameterName}".`,
235
- path: [...path, "path"],
236
- },
237
- ];
325
+ return [];
238
326
  }
239
327
  case "contextReference":
240
- if (expression.value.path.length === 0) {
241
- return [{ message: "Context references must include a path.", path: [...path, "path"] }];
242
- }
243
328
  if (!contextType) {
244
329
  return [];
245
330
  }
246
- return resolveParameterReferenceType(contextType, expression.value.path, valueTypes, objectTypes)
331
+ return resolveFieldType(contextType, [expression.value.name], valueTypes)
247
332
  ? []
248
333
  : [
249
334
  {
250
- message: `Invalid context reference path "${expression.value.path.join(".")}".`,
251
- path: [...path, "path"],
335
+ message: `Unknown context value: "${expression.value.name}".`,
336
+ path: [...path, "name"],
337
+ },
338
+ ];
339
+ case "localReference": {
340
+ const local = locals.get(expression.value.name);
341
+ if (!local) {
342
+ return [
343
+ {
344
+ message: `Unknown expression binding: "${expression.value.name}".`,
345
+ path: [...path, "name"],
252
346
  },
253
347
  ];
254
- case "functionCall":
348
+ }
349
+ return [];
350
+ }
351
+ case "getAt":
352
+ case "objectLookup":
353
+ case "linkHop": {
354
+ const childKey = expression.kind === "objectLookup" ? "reference" : "source";
355
+ const child = expression.kind === "objectLookup"
356
+ ? expression.value.reference
357
+ : expression.value.source;
358
+ const errors = validateExpression(child, parameters, [...path, childKey], valueTypes, objectTypes, linkTypes, contextType, locals);
359
+ if (expression.kind === "getAt" &&
360
+ expression.value.path.length === 0) {
361
+ errors.push({
362
+ message: "Get-at expression paths must not be empty.",
363
+ path: [...path, "path"],
364
+ });
365
+ }
366
+ const resolved = resolveExpressionType(expression, parameters, valueTypes, objectTypes, linkTypes, contextType, locals);
367
+ if (!resolved) {
368
+ errors.push({
369
+ message: expression.kind === "getAt"
370
+ ? "Get-at expression source and path must resolve structurally."
371
+ : expression.kind === "objectLookup"
372
+ ? "Object lookup references must resolve to an object reference."
373
+ : "Link hop must resolve to a named to-one link.",
374
+ path,
375
+ });
376
+ }
377
+ return errors;
378
+ }
379
+ case "struct": {
380
+ const errors = [];
381
+ const names = new Set();
382
+ for (let index = 0; index < expression.value.fields.length; index++) {
383
+ const field = expression.value.fields[index];
384
+ if (names.has(field.name)) {
385
+ errors.push({
386
+ message: `Duplicate struct expression field: "${field.name}".`,
387
+ path: [...path, "fields", index, "name"],
388
+ });
389
+ }
390
+ names.add(field.name);
391
+ errors.push(...validateExpression(field.value, parameters, [...path, "fields", index, "value"], valueTypes, objectTypes, linkTypes, contextType, locals));
392
+ }
393
+ return errors;
394
+ }
395
+ case "map": {
396
+ const errors = validateExpression(expression.value.source, parameters, [...path, "source"], valueTypes, objectTypes, linkTypes, contextType, locals);
397
+ const sourceType = resolveExpressionType(expression.value.source, parameters, valueTypes, objectTypes, linkTypes, contextType, locals);
398
+ const listType = sourceType &&
399
+ sourceType.kind !== "ontologyObject"
400
+ ? unwrapOptionalType(sourceType, valueTypes)
401
+ : undefined;
402
+ if (sourceType && listType?.kind !== "list") {
403
+ errors.push({
404
+ message: "Map expression source must resolve to a list.",
405
+ path: [...path, "source"],
406
+ });
407
+ }
408
+ if (!expression.value.binding) {
409
+ errors.push({
410
+ message: "Map expression binding must not be empty.",
411
+ path: [...path, "binding"],
412
+ });
413
+ }
414
+ const bodyLocals = new Map(locals);
415
+ bodyLocals.set(expression.value.binding, listType?.kind === "list" ? listType.value.elementType : { kind: "unknown", value: {} });
416
+ errors.push(...validateExpression(expression.value.body, parameters, [...path, "body"], valueTypes, objectTypes, linkTypes, contextType, bodyLocals));
417
+ return errors;
418
+ }
419
+ case "uuid":
420
+ case "now":
255
421
  case "literal":
256
422
  return [];
257
423
  }
258
424
  }
259
425
  function unwrapOptionalType(type, valueTypes) {
260
426
  const resolved = resolveType(type, valueTypes);
261
- return resolved?.kind === "optional"
262
- ? unwrapOptionalType(resolved.value.type, valueTypes)
263
- : resolved;
427
+ return resolved?.kind === "optional" ? unwrapOptionalType(resolved.value.type, valueTypes) : resolved;
264
428
  }
265
429
  function areDefaultTypesCompatible(target, source, valueTypes) {
266
430
  const targetType = unwrapOptionalType(target, valueTypes);
@@ -280,35 +444,25 @@ function areDefaultTypesCompatible(target, source, valueTypes) {
280
444
  return true;
281
445
  }
282
446
  function validateActionObjectReference(reference, parameters, path, valueTypes, objectTypes) {
283
- if (reference.path.length !== 1) {
284
- return {
285
- errors: [
286
- {
287
- message: "Action targets must point directly to an object reference parameter.",
288
- path: [...path, "path"],
289
- },
290
- ],
291
- };
292
- }
293
- const [parameterName] = reference.path;
447
+ const parameterName = reference.name;
294
448
  const parameter = parameters.get(parameterName);
295
449
  if (!parameter) {
296
450
  return {
297
451
  errors: [
298
452
  {
299
453
  message: `Unknown action parameter: "${parameterName}".`,
300
- path: [...path, "path", 0],
454
+ path: [...path, "name"],
301
455
  },
302
456
  ],
303
457
  };
304
458
  }
305
- const resolved = resolveParameterReferenceType(parameter.type, [], valueTypes, objectTypes);
459
+ const resolved = resolveType(parameter.type, valueTypes);
306
460
  if (!resolved || resolved.kind !== "objectReference") {
307
461
  return {
308
462
  errors: [
309
463
  {
310
464
  message: `Action target parameter "${parameterName}" must be an object reference.`,
311
- path: [...path, "path", 0],
465
+ path: [...path, "name"],
312
466
  },
313
467
  ],
314
468
  };
@@ -320,14 +474,16 @@ function validateActionObjectReference(reference, parameters, path, valueTypes,
320
474
  errors: [
321
475
  {
322
476
  message: `Unknown object type reference: "${resolved.value.objectType}".`,
323
- path: [...path, "path", 0],
477
+ path: [...path, "name"],
324
478
  },
325
479
  ],
326
480
  };
327
481
  }
328
- function validateActionPropertyAssignment(assignment, target, parameters, path, valueTypes, objectTypes, contextType) {
482
+ function validateActionPropertyAssignment(assignment, target, parameters, path, valueTypes, objectTypes, linkTypes, contextType) {
329
483
  if (assignment.property.length === 0) {
330
- return [{ message: "Action property assignments must specify a property.", path: [...path, "property"] }];
484
+ return [
485
+ { message: "Action property assignments must specify a property.", path: [...path, "property"] },
486
+ ];
331
487
  }
332
488
  const [propertyName, ...rest] = assignment.property;
333
489
  const property = target.properties.find((candidate) => candidate.name === propertyName);
@@ -339,8 +495,8 @@ function validateActionPropertyAssignment(assignment, target, parameters, path,
339
495
  },
340
496
  ];
341
497
  }
342
- const resolved = resolveParameterReferenceType(property.type, rest, valueTypes, objectTypes);
343
- const errors = validateExpression(assignment.value, parameters, [...path, "value"], valueTypes, objectTypes, contextType);
498
+ const resolved = resolveFieldType(property.type, rest, valueTypes);
499
+ const errors = validateExpression(assignment.value, parameters, [...path, "value"], valueTypes, objectTypes, linkTypes, contextType);
344
500
  return resolved
345
501
  ? errors
346
502
  : [
@@ -351,7 +507,7 @@ function validateActionPropertyAssignment(assignment, target, parameters, path,
351
507
  },
352
508
  ];
353
509
  }
354
- function validateAction(action, path, valueTypes, objectTypes, contextType) {
510
+ function validateAction(action, path, valueTypes, objectTypes, linkTypes, contextType) {
355
511
  const errors = [];
356
512
  const parameters = new Map(action.parameters.map((parameter) => [parameter.name, parameter]));
357
513
  const seenParameters = new Set();
@@ -367,20 +523,15 @@ function validateAction(action, path, valueTypes, objectTypes, contextType) {
367
523
  seenParameters.add(parameter.name);
368
524
  errors.push(...validateTypeDef(parameter.type, [...parameterPath, "type"], new Set(valueTypes.keys()), new Set(objectTypes.keys())));
369
525
  if (parameter.defaultValue) {
370
- errors.push(...validateExpression(parameter.defaultValue, parameters, [...parameterPath, "defaultValue"], valueTypes, objectTypes, contextType));
371
- if (parameter.defaultValue.kind === "valueReference") {
372
- const [sourceParameterName, ...sourcePath] = parameter.defaultValue.value.path;
373
- const sourceParameter = parameters.get(sourceParameterName);
374
- const sourceType = sourceParameter
375
- ? resolveParameterReferenceType(sourceParameter.type, sourcePath, valueTypes, objectTypes)
376
- : undefined;
377
- if (sourceType &&
378
- !areDefaultTypesCompatible(parameter.type, sourceType, valueTypes)) {
379
- errors.push({
380
- message: `Default value for "${parameter.name}" has an incompatible type.`,
381
- path: [...parameterPath, "defaultValue"],
382
- });
383
- }
526
+ errors.push(...validateExpression(parameter.defaultValue, parameters, [...parameterPath, "defaultValue"], valueTypes, objectTypes, linkTypes, contextType));
527
+ const sourceType = resolveExpressionType(parameter.defaultValue, parameters, valueTypes, objectTypes, linkTypes, contextType, new Map());
528
+ if (sourceType &&
529
+ sourceType.kind !== "ontologyObject" &&
530
+ !areDefaultTypesCompatible(parameter.type, sourceType, valueTypes)) {
531
+ errors.push({
532
+ message: `Default value for "${parameter.name}" has an incompatible type.`,
533
+ path: [...parameterPath, "defaultValue"],
534
+ });
384
535
  }
385
536
  }
386
537
  }
@@ -398,7 +549,7 @@ function validateAction(action, path, valueTypes, objectTypes, contextType) {
398
549
  continue;
399
550
  }
400
551
  for (let valueIndex = 0; valueIndex < step.value.values.length; valueIndex++) {
401
- errors.push(...validateActionPropertyAssignment(step.value.values[valueIndex], objectType, parameters, [...stepPath, "value", "values", valueIndex], valueTypes, objectTypes, contextType));
552
+ errors.push(...validateActionPropertyAssignment(step.value.values[valueIndex], objectType, parameters, [...stepPath, "value", "values", valueIndex], valueTypes, objectTypes, linkTypes, contextType));
402
553
  }
403
554
  break;
404
555
  }
@@ -409,7 +560,7 @@ function validateAction(action, path, valueTypes, objectTypes, contextType) {
409
560
  continue;
410
561
  }
411
562
  for (let valueIndex = 0; valueIndex < step.value.values.length; valueIndex++) {
412
- errors.push(...validateActionPropertyAssignment(step.value.values[valueIndex], target.objectType, parameters, [...stepPath, "value", "values", valueIndex], valueTypes, objectTypes, contextType));
563
+ errors.push(...validateActionPropertyAssignment(step.value.values[valueIndex], target.objectType, parameters, [...stepPath, "value", "values", valueIndex], valueTypes, objectTypes, linkTypes, contextType));
413
564
  }
414
565
  break;
415
566
  }
@@ -470,16 +621,19 @@ export function validate(ontology) {
470
621
  const resolvedContextType = resolveType(ontology.contextType, valueTypes);
471
622
  if (resolvedContextType?.kind === "struct") {
472
623
  const userField = resolvedContextType.value.fields.find((field) => field.name === "user");
473
- const unwrappedUserType = userField
474
- ? unwrapType(userField.type).type
475
- : undefined;
624
+ const unwrappedUserType = userField ? unwrapType(userField.type).type : undefined;
476
625
  const resolvedUserType = unwrappedUserType
477
626
  ? resolveType(unwrappedUserType, valueTypes)
478
627
  : undefined;
479
628
  if (userField && resolvedUserType?.kind !== "objectReference") {
480
629
  errors.push({
481
630
  message: 'Reserved context field "user" must be an object reference.',
482
- path: ["contextType", "fields", resolvedContextType.value.fields.indexOf(userField), "type"],
631
+ path: [
632
+ "contextType",
633
+ "fields",
634
+ resolvedContextType.value.fields.indexOf(userField),
635
+ "type",
636
+ ],
483
637
  });
484
638
  }
485
639
  }
@@ -546,12 +700,10 @@ export function validate(ontology) {
546
700
  }
547
701
  const foreignKeyRoot = lt.foreignKey.split(".")[0];
548
702
  const sourceType = ontology.objectTypes.find((candidate) => candidate.name === lt.source.objectType);
549
- const targetType = ontology.objectTypes.find((candidate) => candidate.name === lt.target.objectType);
550
703
  const sourceHasFk = sourceType?.properties.some((property) => property.name === foreignKeyRoot) ?? false;
551
- const targetHasFk = targetType?.properties.some((property) => property.name === foreignKeyRoot) ?? false;
552
- if (!sourceHasFk && !targetHasFk) {
704
+ if (sourceType && !sourceHasFk) {
553
705
  errors.push({
554
- message: `Foreign key "${lt.foreignKey}" does not exist on either side of link "${lt.id}".`,
706
+ message: `Foreign key "${lt.foreignKey}" does not exist on source object type "${lt.source.objectType}" for link "${lt.id}".`,
555
707
  path: [...ltPath, "foreignKey"],
556
708
  });
557
709
  }
@@ -567,7 +719,7 @@ export function validate(ontology) {
567
719
  });
568
720
  }
569
721
  actionNames.add(action.name);
570
- errors.push(...validateAction(action, actionPath, valueTypes, objectTypes, ontology.contextType));
722
+ errors.push(...validateAction(action, actionPath, valueTypes, objectTypes, ontology.linkTypes, ontology.contextType));
571
723
  }
572
724
  const queryFunctionTypeNames = new Set();
573
725
  for (let i = 0; i < ontology.queryFunctionTypes.length; i++) {
@@ -582,6 +734,8 @@ export function validate(ontology) {
582
734
  queryFunctionTypeNames.add(queryFunctionType.name);
583
735
  errors.push(...validateQueryFunctionType(queryFunctionType, queryFunctionTypePath, valueTypeNames, objectTypeNames));
584
736
  }
585
- return errors.length === 0 ? { kind: "ok" } : { kind: "err", errors };
737
+ return errors.length === 0
738
+ ? { kind: "ok", value: undefined }
739
+ : { kind: "err", value: errors };
586
740
  }
587
741
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/ir/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/ir/validate.ts"],"names":[],"mappings":"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"}