@osdk/maker-experimental 0.6.0-beta.7 → 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.
- package/CHANGELOG.md +12 -0
- package/build/browser/api/defineOntologyV2.js +1 -1
- package/build/browser/api/defineOntologyV2.js.map +1 -1
- package/build/browser/cli/main.js +2 -3
- package/build/browser/cli/main.js.map +1 -1
- package/build/browser/conversion/toMarketplace/convertDatasourceDefinition.js +2 -2
- package/build/browser/conversion/toMarketplace/convertDatasourceDefinition.js.map +1 -1
- package/build/browser/conversion/toMarketplace/convertLink.js +5 -4
- package/build/browser/conversion/toMarketplace/convertLink.js.map +1 -1
- package/build/browser/conversion/toMarketplace/convertOntologyDefinitionToWireBlockData.js +6 -6
- package/build/browser/conversion/toMarketplace/convertOntologyDefinitionToWireBlockData.js.map +1 -1
- package/build/browser/util/generateRid.js +4 -4
- package/build/browser/util/generateRid.js.map +1 -1
- package/build/cjs/{ActionTypeShapeExtractor-LH6ZRKVO.cjs → ActionTypeShapeExtractor-MWOBZ3A5.cjs} +4 -4
- package/build/cjs/{ActionTypeShapeExtractor-LH6ZRKVO.cjs.map → ActionTypeShapeExtractor-MWOBZ3A5.cjs.map} +1 -1
- package/build/cjs/{chunk-2J65CKX4.cjs → chunk-XMO5RRJG.cjs} +3 -3
- package/build/cjs/chunk-XMO5RRJG.cjs.map +1 -0
- package/build/cjs/index.cjs +54 -54
- package/build/cjs/index.cjs.map +1 -1
- package/build/cjs/index.d.cts +1 -1
- package/build/esm/api/defineOntologyV2.js +1 -1
- package/build/esm/api/defineOntologyV2.js.map +1 -1
- package/build/esm/cli/main.js +2 -3
- package/build/esm/cli/main.js.map +1 -1
- package/build/esm/conversion/toMarketplace/convertDatasourceDefinition.js +2 -2
- package/build/esm/conversion/toMarketplace/convertDatasourceDefinition.js.map +1 -1
- package/build/esm/conversion/toMarketplace/convertLink.js +5 -4
- package/build/esm/conversion/toMarketplace/convertLink.js.map +1 -1
- package/build/esm/conversion/toMarketplace/convertOntologyDefinitionToWireBlockData.js +6 -6
- package/build/esm/conversion/toMarketplace/convertOntologyDefinitionToWireBlockData.js.map +1 -1
- package/build/esm/util/generateRid.js +4 -4
- package/build/esm/util/generateRid.js.map +1 -1
- package/build/types/conversion/toMarketplace/convertLink.d.ts.map +1 -1
- package/build/types/conversion/toMarketplace/convertOntologyDefinitionToWireBlockData.d.ts.map +1 -1
- package/build/types/util/generateRid.d.ts +2 -2
- package/build/types/util/generateRid.d.ts.map +1 -1
- package/package.json +4 -4
- package/build/cjs/chunk-2J65CKX4.cjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @osdk/maker-experimental
|
|
2
2
|
|
|
3
|
+
## 0.6.0-beta.8
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- a73bafd: Fix link type block data gen
|
|
8
|
+
- e8ca289: Fix key resolution
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- Updated dependencies [e8ca289]
|
|
13
|
+
- @osdk/maker@0.16.0-beta.15
|
|
14
|
+
|
|
3
15
|
## 0.6.0-beta.7
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
|
@@ -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,
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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
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:
|
|
117
|
-
datasetRid:
|
|
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
|
|
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","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 = 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.generateDatasourceRid(linkType.apiName),\n datasource: {\n type: \"dataset\",\n dataset: {\n // TODO: Add proper branchId from link configuration\n branchId: \"main\",\n datasetRid: ridGenerator.generateDatasourceRid(\n 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
|
|
211
|
+
datasourceColumns,
|
|
212
212
|
datasources: backingDatasourceMappings,
|
|
213
213
|
filesDatasources: filesDatasourceMappings,
|
|
214
214
|
functions: {},
|
|
215
|
-
geotimeSeriesSyncs
|
|
215
|
+
geotimeSeriesSyncs,
|
|
216
216
|
groupIds: groupMappings,
|
|
217
217
|
interfaceLinkTypes: interfaceLinkMappings,
|
|
218
218
|
interfacePropertyTypes: interfacePropertyMappings,
|
|
219
219
|
interfaceTypes: interfaceMappings,
|
|
220
|
-
linkTypeIds
|
|
220
|
+
linkTypeIds,
|
|
221
221
|
linkTypes: linkTypeRids,
|
|
222
222
|
markings: markingsMappings,
|
|
223
|
-
objectTypeIds
|
|
223
|
+
objectTypeIds,
|
|
224
224
|
objectTypes: objectTypeRids,
|
|
225
|
-
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
|
|
230
|
+
timeSeriesSyncs,
|
|
231
231
|
valueTypes: valueTypeMappings,
|
|
232
232
|
webhooks: {},
|
|
233
233
|
workshopModules: {}
|