@osdk/maker-experimental 0.6.0-beta.6 → 0.6.0-beta.8

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 (38) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/build/browser/api/defineOntologyV2.js +1 -1
  3. package/build/browser/api/defineOntologyV2.js.map +1 -1
  4. package/build/browser/cli/main.js +2 -3
  5. package/build/browser/cli/main.js.map +1 -1
  6. package/build/browser/conversion/toMarketplace/convertDatasourceDefinition.js +2 -2
  7. package/build/browser/conversion/toMarketplace/convertDatasourceDefinition.js.map +1 -1
  8. package/build/browser/conversion/toMarketplace/convertLink.js +6 -5
  9. package/build/browser/conversion/toMarketplace/convertLink.js.map +1 -1
  10. package/build/browser/conversion/toMarketplace/convertOntologyDefinitionToWireBlockData.js +6 -6
  11. package/build/browser/conversion/toMarketplace/convertOntologyDefinitionToWireBlockData.js.map +1 -1
  12. package/build/browser/util/generateRid.js +5 -5
  13. package/build/browser/util/generateRid.js.map +1 -1
  14. package/build/cjs/{ActionTypeShapeExtractor-UWC4CVHX.cjs → ActionTypeShapeExtractor-MWOBZ3A5.cjs} +4 -4
  15. package/build/cjs/{ActionTypeShapeExtractor-UWC4CVHX.cjs.map → ActionTypeShapeExtractor-MWOBZ3A5.cjs.map} +1 -1
  16. package/build/cjs/{chunk-JC573VYW.cjs → chunk-XMO5RRJG.cjs} +4 -4
  17. package/build/cjs/chunk-XMO5RRJG.cjs.map +1 -0
  18. package/build/cjs/index.cjs +55 -55
  19. package/build/cjs/index.cjs.map +1 -1
  20. package/build/cjs/index.d.cts +1 -1
  21. package/build/esm/api/defineOntologyV2.js +1 -1
  22. package/build/esm/api/defineOntologyV2.js.map +1 -1
  23. package/build/esm/cli/main.js +2 -3
  24. package/build/esm/cli/main.js.map +1 -1
  25. package/build/esm/conversion/toMarketplace/convertDatasourceDefinition.js +2 -2
  26. package/build/esm/conversion/toMarketplace/convertDatasourceDefinition.js.map +1 -1
  27. package/build/esm/conversion/toMarketplace/convertLink.js +6 -5
  28. package/build/esm/conversion/toMarketplace/convertLink.js.map +1 -1
  29. package/build/esm/conversion/toMarketplace/convertOntologyDefinitionToWireBlockData.js +6 -6
  30. package/build/esm/conversion/toMarketplace/convertOntologyDefinitionToWireBlockData.js.map +1 -1
  31. package/build/esm/util/generateRid.js +5 -5
  32. package/build/esm/util/generateRid.js.map +1 -1
  33. package/build/types/conversion/toMarketplace/convertLink.d.ts.map +1 -1
  34. package/build/types/conversion/toMarketplace/convertOntologyDefinitionToWireBlockData.d.ts.map +1 -1
  35. package/build/types/util/generateRid.d.ts +2 -2
  36. package/build/types/util/generateRid.d.ts.map +1 -1
  37. package/package.json +4 -4
  38. package/build/cjs/chunk-JC573VYW.cjs.map +0 -1
