@osdk/maker 0.16.0-beta.12 → 0.16.0-beta.13

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @osdk/maker
2
2
 
3
+ ## 0.16.0-beta.13
4
+
5
+ ### Minor Changes
6
+
7
+ - 9ee82f4: Dedupe many-to-many PK property names in datasource
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [60b5ffb]
12
+ - Updated dependencies [61e33ab]
13
+ - @osdk/api@2.8.0-beta.26
14
+ - @osdk/generator-converters.ontologyir@2.8.0-beta.26
15
+
3
16
  ## 0.16.0-beta.12
4
17
 
5
18
  ### Minor Changes
@@ -24,7 +24,7 @@ import { defineOntology } from "../api/defineOntology.js";
24
24
  const apiNamespaceRegex = /^[a-z0-9-]+(\.[a-z0-9-]+)*\.$/;
25
25
  const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
26
26
  export default async function main(args = process.argv) {
27
- const commandLineOpts = await yargs(hideBin(args)).version("0.16.0-beta.12" ?? "").wrap(Math.min(150, yargs().terminalWidth())).strict().help().options({
27
+ const commandLineOpts = await yargs(hideBin(args)).version("0.16.0-beta.13" ?? "").wrap(Math.min(150, yargs().terminalWidth())).strict().help().options({
28
28
  input: {
29
29
  alias: "i",
30
30
  describe: "Input file",
@@ -81,6 +81,11 @@ export function convertLink(linkType) {
81
81
  apiName: toManyObjectApiName,
82
82
  object: toManyObject
83
83
  } = getObject(linkType.toMany.object);
84
+ const columnA = manyObject.primaryKeyPropertyApiName;
85
+ const columnB = toManyObject.primaryKeyPropertyApiName;
86
+ const hasCollision = columnA === columnB;
87
+ const resolvedColumnA = hasCollision ? `${columnA}_from` : columnA;
88
+ const resolvedColumnB = hasCollision ? `${columnB}_to` : columnB;
84
89
  definition = {
85
90
  type: "manyToMany",
86
91
  manyToMany: {
@@ -123,14 +128,14 @@ export function convertLink(linkType) {
123
128
  apiName: manyObject.primaryKeyPropertyApiName,
124
129
  object: manyObjectApiName
125
130
  },
126
- column: manyObject.primaryKeyPropertyApiName
131
+ column: resolvedColumnA
127
132
  }],
128
133
  objectTypeBPrimaryKeyMapping: [{
129
134
  property: {
130
135
  apiName: toManyObject.primaryKeyPropertyApiName,
131
136
  object: toManyObjectApiName
132
137
  },
133
- column: toManyObject.primaryKeyPropertyApiName
138
+ column: resolvedColumnB
134
139
  }]
135
140
  }
136
141
  },
@@ -1 +1 @@
1
- {"version":3,"file":"convertLink.js","names":["invariant","OntologyEntityTypeEnum","cleanAndValidateLinkTypeId","importedTypes","ontologyDefinition","convertCardinality","convertLink","linkType","validateLink","definition","datasource","undefined","apiName","oneObjectApiName","object","oneObject","getObject","one","toManyObjectApiName","toManyObject","toMany","type","oneToMany","cardinalityHint","cardinality","manyToOneLinkMetadata","metadata","objectTypeRidManySide","objectTypeRidOneSide","oneToManyLinkMetadata","oneSidePrimaryKeyToManySidePropertyMapping","from","primaryKeyPropertyApiName","to","manyForeignKeyProperty","manyObjectApiName","manyObject","many","intermediary","objectTypeAToBLinkMetadata","objectTypeBToALinkMetadata","objectTypeRidA","objectTypeRidB","intermediaryObjectTypeRid","intermediaryObjectType","aToIntermediaryLinkTypeRid","linkToIntermediary","intermediaryToBLinkTypeRid","manyToMany","peeringMetadata","objectTypeAPrimaryKeyPropertyMapping","objectTypeBPrimaryKeyPropertyMapping","datasourceName","dataset","datasetRid","concat","writebackDatasetRid","objectTypeAPrimaryKeyMapping","property","column","objectTypeBPrimaryKeyMapping","editsConfiguration","onlyAllowPrivilegedEdits","redacted","id","status","convertLinkStatus","datasources","entityMetadata","arePatchesEnabled","editsEnabled","linkDefinition","foreignKey","properties","find","p","process","env","NODE_ENV","test","typesMatch","intermediaryObjectTypeApiName","manyIntermediaryOneObjectApiName","manyIntermediaryOneObject","manyIntermediaryToManyObjectApiName","manyIntermediaryToManyObject","toManyIntermediaryOneObjectApiName","toManyIntermediaryOneObject","toManyIntermediaryToManyObjectApiName","toManyIntermediaryToManyObject","objectApiName","fullObject","OBJECT_TYPE","deprecated","message","deadline","experimental","example","active"],"sources":["convertLink.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n OntologyIrLinkDefinition,\n OntologyIrLinkTypeBlockDataV2,\n OntologyIrLinkTypeStatus,\n OntologyIrManyToManyLinkTypeDatasource,\n} from \"@osdk/client.unstable\";\nimport invariant from \"tiny-invariant\";\nimport { OntologyEntityTypeEnum } from \"../../api/common/OntologyEntityTypeEnum.js\";\nimport {\n cleanAndValidateLinkTypeId,\n importedTypes,\n ontologyDefinition,\n} from \"../../api/defineOntology.js\";\nimport type { LinkType, UserLinkTypeStatus } from \"../../api/links/LinkType.js\";\nimport type { ObjectType } from \"../../api/object/ObjectType.js\";\nimport type { ObjectTypeDefinition } from \"../../api/object/ObjectTypeDefinition.js\";\nimport { convertCardinality } from \"./convertCardinality.js\";\n\nexport function convertLink(\n linkType: LinkType,\n): OntologyIrLinkTypeBlockDataV2 {\n validateLink(linkType);\n let definition: OntologyIrLinkDefinition;\n let datasource: OntologyIrManyToManyLinkTypeDatasource | undefined =\n undefined;\n if (\"one\" in linkType) {\n const { apiName: oneObjectApiName, object: oneObject } = getObject(\n linkType.one.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkType.toMany.object,\n );\n definition = {\n type: \"oneToMany\",\n oneToMany: {\n cardinalityHint: convertCardinality(linkType.cardinality),\n manyToOneLinkMetadata: linkType.toMany.metadata,\n objectTypeRidManySide: toManyObjectApiName,\n objectTypeRidOneSide: oneObjectApiName,\n oneToManyLinkMetadata: linkType.one.metadata,\n oneSidePrimaryKeyToManySidePropertyMapping: [{\n from: {\n apiName: oneObject.primaryKeyPropertyApiName,\n object: oneObjectApiName,\n },\n to: {\n apiName: linkType.manyForeignKeyProperty,\n object: toManyObjectApiName,\n },\n }],\n },\n };\n } else if (\"intermediaryObjectType\" in linkType) {\n const { apiName: manyObjectApiName, object: manyObject } = getObject(\n linkType.many.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkType.toMany.object,\n );\n definition = {\n type: \"intermediary\",\n intermediary: {\n objectTypeAToBLinkMetadata: linkType.many.metadata,\n objectTypeBToALinkMetadata: linkType.toMany.metadata,\n objectTypeRidA: manyObjectApiName,\n objectTypeRidB: toManyObjectApiName,\n intermediaryObjectTypeRid: linkType.intermediaryObjectType.apiName,\n aToIntermediaryLinkTypeRid: cleanAndValidateLinkTypeId(\n linkType.many.linkToIntermediary.apiName,\n ),\n intermediaryToBLinkTypeRid: cleanAndValidateLinkTypeId(\n linkType.toMany.linkToIntermediary.apiName,\n ),\n },\n };\n } else {\n const { apiName: manyObjectApiName, object: manyObject } = getObject(\n linkType.many.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkType.toMany.object,\n );\n definition = {\n type: \"manyToMany\",\n manyToMany: {\n objectTypeAToBLinkMetadata: linkType.many.metadata,\n objectTypeBToALinkMetadata: linkType.toMany.metadata,\n objectTypeRidA: manyObjectApiName,\n objectTypeRidB: toManyObjectApiName,\n peeringMetadata: undefined,\n objectTypeAPrimaryKeyPropertyMapping: [{\n from: {\n apiName: manyObject.primaryKeyPropertyApiName,\n object: manyObjectApiName,\n },\n to: {\n apiName: manyObject.primaryKeyPropertyApiName,\n object: manyObjectApiName,\n },\n }],\n objectTypeBPrimaryKeyPropertyMapping: [{\n from: {\n apiName: toManyObject.primaryKeyPropertyApiName,\n object: toManyObjectApiName,\n },\n to: {\n apiName: toManyObject.primaryKeyPropertyApiName,\n object: toManyObjectApiName,\n },\n }],\n },\n };\n\n datasource = {\n datasourceName: linkType.apiName,\n datasource: {\n type: \"dataset\",\n dataset: {\n datasetRid: \"link-\".concat(linkType.apiName),\n writebackDatasetRid: undefined,\n objectTypeAPrimaryKeyMapping: [{\n property: {\n apiName: manyObject.primaryKeyPropertyApiName,\n object: manyObjectApiName,\n },\n column: manyObject.primaryKeyPropertyApiName,\n }],\n objectTypeBPrimaryKeyMapping: [{\n property: {\n apiName: toManyObject.primaryKeyPropertyApiName,\n object: toManyObjectApiName,\n },\n column: toManyObject.primaryKeyPropertyApiName,\n }],\n },\n },\n editsConfiguration: {\n onlyAllowPrivilegedEdits: false,\n },\n redacted: linkType.redacted,\n };\n }\n\n return {\n linkType: {\n definition: definition,\n id: cleanAndValidateLinkTypeId(linkType.apiName),\n status: convertLinkStatus(linkType.status),\n redacted: linkType.redacted ?? false,\n },\n datasources: datasource !== undefined ? [datasource] : [],\n entityMetadata: {\n arePatchesEnabled: linkType.editsEnabled ?? false,\n },\n };\n}\nfunction validateLink(linkDefinition: LinkType) {\n if (\"one\" in linkDefinition) {\n const { apiName: oneObjectApiName, object: oneObject } = getObject(\n linkDefinition.one.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkDefinition.toMany.object,\n );\n const foreignKey = toManyObject.properties?.find(p =>\n p.apiName === linkDefinition.manyForeignKeyProperty\n );\n invariant(\n foreignKey !== undefined,\n `Foreign key ${linkDefinition.manyForeignKeyProperty} on link ${linkDefinition.apiName} does not exist on object ${toManyObjectApiName}`,\n );\n\n invariant(\n /([a-z][a-z0-9\\\\-]*)/.test(linkDefinition.apiName),\n `Top level link api names are expected to match the regex pattern ([a-z][a-z0-9\\\\-]*) ${linkDefinition.apiName} does not match`,\n );\n\n const typesMatch = foreignKey.type\n === oneObject.properties?.find(p =>\n p.apiName === oneObject.primaryKeyPropertyApiName\n )?.type;\n invariant(\n typesMatch,\n `Link ${linkDefinition.apiName} has type mismatch between the one side's primary key and the foreign key on the many side`,\n );\n }\n if (\"intermediaryObjectType\" in linkDefinition) {\n const {\n apiName: intermediaryObjectTypeApiName,\n object: intermediaryObjectType,\n } = getObject(linkDefinition.intermediaryObjectType);\n const { apiName: manyObjectApiName, object: manyObject } = getObject(\n linkDefinition.many.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkDefinition.toMany.object,\n );\n\n const {\n apiName: manyIntermediaryOneObjectApiName,\n object: manyIntermediaryOneObject,\n } = getObject((linkDefinition.many.linkToIntermediary as any).one.object);\n const {\n apiName: manyIntermediaryToManyObjectApiName,\n object: manyIntermediaryToManyObject,\n } = getObject(linkDefinition.many.linkToIntermediary.toMany.object);\n invariant(\n \"one\" in linkDefinition.many.linkToIntermediary\n && manyIntermediaryOneObjectApiName\n === manyObject.apiName\n && manyIntermediaryToManyObjectApiName\n === intermediaryObjectTypeApiName,\n `LinkTypeA ${linkDefinition.many.linkToIntermediary.apiName} must be a many to one link from intermediary object ${intermediaryObjectTypeApiName} to objectA ${manyObjectApiName}`,\n );\n\n const {\n apiName: toManyIntermediaryOneObjectApiName,\n object: toManyIntermediaryOneObject,\n } = getObject((linkDefinition.toMany.linkToIntermediary as any).one.object);\n const {\n apiName: toManyIntermediaryToManyObjectApiName,\n object: toManyIntermediaryToManyObject,\n } = getObject(linkDefinition.toMany.linkToIntermediary.toMany.object);\n invariant(\n \"one\" in linkDefinition.toMany.linkToIntermediary\n && toManyIntermediaryOneObjectApiName\n === toManyObjectApiName\n && toManyIntermediaryToManyObjectApiName\n === intermediaryObjectTypeApiName,\n `LinkTypeB ${linkDefinition.toMany.linkToIntermediary.apiName} must be a many to one link from intermediary object ${intermediaryObjectTypeApiName} to objectB ${toManyObjectApiName}`,\n );\n }\n}\n\nexport function getObject(\n object: string | ObjectTypeDefinition,\n): { apiName: string; object: ObjectType } {\n const objectApiName = typeof object === \"string\" ? object : object.apiName;\n const fullObject =\n ontologyDefinition[OntologyEntityTypeEnum.OBJECT_TYPE][objectApiName]\n ?? importedTypes[OntologyEntityTypeEnum.OBJECT_TYPE][objectApiName];\n invariant(\n fullObject !== undefined,\n `Object ${objectApiName} is not defined`,\n );\n return { apiName: objectApiName, object: fullObject };\n}\n\nexport function convertLinkStatus(\n status: UserLinkTypeStatus | undefined,\n): OntologyIrLinkTypeStatus {\n if (\n typeof status === \"object\" && \"type\" in status\n && status.type === \"deprecated\"\n ) {\n return {\n type: \"deprecated\",\n deprecated: {\n message: status.message,\n deadline: status.deadline,\n },\n };\n }\n switch (status) {\n case \"experimental\":\n return { type: \"experimental\", experimental: {} };\n case \"example\":\n return { type: \"example\", example: {} };\n case \"active\":\n default:\n return { type: \"active\", active: {} };\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"convertLink.js","names":["invariant","OntologyEntityTypeEnum","cleanAndValidateLinkTypeId","importedTypes","ontologyDefinition","convertCardinality","convertLink","linkType","validateLink","definition","datasource","undefined","apiName","oneObjectApiName","object","oneObject","getObject","one","toManyObjectApiName","toManyObject","toMany","type","oneToMany","cardinalityHint","cardinality","manyToOneLinkMetadata","metadata","objectTypeRidManySide","objectTypeRidOneSide","oneToManyLinkMetadata","oneSidePrimaryKeyToManySidePropertyMapping","from","primaryKeyPropertyApiName","to","manyForeignKeyProperty","manyObjectApiName","manyObject","many","intermediary","objectTypeAToBLinkMetadata","objectTypeBToALinkMetadata","objectTypeRidA","objectTypeRidB","intermediaryObjectTypeRid","intermediaryObjectType","aToIntermediaryLinkTypeRid","linkToIntermediary","intermediaryToBLinkTypeRid","columnA","columnB","hasCollision","resolvedColumnA","resolvedColumnB","manyToMany","peeringMetadata","objectTypeAPrimaryKeyPropertyMapping","objectTypeBPrimaryKeyPropertyMapping","datasourceName","dataset","datasetRid","concat","writebackDatasetRid","objectTypeAPrimaryKeyMapping","property","column","objectTypeBPrimaryKeyMapping","editsConfiguration","onlyAllowPrivilegedEdits","redacted","id","status","convertLinkStatus","datasources","entityMetadata","arePatchesEnabled","editsEnabled","linkDefinition","foreignKey","properties","find","p","process","env","NODE_ENV","test","typesMatch","intermediaryObjectTypeApiName","manyIntermediaryOneObjectApiName","manyIntermediaryOneObject","manyIntermediaryToManyObjectApiName","manyIntermediaryToManyObject","toManyIntermediaryOneObjectApiName","toManyIntermediaryOneObject","toManyIntermediaryToManyObjectApiName","toManyIntermediaryToManyObject","objectApiName","fullObject","OBJECT_TYPE","deprecated","message","deadline","experimental","example","active"],"sources":["convertLink.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n OntologyIrLinkDefinition,\n OntologyIrLinkTypeBlockDataV2,\n OntologyIrLinkTypeStatus,\n OntologyIrManyToManyLinkTypeDatasource,\n} from \"@osdk/client.unstable\";\nimport invariant from \"tiny-invariant\";\nimport { OntologyEntityTypeEnum } from \"../../api/common/OntologyEntityTypeEnum.js\";\nimport {\n cleanAndValidateLinkTypeId,\n importedTypes,\n ontologyDefinition,\n} from \"../../api/defineOntology.js\";\nimport type { LinkType, UserLinkTypeStatus } from \"../../api/links/LinkType.js\";\nimport type { ObjectType } from \"../../api/object/ObjectType.js\";\nimport type { ObjectTypeDefinition } from \"../../api/object/ObjectTypeDefinition.js\";\nimport { convertCardinality } from \"./convertCardinality.js\";\n\nexport function convertLink(\n linkType: LinkType,\n): OntologyIrLinkTypeBlockDataV2 {\n validateLink(linkType);\n let definition: OntologyIrLinkDefinition;\n let datasource: OntologyIrManyToManyLinkTypeDatasource | undefined =\n undefined;\n if (\"one\" in linkType) {\n const { apiName: oneObjectApiName, object: oneObject } = getObject(\n linkType.one.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkType.toMany.object,\n );\n definition = {\n type: \"oneToMany\",\n oneToMany: {\n cardinalityHint: convertCardinality(linkType.cardinality),\n manyToOneLinkMetadata: linkType.toMany.metadata,\n objectTypeRidManySide: toManyObjectApiName,\n objectTypeRidOneSide: oneObjectApiName,\n oneToManyLinkMetadata: linkType.one.metadata,\n oneSidePrimaryKeyToManySidePropertyMapping: [{\n from: {\n apiName: oneObject.primaryKeyPropertyApiName,\n object: oneObjectApiName,\n },\n to: {\n apiName: linkType.manyForeignKeyProperty,\n object: toManyObjectApiName,\n },\n }],\n },\n };\n } else if (\"intermediaryObjectType\" in linkType) {\n const { apiName: manyObjectApiName, object: manyObject } = getObject(\n linkType.many.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkType.toMany.object,\n );\n definition = {\n type: \"intermediary\",\n intermediary: {\n objectTypeAToBLinkMetadata: linkType.many.metadata,\n objectTypeBToALinkMetadata: linkType.toMany.metadata,\n objectTypeRidA: manyObjectApiName,\n objectTypeRidB: toManyObjectApiName,\n intermediaryObjectTypeRid: linkType.intermediaryObjectType.apiName,\n aToIntermediaryLinkTypeRid: cleanAndValidateLinkTypeId(\n linkType.many.linkToIntermediary.apiName,\n ),\n intermediaryToBLinkTypeRid: cleanAndValidateLinkTypeId(\n linkType.toMany.linkToIntermediary.apiName,\n ),\n },\n };\n } else {\n const { apiName: manyObjectApiName, object: manyObject } = getObject(\n linkType.many.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkType.toMany.object,\n );\n\n const columnA = manyObject.primaryKeyPropertyApiName;\n const columnB = toManyObject.primaryKeyPropertyApiName;\n const hasCollision = columnA === columnB;\n const resolvedColumnA = hasCollision ? `${columnA}_from` : columnA;\n const resolvedColumnB = hasCollision ? `${columnB}_to` : columnB;\n\n definition = {\n type: \"manyToMany\",\n manyToMany: {\n objectTypeAToBLinkMetadata: linkType.many.metadata,\n objectTypeBToALinkMetadata: linkType.toMany.metadata,\n objectTypeRidA: manyObjectApiName,\n objectTypeRidB: toManyObjectApiName,\n peeringMetadata: undefined,\n objectTypeAPrimaryKeyPropertyMapping: [{\n from: {\n apiName: manyObject.primaryKeyPropertyApiName,\n object: manyObjectApiName,\n },\n to: {\n apiName: manyObject.primaryKeyPropertyApiName,\n object: manyObjectApiName,\n },\n }],\n objectTypeBPrimaryKeyPropertyMapping: [{\n from: {\n apiName: toManyObject.primaryKeyPropertyApiName,\n object: toManyObjectApiName,\n },\n to: {\n apiName: toManyObject.primaryKeyPropertyApiName,\n object: toManyObjectApiName,\n },\n }],\n },\n };\n\n datasource = {\n datasourceName: linkType.apiName,\n datasource: {\n type: \"dataset\",\n dataset: {\n datasetRid: \"link-\".concat(linkType.apiName),\n writebackDatasetRid: undefined,\n objectTypeAPrimaryKeyMapping: [{\n property: {\n apiName: manyObject.primaryKeyPropertyApiName,\n object: manyObjectApiName,\n },\n column: resolvedColumnA,\n }],\n objectTypeBPrimaryKeyMapping: [{\n property: {\n apiName: toManyObject.primaryKeyPropertyApiName,\n object: toManyObjectApiName,\n },\n column: resolvedColumnB,\n }],\n },\n },\n editsConfiguration: {\n onlyAllowPrivilegedEdits: false,\n },\n redacted: linkType.redacted,\n };\n }\n\n return {\n linkType: {\n definition: definition,\n id: cleanAndValidateLinkTypeId(linkType.apiName),\n status: convertLinkStatus(linkType.status),\n redacted: linkType.redacted ?? false,\n },\n datasources: datasource !== undefined ? [datasource] : [],\n entityMetadata: {\n arePatchesEnabled: linkType.editsEnabled ?? false,\n },\n };\n}\nfunction validateLink(linkDefinition: LinkType) {\n if (\"one\" in linkDefinition) {\n const { apiName: oneObjectApiName, object: oneObject } = getObject(\n linkDefinition.one.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkDefinition.toMany.object,\n );\n const foreignKey = toManyObject.properties?.find(p =>\n p.apiName === linkDefinition.manyForeignKeyProperty\n );\n invariant(\n foreignKey !== undefined,\n `Foreign key ${linkDefinition.manyForeignKeyProperty} on link ${linkDefinition.apiName} does not exist on object ${toManyObjectApiName}`,\n );\n\n invariant(\n /([a-z][a-z0-9\\\\-]*)/.test(linkDefinition.apiName),\n `Top level link api names are expected to match the regex pattern ([a-z][a-z0-9\\\\-]*) ${linkDefinition.apiName} does not match`,\n );\n\n const typesMatch = foreignKey.type\n === oneObject.properties?.find(p =>\n p.apiName === oneObject.primaryKeyPropertyApiName\n )?.type;\n invariant(\n typesMatch,\n `Link ${linkDefinition.apiName} has type mismatch between the one side's primary key and the foreign key on the many side`,\n );\n }\n if (\"intermediaryObjectType\" in linkDefinition) {\n const {\n apiName: intermediaryObjectTypeApiName,\n object: intermediaryObjectType,\n } = getObject(linkDefinition.intermediaryObjectType);\n const { apiName: manyObjectApiName, object: manyObject } = getObject(\n linkDefinition.many.object,\n );\n const { apiName: toManyObjectApiName, object: toManyObject } = getObject(\n linkDefinition.toMany.object,\n );\n\n const {\n apiName: manyIntermediaryOneObjectApiName,\n object: manyIntermediaryOneObject,\n } = getObject((linkDefinition.many.linkToIntermediary as any).one.object);\n const {\n apiName: manyIntermediaryToManyObjectApiName,\n object: manyIntermediaryToManyObject,\n } = getObject(linkDefinition.many.linkToIntermediary.toMany.object);\n invariant(\n \"one\" in linkDefinition.many.linkToIntermediary\n && manyIntermediaryOneObjectApiName\n === manyObject.apiName\n && manyIntermediaryToManyObjectApiName\n === intermediaryObjectTypeApiName,\n `LinkTypeA ${linkDefinition.many.linkToIntermediary.apiName} must be a many to one link from intermediary object ${intermediaryObjectTypeApiName} to objectA ${manyObjectApiName}`,\n );\n\n const {\n apiName: toManyIntermediaryOneObjectApiName,\n object: toManyIntermediaryOneObject,\n } = getObject((linkDefinition.toMany.linkToIntermediary as any).one.object);\n const {\n apiName: toManyIntermediaryToManyObjectApiName,\n object: toManyIntermediaryToManyObject,\n } = getObject(linkDefinition.toMany.linkToIntermediary.toMany.object);\n invariant(\n \"one\" in linkDefinition.toMany.linkToIntermediary\n && toManyIntermediaryOneObjectApiName\n === toManyObjectApiName\n && toManyIntermediaryToManyObjectApiName\n === intermediaryObjectTypeApiName,\n `LinkTypeB ${linkDefinition.toMany.linkToIntermediary.apiName} must be a many to one link from intermediary object ${intermediaryObjectTypeApiName} to objectB ${toManyObjectApiName}`,\n );\n }\n}\n\nexport function getObject(\n object: string | ObjectTypeDefinition,\n): { apiName: string; object: ObjectType } {\n const objectApiName = typeof object === \"string\" ? object : object.apiName;\n const fullObject =\n ontologyDefinition[OntologyEntityTypeEnum.OBJECT_TYPE][objectApiName]\n ?? importedTypes[OntologyEntityTypeEnum.OBJECT_TYPE][objectApiName];\n invariant(\n fullObject !== undefined,\n `Object ${objectApiName} is not defined`,\n );\n return { apiName: objectApiName, object: fullObject };\n}\n\nexport function convertLinkStatus(\n status: UserLinkTypeStatus | undefined,\n): OntologyIrLinkTypeStatus {\n if (\n typeof status === \"object\" && \"type\" in status\n && status.type === \"deprecated\"\n ) {\n return {\n type: \"deprecated\",\n deprecated: {\n message: status.message,\n deadline: status.deadline,\n },\n };\n }\n switch (status) {\n case \"experimental\":\n return { type: \"experimental\", experimental: {} };\n case \"example\":\n return { type: \"example\", example: {} };\n case \"active\":\n default:\n return { type: \"active\", active: {} };\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -135,6 +135,11 @@ function convertLink(linkType) {
135
135
  apiName: toManyObjectApiName,
136
136
  object: toManyObject
137
137
  } = getObject(linkType.toMany.object);
138
+ const columnA = manyObject.primaryKeyPropertyApiName;
139
+ const columnB = toManyObject.primaryKeyPropertyApiName;
140
+ const hasCollision = columnA === columnB;
141
+ const resolvedColumnA = hasCollision ? `${columnA}_from` : columnA;
142
+ const resolvedColumnB = hasCollision ? `${columnB}_to` : columnB;
138
143
  definition = {
139
144
  type: "manyToMany",
140
145
  manyToMany: {
@@ -177,14 +182,14 @@ function convertLink(linkType) {
177
182
  apiName: manyObject.primaryKeyPropertyApiName,
178
183
  object: manyObjectApiName
179
184
  },
180
- column: manyObject.primaryKeyPropertyApiName
185
+ column: resolvedColumnA
181
186
  }],
182
187
  objectTypeBPrimaryKeyMapping: [{
183
188
  property: {
184
189
  apiName: toManyObject.primaryKeyPropertyApiName,
185
190
  object: toManyObjectApiName
186
191
  },
187
- column: toManyObject.primaryKeyPropertyApiName
192
+ column: resolvedColumnB
188
193
  }]
189
194
  }
190
195
  },
@@ -2674,7 +2679,7 @@ function getNamespace() {
2674
2679
  var apiNamespaceRegex = /^[a-z0-9-]+(\.[a-z0-9-]+)*\.$/;
2675
2680
  var uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
2676
2681
  async function main(args = process.argv) {
2677
- const commandLineOpts = await yargs__default.default(helpers.hideBin(args)).version("0.16.0-beta.12").wrap(Math.min(150, yargs__default.default().terminalWidth())).strict().help().options({
2682
+ const commandLineOpts = await yargs__default.default(helpers.hideBin(args)).version("0.16.0-beta.13").wrap(Math.min(150, yargs__default.default().terminalWidth())).strict().help().options({
2678
2683
  input: {
2679
2684
  alias: "i",
2680
2685
  describe: "Input file",