@sequenceholdings/orm 2.7.0 → 2.8.1

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 (47) hide show
  1. package/README.md +49 -4
  2. package/dist/authoring.cjs +30 -0
  3. package/dist/authoring.cjs.map +1 -1
  4. package/dist/authoring.d.cts +7 -1
  5. package/dist/authoring.d.ts +7 -1
  6. package/dist/authoring.js +30 -0
  7. package/dist/authoring.js.map +1 -1
  8. package/dist/canonical.d.cts +71 -71
  9. package/dist/canonical.d.ts +71 -71
  10. package/dist/cli.cjs +3473 -3342
  11. package/dist/cli.cjs.map +1 -1
  12. package/dist/cli.d.cts +13 -1
  13. package/dist/cli.d.ts +13 -1
  14. package/dist/cli.js +3472 -3343
  15. package/dist/cli.js.map +1 -1
  16. package/dist/client.cjs +24 -6
  17. package/dist/client.cjs.map +1 -1
  18. package/dist/client.d.cts +12 -3
  19. package/dist/client.d.ts +12 -3
  20. package/dist/client.js +24 -6
  21. package/dist/client.js.map +1 -1
  22. package/dist/compiler.cjs +844 -15
  23. package/dist/compiler.cjs.map +1 -1
  24. package/dist/compiler.d.cts +12 -2
  25. package/dist/compiler.d.ts +12 -2
  26. package/dist/compiler.js +844 -17
  27. package/dist/compiler.js.map +1 -1
  28. package/dist/index.cjs +30 -0
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.d.cts +57 -57
  31. package/dist/index.d.ts +57 -57
  32. package/dist/index.js +30 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/ir.d.cts +72 -72
  35. package/dist/ir.d.ts +72 -72
  36. package/dist/sdl.cjs +3 -3
  37. package/dist/sdl.cjs.map +1 -1
  38. package/dist/sdl.d.cts +2 -0
  39. package/dist/sdl.d.ts +2 -0
  40. package/dist/sdl.js +3 -3
  41. package/dist/sdl.js.map +1 -1
  42. package/package.json +1 -1
  43. package/templates/orm-namespace/graphql/example/queries.ts +52 -5
  44. package/templates/orm-namespace/schema/tables.ts +5 -2
  45. package/templates/orm-namespace/sequence.config.ts +6 -4
  46. package/dist/{definition-DjfC7Lll.d.cts → definition-B99BsOAO.d.cts} +4 -4
  47. package/dist/{definition-DjfC7Lll.d.ts → definition-B99BsOAO.d.ts} +4 -4
package/dist/index.cjs CHANGED
@@ -317,6 +317,22 @@ function toPlatformUser(options) {
317
317
  function isSeqLink(value) {
318
318
  return typeof value === "object" && value !== null && value.kind === LINK_BRAND;
319
319
  }
320
+ var TABLE_CONFIG_KEYS = /* @__PURE__ */ new Set([
321
+ "displayName",
322
+ "description",
323
+ "renamedFrom",
324
+ "primaryKey",
325
+ "indexes",
326
+ "checks",
327
+ "foreignKeys",
328
+ "links",
329
+ "policies",
330
+ "cowMutations",
331
+ "cellMetadata",
332
+ "cellRevisions",
333
+ "materializes",
334
+ "internal"
335
+ ]);
320
336
  function isSeqTable(value) {
321
337
  return typeof value === "object" && value !== null && value.kind === TABLE_BRAND;
322
338
  }
@@ -331,6 +347,11 @@ function assertIdentifier({ value, what, file, pattern = IDENTIFIER_PATTERN }) {
331
347
  function defineTable(name2, columns, config = {}) {
332
348
  const file = activeAuthoringContext()?.currentFile;
333
349
  assertIdentifier({ value: name2, what: "table name", file });
350
+ for (const key of Object.keys(config)) {
351
+ if (!TABLE_CONFIG_KEYS.has(key)) {
352
+ throw new OrmDefinitionError(`table "${name2}": unknown defineTable option "${key}"`, file);
353
+ }
354
+ }
334
355
  const entries = Object.entries(columns);
335
356
  if (entries.length === 0) {
336
357
  throw new OrmDefinitionError(`table "${name2}" declares no columns`, file);
@@ -423,6 +444,7 @@ function defineSyncedTable(name2, columnsOrConfig, maybeConfig) {
423
444
  if (config.primaryKey !== void 0) tableConfig.primaryKey = config.primaryKey;
424
445
  if (config.links !== void 0) tableConfig.links = config.links;
425
446
  if (config.policies !== void 0) tableConfig.policies = { read: config.policies.read };
447
+ if (config.internal === true) tableConfig.internal = true;
426
448
  const table = {
427
449
  kind: TABLE_BRAND,
428
450
  tableName: name2,
@@ -2889,6 +2911,11 @@ function serializeNamespace(input) {
2889
2911
  enumsByName.set(ref.name, ref);
2890
2912
  }
2891
2913
  const canonicalTables = tables.map((table) => buildCanonicalTable({ table, relationsByName, enumsByName }));
2914
+ for (const table of tables) {
2915
+ if (table.source !== void 0 && table.config.internal === true && config.exports && Object.hasOwn(config.exports, table.tableName)) {
2916
+ throw new OrmDefinitionError(`internal synced source "${table.tableName}" cannot be exported; export a permitted managed view instead`, table.file);
2917
+ }
2918
+ }
2892
2919
  const canonicalEnums = [...enumsByName.values()].map((ref) => ({
2893
2920
  name: ref.name,
2894
2921
  values: [...ref.values]
@@ -3222,6 +3249,9 @@ function buildCanonicalLink({
3222
3249
  if (!relationsByName.has(targetName)) {
3223
3250
  return fail3(`targets ${relationKind(target)} "${targetName}" which is not part of this namespace`);
3224
3251
  }
3252
+ if (isSeqTable(target) && target.source !== void 0 && target.config.internal === true) {
3253
+ return fail3(`targets internal synced source "${targetName}"; expose a permitted managed view instead`);
3254
+ }
3225
3255
  if (link.enforce && (!isSeqTable(relation) || !isSeqTable(target))) {
3226
3256
  return fail3("cannot enforce a PostgreSQL foreign key involving a view");
3227
3257
  }