@@ -69,7 +69,7 @@ interface OntologyRidGenerator {
69
69
  generatePropertyRid(apiName: string, objectTypeApiName: string): PropertyTypeRid;
70
70
  generateInterfacePropertyTypeRid(apiName: string, interfaceTypeApiName: string): InterfacePropertyTypeRid;
71
71
  generateStructFieldRid(propertyApiName: string, apiName: string): StructFieldRid;
72
- generateLocator(dataSetName: string, columnNames: Set<string>): DatasetDatasourceLocator;
72
+ generateDatasetLocator(dataSetName: string, columnNames: Set<string>): DatasetDatasourceLocator;
73
73
  generateStreamLocator(streamName: string, columnNames: Set<string>): StreamLocator;
74
74
  generateRestrictedViewLocator(restrictedViewName: string, columnNames: Set<string>): RestrictedViewLocator;
75
75
  generateMediaSetViewLocator(mediaSetViewName: string): MediaSetViewLocator;
@@ -28,7 +28,7 @@ export async function defineOntologyV2(ns, body, randomnessKey) {
28
28
  throw e;
29
29
  }
30
30
  const ontologyDefinition = getOntologyDefinition();
31
- const ridGenerator = new OntologyRidGeneratorImpl();
31
+ const ridGenerator = new OntologyRidGeneratorImpl(randomnessKey);
32
32
  const ontDef = convertOntologyDefinition(ontologyDefinition, ridGenerator, randomnessKey);
33
33
  const shapes = await getShapes(ontDef.ontology, ridGenerator, randomnessKey);
34
34
  const backingDatasourceApiNames = Object.entries(ontologyDefinition[OntologyEntityTypeEnum.OBJECT_TYPE]).filter(([_, obj]) => obj.includeEmptyBackingDatasource === true).map(([apiName]) => apiName);
@@ -1 +1 @@
1
- {"version":3,"file":"defineOntologyV2.js","names":["getOntologyDefinition","initializeOntologyState","OntologyEntityTypeEnum","convertOntologyDefinition","getShapes","OntologyRidGeneratorImpl","defineOntologyV2","ns","body","randomnessKey","e","console","error","ontologyDefinition","ridGenerator","ontDef","shapes","ontology","backingDatasourceApiNames","Object","entries","OBJECT_TYPE","filter","_","obj","includeEmptyBackingDatasource","map","apiName","ontologyIr"],"sources":["defineOntologyV2.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 { OntologyIrV2 } from \"@osdk/client.unstable\";\nimport type { ObjectType } from \"@osdk/maker\";\nimport {\n getOntologyDefinition,\n initializeOntologyState,\n OntologyEntityTypeEnum,\n} from \"@osdk/maker\";\nimport { convertOntologyDefinition } from \"../conversion/toMarketplace/convertOntologyDefinition.js\";\nimport { getShapes } from \"../conversion/toMarketplace/shapeExtractors/IrShapeExtractor.js\";\nimport type { BlockShapes } from \"../util/generateRid.js\";\nimport { OntologyRidGeneratorImpl } from \"../util/generateRid.js\";\n\nexport interface OntologyV2Result {\n ontologyIr: OntologyIrV2;\n shapes: BlockShapes;\n backingDatasourceApiNames: string[];\n}\n\nexport async function defineOntologyV2(\n ns: string,\n body: () => void | Promise<void>,\n randomnessKey?: string,\n): Promise<OntologyV2Result> {\n initializeOntologyState(ns);\n\n try {\n await body();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n \"Unexpected error while processing the body of the ontology\",\n e,\n );\n throw e;\n }\n\n const ontologyDefinition = getOntologyDefinition();\n\n const ridGenerator = new OntologyRidGeneratorImpl();\n const ontDef = convertOntologyDefinition(\n ontologyDefinition,\n ridGenerator,\n randomnessKey,\n );\n\n const shapes = await getShapes(\n ontDef.ontology,\n ridGenerator,\n randomnessKey,\n );\n\n const backingDatasourceApiNames = Object.entries(\n ontologyDefinition[OntologyEntityTypeEnum.OBJECT_TYPE],\n )\n .filter(([_, obj]) =>\n (obj as ObjectType).includeEmptyBackingDatasource === true\n )\n .map(([apiName]) => apiName);\n\n return { ontologyIr: ontDef, shapes, backingDatasourceApiNames };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SACEA,qBAAqB,EACrBC,uBAAuB,EACvBC,sBAAsB,QACjB,aAAa;AACpB,SAASC,yBAAyB,QAAQ,0DAA0D;AACpG,SAASC,SAAS,QAAQ,iEAAiE;AAE3F,SAASC,wBAAwB,QAAQ,wBAAwB;AAQjE,OAAO,eAAeC,gBAAgBA,CACpCC,EAAU,EACVC,IAAgC,EAChCC,aAAsB,EACK;EAC3BR,uBAAuB,CAACM,EAAE,CAAC;EAE3B,IAAI;IACF,MAAMC,IAAI,CAAC,CAAC;EACd,CAAC,CAAC,OAAOE,CAAC,EAAE;IACV;IACAC,OAAO,CAACC,KAAK,CACX,4DAA4D,EAC5DF,CACF,CAAC;IACD,MAAMA,CAAC;EACT;EAEA,MAAMG,kBAAkB,GAAGb,qBAAqB,CAAC,CAAC;EAElD,MAAMc,YAAY,GAAG,IAAIT,wBAAwB,CAAC,CAAC;EACnD,MAAMU,MAAM,GAAGZ,yBAAyB,CACtCU,kBAAkB,EAClBC,YAAY,EACZL,aACF,CAAC;EAED,MAAMO,MAAM,GAAG,MAAMZ,SAAS,CAC5BW,MAAM,CAACE,QAAQ,EACfH,YAAY,EACZL,aACF,CAAC;EAED,MAAMS,yBAAyB,GAAGC,MAAM,CAACC,OAAO,CAC9CP,kBAAkB,CAACX,sBAAsB,CAACmB,WAAW,CACvD,CAAC,CACEC,MAAM,CAAC,CAAC,CAACC,CAAC,EAAEC,GAAG,CAAC,KACdA,GAAG,CAAgBC,6BAA6B,KAAK,IACxD,CAAC,CACAC,GAAG,CAAC,CAAC,CAACC,OAAO,CAAC,KAAKA,OAAO,CAAC;EAE9B,OAAO;IAAEC,UAAU,EAAEb,MAAM;IAAEC,MAAM;IAAEE;EAA0B,CAAC;AAClE","ignoreList":[]}
1
+ {"version":3,"file":"defineOntologyV2.js","names":["getOntologyDefinition","initializeOntologyState","OntologyEntityTypeEnum","convertOntologyDefinition","getShapes","OntologyRidGeneratorImpl","defineOntologyV2","ns","body","randomnessKey","e","console","error","ontologyDefinition","ridGenerator","ontDef","shapes","ontology","backingDatasourceApiNames","Object","entries","OBJECT_TYPE","filter","_","obj","includeEmptyBackingDatasource","map","apiName","ontologyIr"],"sources":["defineOntologyV2.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 { OntologyIrV2 } from \"@osdk/client.unstable\";\nimport type { ObjectType } from \"@osdk/maker\";\nimport {\n getOntologyDefinition,\n initializeOntologyState,\n OntologyEntityTypeEnum,\n} from \"@osdk/maker\";\nimport { convertOntologyDefinition } from \"../conversion/toMarketplace/convertOntologyDefinition.js\";\nimport { getShapes } from \"../conversion/toMarketplace/shapeExtractors/IrShapeExtractor.js\";\nimport type { BlockShapes } from \"../util/generateRid.js\";\nimport { OntologyRidGeneratorImpl } from \"../util/generateRid.js\";\n\nexport interface OntologyV2Result {\n ontologyIr: OntologyIrV2;\n shapes: BlockShapes;\n backingDatasourceApiNames: string[];\n}\n\nexport async function defineOntologyV2(\n ns: string,\n body: () => void | Promise<void>,\n randomnessKey?: string,\n): Promise<OntologyV2Result> {\n initializeOntologyState(ns);\n\n try {\n await body();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n \"Unexpected error while processing the body of the ontology\",\n e,\n );\n throw e;\n }\n\n const ontologyDefinition = getOntologyDefinition();\n\n const ridGenerator = new OntologyRidGeneratorImpl(randomnessKey);\n const ontDef = convertOntologyDefinition(\n ontologyDefinition,\n ridGenerator,\n randomnessKey,\n );\n\n const shapes = await getShapes(\n ontDef.ontology,\n ridGenerator,\n randomnessKey,\n );\n\n const backingDatasourceApiNames = Object.entries(\n ontologyDefinition[OntologyEntityTypeEnum.OBJECT_TYPE],\n )\n .filter(([_, obj]) =>\n (obj as ObjectType).includeEmptyBackingDatasource === true\n )\n .map(([apiName]) => apiName);\n\n return { ontologyIr: ontDef, shapes, backingDatasourceApiNames };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SACEA,qBAAqB,EACrBC,uBAAuB,EACvBC,sBAAsB,QACjB,aAAa;AACpB,SAASC,yBAAyB,QAAQ,0DAA0D;AACpG,SAASC,SAAS,QAAQ,iEAAiE;AAE3F,SAASC,wBAAwB,QAAQ,wBAAwB;AAQjE,OAAO,eAAeC,gBAAgBA,CACpCC,EAAU,EACVC,IAAgC,EAChCC,aAAsB,EACK;EAC3BR,uBAAuB,CAACM,EAAE,CAAC;EAE3B,IAAI;IACF,MAAMC,IAAI,CAAC,CAAC;EACd,CAAC,CAAC,OAAOE,CAAC,EAAE;IACV;IACAC,OAAO,CAACC,KAAK,CACX,4DAA4D,EAC5DF,CACF,CAAC;IACD,MAAMA,CAAC;EACT;EAEA,MAAMG,kBAAkB,GAAGb,qBAAqB,CAAC,CAAC;EAElD,MAAMc,YAAY,GAAG,IAAIT,wBAAwB,CAACI,aAAa,CAAC;EAChE,MAAMM,MAAM,GAAGZ,yBAAyB,CACtCU,kBAAkB,EAClBC,YAAY,EACZL,aACF,CAAC;EAED,MAAMO,MAAM,GAAG,MAAMZ,SAAS,CAC5BW,MAAM,CAACE,QAAQ,EACfH,YAAY,EACZL,aACF,CAAC;EAED,MAAMS,yBAAyB,GAAGC,MAAM,CAACC,OAAO,CAC9CP,kBAAkB,CAACX,sBAAsB,CAACmB,WAAW,CACvD,CAAC,CACEC,MAAM,CAAC,CAAC,CAACC,CAAC,EAAEC,GAAG,CAAC,KACdA,GAAG,CAAgBC,6BAA6B,KAAK,IACxD,CAAC,CACAC,GAAG,CAAC,CAAC,CAACC,OAAO,CAAC,KAAKA,OAAO,CAAC;EAE9B,OAAO;IAAEC,UAAU,EAAEb,MAAM;IAAEC,MAAM;IAAEE;EAA0B,CAAC;AAClE","ignoreList":[]}
@@ -28,7 +28,7 @@ const apiNamespaceRegex = /^[a-z0-9-]+(\.[a-z0-9-]+)*\.$/;
28
28
  const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
29
29
  export default async function main(args = process.argv) {
30
30
  consola.log("Generating BlockGeneratorResult for ontology...");
31
- const commandLineOpts = await yargs(hideBin(args)).version("0.6.0-beta.6" ?? "").wrap(Math.min(150, yargs().terminalWidth())).strict().help().options({
31
+ const commandLineOpts = await yargs(hideBin(args)).version("0.6.0-beta.8" ?? "").wrap(Math.min(150, yargs().terminalWidth())).strict().help().options({
32
32
  input: {
33
33
  alias: "i",
34
34
  describe: "Input file",
@@ -57,8 +57,7 @@ export default async function main(args = process.argv) {
57
57
  },
58
58
  randomnessKey: {
59
59
  describe: "Value used to assure uniqueness of entities",
60
- type: "string",
61
- coerce: path.resolve
60
+ type: "string"
62
61
  }
63
62
  }).parseAsync();
64
63
  let apiNamespace = "";
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","names":["consola","createJiti","fs","path","invariant","yargs","hideBin","defineOntologyV2","ReadableIdGenerator","generateBackingDatasetBlockResult","getNonEditOnlyProperties","apiNamespaceRegex","uuidRegex","main","args","process","argv","log","commandLineOpts","version","wrap","Math","min","terminalWidth","strict","help","options","input","alias","describe","type","default","coerce","resolve","output","apiNamespace","buildDir","randomnessKey","parseAsync","length","slice","env","NODE_ENV","test","info","undefined","ontologyIr","shapes","backingDatasourceApiNames","loadOntology","blockDataDir","join","existsSync","promises","mkdir","recursive","ontologyJsonPath","ontologyJson","JSON","stringify","ontology","writeFile","ontologyInputMappingEntries","apiName","objectTypeBlockData","findObjectTypeByApiName","objectTypes","nonEditOnlyProps","inputDatasetReadableId","getForDataset","outputDatasetReadableId","getForDatasetOutput","inputShapes","has","push","prop","colInputReadableId","getForDatasetColumn","getForDatasetColumnOutput","backingDsGeneratorResults","Promise","all","filter","map","blockGeneratorResult","block_identifier","block_data_directory","oci_block_data_metadata","maven_block_data_metadata","inputs","Object","fromEntries","outputs","outputShapes","input_mapping_entries","external_recommendations","add_on_override","input_shape_metadata","inputShapeMetadata","block_type","blockGeneratorResultJson","success","result","jiti","import","meta","filename","moduleCache","debug","importMeta","values","find","objectType"],"sources":["main.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 { ObjectTypeBlockDataV2 } from \"@osdk/client.unstable\";\nimport { consola } from \"consola\";\nimport { createJiti } from \"jiti\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport invariant from \"tiny-invariant\";\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\nimport { defineOntologyV2 } from \"../api/defineOntologyV2.js\";\nimport { ReadableIdGenerator } from \"../util/generateRid.js\";\nimport {\n generateBackingDatasetBlockResult,\n getNonEditOnlyProperties,\n} from \"./generateBackingDataset.js\";\nimport type { BlockGeneratorResult } from \"./marketplaceSerialization/BlockGeneratorResult.js\";\nimport type { InputMappingEntry } from \"./marketplaceSerialization/supportingTypes.js\";\n\nconst apiNamespaceRegex = /^[a-z0-9-]+(\\.[a-z0-9-]+)*\\.$/;\nconst uuidRegex =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;\n\nexport default async function main(\n args: string[] = process.argv,\n): Promise<void> {\n consola.log(\"Generating BlockGeneratorResult for ontology...\");\n\n const commandLineOpts: {\n input: string;\n output: string;\n apiNamespace: string;\n buildDir: string;\n randomnessKey?: string;\n } = await yargs(hideBin(args))\n .version(process.env.PACKAGE_VERSION ?? \"\")\n .wrap(Math.min(150, yargs().terminalWidth()))\n .strict()\n .help()\n .options({\n input: {\n alias: \"i\",\n describe: \"Input file\",\n type: \"string\",\n default: \".ontology/ontology.ts\",\n coerce: path.resolve,\n },\n output: {\n alias: \"o\",\n describe: \"Output file for BlockGeneratorResult JSON\",\n type: \"string\",\n default: \"build/block_generator_result.json\",\n coerce: path.resolve,\n },\n apiNamespace: {\n describe: \"Api name prefix for namespaced ontology types\",\n type: \"string\",\n default: \"\",\n },\n buildDir: {\n alias: \"b\",\n describe: \"Directory for build files\",\n type: \"string\",\n default: \"build/\",\n coerce: path.resolve,\n },\n randomnessKey: {\n describe: \"Value used to assure uniqueness of entities\",\n type: \"string\",\n coerce: path.resolve,\n },\n })\n .parseAsync();\n\n let apiNamespace = \"\";\n if (commandLineOpts.apiNamespace.length !== 0) {\n apiNamespace = (commandLineOpts.apiNamespace.slice(-1) !== \".\")\n ? commandLineOpts.apiNamespace + \".\"\n : commandLineOpts.apiNamespace;\n invariant(apiNamespace.length < 1024, \"API namespace is too long.\");\n invariant(\n apiNamespaceRegex.test(apiNamespace),\n \"API namespace is invalid! It is expected to conform to ^[a-z0-9-]+(\\.[a-z0-9-]+)*\\.$\",\n );\n }\n consola.info(`Loading ontology from ${commandLineOpts.input}`);\n\n if (commandLineOpts.randomnessKey !== undefined) {\n invariant(\n uuidRegex.test(commandLineOpts.randomnessKey),\n \"Supplied randomness key is not a uuid and shouldn't be used as a uniqueness guarantee\",\n );\n }\n\n const { ontologyIr, shapes, backingDatasourceApiNames } = await loadOntology(\n commandLineOpts.input,\n apiNamespace,\n commandLineOpts.randomnessKey,\n );\n\n // Create temp directory for block data\n const blockDataDir = path.join(commandLineOpts.buildDir, \"temp_block_data\");\n if (!fs.existsSync(blockDataDir)) {\n await fs.promises.mkdir(blockDataDir, { recursive: true });\n }\n\n // Write ontology.json to the block data directory\n const ontologyJsonPath = path.join(blockDataDir, \"ontology.json\");\n const ontologyJson = JSON.stringify(ontologyIr.ontology, null, 2);\n await fs.promises.writeFile(ontologyJsonPath, ontologyJson);\n consola.info(`Wrote ontology.json to ${ontologyJsonPath}`);\n\n // Collect input_mapping_entries for the ontology block\n // These map ontology inputs to datasource block outputs for objects with includeEmptyBackingDatasource\n const ontologyInputMappingEntries: InputMappingEntry[] = [];\n\n for (const apiName of backingDatasourceApiNames) {\n const objectTypeBlockData = findObjectTypeByApiName(\n ontologyIr.ontology.objectTypes,\n apiName,\n );\n if (!objectTypeBlockData) continue;\n\n const nonEditOnlyProps = getNonEditOnlyProperties(objectTypeBlockData);\n\n // The ontology block has inputs with these readable IDs (from shape extraction)\n // Map them to the datasource block's outputs (which use the same readable IDs)\n const inputDatasetReadableId = ReadableIdGenerator.getForDataset(apiName);\n const outputDatasetReadableId = ReadableIdGenerator.getForDatasetOutput(\n apiName,\n );\n if (shapes.inputShapes.has(inputDatasetReadableId)) {\n ontologyInputMappingEntries.push({\n input: inputDatasetReadableId,\n output: outputDatasetReadableId,\n });\n }\n\n for (const prop of nonEditOnlyProps) {\n const colInputReadableId = ReadableIdGenerator.getForDatasetColumn(\n apiName,\n prop.apiName!,\n );\n const getForDatasetColumnOutput = ReadableIdGenerator\n .getForDatasetColumnOutput(apiName, prop.apiName!);\n if (shapes.inputShapes.has(colInputReadableId)) {\n ontologyInputMappingEntries.push({\n input: colInputReadableId,\n output: getForDatasetColumnOutput,\n });\n }\n }\n }\n\n // Generate backing datasource BlockGeneratorResults for objects with includeEmptyBackingDatasource\n const backingDsGeneratorResults = await Promise.all(\n backingDatasourceApiNames.filter(apiName => {\n const objectTypeBlockData = findObjectTypeByApiName(\n ontologyIr.ontology.objectTypes,\n apiName,\n );\n return objectTypeBlockData !== undefined;\n }).map(async apiName => {\n const objectTypeBlockData = findObjectTypeByApiName(\n ontologyIr.ontology.objectTypes,\n apiName,\n );\n consola.info(\n `Generating backing datasource BlockGeneratorResult for ${apiName}...`,\n );\n\n return await generateBackingDatasetBlockResult(\n objectTypeBlockData!,\n commandLineOpts.buildDir,\n commandLineOpts.randomnessKey,\n );\n }),\n );\n\n // Create BlockGeneratorResult\n const blockGeneratorResult: BlockGeneratorResult = {\n block_identifier: \"ontology\",\n block_data_directory: blockDataDir,\n oci_block_data_metadata: undefined,\n maven_block_data_metadata: undefined,\n inputs: Object.fromEntries(shapes.inputShapes),\n outputs: Object.fromEntries(shapes.outputShapes),\n input_mapping_entries: ontologyInputMappingEntries,\n external_recommendations: [],\n add_on_override: undefined,\n input_shape_metadata: Object.fromEntries(shapes.inputShapeMetadata),\n block_type: \"ONTOLOGY\",\n };\n\n // Write BlockGeneratorResult to output file\n const blockGeneratorResultJson = JSON.stringify(\n [blockGeneratorResult, ...backingDsGeneratorResults],\n null,\n 2,\n );\n await fs.promises.writeFile(\n commandLineOpts.output,\n blockGeneratorResultJson,\n );\n consola.success(\n `BlockGeneratorResult written to ${commandLineOpts.output}`,\n );\n consola.info(\n `Block data directory: ${blockDataDir}`,\n );\n}\n\nasync function loadOntology(\n input: string,\n apiNamespace: string,\n randomnessKey?: string,\n) {\n const result = await defineOntologyV2(\n apiNamespace,\n async () => {\n const jiti = createJiti(import.meta.filename, {\n moduleCache: true,\n debug: false,\n importMeta: import.meta,\n });\n const module = await jiti.import(input);\n },\n randomnessKey,\n );\n return result;\n}\n\n/**\n * Find an ObjectTypeBlockDataV2 by apiName within the ontology block data.\n */\nfunction findObjectTypeByApiName(\n objectTypes: Record<string, ObjectTypeBlockDataV2>,\n apiName: string,\n): ObjectTypeBlockDataV2 | undefined {\n return Object.values(objectTypes).find(\n (objectTypeBlockData) => objectTypeBlockData.objectType.apiName === apiName,\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"main.js","names":["consola","createJiti","fs","path","invariant","yargs","hideBin","defineOntologyV2","ReadableIdGenerator","generateBackingDatasetBlockResult","getNonEditOnlyProperties","apiNamespaceRegex","uuidRegex","main","args","process","argv","log","commandLineOpts","version","wrap","Math","min","terminalWidth","strict","help","options","input","alias","describe","type","default","coerce","resolve","output","apiNamespace","buildDir","randomnessKey","parseAsync","length","slice","env","NODE_ENV","test","info","undefined","ontologyIr","shapes","backingDatasourceApiNames","loadOntology","blockDataDir","join","existsSync","promises","mkdir","recursive","ontologyJsonPath","ontologyJson","JSON","stringify","ontology","writeFile","ontologyInputMappingEntries","apiName","objectTypeBlockData","findObjectTypeByApiName","objectTypes","nonEditOnlyProps","inputDatasetReadableId","getForDataset","outputDatasetReadableId","getForDatasetOutput","inputShapes","has","push","prop","colInputReadableId","getForDatasetColumn","getForDatasetColumnOutput","backingDsGeneratorResults","Promise","all","filter","map","blockGeneratorResult","block_identifier","block_data_directory","oci_block_data_metadata","maven_block_data_metadata","inputs","Object","fromEntries","outputs","outputShapes","input_mapping_entries","external_recommendations","add_on_override","input_shape_metadata","inputShapeMetadata","block_type","blockGeneratorResultJson","success","result","jiti","import","meta","filename","moduleCache","debug","importMeta","values","find","objectType"],"sources":["main.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 { ObjectTypeBlockDataV2 } from \"@osdk/client.unstable\";\nimport { consola } from \"consola\";\nimport { createJiti } from \"jiti\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport invariant from \"tiny-invariant\";\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\nimport { defineOntologyV2 } from \"../api/defineOntologyV2.js\";\nimport { ReadableIdGenerator } from \"../util/generateRid.js\";\nimport {\n generateBackingDatasetBlockResult,\n getNonEditOnlyProperties,\n} from \"./generateBackingDataset.js\";\nimport type { BlockGeneratorResult } from \"./marketplaceSerialization/BlockGeneratorResult.js\";\nimport type { InputMappingEntry } from \"./marketplaceSerialization/supportingTypes.js\";\n\nconst apiNamespaceRegex = /^[a-z0-9-]+(\\.[a-z0-9-]+)*\\.$/;\nconst uuidRegex =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;\n\nexport default async function main(\n args: string[] = process.argv,\n): Promise<void> {\n consola.log(\"Generating BlockGeneratorResult for ontology...\");\n\n const commandLineOpts: {\n input: string;\n output: string;\n apiNamespace: string;\n buildDir: string;\n randomnessKey?: string;\n } = await yargs(hideBin(args))\n .version(process.env.PACKAGE_VERSION ?? \"\")\n .wrap(Math.min(150, yargs().terminalWidth()))\n .strict()\n .help()\n .options({\n input: {\n alias: \"i\",\n describe: \"Input file\",\n type: \"string\",\n default: \".ontology/ontology.ts\",\n coerce: path.resolve,\n },\n output: {\n alias: \"o\",\n describe: \"Output file for BlockGeneratorResult JSON\",\n type: \"string\",\n default: \"build/block_generator_result.json\",\n coerce: path.resolve,\n },\n apiNamespace: {\n describe: \"Api name prefix for namespaced ontology types\",\n type: \"string\",\n default: \"\",\n },\n buildDir: {\n alias: \"b\",\n describe: \"Directory for build files\",\n type: \"string\",\n default: \"build/\",\n coerce: path.resolve,\n },\n randomnessKey: {\n describe: \"Value used to assure uniqueness of entities\",\n type: \"string\",\n },\n })\n .parseAsync();\n\n let apiNamespace = \"\";\n if (commandLineOpts.apiNamespace.length !== 0) {\n apiNamespace = (commandLineOpts.apiNamespace.slice(-1) !== \".\")\n ? commandLineOpts.apiNamespace + \".\"\n : commandLineOpts.apiNamespace;\n invariant(apiNamespace.length < 1024, \"API namespace is too long.\");\n invariant(\n apiNamespaceRegex.test(apiNamespace),\n \"API namespace is invalid! It is expected to conform to ^[a-z0-9-]+(\\.[a-z0-9-]+)*\\.$\",\n );\n }\n consola.info(`Loading ontology from ${commandLineOpts.input}`);\n\n if (commandLineOpts.randomnessKey !== undefined) {\n invariant(\n uuidRegex.test(commandLineOpts.randomnessKey),\n \"Supplied randomness key is not a uuid and shouldn't be used as a uniqueness guarantee\",\n );\n }\n\n const { ontologyIr, shapes, backingDatasourceApiNames } = await loadOntology(\n commandLineOpts.input,\n apiNamespace,\n commandLineOpts.randomnessKey,\n );\n\n // Create temp directory for block data\n const blockDataDir = path.join(commandLineOpts.buildDir, \"temp_block_data\");\n if (!fs.existsSync(blockDataDir)) {\n await fs.promises.mkdir(blockDataDir, { recursive: true });\n }\n\n // Write ontology.json to the block data directory\n const ontologyJsonPath = path.join(blockDataDir, \"ontology.json\");\n const ontologyJson = JSON.stringify(ontologyIr.ontology, null, 2);\n await fs.promises.writeFile(ontologyJsonPath, ontologyJson);\n consola.info(`Wrote ontology.json to ${ontologyJsonPath}`);\n\n // Collect input_mapping_entries for the ontology block\n // These map ontology inputs to datasource block outputs for objects with includeEmptyBackingDatasource\n const ontologyInputMappingEntries: InputMappingEntry[] = [];\n\n for (const apiName of backingDatasourceApiNames) {\n const objectTypeBlockData = findObjectTypeByApiName(\n ontologyIr.ontology.objectTypes,\n apiName,\n );\n if (!objectTypeBlockData) continue;\n\n const nonEditOnlyProps = getNonEditOnlyProperties(objectTypeBlockData);\n\n // The ontology block has inputs with these readable IDs (from shape extraction)\n // Map them to the datasource block's outputs (which use the same readable IDs)\n const inputDatasetReadableId = ReadableIdGenerator.getForDataset(apiName);\n const outputDatasetReadableId = ReadableIdGenerator.getForDatasetOutput(\n apiName,\n );\n if (shapes.inputShapes.has(inputDatasetReadableId)) {\n ontologyInputMappingEntries.push({\n input: inputDatasetReadableId,\n output: outputDatasetReadableId,\n });\n }\n\n for (const prop of nonEditOnlyProps) {\n const colInputReadableId = ReadableIdGenerator.getForDatasetColumn(\n apiName,\n prop.apiName!,\n );\n const getForDatasetColumnOutput = ReadableIdGenerator\n .getForDatasetColumnOutput(apiName, prop.apiName!);\n if (shapes.inputShapes.has(colInputReadableId)) {\n ontologyInputMappingEntries.push({\n input: colInputReadableId,\n output: getForDatasetColumnOutput,\n });\n }\n }\n }\n\n // Generate backing datasource BlockGeneratorResults for objects with includeEmptyBackingDatasource\n const backingDsGeneratorResults = await Promise.all(\n backingDatasourceApiNames.filter(apiName => {\n const objectTypeBlockData = findObjectTypeByApiName(\n ontologyIr.ontology.objectTypes,\n apiName,\n );\n return objectTypeBlockData !== undefined;\n }).map(async apiName => {\n const objectTypeBlockData = findObjectTypeByApiName(\n ontologyIr.ontology.objectTypes,\n apiName,\n );\n consola.info(\n `Generating backing datasource BlockGeneratorResult for ${apiName}...`,\n );\n\n return await generateBackingDatasetBlockResult(\n objectTypeBlockData!,\n commandLineOpts.buildDir,\n commandLineOpts.randomnessKey,\n );\n }),\n );\n\n // Create BlockGeneratorResult\n const blockGeneratorResult: BlockGeneratorResult = {\n block_identifier: \"ontology\",\n block_data_directory: blockDataDir,\n oci_block_data_metadata: undefined,\n maven_block_data_metadata: undefined,\n inputs: Object.fromEntries(shapes.inputShapes),\n outputs: Object.fromEntries(shapes.outputShapes),\n input_mapping_entries: ontologyInputMappingEntries,\n external_recommendations: [],\n add_on_override: undefined,\n input_shape_metadata: Object.fromEntries(shapes.inputShapeMetadata),\n block_type: \"ONTOLOGY\",\n };\n\n // Write BlockGeneratorResult to output file\n const blockGeneratorResultJson = JSON.stringify(\n [blockGeneratorResult, ...backingDsGeneratorResults],\n null,\n 2,\n );\n await fs.promises.writeFile(\n commandLineOpts.output,\n blockGeneratorResultJson,\n );\n consola.success(\n `BlockGeneratorResult written to ${commandLineOpts.output}`,\n );\n consola.info(\n `Block data directory: ${blockDataDir}`,\n );\n}\n\nasync function loadOntology(\n input: string,\n apiNamespace: string,\n randomnessKey?: string,\n) {\n const result = await defineOntologyV2(\n apiNamespace,\n async () => {\n const jiti = createJiti(import.meta.filename, {\n moduleCache: true,\n debug: false,\n importMeta: import.meta,\n });\n const module = await jiti.import(input);\n },\n randomnessKey,\n );\n return result;\n}\n\n/**\n * Find an ObjectTypeBlockDataV2 by apiName within the ontology block data.\n */\nfunction findObjectTypeByApiName(\n objectTypes: Record<string, ObjectTypeBlockDataV2>,\n apiName: string,\n): ObjectTypeBlockDataV2 | undefined {\n return Object.values(objectTypes).find(\n (objectTypeBlockData) => objectTypeBlockData.objectType.apiName === apiName,\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -63,7 +63,7 @@ export function convertDatasourceDefinition(objectType, properties, ridGenerator
63
63
  };
64
64
  case "derived":
65
65
  // Use generateLocator for dataset datasources
66
- const derivedDatasetLocator = ridGenerator.generateLocator(objectType.apiName, getColumnNames(properties));
66
+ const derivedDatasetLocator = ridGenerator.generateDatasetLocator(objectType.apiName, getColumnNames(properties));
67
67
  return {
68
68
  type: "datasetV2",
69
69
  datasetV2: {
@@ -75,7 +75,7 @@ export function convertDatasourceDefinition(objectType, properties, ridGenerator
75
75
  case "dataset":
76
76
  default:
77
77
  // Use generateLocator for dataset datasources
78
- const datasetLocator = ridGenerator.generateLocator(objectType.apiName, getColumnNames(properties));
78
+ const datasetLocator = ridGenerator.generateDatasetLocator(objectType.apiName, getColumnNames(properties));
79
79
  if (objectType.properties?.some(prop => typeof prop.type === "object" && prop.type.type === "marking") || baseDatasource?.objectSecurityPolicy || baseDatasource?.propertySecurityGroups) {
80
80
  return {
81
81
  type: "datasetV3",
@@ -1 +1 @@
1
- {"version":3,"file":"convertDatasourceDefinition.js","names":["invariant","ReadableIdGenerator","convertDatasourceDefinition","objectType","properties","ridGenerator","baseDatasource","datasources","find","ds","includes","type","getColumnNames","props","Set","map","p","apiName","window","retentionPeriod","convertToJavaDurationFormat","undefined","retentionPolicy","time","none","streamLocator","generateStreamLocator","propertyMapping","Object","fromEntries","prop","generatePropertyRid","streamV2","branchId","streamLocatorRid","propertySecurityGroups","restrictedViewLocator","generateRestrictedViewLocator","restrictedViewV2","restrictedViewRid","rid","buildPropertyMapping","derivedDatasetLocator","generateLocator","datasetV2","datasetRid","datasetLocator","some","objectSecurityPolicy","datasetV3","convertPropertySecurityGroups","primaryKeyPropertyApiName","objectTypeApiName","propertyRids","groups","generateRid","security","granular","viewPolicy","granularPolicyCondition","and","conditions","additionalMandatory","markings","assumedMarkings","primaryKey","validPropertyNames","usedPropertyApiNames","collectGroupIds","granularPolicy","collectFromCondition","condition","groupId","name","getGroupIds","put","getForGroup","forEach","psg","propertyName","has","process","env","NODE_ENV","add","propertyApiNameToRid","Map","set","objectSecurityPolicyGroup","generatePropertySecurityGroupRid","convertGranularPolicy","appliedMarkings","filter","get","property","convertSecurityCondition","keys","c","or","comparison","operator","left","userProperty","groupIds","right","constant","strings","iso8601","match","weeks","parseInt","days","hours","minutes","seconds","totalHours","parts","push","length","join","propertyRid","editOnly","structMapping","struct","column","mapping","structDefinition","fieldName","mappings"],"sources":["convertDatasourceDefinition.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 MarkingType,\n ObjectTypeDatasourceDefinition,\n PropertySecurityGroup,\n PropertySecurityGroups,\n PropertyTypeMappingInfo,\n RetentionPolicy,\n SecurityGroupGranularCondition,\n SecurityGroupGranularSecurityDefinition,\n} from \"@osdk/client.unstable\";\nimport type {\n ObjectPropertyType,\n ObjectType,\n ObjectTypeDatasourceDefinition_dataset,\n ObjectTypeDatasourceDefinition_direct,\n SecurityConditionDefinition,\n} from \"@osdk/maker\";\nimport invariant from \"tiny-invariant\";\nimport {\n type OntologyRidGenerator,\n ReadableIdGenerator,\n} from \"../../util/generateRid.js\";\n\nexport function convertDatasourceDefinition(\n objectType: ObjectType,\n properties: ObjectPropertyType[],\n ridGenerator: OntologyRidGenerator,\n): ObjectTypeDatasourceDefinition {\n const baseDatasource = objectType.datasources?.find(ds =>\n [\"dataset\", \"stream\", \"restrictedView\"].includes(ds.type)\n );\n\n // Helper to get column names from properties\n const getColumnNames = (props: ObjectPropertyType[]): Set<string> => {\n return new Set(props.map(p => p.apiName));\n };\n\n switch (baseDatasource?.type) {\n case \"stream\":\n const window = baseDatasource.retentionPeriod\n ? convertToJavaDurationFormat(baseDatasource.retentionPeriod)\n : undefined;\n const retentionPolicy: RetentionPolicy = window\n ? { type: \"time\", time: { window } }\n : { type: \"none\", none: {} };\n\n // Use generateStreamLocator instead of generateRid\n const streamLocator = ridGenerator.generateStreamLocator(\n objectType.apiName,\n getColumnNames(properties),\n );\n\n const propertyMapping = Object.fromEntries(\n properties.map((\n prop,\n ) => [\n ridGenerator.generatePropertyRid(\n prop.apiName,\n objectType.apiName,\n ),\n prop.apiName,\n ]),\n );\n\n return {\n type: \"streamV2\",\n streamV2: {\n streamLocator: {\n branchId: streamLocator.branchId,\n streamLocatorRid: streamLocator.streamLocatorRid,\n },\n propertyMapping,\n retentionPolicy,\n propertySecurityGroups: undefined,\n },\n };\n\n case \"restrictedView\":\n // Use generateRestrictedViewLocator instead of generateRid\n const restrictedViewLocator = ridGenerator.generateRestrictedViewLocator(\n objectType.apiName,\n getColumnNames(properties),\n );\n\n return {\n type: \"restrictedViewV2\",\n restrictedViewV2: {\n restrictedViewRid: restrictedViewLocator.rid,\n propertyMapping: buildPropertyMapping(\n properties,\n objectType.apiName,\n ridGenerator,\n ),\n },\n };\n\n case \"derived\":\n // Use generateLocator for dataset datasources\n const derivedDatasetLocator = ridGenerator.generateLocator(\n objectType.apiName,\n getColumnNames(properties),\n );\n\n return {\n type: \"datasetV2\",\n datasetV2: {\n branchId: derivedDatasetLocator.branchId,\n datasetRid: derivedDatasetLocator.rid,\n propertyMapping: buildPropertyMapping(\n properties,\n objectType.apiName,\n ridGenerator,\n ),\n },\n };\n\n case \"dataset\":\n default:\n // Use generateLocator for dataset datasources\n const datasetLocator = ridGenerator.generateLocator(\n objectType.apiName,\n getColumnNames(properties),\n );\n\n if (\n objectType.properties?.some(prop =>\n typeof prop.type === \"object\" && prop.type.type === \"marking\"\n )\n || baseDatasource?.objectSecurityPolicy\n || baseDatasource?.propertySecurityGroups\n ) {\n return {\n type: \"datasetV3\",\n datasetV3: {\n datasetRid: datasetLocator.rid,\n propertyMapping: buildPropertyMapping(\n properties,\n objectType.apiName,\n ridGenerator,\n ),\n branchId: datasetLocator.branchId,\n propertySecurityGroups: convertPropertySecurityGroups(\n baseDatasource,\n properties,\n objectType.primaryKeyPropertyApiName,\n objectType.apiName,\n ridGenerator,\n ),\n },\n };\n }\n return {\n type: \"datasetV2\",\n datasetV2: {\n datasetRid: datasetLocator.rid,\n branchId: datasetLocator.branchId,\n propertyMapping: buildPropertyMapping(\n properties,\n objectType.apiName,\n ridGenerator,\n ),\n },\n };\n }\n}\n\nfunction convertPropertySecurityGroups(\n ds:\n | ObjectTypeDatasourceDefinition_dataset\n | ObjectTypeDatasourceDefinition_direct\n | undefined,\n properties: ObjectPropertyType[],\n primaryKeyPropertyApiName: string,\n objectTypeApiName: string,\n ridGenerator: OntologyRidGenerator,\n): PropertySecurityGroups {\n if (\n !ds\n || (!(\"objectSecurityPolicy\" in ds) && !(\"propertySecurityGroups\" in ds))\n ) {\n // Default security group - use property RIDs\n const propertyRids = properties.map(prop =>\n ridGenerator.generatePropertyRid(prop.apiName, objectTypeApiName)\n );\n\n return {\n groups: [\n {\n properties: propertyRids,\n rid: ridGenerator.generateRid(\"defaultObjectSecurityPolicy\"),\n security: {\n type: \"granular\",\n granular: {\n viewPolicy: {\n granularPolicyCondition: {\n type: \"and\",\n and: {\n conditions: [],\n },\n },\n additionalMandatory: {\n markings: [],\n assumedMarkings: [],\n },\n },\n },\n },\n type: {\n type: \"primaryKey\",\n primaryKey: {},\n },\n },\n ],\n };\n }\n\n const validPropertyNames = new Set(properties.map(prop => prop.apiName));\n const usedPropertyApiNames = new Set<string>();\n\n // Collect and register group IDs (matching Java's collectSecurityGroupIds)\n const collectGroupIds = (granularPolicy?: SecurityConditionDefinition) => {\n if (!granularPolicy) return;\n\n const collectFromCondition = (condition: SecurityConditionDefinition) => {\n switch (condition.type) {\n case \"group\":\n // Register group ID with the ridGenerator\n const groupId = condition.name;\n ridGenerator.getGroupIds().put(\n ReadableIdGenerator.getForGroup(groupId),\n groupId,\n );\n break;\n case \"and\":\n case \"or\":\n if (\"conditions\" in condition) {\n condition.conditions.forEach(collectFromCondition);\n }\n break;\n }\n };\n\n collectFromCondition(granularPolicy);\n };\n\n // Collect group IDs from object security policy\n if (ds.objectSecurityPolicy?.granularPolicy) {\n collectGroupIds(ds.objectSecurityPolicy.granularPolicy);\n }\n\n // Validate and collect property security groups\n ds.propertySecurityGroups?.forEach(psg => {\n // Collect group IDs from property security groups\n if (psg.granularPolicy) {\n collectGroupIds(psg.granularPolicy);\n }\n\n psg.properties.forEach(propertyName => {\n invariant(\n validPropertyNames.has(propertyName),\n `Property \"${propertyName}\" in property security group ${psg.name} does not exist in the properties list`,\n );\n invariant(\n !usedPropertyApiNames.has(propertyName),\n `Property \"${propertyName}\" is used in multiple property security groups`,\n );\n invariant(\n propertyName !== primaryKeyPropertyApiName,\n `Property \"${propertyName}\" in property security group ${psg.name} cannot be the primary key`,\n );\n usedPropertyApiNames.add(propertyName);\n });\n });\n\n // Build property RID mapping\n const propertyApiNameToRid = new Map<string, string>();\n properties.forEach(prop => {\n propertyApiNameToRid.set(\n prop.apiName,\n ridGenerator.generatePropertyRid(prop.apiName, objectTypeApiName),\n );\n });\n\n const objectSecurityPolicyGroup: PropertySecurityGroup = {\n rid: ridGenerator.generatePropertySecurityGroupRid(\n ds.objectSecurityPolicy?.name || \"defaultObjectSecurityPolicy\",\n ),\n security: {\n type: \"granular\",\n granular: convertGranularPolicy(\n ds.objectSecurityPolicy?.granularPolicy,\n ds.objectSecurityPolicy?.appliedMarkings,\n ds.objectSecurityPolicy?.assumedMarkings,\n ridGenerator,\n objectTypeApiName,\n ),\n },\n type: {\n type: \"primaryKey\",\n primaryKey: {},\n },\n properties: properties\n .filter(prop => !usedPropertyApiNames.has(prop.apiName))\n .map(prop => propertyApiNameToRid.get(prop.apiName)!),\n };\n\n return {\n groups: [\n ...(ds.propertySecurityGroups?.map(psg => ({\n rid: ridGenerator.generatePropertySecurityGroupRid(psg.name),\n security: {\n type: \"granular\" as const,\n granular: convertGranularPolicy(\n psg.granularPolicy,\n psg.appliedMarkings,\n psg.assumedMarkings,\n ridGenerator,\n objectTypeApiName,\n ),\n },\n type: {\n type: \"property\" as const,\n property: {\n name: psg.name,\n },\n },\n properties: psg.properties.map(apiName =>\n propertyApiNameToRid.get(apiName)!\n ),\n })) ?? []),\n objectSecurityPolicyGroup,\n ],\n };\n}\n\nfunction convertGranularPolicy(\n granularPolicy?: SecurityConditionDefinition,\n appliedMarkings?: Record<string, MarkingType>,\n assumedMarkings?: Record<string, MarkingType>,\n ridGenerator?: OntologyRidGenerator,\n objectTypeApiName?: string,\n): SecurityGroupGranularSecurityDefinition {\n return {\n viewPolicy: {\n granularPolicyCondition: granularPolicy\n ? convertSecurityCondition(\n granularPolicy,\n ridGenerator,\n objectTypeApiName,\n )\n : {\n type: \"and\",\n and: {\n conditions: [],\n },\n },\n additionalMandatory: {\n markings: Object.keys(appliedMarkings ?? {}),\n assumedMarkings: Object.keys(assumedMarkings ?? {}),\n },\n },\n };\n}\n\nfunction convertSecurityCondition(\n condition: SecurityConditionDefinition,\n ridGenerator?: OntologyRidGenerator,\n objectTypeApiName?: string,\n): SecurityGroupGranularCondition {\n switch (condition.type) {\n case \"and\":\n if (\"conditions\" in condition) {\n return {\n type: \"and\",\n and: {\n conditions: condition.conditions.map(c =>\n convertSecurityCondition(c, ridGenerator, objectTypeApiName)\n ),\n },\n };\n } else {\n return condition;\n }\n case \"or\":\n if (\"conditions\" in condition) {\n return {\n type: \"or\",\n or: {\n conditions: condition.conditions.map(c =>\n convertSecurityCondition(c, ridGenerator, objectTypeApiName)\n ),\n },\n };\n } else {\n return condition;\n }\n case \"markingProperty\":\n return {\n type: \"markings\",\n markings: {\n property: ridGenerator && objectTypeApiName\n ? ridGenerator.generatePropertyRid(\n condition.property,\n objectTypeApiName,\n )\n : condition.property,\n },\n };\n case \"groupProperty\":\n return {\n type: \"comparison\",\n comparison: {\n operator: \"INTERSECTS\",\n left: {\n type: \"userProperty\",\n userProperty: {\n type: \"groupIds\",\n groupIds: {},\n },\n },\n right: {\n type: \"property\",\n property: ridGenerator && objectTypeApiName\n ? ridGenerator.generatePropertyRid(\n condition.property,\n objectTypeApiName,\n )\n : condition.property,\n },\n },\n };\n case \"group\":\n return {\n type: \"comparison\",\n comparison: {\n operator: \"INTERSECTS\",\n left: {\n type: \"userProperty\",\n userProperty: {\n type: \"groupIds\",\n groupIds: {},\n },\n },\n right: {\n type: \"constant\",\n constant: {\n type: \"strings\",\n strings: [\n condition.name,\n ],\n },\n },\n },\n };\n\n default:\n return condition;\n }\n}\n\n/**\n * Converts ISO 8601 duration to Java Duration format (hours/minutes/seconds only).\n * Java's Duration class doesn't support days/weeks/months/years natively,\n * so P90D becomes PT2160H, P1W becomes PT168H, etc.\n */\nfunction convertToJavaDurationFormat(iso8601: string): string {\n const match = iso8601.match(\n /^P(?:(\\d+)W)?(?:(\\d+)D)?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+)S)?)?$/,\n );\n if (!match) return iso8601;\n\n const weeks = parseInt(match[1] || \"0\", 10);\n const days = parseInt(match[2] || \"0\", 10);\n const hours = parseInt(match[3] || \"0\", 10);\n const minutes = parseInt(match[4] || \"0\", 10);\n const seconds = parseInt(match[5] || \"0\", 10);\n\n const totalHours = (weeks * 7 + days) * 24 + hours;\n\n const parts: string[] = [];\n if (totalHours > 0) parts.push(`${totalHours}H`);\n if (minutes > 0) parts.push(`${minutes}M`);\n if (seconds > 0) parts.push(`${seconds}S`);\n\n return parts.length > 0 ? `PT${parts.join(\"\")}` : \"PT0S\";\n}\n\nfunction buildPropertyMapping(\n properties: ObjectPropertyType[],\n objectTypeApiName: string,\n ridGenerator: OntologyRidGenerator,\n): Record<string, PropertyTypeMappingInfo> {\n // TODO: Convert property mappings to use RIDs as keys\n return Object.fromEntries(\n properties.map((prop) => {\n const propertyRid = ridGenerator.generatePropertyRid(\n prop.apiName,\n objectTypeApiName,\n );\n // editOnly\n if (prop.editOnly) {\n return [propertyRid, { type: \"editOnly\", editOnly: {} }];\n }\n // structs\n if (typeof prop.type === \"object\" && prop.type?.type === \"struct\") {\n const structMapping = {\n type: \"struct\",\n struct: {\n column: prop.apiName,\n mapping: Object.fromEntries(\n Object.keys(prop.type.structDefinition).map((fieldName) => [\n fieldName,\n { apiName: fieldName, mappings: {} },\n ]),\n ),\n },\n };\n return [propertyRid, structMapping];\n }\n // default: column mapping\n return [propertyRid, { type: \"column\", column: prop.apiName }];\n }),\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"convertDatasourceDefinition.js","names":["invariant","ReadableIdGenerator","convertDatasourceDefinition","objectType","properties","ridGenerator","baseDatasource","datasources","find","ds","includes","type","getColumnNames","props","Set","map","p","apiName","window","retentionPeriod","convertToJavaDurationFormat","undefined","retentionPolicy","time","none","streamLocator","generateStreamLocator","propertyMapping","Object","fromEntries","prop","generatePropertyRid","streamV2","branchId","streamLocatorRid","propertySecurityGroups","restrictedViewLocator","generateRestrictedViewLocator","restrictedViewV2","restrictedViewRid","rid","buildPropertyMapping","derivedDatasetLocator","generateDatasetLocator","datasetV2","datasetRid","datasetLocator","some","objectSecurityPolicy","datasetV3","convertPropertySecurityGroups","primaryKeyPropertyApiName","objectTypeApiName","propertyRids","groups","generateRid","security","granular","viewPolicy","granularPolicyCondition","and","conditions","additionalMandatory","markings","assumedMarkings","primaryKey","validPropertyNames","usedPropertyApiNames","collectGroupIds","granularPolicy","collectFromCondition","condition","groupId","name","getGroupIds","put","getForGroup","forEach","psg","propertyName","has","process","env","NODE_ENV","add","propertyApiNameToRid","Map","set","objectSecurityPolicyGroup","generatePropertySecurityGroupRid","convertGranularPolicy","appliedMarkings","filter","get","property","convertSecurityCondition","keys","c","or","comparison","operator","left","userProperty","groupIds","right","constant","strings","iso8601","match","weeks","parseInt","days","hours","minutes","seconds","totalHours","parts","push","length","join","propertyRid","editOnly","structMapping","struct","column","mapping","structDefinition","fieldName","mappings"],"sources":["convertDatasourceDefinition.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 MarkingType,\n ObjectTypeDatasourceDefinition,\n PropertySecurityGroup,\n PropertySecurityGroups,\n PropertyTypeMappingInfo,\n RetentionPolicy,\n SecurityGroupGranularCondition,\n SecurityGroupGranularSecurityDefinition,\n} from \"@osdk/client.unstable\";\nimport type {\n ObjectPropertyType,\n ObjectType,\n ObjectTypeDatasourceDefinition_dataset,\n ObjectTypeDatasourceDefinition_direct,\n SecurityConditionDefinition,\n} from \"@osdk/maker\";\nimport invariant from \"tiny-invariant\";\nimport {\n type OntologyRidGenerator,\n ReadableIdGenerator,\n} from \"../../util/generateRid.js\";\n\nexport function convertDatasourceDefinition(\n objectType: ObjectType,\n properties: ObjectPropertyType[],\n ridGenerator: OntologyRidGenerator,\n): ObjectTypeDatasourceDefinition {\n const baseDatasource = objectType.datasources?.find(ds =>\n [\"dataset\", \"stream\", \"restrictedView\"].includes(ds.type)\n );\n\n // Helper to get column names from properties\n const getColumnNames = (props: ObjectPropertyType[]): Set<string> => {\n return new Set(props.map(p => p.apiName));\n };\n\n switch (baseDatasource?.type) {\n case \"stream\":\n const window = baseDatasource.retentionPeriod\n ? convertToJavaDurationFormat(baseDatasource.retentionPeriod)\n : undefined;\n const retentionPolicy: RetentionPolicy = window\n ? { type: \"time\", time: { window } }\n : { type: \"none\", none: {} };\n\n // Use generateStreamLocator instead of generateRid\n const streamLocator = ridGenerator.generateStreamLocator(\n objectType.apiName,\n getColumnNames(properties),\n );\n\n const propertyMapping = Object.fromEntries(\n properties.map((\n prop,\n ) => [\n ridGenerator.generatePropertyRid(\n prop.apiName,\n objectType.apiName,\n ),\n prop.apiName,\n ]),\n );\n\n return {\n type: \"streamV2\",\n streamV2: {\n streamLocator: {\n branchId: streamLocator.branchId,\n streamLocatorRid: streamLocator.streamLocatorRid,\n },\n propertyMapping,\n retentionPolicy,\n propertySecurityGroups: undefined,\n },\n };\n\n case \"restrictedView\":\n // Use generateRestrictedViewLocator instead of generateRid\n const restrictedViewLocator = ridGenerator.generateRestrictedViewLocator(\n objectType.apiName,\n getColumnNames(properties),\n );\n\n return {\n type: \"restrictedViewV2\",\n restrictedViewV2: {\n restrictedViewRid: restrictedViewLocator.rid,\n propertyMapping: buildPropertyMapping(\n properties,\n objectType.apiName,\n ridGenerator,\n ),\n },\n };\n\n case \"derived\":\n // Use generateLocator for dataset datasources\n const derivedDatasetLocator = ridGenerator.generateDatasetLocator(\n objectType.apiName,\n getColumnNames(properties),\n );\n\n return {\n type: \"datasetV2\",\n datasetV2: {\n branchId: derivedDatasetLocator.branchId,\n datasetRid: derivedDatasetLocator.rid,\n propertyMapping: buildPropertyMapping(\n properties,\n objectType.apiName,\n ridGenerator,\n ),\n },\n };\n\n case \"dataset\":\n default:\n // Use generateLocator for dataset datasources\n const datasetLocator = ridGenerator.generateDatasetLocator(\n objectType.apiName,\n getColumnNames(properties),\n );\n\n if (\n objectType.properties?.some(prop =>\n typeof prop.type === \"object\" && prop.type.type === \"marking\"\n )\n || baseDatasource?.objectSecurityPolicy\n || baseDatasource?.propertySecurityGroups\n ) {\n return {\n type: \"datasetV3\",\n datasetV3: {\n datasetRid: datasetLocator.rid,\n propertyMapping: buildPropertyMapping(\n properties,\n objectType.apiName,\n ridGenerator,\n ),\n branchId: datasetLocator.branchId,\n propertySecurityGroups: convertPropertySecurityGroups(\n baseDatasource,\n properties,\n objectType.primaryKeyPropertyApiName,\n objectType.apiName,\n ridGenerator,\n ),\n },\n };\n }\n return {\n type: \"datasetV2\",\n datasetV2: {\n datasetRid: datasetLocator.rid,\n branchId: datasetLocator.branchId,\n propertyMapping: buildPropertyMapping(\n properties,\n objectType.apiName,\n ridGenerator,\n ),\n },\n };\n }\n}\n\nfunction convertPropertySecurityGroups(\n ds:\n | ObjectTypeDatasourceDefinition_dataset\n | ObjectTypeDatasourceDefinition_direct\n | undefined,\n properties: ObjectPropertyType[],\n primaryKeyPropertyApiName: string,\n objectTypeApiName: string,\n ridGenerator: OntologyRidGenerator,\n): PropertySecurityGroups {\n if (\n !ds\n || (!(\"objectSecurityPolicy\" in ds) && !(\"propertySecurityGroups\" in ds))\n ) {\n // Default security group - use property RIDs\n const propertyRids = properties.map(prop =>\n ridGenerator.generatePropertyRid(prop.apiName, objectTypeApiName)\n );\n\n return {\n groups: [\n {\n properties: propertyRids,\n rid: ridGenerator.generateRid(\"defaultObjectSecurityPolicy\"),\n security: {\n type: \"granular\",\n granular: {\n viewPolicy: {\n granularPolicyCondition: {\n type: \"and\",\n and: {\n conditions: [],\n },\n },\n additionalMandatory: {\n markings: [],\n assumedMarkings: [],\n },\n },\n },\n },\n type: {\n type: \"primaryKey\",\n primaryKey: {},\n },\n },\n ],\n };\n }\n\n const validPropertyNames = new Set(properties.map(prop => prop.apiName));\n const usedPropertyApiNames = new Set<string>();\n\n // Collect and register group IDs (matching Java's collectSecurityGroupIds)\n const collectGroupIds = (granularPolicy?: SecurityConditionDefinition) => {\n if (!granularPolicy) return;\n\n const collectFromCondition = (condition: SecurityConditionDefinition) => {\n switch (condition.type) {\n case \"group\":\n // Register group ID with the ridGenerator\n const groupId = condition.name;\n ridGenerator.getGroupIds().put(\n ReadableIdGenerator.getForGroup(groupId),\n groupId,\n );\n break;\n case \"and\":\n case \"or\":\n if (\"conditions\" in condition) {\n condition.conditions.forEach(collectFromCondition);\n }\n break;\n }\n };\n\n collectFromCondition(granularPolicy);\n };\n\n // Collect group IDs from object security policy\n if (ds.objectSecurityPolicy?.granularPolicy) {\n collectGroupIds(ds.objectSecurityPolicy.granularPolicy);\n }\n\n // Validate and collect property security groups\n ds.propertySecurityGroups?.forEach(psg => {\n // Collect group IDs from property security groups\n if (psg.granularPolicy) {\n collectGroupIds(psg.granularPolicy);\n }\n\n psg.properties.forEach(propertyName => {\n invariant(\n validPropertyNames.has(propertyName),\n `Property \"${propertyName}\" in property security group ${psg.name} does not exist in the properties list`,\n );\n invariant(\n !usedPropertyApiNames.has(propertyName),\n `Property \"${propertyName}\" is used in multiple property security groups`,\n );\n invariant(\n propertyName !== primaryKeyPropertyApiName,\n `Property \"${propertyName}\" in property security group ${psg.name} cannot be the primary key`,\n );\n usedPropertyApiNames.add(propertyName);\n });\n });\n\n // Build property RID mapping\n const propertyApiNameToRid = new Map<string, string>();\n properties.forEach(prop => {\n propertyApiNameToRid.set(\n prop.apiName,\n ridGenerator.generatePropertyRid(prop.apiName, objectTypeApiName),\n );\n });\n\n const objectSecurityPolicyGroup: PropertySecurityGroup = {\n rid: ridGenerator.generatePropertySecurityGroupRid(\n ds.objectSecurityPolicy?.name || \"defaultObjectSecurityPolicy\",\n ),\n security: {\n type: \"granular\",\n granular: convertGranularPolicy(\n ds.objectSecurityPolicy?.granularPolicy,\n ds.objectSecurityPolicy?.appliedMarkings,\n ds.objectSecurityPolicy?.assumedMarkings,\n ridGenerator,\n objectTypeApiName,\n ),\n },\n type: {\n type: \"primaryKey\",\n primaryKey: {},\n },\n properties: properties\n .filter(prop => !usedPropertyApiNames.has(prop.apiName))\n .map(prop => propertyApiNameToRid.get(prop.apiName)!),\n };\n\n return {\n groups: [\n ...(ds.propertySecurityGroups?.map(psg => ({\n rid: ridGenerator.generatePropertySecurityGroupRid(psg.name),\n security: {\n type: \"granular\" as const,\n granular: convertGranularPolicy(\n psg.granularPolicy,\n psg.appliedMarkings,\n psg.assumedMarkings,\n ridGenerator,\n objectTypeApiName,\n ),\n },\n type: {\n type: \"property\" as const,\n property: {\n name: psg.name,\n },\n },\n properties: psg.properties.map(apiName =>\n propertyApiNameToRid.get(apiName)!\n ),\n })) ?? []),\n objectSecurityPolicyGroup,\n ],\n };\n}\n\nfunction convertGranularPolicy(\n granularPolicy?: SecurityConditionDefinition,\n appliedMarkings?: Record<string, MarkingType>,\n assumedMarkings?: Record<string, MarkingType>,\n ridGenerator?: OntologyRidGenerator,\n objectTypeApiName?: string,\n): SecurityGroupGranularSecurityDefinition {\n return {\n viewPolicy: {\n granularPolicyCondition: granularPolicy\n ? convertSecurityCondition(\n granularPolicy,\n ridGenerator,\n objectTypeApiName,\n )\n : {\n type: \"and\",\n and: {\n conditions: [],\n },\n },\n additionalMandatory: {\n markings: Object.keys(appliedMarkings ?? {}),\n assumedMarkings: Object.keys(assumedMarkings ?? {}),\n },\n },\n };\n}\n\nfunction convertSecurityCondition(\n condition: SecurityConditionDefinition,\n ridGenerator?: OntologyRidGenerator,\n objectTypeApiName?: string,\n): SecurityGroupGranularCondition {\n switch (condition.type) {\n case \"and\":\n if (\"conditions\" in condition) {\n return {\n type: \"and\",\n and: {\n conditions: condition.conditions.map(c =>\n convertSecurityCondition(c, ridGenerator, objectTypeApiName)\n ),\n },\n };\n } else {\n return condition;\n }\n case \"or\":\n if (\"conditions\" in condition) {\n return {\n type: \"or\",\n or: {\n conditions: condition.conditions.map(c =>\n convertSecurityCondition(c, ridGenerator, objectTypeApiName)\n ),\n },\n };\n } else {\n return condition;\n }\n case \"markingProperty\":\n return {\n type: \"markings\",\n markings: {\n property: ridGenerator && objectTypeApiName\n ? ridGenerator.generatePropertyRid(\n condition.property,\n objectTypeApiName,\n )\n : condition.property,\n },\n };\n case \"groupProperty\":\n return {\n type: \"comparison\",\n comparison: {\n operator: \"INTERSECTS\",\n left: {\n type: \"userProperty\",\n userProperty: {\n type: \"groupIds\",\n groupIds: {},\n },\n },\n right: {\n type: \"property\",\n property: ridGenerator && objectTypeApiName\n ? ridGenerator.generatePropertyRid(\n condition.property,\n objectTypeApiName,\n )\n : condition.property,\n },\n },\n };\n case \"group\":\n return {\n type: \"comparison\",\n comparison: {\n operator: \"INTERSECTS\",\n left: {\n type: \"userProperty\",\n userProperty: {\n type: \"groupIds\",\n groupIds: {},\n },\n },\n right: {\n type: \"constant\",\n constant: {\n type: \"strings\",\n strings: [\n condition.name,\n ],\n },\n },\n },\n };\n\n default:\n return condition;\n }\n}\n\n/**\n * Converts ISO 8601 duration to Java Duration format (hours/minutes/seconds only).\n * Java's Duration class doesn't support days/weeks/months/years natively,\n * so P90D becomes PT2160H, P1W becomes PT168H, etc.\n */\nfunction convertToJavaDurationFormat(iso8601: string): string {\n const match = iso8601.match(\n /^P(?:(\\d+)W)?(?:(\\d+)D)?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+)S)?)?$/,\n );\n if (!match) return iso8601;\n\n const weeks = parseInt(match[1] || \"0\", 10);\n const days = parseInt(match[2] || \"0\", 10);\n const hours = parseInt(match[3] || \"0\", 10);\n const minutes = parseInt(match[4] || \"0\", 10);\n const seconds = parseInt(match[5] || \"0\", 10);\n\n const totalHours = (weeks * 7 + days) * 24 + hours;\n\n const parts: string[] = [];\n if (totalHours > 0) parts.push(`${totalHours}H`);\n if (minutes > 0) parts.push(`${minutes}M`);\n if (seconds > 0) parts.push(`${seconds}S`);\n\n return parts.length > 0 ? `PT${parts.join(\"\")}` : \"PT0S\";\n}\n\nfunction buildPropertyMapping(\n properties: ObjectPropertyType[],\n objectTypeApiName: string,\n ridGenerator: OntologyRidGenerator,\n): Record<string, PropertyTypeMappingInfo> {\n // TODO: Convert property mappings to use RIDs as keys\n return Object.fromEntries(\n properties.map((prop) => {\n const propertyRid = ridGenerator.generatePropertyRid(\n prop.apiName,\n objectTypeApiName,\n );\n // editOnly\n if (prop.editOnly) {\n return [propertyRid, { type: \"editOnly\", editOnly: {} }];\n }\n // structs\n if (typeof prop.type === \"object\" && prop.type?.type === \"struct\") {\n const structMapping = {\n type: \"struct\",\n struct: {\n column: prop.apiName,\n mapping: Object.fromEntries(\n Object.keys(prop.type.structDefinition).map((fieldName) => [\n fieldName,\n { apiName: fieldName, mappings: {} },\n ]),\n ),\n },\n };\n return [propertyRid, structMapping];\n }\n // default: column mapping\n return [propertyRid, { type: \"column\", column: prop.apiName }];\n }),\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -20,7 +20,7 @@ import { convertCardinality } from "./convertCardinality.js";
20
20
  export function convertLink(linkType, ridGenerator) {
21
21
  validateLink(linkType);
22
22
  let definition;
23
- let datasource = undefined;
23
+ let datasource;
24
24
  if ("one" in linkType) {
25
25
  const {
26
26
  apiName: oneObjectApiName,
@@ -107,14 +107,15 @@ export function convertLink(linkType, ridGenerator) {
107
107
  }
108
108
  }
109
109
  };
110
+ const datasetLocator = ridGenerator.generateDatasetLocator(`link.${linkType.apiName}`, new Set([resolvedColumnA, resolvedColumnB]));
110
111
  datasource = {
111
- rid: ridGenerator.generateRid(`datasource.link.${linkType.apiName}`),
112
+ rid: ridGenerator.generateDatasourceRid(linkType.apiName),
112
113
  datasource: {
113
114
  type: "dataset",
114
115
  dataset: {
115
116
  // TODO: Add proper branchId from link configuration
116
- branchId: "main",
117
- datasetRid: ridGenerator.generateRid(`link.dataset.${linkType.apiName}`),
117
+ branchId: datasetLocator.branchId,
118
+ datasetRid: datasetLocator.rid,
118
119
  writebackDatasetRid: undefined,
119
120
  // TODO: Convert property mappings to use property RIDs as keys
120
121
  objectTypeAPrimaryKeyMapping: {
@@ -134,7 +135,7 @@ export function convertLink(linkType, ridGenerator) {
134
135
  const linkTypeId = cleanAndValidateLinkTypeId(linkType.apiName);
135
136
  return {
136
137
  linkType: {
137
- definition: definition,
138
+ definition,
138
139
  rid: ridGenerator.generateRidForLinkType(linkTypeId),
139
140
  id: cleanAndValidateLinkTypeId(linkType.apiName),
140
141
  status: convertLinkStatus(linkType.status, ridGenerator),
@@ -1 +1 @@
1
- {"version":3,"file":"convertLink.js","names":["cleanAndValidateLinkTypeId","getImportedTypes","getOntologyDefinition","OntologyEntityTypeEnum","invariant","convertCardinality","convertLink","linkType","ridGenerator","validateLink","definition","datasource","undefined","apiName","oneObjectApiName","object","oneObject","getObject","one","toManyObjectApiName","toManyObject","toMany","oneObjectRid","generateRidForObjectType","toManyObjectRid","onePkRid","generatePropertyRid","primaryKeyPropertyApiName","manyFkRid","manyForeignKeyProperty","type","oneToMany","cardinalityHint","cardinality","manyToOneLinkMetadata","metadata","objectTypeRidManySide","objectTypeRidOneSide","oneToManyLinkMetadata","oneSidePrimaryKeyToManySidePropertyMapping","manyObjectApiName","manyObject","many","intermediaryObjectApiName","intermediaryObjectType","intermediary","objectTypeAToBLinkMetadata","objectTypeBToALinkMetadata","objectTypeRidA","objectTypeRidB","intermediaryObjectTypeRid","aToIntermediaryLinkTypeRid","generateRidForLinkType","linkToIntermediary","intermediaryToBLinkTypeRid","manyObjectRidA","manyObjectRidB","manyPkRidA","manyPkRidB","columnA","columnB","hasCollision","resolvedColumnA","resolvedColumnB","manyToMany","peeringMetadata","objectTypeAPrimaryKeyPropertyMapping","objectTypeBPrimaryKeyPropertyMapping","rid","generateRid","dataset","branchId","datasetRid","writebackDatasetRid","objectTypeAPrimaryKeyMapping","objectTypeBPrimaryKeyMapping","editsConfiguration","onlyAllowPrivilegedEdits","redacted","linkTypeId","id","status","convertLinkStatus","datasources","entityMetadata","arePatchesEnabled","editsEnabled","entityConfig","objectDbTypeConfigs","highbury","objectDbConfigs","configValue","targetStorageBackend","objectStorageV2","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","replacedBy","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 LinkDefinition,\n LinkTypeBlockDataV2,\n LinkTypeStatus,\n ManyToManyLinkTypeDatasource,\n} from \"@osdk/client.unstable\";\nimport type {\n LinkType,\n ObjectType,\n ObjectTypeDefinition,\n UserLinkTypeStatus,\n} from \"@osdk/maker\";\nimport {\n cleanAndValidateLinkTypeId,\n getImportedTypes,\n getOntologyDefinition,\n OntologyEntityTypeEnum,\n} from \"@osdk/maker\";\nimport invariant from \"tiny-invariant\";\nimport type { OntologyRidGenerator } from \"../../util/generateRid.js\";\nimport { convertCardinality } from \"./convertCardinality.js\";\n\nexport function convertLink(\n linkType: LinkType,\n ridGenerator: OntologyRidGenerator,\n): LinkTypeBlockDataV2 {\n validateLink(linkType);\n let definition: LinkDefinition;\n let datasource: ManyToManyLinkTypeDatasource | undefined = 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 const oneObjectRid = ridGenerator.generateRidForObjectType(\n oneObjectApiName,\n );\n const toManyObjectRid = ridGenerator.generateRidForObjectType(\n toManyObjectApiName,\n );\n const onePkRid = ridGenerator.generatePropertyRid(\n oneObject.primaryKeyPropertyApiName,\n oneObjectApiName,\n );\n const manyFkRid = ridGenerator.generatePropertyRid(\n linkType.manyForeignKeyProperty,\n toManyObjectApiName,\n );\n\n definition = {\n type: \"oneToMany\",\n oneToMany: {\n cardinalityHint: convertCardinality(linkType.cardinality),\n manyToOneLinkMetadata: linkType.toMany.metadata,\n objectTypeRidManySide: toManyObjectRid,\n objectTypeRidOneSide: oneObjectRid,\n oneToManyLinkMetadata: linkType.one.metadata,\n // TODO: Convert property mappings to use RIDs as keys and values\n oneSidePrimaryKeyToManySidePropertyMapping: {\n [onePkRid]: manyFkRid,\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 const { apiName: intermediaryObjectApiName } = getObject(\n linkType.intermediaryObjectType,\n );\n definition = {\n type: \"intermediary\",\n intermediary: {\n objectTypeAToBLinkMetadata: linkType.many.metadata,\n objectTypeBToALinkMetadata: linkType.toMany.metadata,\n objectTypeRidA: ridGenerator.generateRidForObjectType(\n manyObjectApiName,\n ),\n objectTypeRidB: ridGenerator.generateRidForObjectType(\n toManyObjectApiName,\n ),\n intermediaryObjectTypeRid: ridGenerator.generateRidForObjectType(\n intermediaryObjectApiName,\n ),\n aToIntermediaryLinkTypeRid: ridGenerator.generateRidForLinkType(\n cleanAndValidateLinkTypeId(linkType.many.linkToIntermediary.apiName),\n ),\n intermediaryToBLinkTypeRid: ridGenerator.generateRidForLinkType(\n cleanAndValidateLinkTypeId(\n linkType.toMany.linkToIntermediary.apiName,\n ),\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 const manyObjectRidA = ridGenerator.generateRidForObjectType(\n manyObjectApiName,\n );\n const manyObjectRidB = ridGenerator.generateRidForObjectType(\n toManyObjectApiName,\n );\n const manyPkRidA = ridGenerator.generatePropertyRid(\n manyObject.primaryKeyPropertyApiName,\n manyObjectApiName,\n );\n const manyPkRidB = ridGenerator.generatePropertyRid(\n toManyObject.primaryKeyPropertyApiName,\n toManyObjectApiName,\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: manyObjectRidA,\n objectTypeRidB: manyObjectRidB,\n peeringMetadata: undefined,\n // TODO: Convert property mappings to use RIDs as keys and values\n objectTypeAPrimaryKeyPropertyMapping: {\n [manyPkRidA]: manyPkRidA,\n },\n objectTypeBPrimaryKeyPropertyMapping: {\n [manyPkRidB]: manyPkRidB,\n },\n },\n };\n\n datasource = {\n rid: ridGenerator.generateRid(`datasource.link.${linkType.apiName}`),\n datasource: {\n type: \"dataset\",\n dataset: {\n // TODO: Add proper branchId from link configuration\n branchId: \"main\",\n datasetRid: ridGenerator.generateRid(\n `link.dataset.${linkType.apiName}`,\n ),\n writebackDatasetRid: undefined,\n // TODO: Convert property mappings to use property RIDs as keys\n objectTypeAPrimaryKeyMapping: {\n [manyPkRidA]: resolvedColumnA,\n },\n objectTypeBPrimaryKeyMapping: {\n [manyPkRidB]: resolvedColumnB,\n },\n },\n },\n editsConfiguration: {\n onlyAllowPrivilegedEdits: false,\n },\n redacted: linkType.redacted,\n };\n }\n\n const linkTypeId = cleanAndValidateLinkTypeId(linkType.apiName);\n\n return {\n linkType: {\n definition: definition,\n rid: ridGenerator.generateRidForLinkType(linkTypeId),\n id: cleanAndValidateLinkTypeId(linkType.apiName),\n status: convertLinkStatus(linkType.status, ridGenerator),\n redacted: linkType.redacted ?? false,\n },\n datasources: datasource !== undefined ? [datasource] : [],\n entityMetadata: {\n arePatchesEnabled: linkType.editsEnabled ?? false,\n entityConfig: {\n objectDbTypeConfigs: {\n highbury: {\n objectDbConfigs: {\n \"ri.highbury.main.cluster.1\": { configValue: \"{}\" },\n },\n },\n },\n },\n targetStorageBackend: { type: \"objectStorageV2\", objectStorageV2: {} },\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 getOntologyDefinition()[OntologyEntityTypeEnum.OBJECT_TYPE][objectApiName]\n ?? getImportedTypes()[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 ridGenerator: OntologyRidGenerator,\n): LinkTypeStatus {\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 replacedBy: status.replacedBy\n ? ridGenerator.generateRidForLinkType(\n cleanAndValidateLinkTypeId(status.replacedBy),\n )\n : undefined,\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":["cleanAndValidateLinkTypeId","getImportedTypes","getOntologyDefinition","OntologyEntityTypeEnum","invariant","convertCardinality","convertLink","linkType","ridGenerator","validateLink","definition","datasource","apiName","oneObjectApiName","object","oneObject","getObject","one","toManyObjectApiName","toManyObject","toMany","oneObjectRid","generateRidForObjectType","toManyObjectRid","onePkRid","generatePropertyRid","primaryKeyPropertyApiName","manyFkRid","manyForeignKeyProperty","type","oneToMany","cardinalityHint","cardinality","manyToOneLinkMetadata","metadata","objectTypeRidManySide","objectTypeRidOneSide","oneToManyLinkMetadata","oneSidePrimaryKeyToManySidePropertyMapping","manyObjectApiName","manyObject","many","intermediaryObjectApiName","intermediaryObjectType","intermediary","objectTypeAToBLinkMetadata","objectTypeBToALinkMetadata","objectTypeRidA","objectTypeRidB","intermediaryObjectTypeRid","aToIntermediaryLinkTypeRid","generateRidForLinkType","linkToIntermediary","intermediaryToBLinkTypeRid","manyObjectRidA","manyObjectRidB","manyPkRidA","manyPkRidB","columnA","columnB","hasCollision","resolvedColumnA","resolvedColumnB","manyToMany","peeringMetadata","undefined","objectTypeAPrimaryKeyPropertyMapping","objectTypeBPrimaryKeyPropertyMapping","datasetLocator","generateDatasetLocator","Set","rid","generateDatasourceRid","dataset","branchId","datasetRid","writebackDatasetRid","objectTypeAPrimaryKeyMapping","objectTypeBPrimaryKeyMapping","editsConfiguration","onlyAllowPrivilegedEdits","redacted","linkTypeId","id","status","convertLinkStatus","datasources","entityMetadata","arePatchesEnabled","editsEnabled","entityConfig","objectDbTypeConfigs","highbury","objectDbConfigs","configValue","targetStorageBackend","objectStorageV2","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","replacedBy","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 LinkDefinition,\n LinkTypeBlockDataV2,\n LinkTypeStatus,\n ManyToManyLinkTypeDatasource,\n} from \"@osdk/client.unstable\";\nimport type {\n LinkType,\n ObjectType,\n ObjectTypeDefinition,\n UserLinkTypeStatus,\n} from \"@osdk/maker\";\nimport {\n cleanAndValidateLinkTypeId,\n getImportedTypes,\n getOntologyDefinition,\n OntologyEntityTypeEnum,\n} from \"@osdk/maker\";\nimport invariant from \"tiny-invariant\";\nimport type { OntologyRidGenerator } from \"../../util/generateRid.js\";\nimport { convertCardinality } from \"./convertCardinality.js\";\n\nexport function convertLink(\n linkType: LinkType,\n ridGenerator: OntologyRidGenerator,\n): LinkTypeBlockDataV2 {\n validateLink(linkType);\n let definition: LinkDefinition;\n let datasource: ManyToManyLinkTypeDatasource | 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 const oneObjectRid = ridGenerator.generateRidForObjectType(\n oneObjectApiName,\n );\n const toManyObjectRid = ridGenerator.generateRidForObjectType(\n toManyObjectApiName,\n );\n const onePkRid = ridGenerator.generatePropertyRid(\n oneObject.primaryKeyPropertyApiName,\n oneObjectApiName,\n );\n const manyFkRid = ridGenerator.generatePropertyRid(\n linkType.manyForeignKeyProperty,\n toManyObjectApiName,\n );\n\n definition = {\n type: \"oneToMany\",\n oneToMany: {\n cardinalityHint: convertCardinality(linkType.cardinality),\n manyToOneLinkMetadata: linkType.toMany.metadata,\n objectTypeRidManySide: toManyObjectRid,\n objectTypeRidOneSide: oneObjectRid,\n oneToManyLinkMetadata: linkType.one.metadata,\n // TODO: Convert property mappings to use RIDs as keys and values\n oneSidePrimaryKeyToManySidePropertyMapping: {\n [onePkRid]: manyFkRid,\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 const { apiName: intermediaryObjectApiName } = getObject(\n linkType.intermediaryObjectType,\n );\n definition = {\n type: \"intermediary\",\n intermediary: {\n objectTypeAToBLinkMetadata: linkType.many.metadata,\n objectTypeBToALinkMetadata: linkType.toMany.metadata,\n objectTypeRidA: ridGenerator.generateRidForObjectType(\n manyObjectApiName,\n ),\n objectTypeRidB: ridGenerator.generateRidForObjectType(\n toManyObjectApiName,\n ),\n intermediaryObjectTypeRid: ridGenerator.generateRidForObjectType(\n intermediaryObjectApiName,\n ),\n aToIntermediaryLinkTypeRid: ridGenerator.generateRidForLinkType(\n cleanAndValidateLinkTypeId(linkType.many.linkToIntermediary.apiName),\n ),\n intermediaryToBLinkTypeRid: ridGenerator.generateRidForLinkType(\n cleanAndValidateLinkTypeId(\n linkType.toMany.linkToIntermediary.apiName,\n ),\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 const manyObjectRidA = ridGenerator.generateRidForObjectType(\n manyObjectApiName,\n );\n const manyObjectRidB = ridGenerator.generateRidForObjectType(\n toManyObjectApiName,\n );\n const manyPkRidA = ridGenerator.generatePropertyRid(\n manyObject.primaryKeyPropertyApiName,\n manyObjectApiName,\n );\n const manyPkRidB = ridGenerator.generatePropertyRid(\n toManyObject.primaryKeyPropertyApiName,\n toManyObjectApiName,\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: manyObjectRidA,\n objectTypeRidB: manyObjectRidB,\n peeringMetadata: undefined,\n // TODO: Convert property mappings to use RIDs as keys and values\n objectTypeAPrimaryKeyPropertyMapping: {\n [manyPkRidA]: manyPkRidA,\n },\n objectTypeBPrimaryKeyPropertyMapping: {\n [manyPkRidB]: manyPkRidB,\n },\n },\n };\n const datasetLocator = ridGenerator.generateDatasetLocator(\n `link.${linkType.apiName}`,\n new Set([resolvedColumnA, resolvedColumnB]),\n );\n datasource = {\n rid: ridGenerator.generateDatasourceRid(linkType.apiName),\n datasource: {\n type: \"dataset\",\n dataset: {\n // TODO: Add proper branchId from link configuration\n branchId: datasetLocator.branchId,\n datasetRid: datasetLocator.rid,\n writebackDatasetRid: undefined,\n // TODO: Convert property mappings to use property RIDs as keys\n objectTypeAPrimaryKeyMapping: {\n [manyPkRidA]: resolvedColumnA,\n },\n objectTypeBPrimaryKeyMapping: {\n [manyPkRidB]: resolvedColumnB,\n },\n },\n },\n editsConfiguration: {\n onlyAllowPrivilegedEdits: false,\n },\n redacted: linkType.redacted,\n };\n }\n\n const linkTypeId = cleanAndValidateLinkTypeId(linkType.apiName);\n\n return {\n linkType: {\n definition,\n rid: ridGenerator.generateRidForLinkType(linkTypeId),\n id: cleanAndValidateLinkTypeId(linkType.apiName),\n status: convertLinkStatus(linkType.status, ridGenerator),\n redacted: linkType.redacted ?? false,\n },\n datasources: datasource !== undefined ? [datasource] : [],\n entityMetadata: {\n arePatchesEnabled: linkType.editsEnabled ?? false,\n entityConfig: {\n objectDbTypeConfigs: {\n highbury: {\n objectDbConfigs: {\n \"ri.highbury.main.cluster.1\": { configValue: \"{}\" },\n },\n },\n },\n },\n targetStorageBackend: { type: \"objectStorageV2\", objectStorageV2: {} },\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 getOntologyDefinition()[OntologyEntityTypeEnum.OBJECT_TYPE][objectApiName]\n ?? getImportedTypes()[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 ridGenerator: OntologyRidGenerator,\n): LinkTypeStatus {\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 replacedBy: status.replacedBy\n ? ridGenerator.generateRidForLinkType(\n cleanAndValidateLinkTypeId(status.replacedBy),\n )\n : undefined,\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":[]}
@@ -208,26 +208,26 @@ function buildKnownIdentifiers(ontology, ridGenerator) {
208
208
  actionParameterIds: actionParameterIdMappings,
209
209
  actionParameters: actionParameterMappings,
210
210
  actionTypes: actionTypeMappings,
211
- datasourceColumns: datasourceColumns,
211
+ datasourceColumns,
212
212
  datasources: backingDatasourceMappings,
213
213
  filesDatasources: filesDatasourceMappings,
214
214
  functions: {},
215
- geotimeSeriesSyncs: geotimeSeriesSyncs,
215
+ geotimeSeriesSyncs,
216
216
  groupIds: groupMappings,
217
217
  interfaceLinkTypes: interfaceLinkMappings,
218
218
  interfacePropertyTypes: interfacePropertyMappings,
219
219
  interfaceTypes: interfaceMappings,
220
- linkTypeIds: linkTypeIds,
220
+ linkTypeIds,
221
221
  linkTypes: linkTypeRids,
222
222
  markings: markingsMappings,
223
- objectTypeIds: objectTypeIds,
223
+ objectTypeIds,
224
224
  objectTypes: objectTypeRids,
225
- propertyTypeIds: propertyTypeIds,
225
+ propertyTypeIds,
226
226
  propertyTypes: propertyRids,
227
227
  sharedPropertyTypes: sharedPropertyMappings,
228
228
  shapeIdForOntologyAllowSchemaMigrations: ridGenerator.toBlockInternalId(MIGRATION_SHAPE_READABLE_ID),
229
229
  shapeIdForInstallPrefix: null,
230
- timeSeriesSyncs: timeSeriesSyncs,
230
+ timeSeriesSyncs,
231
231
  valueTypes: valueTypeMappings,
232
232
  webhooks: {},
233
233
  workshopModules: {}