@osdk/maker-experimental 0.74.0 → 0.74.1-main-e9bf2deb57f18f15410f802b0584fe2d350434aa

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/build/browser/api/defineOntologyV2.js +2 -2
  3. package/build/browser/api/defineOntologyV2.js.map +1 -1
  4. package/build/browser/cli/main.js +11 -4
  5. package/build/browser/cli/main.js.map +1 -1
  6. package/build/browser/conversion/toMarketplace/convertDatasourceDefinition.js +63 -0
  7. package/build/browser/conversion/toMarketplace/convertDatasourceDefinition.js.map +1 -1
  8. package/build/browser/conversion/toMarketplace/convertObject.js +6 -2
  9. package/build/browser/conversion/toMarketplace/convertObject.js.map +1 -1
  10. package/build/browser/conversion/toMarketplace/convertOntologyDefinition.js +2 -2
  11. package/build/browser/conversion/toMarketplace/convertOntologyDefinition.js.map +1 -1
  12. package/build/browser/conversion/toMarketplace/convertOntologyDefinitionToWireBlockData.js +2 -2
  13. package/build/browser/conversion/toMarketplace/convertOntologyDefinitionToWireBlockData.js.map +1 -1
  14. package/build/browser/index.js.map +1 -1
  15. package/build/cjs/index.cjs +82 -11
  16. package/build/cjs/index.cjs.map +1 -1
  17. package/build/cjs/index.d.cts +5 -2
  18. package/build/esm/api/defineOntologyV2.js +2 -2
  19. package/build/esm/api/defineOntologyV2.js.map +1 -1
  20. package/build/esm/cli/main.js +11 -4
  21. package/build/esm/cli/main.js.map +1 -1
  22. package/build/esm/conversion/toMarketplace/convertDatasourceDefinition.js +63 -0
  23. package/build/esm/conversion/toMarketplace/convertDatasourceDefinition.js.map +1 -1
  24. package/build/esm/conversion/toMarketplace/convertObject.js +6 -2
  25. package/build/esm/conversion/toMarketplace/convertObject.js.map +1 -1
  26. package/build/esm/conversion/toMarketplace/convertOntologyDefinition.js +2 -2
  27. package/build/esm/conversion/toMarketplace/convertOntologyDefinition.js.map +1 -1
  28. package/build/esm/conversion/toMarketplace/convertOntologyDefinitionToWireBlockData.js +2 -2
  29. package/build/esm/conversion/toMarketplace/convertOntologyDefinitionToWireBlockData.js.map +1 -1
  30. package/build/esm/index.js.map +1 -1
  31. package/build/types/api/defineOntologyV2.d.ts +4 -1
  32. package/build/types/api/defineOntologyV2.d.ts.map +1 -1
  33. package/build/types/cli/main.d.ts.map +1 -1
  34. package/build/types/conversion/toMarketplace/convertDatasourceDefinition.d.ts +3 -1
  35. package/build/types/conversion/toMarketplace/convertDatasourceDefinition.d.ts.map +1 -1
  36. package/build/types/conversion/toMarketplace/convertObject.d.ts +1 -1
  37. package/build/types/conversion/toMarketplace/convertObject.d.ts.map +1 -1
  38. package/build/types/conversion/toMarketplace/convertOntologyDefinition.d.ts +1 -1
  39. package/build/types/conversion/toMarketplace/convertOntologyDefinition.d.ts.map +1 -1
  40. package/build/types/conversion/toMarketplace/convertOntologyDefinitionToWireBlockData.d.ts +1 -1
  41. package/build/types/conversion/toMarketplace/convertOntologyDefinitionToWireBlockData.d.ts.map +1 -1
  42. package/build/types/index.d.ts +1 -1
  43. package/build/types/index.d.ts.map +1 -1
  44. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @osdk/maker-experimental
2
2
 
3
+ ## 0.74.1-main-e9bf2deb57f18f15410f802b0584fe2d350434aa
4
+
5
+ ### Patch Changes
6
+
7
+ - e9bf2de: Add edge packaging to oac
8
+ - Updated dependencies [e9bf2de]
9
+ - @osdk/client.unstable@2.79.1-main-e9bf2deb57f18f15410f802b0584fe2d350434aa
10
+ - @osdk/api@2.79.1-main-e9bf2deb57f18f15410f802b0584fe2d350434aa
11
+ - @osdk/generator-converters.ontologyir@2.79.1-main-e9bf2deb57f18f15410f802b0584fe2d350434aa
12
+
3
13
  ## 0.74.0
4
14
 
5
15
  ### Minor Changes
@@ -21,7 +21,7 @@ import { convertOntologyDefinition } from "../conversion/toMarketplace/convertOn
21
21
  import { getImportedShapes } from "../conversion/toMarketplace/shapeExtractors/ImportedShapeExtractor.js";
22
22
  import { getShapes } from "../conversion/toMarketplace/shapeExtractors/IrShapeExtractor.js";
23
23
  import { OntologyRidGeneratorImpl, ReadableIdGenerator } from "../util/generateRid.js";
24
- export async function defineOntologyV2(ns, body, outputDir, dependencyFile, functionsIrFile, randomnessKey, importedLinkTypeIdsByApiName, externalImportedMetadata) {
24
+ export async function defineOntologyV2(ns, body, outputDir, dependencyFile, functionsIrFile, randomnessKey, importedLinkTypeIdsByApiName, externalImportedMetadata, packagingOptions = {}) {
25
25
  initializeOntologyState(ns);
26
26
  try {
27
27
  await body();
@@ -45,7 +45,7 @@ export async function defineOntologyV2(ns, body, outputDir, dependencyFile, func
45
45
  functionsIr = JSON.parse(fs.readFileSync(functionsIrFile, "utf-8"));
46
46
  }
47
47
  const ridGenerator = new OntologyRidGeneratorImpl(importedTypes, randomnessKey);
48
- const ontDef = convertOntologyDefinition(ontologyDefinition, ridGenerator, functionsIr, randomnessKey);
48
+ const ontDef = convertOntologyDefinition(ontologyDefinition, ridGenerator, functionsIr, randomnessKey, packagingOptions.targetEnvironment === "EDGE");
49
49
  const shapes = await getShapes(ontDef.ontology, ridGenerator, functionsIr, randomnessKey);
50
50
 
51
51
  // Generate input shapes for imported entities and merge into main shapes
@@ -1 +1 @@
1
- {"version":3,"file":"defineOntologyV2.js","names":["fs","getImportedTypes","getOntologyDefinition","importOntologyEntity","initializeOntologyState","OntologyEntityTypeEnum","writeDependencyFile","writeStaticObjects","convertOntologyFullMetadata","convertOntologyDefinition","getImportedShapes","getShapes","OntologyRidGeneratorImpl","ReadableIdGenerator","defineOntologyV2","ns","body","outputDir","dependencyFile","functionsIrFile","randomnessKey","importedLinkTypeIdsByApiName","externalImportedMetadata","e","console","error","importedOntology","entityType","SHARED_PROPERTY_TYPE","INTERFACE_TYPE","OBJECT_TYPE","ACTION_TYPE","entity","Object","values","ontologyDefinition","importedTypes","functionsIr","JSON","parse","readFileSync","ridGenerator","ontDef","shapes","ontology","importedShapes","key","value","inputShapes","set","inputShapeMetadata","backingDatasourceApiNames","entries","filter","_","obj","includeEmptyBackingDatasource","map","apiName","backingDatasourceLinkApiNames","LINK_TYPE","link","lt","backingMediaSetNames","flatMap","ontologyEntity","objectType","properties","includeEmptyBackingMediaSet","mediaSetName","getForMediaSetView","isOptional","isAccessedInReconcile","reconcileAccessRequirements","readableIds","Set","keys","outputShapes","blockDataAddOn","idToBlockShapeId","fromEntries","Array","from","readableId","toBlockInternalId","idToInputGroupId","outputToLocationInput","ontologyIr","importedInputPresets","inputPresets"],"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 * as fs from \"fs\";\n\nimport type { OntologyIrV2 } from \"@osdk/client.unstable\";\nimport type { InputPreset } from \"@osdk/client.unstable/api\";\nimport type { IDiscoveredFunction } from \"@osdk/generator-converters.ontologyir\";\nimport type { LinkType, ObjectType, OntologyDefinition } from \"@osdk/maker\";\nimport {\n getImportedTypes,\n getOntologyDefinition,\n importOntologyEntity,\n initializeOntologyState,\n OntologyEntityTypeEnum,\n writeDependencyFile,\n writeStaticObjects,\n} from \"@osdk/maker\";\nimport { convertOntologyFullMetadata } from \"@osdk/maker-import\";\n\nimport type { BlockDataAddOn } from \"../cli/marketplaceSerialization/BlockGeneratorResult.js\";\nimport { convertOntologyDefinition } from \"../conversion/toMarketplace/convertOntologyDefinition.js\";\nimport {\n type ExternalImportedOntologyMetadata,\n getImportedShapes,\n type LinkTypeIdsByApiName,\n} from \"../conversion/toMarketplace/shapeExtractors/ImportedShapeExtractor.js\";\n\nexport type { ExternalImportedOntologyMetadata } from \"../conversion/toMarketplace/shapeExtractors/ImportedShapeExtractor.js\";\nimport { getShapes } from \"../conversion/toMarketplace/shapeExtractors/IrShapeExtractor.js\";\nimport type { BlockShapes, ReadableId } from \"../util/generateRid.js\";\nimport {\n OntologyRidGeneratorImpl,\n ReadableIdGenerator,\n} from \"../util/generateRid.js\";\n\nexport interface OntologyV2Result {\n ontologyIr: OntologyIrV2;\n importedTypes: OntologyDefinition;\n shapes: BlockShapes;\n blockDataAddOn: BlockDataAddOn;\n importedInputPresets: Map<ReadableId, InputPreset>;\n backingDatasourceApiNames: string[];\n backingDatasourceLinkApiNames: string[];\n backingMediaSetNames: string[];\n}\n\nexport interface FunctionsIr {\n discoveredFunctions: Array<IDiscoveredFunction>;\n}\n\nexport async function defineOntologyV2(\n ns: string,\n body: () => void | Promise<void>,\n outputDir?: string,\n dependencyFile?: string,\n functionsIrFile?: string,\n randomnessKey?: string,\n importedLinkTypeIdsByApiName?: LinkTypeIdsByApiName,\n externalImportedMetadata?: ExternalImportedOntologyMetadata,\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 if (externalImportedMetadata) {\n const importedOntology = convertOntologyFullMetadata(\n externalImportedMetadata,\n );\n for (const entityType of [\n OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE,\n OntologyEntityTypeEnum.INTERFACE_TYPE,\n OntologyEntityTypeEnum.OBJECT_TYPE,\n OntologyEntityTypeEnum.ACTION_TYPE,\n ] as const) {\n for (const entity of Object.values(importedOntology[entityType])) {\n importOntologyEntity(entity);\n }\n }\n }\n\n const ontologyDefinition = getOntologyDefinition();\n const importedTypes = getImportedTypes();\n\n let functionsIr: FunctionsIr | undefined;\n if (functionsIrFile) {\n functionsIr = JSON.parse(fs.readFileSync(functionsIrFile, \"utf-8\"));\n }\n\n const ridGenerator = new OntologyRidGeneratorImpl(\n importedTypes,\n randomnessKey,\n );\n const ontDef = convertOntologyDefinition(\n ontologyDefinition,\n ridGenerator,\n functionsIr,\n randomnessKey,\n );\n\n const shapes = await getShapes(\n ontDef.ontology,\n ridGenerator,\n functionsIr,\n randomnessKey,\n );\n\n // Generate input shapes for imported entities and merge into main shapes\n const importedShapes = getImportedShapes(\n ontDef.importedOntology,\n ridGenerator,\n importedLinkTypeIdsByApiName,\n externalImportedMetadata,\n );\n for (const [key, value] of importedShapes.inputShapes) {\n shapes.inputShapes.set(key, value);\n }\n for (const [key, value] of importedShapes.inputShapeMetadata) {\n shapes.inputShapeMetadata.set(key, value);\n }\n\n const backingDatasourceApiNames = Object.entries(\n ontologyDefinition[OntologyEntityTypeEnum.OBJECT_TYPE],\n )\n .filter(\n ([_, obj]) => (obj as ObjectType).includeEmptyBackingDatasource === true,\n )\n .map(([apiName]) => apiName);\n\n const backingDatasourceLinkApiNames = Object.entries(\n ontologyDefinition[OntologyEntityTypeEnum.LINK_TYPE],\n )\n .filter(([_, link]) => {\n const lt = link as LinkType;\n return (\n \"many\" in lt &&\n !(\"intermediaryObjectType\" in lt) &&\n (lt as LinkType & { includeEmptyBackingDatasource?: boolean })\n .includeEmptyBackingDatasource === true\n );\n })\n .map(([apiName]) => apiName);\n\n const backingMediaSetNames = Object.values(\n ontologyDefinition[OntologyEntityTypeEnum.OBJECT_TYPE],\n ).flatMap((ontologyEntity) => {\n const objectType = ontologyEntity as ObjectType;\n return (objectType.properties ?? [])\n .filter(\n ({ includeEmptyBackingMediaSet }) =>\n includeEmptyBackingMediaSet === true,\n )\n .map(({ apiName }) => `${objectType.apiName}.${apiName}`);\n });\n\n for (const mediaSetName of backingMediaSetNames) {\n shapes.inputShapeMetadata.set(\n ReadableIdGenerator.getForMediaSetView(mediaSetName),\n {\n isOptional: false,\n isAccessedInReconcile: true,\n reconcileAccessRequirements: \"RESOURCE_EXISTENCE_REQUIRED\",\n },\n );\n }\n\n if (outputDir) {\n writeStaticObjects(outputDir);\n }\n if (dependencyFile) {\n writeDependencyFile(dependencyFile);\n }\n\n const readableIds = new Set([\n ...shapes.inputShapes.keys(),\n ...shapes.outputShapes.keys(),\n ]);\n const blockDataAddOn: BlockDataAddOn = {\n idToBlockShapeId: Object.fromEntries(\n Array.from(readableIds, (readableId) => [\n readableId,\n ridGenerator.toBlockInternalId(readableId),\n ]),\n ),\n idToInputGroupId: {},\n outputToLocationInput: {},\n };\n\n return {\n ontologyIr: ontDef,\n importedTypes,\n shapes,\n blockDataAddOn,\n importedInputPresets: importedShapes.inputPresets,\n backingDatasourceApiNames,\n backingDatasourceLinkApiNames,\n backingMediaSetNames,\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"defineOntologyV2.js","names":["fs","getImportedTypes","getOntologyDefinition","importOntologyEntity","initializeOntologyState","OntologyEntityTypeEnum","writeDependencyFile","writeStaticObjects","convertOntologyFullMetadata","convertOntologyDefinition","getImportedShapes","getShapes","OntologyRidGeneratorImpl","ReadableIdGenerator","defineOntologyV2","ns","body","outputDir","dependencyFile","functionsIrFile","randomnessKey","importedLinkTypeIdsByApiName","externalImportedMetadata","packagingOptions","e","console","error","importedOntology","entityType","SHARED_PROPERTY_TYPE","INTERFACE_TYPE","OBJECT_TYPE","ACTION_TYPE","entity","Object","values","ontologyDefinition","importedTypes","functionsIr","JSON","parse","readFileSync","ridGenerator","ontDef","targetEnvironment","shapes","ontology","importedShapes","key","value","inputShapes","set","inputShapeMetadata","backingDatasourceApiNames","entries","filter","_","obj","includeEmptyBackingDatasource","map","apiName","backingDatasourceLinkApiNames","LINK_TYPE","link","lt","backingMediaSetNames","flatMap","ontologyEntity","objectType","properties","includeEmptyBackingMediaSet","mediaSetName","getForMediaSetView","isOptional","isAccessedInReconcile","reconcileAccessRequirements","readableIds","Set","keys","outputShapes","blockDataAddOn","idToBlockShapeId","fromEntries","Array","from","readableId","toBlockInternalId","idToInputGroupId","outputToLocationInput","ontologyIr","importedInputPresets","inputPresets"],"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 * as fs from \"fs\";\n\nimport type { OntologyIrV2 } from \"@osdk/client.unstable\";\nimport type { InputPreset } from \"@osdk/client.unstable/api\";\nimport type { IDiscoveredFunction } from \"@osdk/generator-converters.ontologyir\";\nimport type { LinkType, ObjectType, OntologyDefinition } from \"@osdk/maker\";\nimport {\n getImportedTypes,\n getOntologyDefinition,\n importOntologyEntity,\n initializeOntologyState,\n OntologyEntityTypeEnum,\n writeDependencyFile,\n writeStaticObjects,\n} from \"@osdk/maker\";\nimport { convertOntologyFullMetadata } from \"@osdk/maker-import\";\n\nimport type { BlockDataAddOn } from \"../cli/marketplaceSerialization/BlockGeneratorResult.js\";\nimport { convertOntologyDefinition } from \"../conversion/toMarketplace/convertOntologyDefinition.js\";\nimport {\n type ExternalImportedOntologyMetadata,\n getImportedShapes,\n type LinkTypeIdsByApiName,\n} from \"../conversion/toMarketplace/shapeExtractors/ImportedShapeExtractor.js\";\n\nexport type { ExternalImportedOntologyMetadata } from \"../conversion/toMarketplace/shapeExtractors/ImportedShapeExtractor.js\";\nimport { getShapes } from \"../conversion/toMarketplace/shapeExtractors/IrShapeExtractor.js\";\nimport type { BlockShapes, ReadableId } from \"../util/generateRid.js\";\nimport {\n OntologyRidGeneratorImpl,\n ReadableIdGenerator,\n} from \"../util/generateRid.js\";\n\nexport interface OntologyPackagingOptions {\n // EDGE packages datasource definitions for both cloud and edge. Defaults to CLOUD.\n targetEnvironment?: \"CLOUD\" | \"EDGE\";\n}\n\nexport interface OntologyV2Result {\n ontologyIr: OntologyIrV2;\n importedTypes: OntologyDefinition;\n shapes: BlockShapes;\n blockDataAddOn: BlockDataAddOn;\n importedInputPresets: Map<ReadableId, InputPreset>;\n backingDatasourceApiNames: string[];\n backingDatasourceLinkApiNames: string[];\n backingMediaSetNames: string[];\n}\n\nexport interface FunctionsIr {\n discoveredFunctions: Array<IDiscoveredFunction>;\n}\n\nexport async function defineOntologyV2(\n ns: string,\n body: () => void | Promise<void>,\n outputDir?: string,\n dependencyFile?: string,\n functionsIrFile?: string,\n randomnessKey?: string,\n importedLinkTypeIdsByApiName?: LinkTypeIdsByApiName,\n externalImportedMetadata?: ExternalImportedOntologyMetadata,\n packagingOptions: OntologyPackagingOptions = {},\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 if (externalImportedMetadata) {\n const importedOntology = convertOntologyFullMetadata(\n externalImportedMetadata,\n );\n for (const entityType of [\n OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE,\n OntologyEntityTypeEnum.INTERFACE_TYPE,\n OntologyEntityTypeEnum.OBJECT_TYPE,\n OntologyEntityTypeEnum.ACTION_TYPE,\n ] as const) {\n for (const entity of Object.values(importedOntology[entityType])) {\n importOntologyEntity(entity);\n }\n }\n }\n\n const ontologyDefinition = getOntologyDefinition();\n const importedTypes = getImportedTypes();\n\n let functionsIr: FunctionsIr | undefined;\n if (functionsIrFile) {\n functionsIr = JSON.parse(fs.readFileSync(functionsIrFile, \"utf-8\"));\n }\n\n const ridGenerator = new OntologyRidGeneratorImpl(\n importedTypes,\n randomnessKey,\n );\n const ontDef = convertOntologyDefinition(\n ontologyDefinition,\n ridGenerator,\n functionsIr,\n randomnessKey,\n packagingOptions.targetEnvironment === \"EDGE\",\n );\n\n const shapes = await getShapes(\n ontDef.ontology,\n ridGenerator,\n functionsIr,\n randomnessKey,\n );\n\n // Generate input shapes for imported entities and merge into main shapes\n const importedShapes = getImportedShapes(\n ontDef.importedOntology,\n ridGenerator,\n importedLinkTypeIdsByApiName,\n externalImportedMetadata,\n );\n for (const [key, value] of importedShapes.inputShapes) {\n shapes.inputShapes.set(key, value);\n }\n for (const [key, value] of importedShapes.inputShapeMetadata) {\n shapes.inputShapeMetadata.set(key, value);\n }\n\n const backingDatasourceApiNames = Object.entries(\n ontologyDefinition[OntologyEntityTypeEnum.OBJECT_TYPE],\n )\n .filter(\n ([_, obj]) => (obj as ObjectType).includeEmptyBackingDatasource === true,\n )\n .map(([apiName]) => apiName);\n\n const backingDatasourceLinkApiNames = Object.entries(\n ontologyDefinition[OntologyEntityTypeEnum.LINK_TYPE],\n )\n .filter(([_, link]) => {\n const lt = link as LinkType;\n return (\n \"many\" in lt &&\n !(\"intermediaryObjectType\" in lt) &&\n (lt as LinkType & { includeEmptyBackingDatasource?: boolean })\n .includeEmptyBackingDatasource === true\n );\n })\n .map(([apiName]) => apiName);\n\n const backingMediaSetNames = Object.values(\n ontologyDefinition[OntologyEntityTypeEnum.OBJECT_TYPE],\n ).flatMap((ontologyEntity) => {\n const objectType = ontologyEntity as ObjectType;\n return (objectType.properties ?? [])\n .filter(\n ({ includeEmptyBackingMediaSet }) =>\n includeEmptyBackingMediaSet === true,\n )\n .map(({ apiName }) => `${objectType.apiName}.${apiName}`);\n });\n\n for (const mediaSetName of backingMediaSetNames) {\n shapes.inputShapeMetadata.set(\n ReadableIdGenerator.getForMediaSetView(mediaSetName),\n {\n isOptional: false,\n isAccessedInReconcile: true,\n reconcileAccessRequirements: \"RESOURCE_EXISTENCE_REQUIRED\",\n },\n );\n }\n\n if (outputDir) {\n writeStaticObjects(outputDir);\n }\n if (dependencyFile) {\n writeDependencyFile(dependencyFile);\n }\n\n const readableIds = new Set([\n ...shapes.inputShapes.keys(),\n ...shapes.outputShapes.keys(),\n ]);\n const blockDataAddOn: BlockDataAddOn = {\n idToBlockShapeId: Object.fromEntries(\n Array.from(readableIds, (readableId) => [\n readableId,\n ridGenerator.toBlockInternalId(readableId),\n ]),\n ),\n idToInputGroupId: {},\n outputToLocationInput: {},\n };\n\n return {\n ontologyIr: ontDef,\n importedTypes,\n shapes,\n blockDataAddOn,\n importedInputPresets: importedShapes.inputPresets,\n backingDatasourceApiNames,\n backingDatasourceLinkApiNames,\n backingMediaSetNames,\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -35,7 +35,7 @@ const apiNamespaceRegex = /^[a-z0-9-]+(\.[a-z0-9-]+)*\.$/u;
35
35
  const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/u;
36
36
  export default async function main(args = process.argv) {
37
37
  consola.log("Generating BlockGeneratorResult for ontology...");
38
- const commandLineOpts = await yargs(hideBin(args)).version("0.74.0" ?? "").wrap(Math.min(150, yargs().terminalWidth())).strict().help().options({
38
+ const commandLineOpts = await yargs(hideBin(args)).version("0.74.1-main-e9bf2deb57f18f15410f802b0584fe2d350434aa" ?? "").wrap(Math.min(150, yargs().terminalWidth())).strict().help().options({
39
39
  input: {
40
40
  alias: "i",
41
41
  describe: "Input file",
@@ -61,6 +61,11 @@ export default async function main(args = process.argv) {
61
61
  type: "string",
62
62
  default: ""
63
63
  },
64
+ targetEnvironment: {
65
+ describe: "Package for CLOUD, or for both cloud and edge with EDGE",
66
+ choices: ["CLOUD", "EDGE"],
67
+ default: "CLOUD"
68
+ },
64
69
  buildDir: {
65
70
  alias: "b",
66
71
  describe: "Directory for build files",
@@ -149,7 +154,9 @@ export default async function main(args = process.argv) {
149
154
  backingDatasourceApiNames,
150
155
  backingDatasourceLinkApiNames,
151
156
  backingMediaSetNames
152
- } = await loadOntology(commandLineOpts.input, apiNamespace, codegenDir, dependencyFile, functionsIrFile, commandLineOpts.randomnessKey, importedLinkTypeIdsByApiName, externalImportedMetadata);
157
+ } = await loadOntology(commandLineOpts.input, apiNamespace, codegenDir, dependencyFile, functionsIrFile, commandLineOpts.randomnessKey, importedLinkTypeIdsByApiName, externalImportedMetadata, {
158
+ targetEnvironment: commandLineOpts.targetEnvironment
159
+ });
153
160
 
154
161
  // Create temp directory for block data
155
162
  const blockDataDir = path.join(commandLineOpts.buildDir, "temp_block_data");
@@ -302,8 +309,8 @@ export default async function main(args = process.argv) {
302
309
  consola.success(`Value type BlockGeneratorResult written to ${commandLineOpts.valueTypesOutput}`);
303
310
  }
304
311
  }
305
- async function loadOntology(input, apiNamespace, outputDir, dependencyFile, functionsIrFile, randomnessKey, importedLinkTypeIdsByApiName, externalImportedMetadata) {
306
- const result = await defineOntologyV2(apiNamespace, async () => await import(pathToFileURL(input).href), outputDir, dependencyFile, functionsIrFile, randomnessKey, importedLinkTypeIdsByApiName, externalImportedMetadata);
312
+ async function loadOntology(input, apiNamespace, outputDir, dependencyFile, functionsIrFile, randomnessKey, importedLinkTypeIdsByApiName, externalImportedMetadata, packagingOptions) {
313
+ const result = await defineOntologyV2(apiNamespace, async () => await import(pathToFileURL(input).href), outputDir, dependencyFile, functionsIrFile, randomnessKey, importedLinkTypeIdsByApiName, externalImportedMetadata, packagingOptions);
307
314
  return result;
308
315
  }
309
316
  function getImportedLinkTypeIdsByApiName(metadata) {
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","names":["fs","path","pathToFileURL","OntologyBlockDataToFullMetadataConverter","OntologyIrToFullMetadataConverter","PreviewOntologyIrConverter","cleanAndValidateLinkTypeId","consola","invariant","yargs","hideBin","defineOntologyV2","getExternalRecommendations","ReadableIdGenerator","generateBackingDatasetBlockResult","generateBackingDatasetBlockResultForLink","getNonEditOnlyProperties","generateBackingMediaSetBlockResult","generateDirectDatasourceBlockResult","generateValueTypeBlockResults","getValueTypeInternalMappings","apiNamespaceRegex","uuidRegex","main","args","process","argv","log","commandLineOpts","version","wrap","Math","min","terminalWidth","strict","help","options","input","alias","describe","type","default","coerce","resolve","output","valueTypesOutput","apiNamespace","buildDir","codegenDir","temporaryBlockDataFile","functionsDir","nodeModulesDir","functionsIrOutputFile","randomnessKey","parseAsync","length","slice","env","NODE_ENV","test","info","undefined","externalImportedMetadata","importJson","existsSync","JSON","parse","promises","readFile","functionsIrFile","fileContent","blockDataJson","error","exit","previewMetadata","getPreviewFullMetadataFromBlockData","discoverTypeScriptFunctions","dirname","dependencyFile","join","mkdir","recursive","importedLinkTypeIdsByApiName","getImportedLinkTypeIdsByApiName","ontologyIr","importedTypes","shapes","blockDataAddOn","importedInputPresets","backingDatasourceApiNames","backingDatasourceLinkApiNames","backingMediaSetNames","loadOntology","blockDataDir","ontologyJsonPath","ontologyJson","stringify","ontology","writeFile","importedMetadata","getFullMetadataFromBlockData","importedOntology","transitiveImportedOntology","directlyImportedInterfaceTypes","Object","values","interfaceTypes","map","interfaceType","apiName","importedMetadataPath","valueTypeResults","valueTypes","directDatasourceGeneratorResults","Promise","all","objectTypes","objectType","filter","result","ontologyInputMappingEntries","inputMappings","objectTypeBlockData","findObjectTypeByApiName","nonEditOnlyProps","inputDatasetReadableId","getForDataset","outputDatasetReadableId","getForDatasetOutput","inputShapes","has","push","prop","colInputReadableId","getForDatasetColumn","getForDatasetColumnOutput","linkApiName","linkTypeBlockData","findLinkTypeByApiName","linkTypes","datasetName","inputDsId","outputDsId","ds","datasources","datasource","columnNames","dataset","objectTypeAPrimaryKeyMapping","String","objectTypeBPrimaryKeyMapping","colName","colInputId","colOutputId","mediaSetName","inputReadableId","getForMediaSetView","getForMediaSetViewOutput","backingDsGeneratorResults","backingDsLinkGeneratorResults","p","backingMediaSetGeneratorResults","blockGeneratorResult","block_identifier","block_data_directory","oci_block_data_metadata","maven_block_data_metadata","inputs","fromEntries","input_presets","outputs","outputShapes","input_mapping_entries","external_recommendations","add_on_override","input_shape_metadata","inputShapeMetadata","block_type","blockGeneratorResultJson","success","valueTypeResultsJson","outputDir","href","metadata","linkType","linkTypeId","linkTypeIdsByRid","linkTypeRid","find","lt","id"],"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 * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\nimport type {\n LinkTypeBlockDataV2,\n ObjectTypeBlockDataV2,\n} from \"@osdk/client.unstable\";\nimport {\n OntologyBlockDataToFullMetadataConverter,\n OntologyIrToFullMetadataConverter,\n} from \"@osdk/generator-converters.ontologyir\";\nimport { PreviewOntologyIrConverter } from \"@osdk/generator-converters.preview\";\nimport { cleanAndValidateLinkTypeId } from \"@osdk/maker\";\nimport { consola } from \"consola\";\nimport invariant from \"tiny-invariant\";\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\n\nimport { defineOntologyV2 } from \"../api/defineOntologyV2.js\";\nimport { getExternalRecommendations } from \"../conversion/toMarketplace/RecommendationUtils.js\";\nimport type {\n ExternalImportedOntologyMetadata,\n LinkTypeIdsByApiName,\n} from \"../conversion/toMarketplace/shapeExtractors/ImportedShapeExtractor.js\";\nimport { ReadableIdGenerator } from \"../util/generateRid.js\";\nimport {\n generateBackingDatasetBlockResult,\n generateBackingDatasetBlockResultForLink,\n getNonEditOnlyProperties,\n} from \"./generateBackingDataset.js\";\nimport { generateBackingMediaSetBlockResult } from \"./generateBackingMediaSet.js\";\nimport { generateDirectDatasourceBlockResult } from \"./generateDirectDatasource.js\";\nimport {\n generateValueTypeBlockResults,\n getValueTypeInternalMappings,\n} from \"./generateValueTypeBlockResults.js\";\nimport type { BlockGeneratorResult } from \"./marketplaceSerialization/BlockGeneratorResult.js\";\nimport type { InputMappingEntry } from \"./marketplaceSerialization/supportingTypes.js\";\n\nconst apiNamespaceRegex = /^[a-z0-9-]+(\\.[a-z0-9-]+)*\\.$/u;\nconst uuidRegex =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/u;\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 valueTypesOutput: string;\n apiNamespace: string;\n buildDir: string;\n codegenDir?: string;\n temporaryBlockDataFile?: string;\n functionsDir?: string;\n nodeModulesDir?: string;\n functionsIrOutputFile?: string;\n randomnessKey?: string;\n importJson?: 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 ontology BlockGeneratorResult JSON\",\n type: \"string\",\n default: \"build/block_generator_result.json\",\n coerce: path.resolve,\n },\n valueTypesOutput: {\n describe: \"Output file for value types BlockGeneratorResult JSON\",\n type: \"string\",\n default: \"build/value_types_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 codegenDir: {\n alias: \"c\",\n describe:\n \"Output directory for generated TypeScript files (defaults to the parent of the input file's directory)\",\n type: \"string\",\n coerce: path.resolve,\n },\n temporaryBlockDataFile: {\n alias: \"f\",\n describe:\n \"Path to a previously generated block data file. Supplying this field indicates that function backed actions should be generated\",\n type: \"string\",\n coerce: path.resolve,\n },\n functionsDir: {\n type: \"string\",\n coerce: path.resolve,\n },\n nodeModulesDir: {\n type: \"string\",\n coerce: path.resolve,\n },\n functionsIrOutputFile: {\n type: \"string\",\n coerce: path.resolve,\n },\n randomnessKey: {\n describe: \"Value used to assure uniqueness of entities\",\n type: \"string\",\n },\n \"import-json\": {\n describe:\n \"Path to imported ontology metadata produced by 'foundry import ontology'\",\n type: \"string\",\n coerce: path.resolve,\n },\n })\n .parseAsync();\n\n let apiNamespace = \"\";\n if (commandLineOpts.apiNamespace.length !== 0) {\n apiNamespace =\n 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 externalImportedMetadata =\n commandLineOpts.importJson && fs.existsSync(commandLineOpts.importJson)\n ? (JSON.parse(\n await fs.promises.readFile(commandLineOpts.importJson, \"utf-8\"),\n ) as ExternalImportedOntologyMetadata)\n : undefined;\n\n let functionsIrFile;\n if (commandLineOpts.temporaryBlockDataFile) {\n consola.info(\n `Loading temporary block data from ${commandLineOpts.temporaryBlockDataFile}`,\n );\n const fileContent = await fs.promises.readFile(\n commandLineOpts.temporaryBlockDataFile,\n \"utf-8\",\n );\n let blockDataJson: unknown;\n try {\n blockDataJson = JSON.parse(fileContent);\n } catch {\n consola.error(\n `Failed to parse JSON from ${commandLineOpts.temporaryBlockDataFile}`,\n );\n process.exit(1);\n }\n const previewMetadata =\n PreviewOntologyIrConverter.getPreviewFullMetadataFromBlockData(\n blockDataJson as Parameters<\n typeof PreviewOntologyIrConverter.getPreviewFullMetadataFromBlockData\n >[0],\n externalImportedMetadata,\n );\n invariant(\n commandLineOpts.functionsDir && commandLineOpts.nodeModulesDir,\n \"functionsDir and nodeModulesDir must be supplied when using temporaryBlockDataFile\",\n );\n await OntologyIrToFullMetadataConverter.discoverTypeScriptFunctions(\n commandLineOpts.functionsDir,\n commandLineOpts.nodeModulesDir,\n commandLineOpts.functionsIrOutputFile,\n previewMetadata,\n );\n functionsIrFile = commandLineOpts.functionsIrOutputFile;\n consola.info(\n `Discovered functions during block data generation at ${commandLineOpts.functionsIrOutputFile}`,\n );\n }\n\n // Default the codegen output directory to the parent of the input file's directory.\n const codegenDir =\n commandLineOpts.codegenDir ??\n path.dirname(path.dirname(commandLineOpts.input));\n\n const dependencyFile = path.join(\n commandLineOpts.buildDir,\n \"dependencies.json\",\n );\n if (!fs.existsSync(dependencyFile)) {\n await fs.promises.mkdir(commandLineOpts.buildDir, { recursive: true });\n }\n\n const importedLinkTypeIdsByApiName = externalImportedMetadata\n ? getImportedLinkTypeIdsByApiName(externalImportedMetadata)\n : undefined;\n\n const {\n ontologyIr,\n importedTypes,\n shapes,\n blockDataAddOn,\n importedInputPresets,\n backingDatasourceApiNames,\n backingDatasourceLinkApiNames,\n backingMediaSetNames,\n } = await loadOntology(\n commandLineOpts.input,\n apiNamespace,\n codegenDir,\n dependencyFile,\n functionsIrFile,\n commandLineOpts.randomnessKey,\n importedLinkTypeIdsByApiName,\n externalImportedMetadata,\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 const importedMetadata =\n OntologyBlockDataToFullMetadataConverter.getFullMetadataFromBlockData(\n ontologyIr.importedOntology,\n undefined,\n ontologyIr.transitiveImportedOntology,\n );\n const directlyImportedInterfaceTypes = Object.values(\n ontologyIr.importedOntology.interfaceTypes,\n ).map(({ interfaceType }) => interfaceType.apiName);\n const importedMetadataPath = path.join(\n commandLineOpts.buildDir,\n \"oac-imported-metadata.json\",\n );\n await fs.promises.writeFile(\n importedMetadataPath,\n JSON.stringify(\n { ...importedMetadata, directlyImportedInterfaceTypes },\n null,\n 2,\n ),\n );\n consola.info(`Wrote oac-imported-metadata.json to ${importedMetadataPath}`);\n\n let valueTypeResults: BlockGeneratorResult[] = [];\n if (ontologyIr.valueTypes.length > 0) {\n valueTypeResults = await generateValueTypeBlockResults(\n ontologyIr.valueTypes,\n commandLineOpts.buildDir,\n commandLineOpts.randomnessKey,\n );\n }\n\n const directDatasourceGeneratorResults = (\n await Promise.all(\n Object.values(ontologyIr.ontology.objectTypes).map((objectType) =>\n generateDirectDatasourceBlockResult(\n objectType,\n commandLineOpts.buildDir,\n commandLineOpts.randomnessKey,\n ),\n ),\n )\n ).filter((result): result is BlockGeneratorResult => result !== undefined);\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[] = shapes.inputMappings;\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 =\n ReadableIdGenerator.getForDatasetOutput(apiName);\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 =\n ReadableIdGenerator.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 // Collect input_mapping_entries for link types with includeEmptyBackingDatasource\n for (const linkApiName of backingDatasourceLinkApiNames) {\n const linkTypeBlockData = findLinkTypeByApiName(\n ontologyIr.ontology.linkTypes,\n linkApiName,\n );\n if (!linkTypeBlockData) continue;\n\n const datasetName = `link.${linkApiName}`;\n\n // Map tabularDatasource\n const inputDsId = ReadableIdGenerator.getForDataset(datasetName);\n const outputDsId = ReadableIdGenerator.getForDatasetOutput(datasetName);\n if (shapes.inputShapes.has(inputDsId)) {\n ontologyInputMappingEntries.push({\n input: inputDsId,\n output: outputDsId,\n });\n }\n\n // Map columns from the datasource\n const ds = linkTypeBlockData.datasources[0]?.datasource;\n if (ds?.type === \"dataset\") {\n const columnNames = [\n ...Object.values(ds.dataset.objectTypeAPrimaryKeyMapping).map(String),\n ...Object.values(ds.dataset.objectTypeBPrimaryKeyMapping).map(String),\n ];\n for (const colName of columnNames) {\n const colInputId = ReadableIdGenerator.getForDatasetColumn(\n datasetName,\n colName,\n );\n const colOutputId = ReadableIdGenerator.getForDatasetColumnOutput(\n datasetName,\n colName,\n );\n if (shapes.inputShapes.has(colInputId)) {\n ontologyInputMappingEntries.push({\n input: colInputId,\n output: colOutputId,\n });\n }\n }\n }\n }\n\n for (const mediaSetName of backingMediaSetNames) {\n const inputReadableId =\n ReadableIdGenerator.getForMediaSetView(mediaSetName);\n if (shapes.inputShapes.has(inputReadableId)) {\n ontologyInputMappingEntries.push({\n input: inputReadableId,\n output: ReadableIdGenerator.getForMediaSetViewOutput(mediaSetName),\n });\n }\n }\n\n ontologyInputMappingEntries.push(\n ...getValueTypeInternalMappings(ontologyIr.valueTypes, shapes.inputShapes),\n );\n\n // Generate backing datasource BlockGeneratorResults for objects with includeEmptyBackingDatasource\n const backingDsGeneratorResults = await Promise.all(\n backingDatasourceApiNames\n .filter((apiName) => {\n const objectTypeBlockData = findObjectTypeByApiName(\n ontologyIr.ontology.objectTypes,\n apiName,\n );\n return objectTypeBlockData !== undefined;\n })\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 // Generate backing datasource BlockGeneratorResults for link types with includeEmptyBackingDatasource\n const backingDsLinkGeneratorResults = await Promise.all(\n backingDatasourceLinkApiNames\n .map((linkApiName) => {\n const linkTypeBlockData = findLinkTypeByApiName(\n ontologyIr.ontology.linkTypes,\n linkApiName,\n );\n if (!linkTypeBlockData) return undefined;\n consola.info(\n `Generating backing datasource BlockGeneratorResult for link ${linkApiName}...`,\n );\n return generateBackingDatasetBlockResultForLink(\n linkTypeBlockData,\n linkApiName,\n ontologyIr.ontology.objectTypes,\n commandLineOpts.buildDir,\n commandLineOpts.randomnessKey,\n );\n })\n .filter((p): p is Promise<BlockGeneratorResult> => p !== undefined),\n );\n\n const backingMediaSetGeneratorResults = await Promise.all(\n backingMediaSetNames.map((mediaSetName) => {\n consola.info(\n `Generating backing Media Set BlockGeneratorResult for ${mediaSetName}...`,\n );\n return generateBackingMediaSetBlockResult(\n mediaSetName,\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 input_presets: Object.fromEntries(importedInputPresets),\n outputs: Object.fromEntries(shapes.outputShapes),\n input_mapping_entries: ontologyInputMappingEntries,\n external_recommendations: getExternalRecommendations(\n ontologyIr.importedOntology,\n ontologyIr.valueTypes,\n importedTypes,\n shapes.inputShapes,\n ),\n add_on_override: blockDataAddOn,\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 [\n blockGeneratorResult,\n ...directDatasourceGeneratorResults,\n ...backingDsGeneratorResults,\n ...backingDsLinkGeneratorResults,\n ...backingMediaSetGeneratorResults,\n ...valueTypeResults,\n ],\n null,\n 2,\n );\n await fs.promises.writeFile(commandLineOpts.output, blockGeneratorResultJson);\n consola.success(`BlockGeneratorResult written to ${commandLineOpts.output}`);\n consola.info(`Block data directory: ${blockDataDir}`);\n\n if (valueTypeResults.length > 0) {\n const valueTypeResultsJson = JSON.stringify(valueTypeResults, null, 2);\n await fs.promises.writeFile(\n commandLineOpts.valueTypesOutput,\n valueTypeResultsJson,\n );\n consola.success(\n `Value type BlockGeneratorResult written to ${commandLineOpts.valueTypesOutput}`,\n );\n }\n}\n\nasync function loadOntology(\n input: string,\n apiNamespace: string,\n outputDir?: string,\n dependencyFile?: string,\n functionsIrFile?: string,\n randomnessKey?: string,\n importedLinkTypeIdsByApiName?: LinkTypeIdsByApiName,\n externalImportedMetadata?: ExternalImportedOntologyMetadata,\n) {\n const result = await defineOntologyV2(\n apiNamespace,\n async () => await import(pathToFileURL(input).href),\n outputDir,\n dependencyFile,\n functionsIrFile,\n randomnessKey,\n importedLinkTypeIdsByApiName,\n externalImportedMetadata,\n );\n return result;\n}\n\nfunction getImportedLinkTypeIdsByApiName(\n metadata: ExternalImportedOntologyMetadata,\n): LinkTypeIdsByApiName {\n const result: Record<string, string> = {};\n for (const objectType of Object.values(metadata.objectTypes)) {\n for (const linkType of objectType.linkTypes) {\n const linkTypeId = metadata.linkTypeIdsByRid?.[linkType.linkTypeRid];\n if (linkTypeId !== undefined) {\n result[cleanAndValidateLinkTypeId(linkType.apiName)] = linkTypeId;\n }\n }\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\n/**\n * Find a LinkTypeBlockDataV2 by apiName within the ontology block data.\n */\nfunction findLinkTypeByApiName(\n linkTypes: Record<string, LinkTypeBlockDataV2>,\n apiName: string,\n): LinkTypeBlockDataV2 | undefined {\n const linkTypeId = cleanAndValidateLinkTypeId(apiName);\n return Object.values(linkTypes).find((lt) => lt.linkType.id === linkTypeId);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"main.js","names":["fs","path","pathToFileURL","OntologyBlockDataToFullMetadataConverter","OntologyIrToFullMetadataConverter","PreviewOntologyIrConverter","cleanAndValidateLinkTypeId","consola","invariant","yargs","hideBin","defineOntologyV2","getExternalRecommendations","ReadableIdGenerator","generateBackingDatasetBlockResult","generateBackingDatasetBlockResultForLink","getNonEditOnlyProperties","generateBackingMediaSetBlockResult","generateDirectDatasourceBlockResult","generateValueTypeBlockResults","getValueTypeInternalMappings","apiNamespaceRegex","uuidRegex","main","args","process","argv","log","commandLineOpts","version","wrap","Math","min","terminalWidth","strict","help","options","input","alias","describe","type","default","coerce","resolve","output","valueTypesOutput","apiNamespace","targetEnvironment","choices","buildDir","codegenDir","temporaryBlockDataFile","functionsDir","nodeModulesDir","functionsIrOutputFile","randomnessKey","parseAsync","length","slice","env","NODE_ENV","test","info","undefined","externalImportedMetadata","importJson","existsSync","JSON","parse","promises","readFile","functionsIrFile","fileContent","blockDataJson","error","exit","previewMetadata","getPreviewFullMetadataFromBlockData","discoverTypeScriptFunctions","dirname","dependencyFile","join","mkdir","recursive","importedLinkTypeIdsByApiName","getImportedLinkTypeIdsByApiName","ontologyIr","importedTypes","shapes","blockDataAddOn","importedInputPresets","backingDatasourceApiNames","backingDatasourceLinkApiNames","backingMediaSetNames","loadOntology","blockDataDir","ontologyJsonPath","ontologyJson","stringify","ontology","writeFile","importedMetadata","getFullMetadataFromBlockData","importedOntology","transitiveImportedOntology","directlyImportedInterfaceTypes","Object","values","interfaceTypes","map","interfaceType","apiName","importedMetadataPath","valueTypeResults","valueTypes","directDatasourceGeneratorResults","Promise","all","objectTypes","objectType","filter","result","ontologyInputMappingEntries","inputMappings","objectTypeBlockData","findObjectTypeByApiName","nonEditOnlyProps","inputDatasetReadableId","getForDataset","outputDatasetReadableId","getForDatasetOutput","inputShapes","has","push","prop","colInputReadableId","getForDatasetColumn","getForDatasetColumnOutput","linkApiName","linkTypeBlockData","findLinkTypeByApiName","linkTypes","datasetName","inputDsId","outputDsId","ds","datasources","datasource","columnNames","dataset","objectTypeAPrimaryKeyMapping","String","objectTypeBPrimaryKeyMapping","colName","colInputId","colOutputId","mediaSetName","inputReadableId","getForMediaSetView","getForMediaSetViewOutput","backingDsGeneratorResults","backingDsLinkGeneratorResults","p","backingMediaSetGeneratorResults","blockGeneratorResult","block_identifier","block_data_directory","oci_block_data_metadata","maven_block_data_metadata","inputs","fromEntries","input_presets","outputs","outputShapes","input_mapping_entries","external_recommendations","add_on_override","input_shape_metadata","inputShapeMetadata","block_type","blockGeneratorResultJson","success","valueTypeResultsJson","outputDir","packagingOptions","href","metadata","linkType","linkTypeId","linkTypeIdsByRid","linkTypeRid","find","lt","id"],"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 * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\nimport type {\n LinkTypeBlockDataV2,\n ObjectTypeBlockDataV2,\n} from \"@osdk/client.unstable\";\nimport {\n OntologyBlockDataToFullMetadataConverter,\n OntologyIrToFullMetadataConverter,\n} from \"@osdk/generator-converters.ontologyir\";\nimport { PreviewOntologyIrConverter } from \"@osdk/generator-converters.preview\";\nimport { cleanAndValidateLinkTypeId } from \"@osdk/maker\";\nimport { consola } from \"consola\";\nimport invariant from \"tiny-invariant\";\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\n\nimport {\n defineOntologyV2,\n type OntologyPackagingOptions,\n} from \"../api/defineOntologyV2.js\";\nimport { getExternalRecommendations } from \"../conversion/toMarketplace/RecommendationUtils.js\";\nimport type {\n ExternalImportedOntologyMetadata,\n LinkTypeIdsByApiName,\n} from \"../conversion/toMarketplace/shapeExtractors/ImportedShapeExtractor.js\";\nimport { ReadableIdGenerator } from \"../util/generateRid.js\";\nimport {\n generateBackingDatasetBlockResult,\n generateBackingDatasetBlockResultForLink,\n getNonEditOnlyProperties,\n} from \"./generateBackingDataset.js\";\nimport { generateBackingMediaSetBlockResult } from \"./generateBackingMediaSet.js\";\nimport { generateDirectDatasourceBlockResult } from \"./generateDirectDatasource.js\";\nimport {\n generateValueTypeBlockResults,\n getValueTypeInternalMappings,\n} from \"./generateValueTypeBlockResults.js\";\nimport type { BlockGeneratorResult } from \"./marketplaceSerialization/BlockGeneratorResult.js\";\nimport type { InputMappingEntry } from \"./marketplaceSerialization/supportingTypes.js\";\n\nconst apiNamespaceRegex = /^[a-z0-9-]+(\\.[a-z0-9-]+)*\\.$/u;\nconst uuidRegex =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/u;\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 valueTypesOutput: string;\n apiNamespace: string;\n buildDir: string;\n codegenDir?: string;\n temporaryBlockDataFile?: string;\n functionsDir?: string;\n nodeModulesDir?: string;\n functionsIrOutputFile?: string;\n randomnessKey?: string;\n importJson?: string;\n targetEnvironment: \"CLOUD\" | \"EDGE\";\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 ontology BlockGeneratorResult JSON\",\n type: \"string\",\n default: \"build/block_generator_result.json\",\n coerce: path.resolve,\n },\n valueTypesOutput: {\n describe: \"Output file for value types BlockGeneratorResult JSON\",\n type: \"string\",\n default: \"build/value_types_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 targetEnvironment: {\n describe: \"Package for CLOUD, or for both cloud and edge with EDGE\",\n choices: [\"CLOUD\", \"EDGE\"] as const,\n default: \"CLOUD\" as const,\n },\n buildDir: {\n alias: \"b\",\n describe: \"Directory for build files\",\n type: \"string\",\n default: \"build/\",\n coerce: path.resolve,\n },\n codegenDir: {\n alias: \"c\",\n describe:\n \"Output directory for generated TypeScript files (defaults to the parent of the input file's directory)\",\n type: \"string\",\n coerce: path.resolve,\n },\n temporaryBlockDataFile: {\n alias: \"f\",\n describe:\n \"Path to a previously generated block data file. Supplying this field indicates that function backed actions should be generated\",\n type: \"string\",\n coerce: path.resolve,\n },\n functionsDir: {\n type: \"string\",\n coerce: path.resolve,\n },\n nodeModulesDir: {\n type: \"string\",\n coerce: path.resolve,\n },\n functionsIrOutputFile: {\n type: \"string\",\n coerce: path.resolve,\n },\n randomnessKey: {\n describe: \"Value used to assure uniqueness of entities\",\n type: \"string\",\n },\n \"import-json\": {\n describe:\n \"Path to imported ontology metadata produced by 'foundry import ontology'\",\n type: \"string\",\n coerce: path.resolve,\n },\n })\n .parseAsync();\n\n let apiNamespace = \"\";\n if (commandLineOpts.apiNamespace.length !== 0) {\n apiNamespace =\n 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 externalImportedMetadata =\n commandLineOpts.importJson && fs.existsSync(commandLineOpts.importJson)\n ? (JSON.parse(\n await fs.promises.readFile(commandLineOpts.importJson, \"utf-8\"),\n ) as ExternalImportedOntologyMetadata)\n : undefined;\n\n let functionsIrFile;\n if (commandLineOpts.temporaryBlockDataFile) {\n consola.info(\n `Loading temporary block data from ${commandLineOpts.temporaryBlockDataFile}`,\n );\n const fileContent = await fs.promises.readFile(\n commandLineOpts.temporaryBlockDataFile,\n \"utf-8\",\n );\n let blockDataJson: unknown;\n try {\n blockDataJson = JSON.parse(fileContent);\n } catch {\n consola.error(\n `Failed to parse JSON from ${commandLineOpts.temporaryBlockDataFile}`,\n );\n process.exit(1);\n }\n const previewMetadata =\n PreviewOntologyIrConverter.getPreviewFullMetadataFromBlockData(\n blockDataJson as Parameters<\n typeof PreviewOntologyIrConverter.getPreviewFullMetadataFromBlockData\n >[0],\n externalImportedMetadata,\n );\n invariant(\n commandLineOpts.functionsDir && commandLineOpts.nodeModulesDir,\n \"functionsDir and nodeModulesDir must be supplied when using temporaryBlockDataFile\",\n );\n await OntologyIrToFullMetadataConverter.discoverTypeScriptFunctions(\n commandLineOpts.functionsDir,\n commandLineOpts.nodeModulesDir,\n commandLineOpts.functionsIrOutputFile,\n previewMetadata,\n );\n functionsIrFile = commandLineOpts.functionsIrOutputFile;\n consola.info(\n `Discovered functions during block data generation at ${commandLineOpts.functionsIrOutputFile}`,\n );\n }\n\n // Default the codegen output directory to the parent of the input file's directory.\n const codegenDir =\n commandLineOpts.codegenDir ??\n path.dirname(path.dirname(commandLineOpts.input));\n\n const dependencyFile = path.join(\n commandLineOpts.buildDir,\n \"dependencies.json\",\n );\n if (!fs.existsSync(dependencyFile)) {\n await fs.promises.mkdir(commandLineOpts.buildDir, { recursive: true });\n }\n\n const importedLinkTypeIdsByApiName = externalImportedMetadata\n ? getImportedLinkTypeIdsByApiName(externalImportedMetadata)\n : undefined;\n\n const {\n ontologyIr,\n importedTypes,\n shapes,\n blockDataAddOn,\n importedInputPresets,\n backingDatasourceApiNames,\n backingDatasourceLinkApiNames,\n backingMediaSetNames,\n } = await loadOntology(\n commandLineOpts.input,\n apiNamespace,\n codegenDir,\n dependencyFile,\n functionsIrFile,\n commandLineOpts.randomnessKey,\n importedLinkTypeIdsByApiName,\n externalImportedMetadata,\n { targetEnvironment: commandLineOpts.targetEnvironment },\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 const importedMetadata =\n OntologyBlockDataToFullMetadataConverter.getFullMetadataFromBlockData(\n ontologyIr.importedOntology,\n undefined,\n ontologyIr.transitiveImportedOntology,\n );\n const directlyImportedInterfaceTypes = Object.values(\n ontologyIr.importedOntology.interfaceTypes,\n ).map(({ interfaceType }) => interfaceType.apiName);\n const importedMetadataPath = path.join(\n commandLineOpts.buildDir,\n \"oac-imported-metadata.json\",\n );\n await fs.promises.writeFile(\n importedMetadataPath,\n JSON.stringify(\n { ...importedMetadata, directlyImportedInterfaceTypes },\n null,\n 2,\n ),\n );\n consola.info(`Wrote oac-imported-metadata.json to ${importedMetadataPath}`);\n\n let valueTypeResults: BlockGeneratorResult[] = [];\n if (ontologyIr.valueTypes.length > 0) {\n valueTypeResults = await generateValueTypeBlockResults(\n ontologyIr.valueTypes,\n commandLineOpts.buildDir,\n commandLineOpts.randomnessKey,\n );\n }\n\n const directDatasourceGeneratorResults = (\n await Promise.all(\n Object.values(ontologyIr.ontology.objectTypes).map((objectType) =>\n generateDirectDatasourceBlockResult(\n objectType,\n commandLineOpts.buildDir,\n commandLineOpts.randomnessKey,\n ),\n ),\n )\n ).filter((result): result is BlockGeneratorResult => result !== undefined);\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[] = shapes.inputMappings;\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 =\n ReadableIdGenerator.getForDatasetOutput(apiName);\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 =\n ReadableIdGenerator.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 // Collect input_mapping_entries for link types with includeEmptyBackingDatasource\n for (const linkApiName of backingDatasourceLinkApiNames) {\n const linkTypeBlockData = findLinkTypeByApiName(\n ontologyIr.ontology.linkTypes,\n linkApiName,\n );\n if (!linkTypeBlockData) continue;\n\n const datasetName = `link.${linkApiName}`;\n\n // Map tabularDatasource\n const inputDsId = ReadableIdGenerator.getForDataset(datasetName);\n const outputDsId = ReadableIdGenerator.getForDatasetOutput(datasetName);\n if (shapes.inputShapes.has(inputDsId)) {\n ontologyInputMappingEntries.push({\n input: inputDsId,\n output: outputDsId,\n });\n }\n\n // Map columns from the datasource\n const ds = linkTypeBlockData.datasources[0]?.datasource;\n if (ds?.type === \"dataset\") {\n const columnNames = [\n ...Object.values(ds.dataset.objectTypeAPrimaryKeyMapping).map(String),\n ...Object.values(ds.dataset.objectTypeBPrimaryKeyMapping).map(String),\n ];\n for (const colName of columnNames) {\n const colInputId = ReadableIdGenerator.getForDatasetColumn(\n datasetName,\n colName,\n );\n const colOutputId = ReadableIdGenerator.getForDatasetColumnOutput(\n datasetName,\n colName,\n );\n if (shapes.inputShapes.has(colInputId)) {\n ontologyInputMappingEntries.push({\n input: colInputId,\n output: colOutputId,\n });\n }\n }\n }\n }\n\n for (const mediaSetName of backingMediaSetNames) {\n const inputReadableId =\n ReadableIdGenerator.getForMediaSetView(mediaSetName);\n if (shapes.inputShapes.has(inputReadableId)) {\n ontologyInputMappingEntries.push({\n input: inputReadableId,\n output: ReadableIdGenerator.getForMediaSetViewOutput(mediaSetName),\n });\n }\n }\n\n ontologyInputMappingEntries.push(\n ...getValueTypeInternalMappings(ontologyIr.valueTypes, shapes.inputShapes),\n );\n\n // Generate backing datasource BlockGeneratorResults for objects with includeEmptyBackingDatasource\n const backingDsGeneratorResults = await Promise.all(\n backingDatasourceApiNames\n .filter((apiName) => {\n const objectTypeBlockData = findObjectTypeByApiName(\n ontologyIr.ontology.objectTypes,\n apiName,\n );\n return objectTypeBlockData !== undefined;\n })\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 // Generate backing datasource BlockGeneratorResults for link types with includeEmptyBackingDatasource\n const backingDsLinkGeneratorResults = await Promise.all(\n backingDatasourceLinkApiNames\n .map((linkApiName) => {\n const linkTypeBlockData = findLinkTypeByApiName(\n ontologyIr.ontology.linkTypes,\n linkApiName,\n );\n if (!linkTypeBlockData) return undefined;\n consola.info(\n `Generating backing datasource BlockGeneratorResult for link ${linkApiName}...`,\n );\n return generateBackingDatasetBlockResultForLink(\n linkTypeBlockData,\n linkApiName,\n ontologyIr.ontology.objectTypes,\n commandLineOpts.buildDir,\n commandLineOpts.randomnessKey,\n );\n })\n .filter((p): p is Promise<BlockGeneratorResult> => p !== undefined),\n );\n\n const backingMediaSetGeneratorResults = await Promise.all(\n backingMediaSetNames.map((mediaSetName) => {\n consola.info(\n `Generating backing Media Set BlockGeneratorResult for ${mediaSetName}...`,\n );\n return generateBackingMediaSetBlockResult(\n mediaSetName,\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 input_presets: Object.fromEntries(importedInputPresets),\n outputs: Object.fromEntries(shapes.outputShapes),\n input_mapping_entries: ontologyInputMappingEntries,\n external_recommendations: getExternalRecommendations(\n ontologyIr.importedOntology,\n ontologyIr.valueTypes,\n importedTypes,\n shapes.inputShapes,\n ),\n add_on_override: blockDataAddOn,\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 [\n blockGeneratorResult,\n ...directDatasourceGeneratorResults,\n ...backingDsGeneratorResults,\n ...backingDsLinkGeneratorResults,\n ...backingMediaSetGeneratorResults,\n ...valueTypeResults,\n ],\n null,\n 2,\n );\n await fs.promises.writeFile(commandLineOpts.output, blockGeneratorResultJson);\n consola.success(`BlockGeneratorResult written to ${commandLineOpts.output}`);\n consola.info(`Block data directory: ${blockDataDir}`);\n\n if (valueTypeResults.length > 0) {\n const valueTypeResultsJson = JSON.stringify(valueTypeResults, null, 2);\n await fs.promises.writeFile(\n commandLineOpts.valueTypesOutput,\n valueTypeResultsJson,\n );\n consola.success(\n `Value type BlockGeneratorResult written to ${commandLineOpts.valueTypesOutput}`,\n );\n }\n}\n\nasync function loadOntology(\n input: string,\n apiNamespace: string,\n outputDir?: string,\n dependencyFile?: string,\n functionsIrFile?: string,\n randomnessKey?: string,\n importedLinkTypeIdsByApiName?: LinkTypeIdsByApiName,\n externalImportedMetadata?: ExternalImportedOntologyMetadata,\n packagingOptions?: OntologyPackagingOptions,\n) {\n const result = await defineOntologyV2(\n apiNamespace,\n async () => await import(pathToFileURL(input).href),\n outputDir,\n dependencyFile,\n functionsIrFile,\n randomnessKey,\n importedLinkTypeIdsByApiName,\n externalImportedMetadata,\n packagingOptions,\n );\n return result;\n}\n\nfunction getImportedLinkTypeIdsByApiName(\n metadata: ExternalImportedOntologyMetadata,\n): LinkTypeIdsByApiName {\n const result: Record<string, string> = {};\n for (const objectType of Object.values(metadata.objectTypes)) {\n for (const linkType of objectType.linkTypes) {\n const linkTypeId = metadata.linkTypeIdsByRid?.[linkType.linkTypeRid];\n if (linkTypeId !== undefined) {\n result[cleanAndValidateLinkTypeId(linkType.apiName)] = linkTypeId;\n }\n }\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\n/**\n * Find a LinkTypeBlockDataV2 by apiName within the ontology block data.\n */\nfunction findLinkTypeByApiName(\n linkTypes: Record<string, LinkTypeBlockDataV2>,\n apiName: string,\n): LinkTypeBlockDataV2 | undefined {\n const linkTypeId = cleanAndValidateLinkTypeId(apiName);\n return Object.values(linkTypes).find((lt) => lt.linkType.id === linkTypeId);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,EAAE,MAAM,SAAS;AAC7B,OAAO,KAAKC,IAAI,MAAM,WAAW;AACjC,SAASC,aAAa,QAAQ,UAAU;AAMxC,SACEC,wCAAwC,EACxCC,iCAAiC,QAC5B,uCAAuC;AAC9C,SAASC,0BAA0B,QAAQ,oCAAoC;AAC/E,SAASC,0BAA0B,QAAQ,aAAa;AACxD,SAASC,OAAO,QAAQ,SAAS;AACjC,OAAOC,SAAS,MAAM,gBAAgB;AACtC,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,OAAO,QAAQ,eAAe;AAEvC,SACEC,gBAAgB,QAEX,4BAA4B;AACnC,SAASC,0BAA0B,QAAQ,oDAAoD;AAK/F,SAASC,mBAAmB,QAAQ,wBAAwB;AAC5D,SACEC,iCAAiC,EACjCC,wCAAwC,EACxCC,wBAAwB,QACnB,6BAA6B;AACpC,SAASC,kCAAkC,QAAQ,8BAA8B;AACjF,SAASC,mCAAmC,QAAQ,+BAA+B;AACnF,SACEC,6BAA6B,EAC7BC,4BAA4B,QACvB,oCAAoC;AAI3C,MAAMC,iBAAiB,GAAG,gCAAgC;AAC1D,MAAMC,SAAS,GACb,iEAAiE;AAEnE,eAAe,eAAeC,IAAIA,CAChCC,IAAc,GAAGC,OAAO,CAACC,IAAI,EACd;EACfnB,OAAO,CAACoB,GAAG,CAAC,iDAAiD,CAAC;EAE9D,MAAMC,eAcL,GAAG,MAAMnB,KAAK,CAACC,OAAO,CAACc,IAAI,CAAC,CAAC,CAC3BK,OAAO,CAAC,0DAA+B,EAAE,CAAC,CAC1CC,IAAI,CAACC,IAAI,CAACC,GAAG,CAAC,GAAG,EAAEvB,KAAK,CAAC,CAAC,CAACwB,aAAa,CAAC,CAAC,CAAC,CAAC,CAC5CC,MAAM,CAAC,CAAC,CACRC,IAAI,CAAC,CAAC,CACNC,OAAO,CAAC;IACPC,KAAK,EAAE;MACLC,KAAK,EAAE,GAAG;MACVC,QAAQ,EAAE,YAAY;MACtBC,IAAI,EAAE,QAAQ;MACdC,OAAO,EAAE,uBAAuB;MAChCC,MAAM,EAAEzC,IAAI,CAAC0C;IACf,CAAC;IACDC,MAAM,EAAE;MACNN,KAAK,EAAE,GAAG;MACVC,QAAQ,EAAE,oDAAoD;MAC9DC,IAAI,EAAE,QAAQ;MACdC,OAAO,EAAE,mCAAmC;MAC5CC,MAAM,EAAEzC,IAAI,CAAC0C;IACf,CAAC;IACDE,gBAAgB,EAAE;MAChBN,QAAQ,EAAE,uDAAuD;MACjEC,IAAI,EAAE,QAAQ;MACdC,OAAO,EAAE,+CAA+C;MACxDC,MAAM,EAAEzC,IAAI,CAAC0C;IACf,CAAC;IACDG,YAAY,EAAE;MACZP,QAAQ,EAAE,+CAA+C;MACzDC,IAAI,EAAE,QAAQ;MACdC,OAAO,EAAE;IACX,CAAC;IACDM,iBAAiB,EAAE;MACjBR,QAAQ,EAAE,yDAAyD;MACnES,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAU;MACnCP,OAAO,EAAE;IACX,CAAC;IACDQ,QAAQ,EAAE;MACRX,KAAK,EAAE,GAAG;MACVC,QAAQ,EAAE,2BAA2B;MACrCC,IAAI,EAAE,QAAQ;MACdC,OAAO,EAAE,QAAQ;MACjBC,MAAM,EAAEzC,IAAI,CAAC0C;IACf,CAAC;IACDO,UAAU,EAAE;MACVZ,KAAK,EAAE,GAAG;MACVC,QAAQ,EACN,wGAAwG;MAC1GC,IAAI,EAAE,QAAQ;MACdE,MAAM,EAAEzC,IAAI,CAAC0C;IACf,CAAC;IACDQ,sBAAsB,EAAE;MACtBb,KAAK,EAAE,GAAG;MACVC,QAAQ,EACN,iIAAiI;MACnIC,IAAI,EAAE,QAAQ;MACdE,MAAM,EAAEzC,IAAI,CAAC0C;IACf,CAAC;IACDS,YAAY,EAAE;MACZZ,IAAI,EAAE,QAAQ;MACdE,MAAM,EAAEzC,IAAI,CAAC0C;IACf,CAAC;IACDU,cAAc,EAAE;MACdb,IAAI,EAAE,QAAQ;MACdE,MAAM,EAAEzC,IAAI,CAAC0C;IACf,CAAC;IACDW,qBAAqB,EAAE;MACrBd,IAAI,EAAE,QAAQ;MACdE,MAAM,EAAEzC,IAAI,CAAC0C;IACf,CAAC;IACDY,aAAa,EAAE;MACbhB,QAAQ,EAAE,6CAA6C;MACvDC,IAAI,EAAE;IACR,CAAC;IACD,aAAa,EAAE;MACbD,QAAQ,EACN,0EAA0E;MAC5EC,IAAI,EAAE,QAAQ;MACdE,MAAM,EAAEzC,IAAI,CAAC0C;IACf;EACF,CAAC,CAAC,CACDa,UAAU,CAAC,CAAC;EAEf,IAAIV,YAAY,GAAG,EAAE;EACrB,IAAIlB,eAAe,CAACkB,YAAY,CAACW,MAAM,KAAK,CAAC,EAAE;IAC7CX,YAAY,GACVlB,eAAe,CAACkB,YAAY,CAACY,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAC1C9B,eAAe,CAACkB,YAAY,GAAG,GAAG,GAClClB,eAAe,CAACkB,YAAY;IAClC,EAAUA,YAAY,CAACW,MAAM,GAAG,IAAI,IAAAhC,OAAA,CAAAkC,GAAA,CAAAC,QAAA,oBAApCpD,SAAS,QAA6B,4BAA4B,IAAlEA,SAAS;IACT,CACEa,iBAAiB,CAACwC,IAAI,CAACf,YAAY,CAAC,GAAArB,OAAA,CAAAkC,GAAA,CAAAC,QAAA,oBADtCpD,SAAS,QAEP,sFAAsF,IAFxFA,SAAS;EAIX;EACAD,OAAO,CAACuD,IAAI,CAAC,yBAAyBlC,eAAe,CAACS,KAAK,EAAE,CAAC;EAE9D,IAAIT,eAAe,CAAC2B,aAAa,KAAKQ,SAAS,EAAE;IAC/C,CACEzC,SAAS,CAACuC,IAAI,CAACjC,eAAe,CAAC2B,aAAa,CAAC,GAAA9B,OAAA,CAAAkC,GAAA,CAAAC,QAAA,oBAD/CpD,SAAS,QAEP,uFAAuF,IAFzFA,SAAS;EAIX;EAEA,MAAMwD,wBAAwB,GAC5BpC,eAAe,CAACqC,UAAU,IAAIjE,EAAE,CAACkE,UAAU,CAACtC,eAAe,CAACqC,UAAU,CAAC,GAClEE,IAAI,CAACC,KAAK,CACT,MAAMpE,EAAE,CAACqE,QAAQ,CAACC,QAAQ,CAAC1C,eAAe,CAACqC,UAAU,EAAE,OAAO,CAChE,CAAC,GACDF,SAAS;EAEf,IAAIQ,eAAe;EACnB,IAAI3C,eAAe,CAACuB,sBAAsB,EAAE;IAC1C5C,OAAO,CAACuD,IAAI,CACV,qCAAqClC,eAAe,CAACuB,sBAAsB,EAC7E,CAAC;IACD,MAAMqB,WAAW,GAAG,MAAMxE,EAAE,CAACqE,QAAQ,CAACC,QAAQ,CAC5C1C,eAAe,CAACuB,sBAAsB,EACtC,OACF,CAAC;IACD,IAAIsB,aAAsB;IAC1B,IAAI;MACFA,aAAa,GAAGN,IAAI,CAACC,KAAK,CAACI,WAAW,CAAC;IACzC,CAAC,CAAC,MAAM;MACNjE,OAAO,CAACmE,KAAK,CACX,6BAA6B9C,eAAe,CAACuB,sBAAsB,EACrE,CAAC;MACD1B,OAAO,CAACkD,IAAI,CAAC,CAAC,CAAC;IACjB;IACA,MAAMC,eAAe,GACnBvE,0BAA0B,CAACwE,mCAAmC,CAC5DJ,aAAa,EAGbT,wBACF,CAAC;IACH,EACEpC,eAAe,CAACwB,YAAY,IAAIxB,eAAe,CAACyB,cAAc,IAAA5B,OAAA,CAAAkC,GAAA,CAAAC,QAAA,oBADhEpD,SAAS,QAEP,oFAAoF,IAFtFA,SAAS;IAIT,MAAMJ,iCAAiC,CAAC0E,2BAA2B,CACjElD,eAAe,CAACwB,YAAY,EAC5BxB,eAAe,CAACyB,cAAc,EAC9BzB,eAAe,CAAC0B,qBAAqB,EACrCsB,eACF,CAAC;IACDL,eAAe,GAAG3C,eAAe,CAAC0B,qBAAqB;IACvD/C,OAAO,CAACuD,IAAI,CACV,wDAAwDlC,eAAe,CAAC0B,qBAAqB,EAC/F,CAAC;EACH;;EAEA;EACA,MAAMJ,UAAU,GACdtB,eAAe,CAACsB,UAAU,IAC1BjD,IAAI,CAAC8E,OAAO,CAAC9E,IAAI,CAAC8E,OAAO,CAACnD,eAAe,CAACS,KAAK,CAAC,CAAC;EAEnD,MAAM2C,cAAc,GAAG/E,IAAI,CAACgF,IAAI,CAC9BrD,eAAe,CAACqB,QAAQ,EACxB,mBACF,CAAC;EACD,IAAI,CAACjD,EAAE,CAACkE,UAAU,CAACc,cAAc,CAAC,EAAE;IAClC,MAAMhF,EAAE,CAACqE,QAAQ,CAACa,KAAK,CAACtD,eAAe,CAACqB,QAAQ,EAAE;MAAEkC,SAAS,EAAE;IAAK,CAAC,CAAC;EACxE;EAEA,MAAMC,4BAA4B,GAAGpB,wBAAwB,GACzDqB,+BAA+B,CAACrB,wBAAwB,CAAC,GACzDD,SAAS;EAEb,MAAM;IACJuB,UAAU;IACVC,aAAa;IACbC,MAAM;IACNC,cAAc;IACdC,oBAAoB;IACpBC,yBAAyB;IACzBC,6BAA6B;IAC7BC;EACF,CAAC,GAAG,MAAMC,YAAY,CACpBlE,eAAe,CAACS,KAAK,EACrBS,YAAY,EACZI,UAAU,EACV8B,cAAc,EACdT,eAAe,EACf3C,eAAe,CAAC2B,aAAa,EAC7B6B,4BAA4B,EAC5BpB,wBAAwB,EACxB;IAAEjB,iBAAiB,EAAEnB,eAAe,CAACmB;EAAkB,CACzD,CAAC;;EAED;EACA,MAAMgD,YAAY,GAAG9F,IAAI,CAACgF,IAAI,CAACrD,eAAe,CAACqB,QAAQ,EAAE,iBAAiB,CAAC;EAC3E,IAAI,CAACjD,EAAE,CAACkE,UAAU,CAAC6B,YAAY,CAAC,EAAE;IAChC,MAAM/F,EAAE,CAACqE,QAAQ,CAACa,KAAK,CAACa,YAAY,EAAE;MAAEZ,SAAS,EAAE;IAAK,CAAC,CAAC;EAC5D;;EAEA;EACA,MAAMa,gBAAgB,GAAG/F,IAAI,CAACgF,IAAI,CAACc,YAAY,EAAE,eAAe,CAAC;EACjE,MAAME,YAAY,GAAG9B,IAAI,CAAC+B,SAAS,CAACZ,UAAU,CAACa,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;EACjE,MAAMnG,EAAE,CAACqE,QAAQ,CAAC+B,SAAS,CAACJ,gBAAgB,EAAEC,YAAY,CAAC;EAC3D1F,OAAO,CAACuD,IAAI,CAAC,0BAA0BkC,gBAAgB,EAAE,CAAC;EAE1D,MAAMK,gBAAgB,GACpBlG,wCAAwC,CAACmG,4BAA4B,CACnEhB,UAAU,CAACiB,gBAAgB,EAC3BxC,SAAS,EACTuB,UAAU,CAACkB,0BACb,CAAC;EACH,MAAMC,8BAA8B,GAAGC,MAAM,CAACC,MAAM,CAClDrB,UAAU,CAACiB,gBAAgB,CAACK,cAC9B,CAAC,CAACC,GAAG,CAAC,CAAC;IAAEC;EAAc,CAAC,KAAKA,aAAa,CAACC,OAAO,CAAC;EACnD,MAAMC,oBAAoB,GAAG/G,IAAI,CAACgF,IAAI,CACpCrD,eAAe,CAACqB,QAAQ,EACxB,4BACF,CAAC;EACD,MAAMjD,EAAE,CAACqE,QAAQ,CAAC+B,SAAS,CACzBY,oBAAoB,EACpB7C,IAAI,CAAC+B,SAAS,CACZ;IAAE,GAAGG,gBAAgB;IAAEI;EAA+B,CAAC,EACvD,IAAI,EACJ,CACF,CACF,CAAC;EACDlG,OAAO,CAACuD,IAAI,CAAC,uCAAuCkD,oBAAoB,EAAE,CAAC;EAE3E,IAAIC,gBAAwC,GAAG,EAAE;EACjD,IAAI3B,UAAU,CAAC4B,UAAU,CAACzD,MAAM,GAAG,CAAC,EAAE;IACpCwD,gBAAgB,GAAG,MAAM9F,6BAA6B,CACpDmE,UAAU,CAAC4B,UAAU,EACrBtF,eAAe,CAACqB,QAAQ,EACxBrB,eAAe,CAAC2B,aAClB,CAAC;EACH;EAEA,MAAM4D,gCAAgC,GAAG,CACvC,MAAMC,OAAO,CAACC,GAAG,CACfX,MAAM,CAACC,MAAM,CAACrB,UAAU,CAACa,QAAQ,CAACmB,WAAW,CAAC,CAACT,GAAG,CAAEU,UAAU,IAC5DrG,mCAAmC,CACjCqG,UAAU,EACV3F,eAAe,CAACqB,QAAQ,EACxBrB,eAAe,CAAC2B,aAClB,CACF,CACF,CAAC,EACDiE,MAAM,CAAEC,MAAM,IAAqCA,MAAM,KAAK1D,SAAS,CAAC;;EAE1E;EACA;EACA,MAAM2D,2BAAgD,GAAGlC,MAAM,CAACmC,aAAa;EAE7E,KAAK,MAAMZ,OAAO,IAAIpB,yBAAyB,EAAE;IAC/C,MAAMiC,mBAAmB,GAAGC,uBAAuB,CACjDvC,UAAU,CAACa,QAAQ,CAACmB,WAAW,EAC/BP,OACF,CAAC;IACD,IAAI,CAACa,mBAAmB,EAAE;IAE1B,MAAME,gBAAgB,GAAG9G,wBAAwB,CAAC4G,mBAAmB,CAAC;;IAEtE;IACA;IACA,MAAMG,sBAAsB,GAAGlH,mBAAmB,CAACmH,aAAa,CAACjB,OAAO,CAAC;IACzE,MAAMkB,uBAAuB,GAC3BpH,mBAAmB,CAACqH,mBAAmB,CAACnB,OAAO,CAAC;IAClD,IAAIvB,MAAM,CAAC2C,WAAW,CAACC,GAAG,CAACL,sBAAsB,CAAC,EAAE;MAClDL,2BAA2B,CAACW,IAAI,CAAC;QAC/BhG,KAAK,EAAE0F,sBAAsB;QAC7BnF,MAAM,EAAEqF;MACV,CAAC,CAAC;IACJ;IAEA,KAAK,MAAMK,IAAI,IAAIR,gBAAgB,EAAE;MACnC,MAAMS,kBAAkB,GAAG1H,mBAAmB,CAAC2H,mBAAmB,CAChEzB,OAAO,EACPuB,IAAI,CAACvB,OACP,CAAC;MACD,MAAM0B,yBAAyB,GAC7B5H,mBAAmB,CAAC4H,yBAAyB,CAAC1B,OAAO,EAAEuB,IAAI,CAACvB,OAAQ,CAAC;MACvE,IAAIvB,MAAM,CAAC2C,WAAW,CAACC,GAAG,CAACG,kBAAkB,CAAC,EAAE;QAC9Cb,2BAA2B,CAACW,IAAI,CAAC;UAC/BhG,KAAK,EAAEkG,kBAAkB;UACzB3F,MAAM,EAAE6F;QACV,CAAC,CAAC;MACJ;IACF;EACF;;EAEA;EACA,KAAK,MAAMC,WAAW,IAAI9C,6BAA6B,EAAE;IACvD,MAAM+C,iBAAiB,GAAGC,qBAAqB,CAC7CtD,UAAU,CAACa,QAAQ,CAAC0C,SAAS,EAC7BH,WACF,CAAC;IACD,IAAI,CAACC,iBAAiB,EAAE;IAExB,MAAMG,WAAW,GAAG,QAAQJ,WAAW,EAAE;;IAEzC;IACA,MAAMK,SAAS,GAAGlI,mBAAmB,CAACmH,aAAa,CAACc,WAAW,CAAC;IAChE,MAAME,UAAU,GAAGnI,mBAAmB,CAACqH,mBAAmB,CAACY,WAAW,CAAC;IACvE,IAAItD,MAAM,CAAC2C,WAAW,CAACC,GAAG,CAACW,SAAS,CAAC,EAAE;MACrCrB,2BAA2B,CAACW,IAAI,CAAC;QAC/BhG,KAAK,EAAE0G,SAAS;QAChBnG,MAAM,EAAEoG;MACV,CAAC,CAAC;IACJ;;IAEA;IACA,MAAMC,EAAE,GAAGN,iBAAiB,CAACO,WAAW,CAAC,CAAC,CAAC,EAAEC,UAAU;IACvD,IAAIF,EAAE,EAAEzG,IAAI,KAAK,SAAS,EAAE;MAC1B,MAAM4G,WAAW,GAAG,CAClB,GAAG1C,MAAM,CAACC,MAAM,CAACsC,EAAE,CAACI,OAAO,CAACC,4BAA4B,CAAC,CAACzC,GAAG,CAAC0C,MAAM,CAAC,EACrE,GAAG7C,MAAM,CAACC,MAAM,CAACsC,EAAE,CAACI,OAAO,CAACG,4BAA4B,CAAC,CAAC3C,GAAG,CAAC0C,MAAM,CAAC,CACtE;MACD,KAAK,MAAME,OAAO,IAAIL,WAAW,EAAE;QACjC,MAAMM,UAAU,GAAG7I,mBAAmB,CAAC2H,mBAAmB,CACxDM,WAAW,EACXW,OACF,CAAC;QACD,MAAME,WAAW,GAAG9I,mBAAmB,CAAC4H,yBAAyB,CAC/DK,WAAW,EACXW,OACF,CAAC;QACD,IAAIjE,MAAM,CAAC2C,WAAW,CAACC,GAAG,CAACsB,UAAU,CAAC,EAAE;UACtChC,2BAA2B,CAACW,IAAI,CAAC;YAC/BhG,KAAK,EAAEqH,UAAU;YACjB9G,MAAM,EAAE+G;UACV,CAAC,CAAC;QACJ;MACF;IACF;EACF;EAEA,KAAK,MAAMC,YAAY,IAAI/D,oBAAoB,EAAE;IAC/C,MAAMgE,eAAe,GACnBhJ,mBAAmB,CAACiJ,kBAAkB,CAACF,YAAY,CAAC;IACtD,IAAIpE,MAAM,CAAC2C,WAAW,CAACC,GAAG,CAACyB,eAAe,CAAC,EAAE;MAC3CnC,2BAA2B,CAACW,IAAI,CAAC;QAC/BhG,KAAK,EAAEwH,eAAe;QACtBjH,MAAM,EAAE/B,mBAAmB,CAACkJ,wBAAwB,CAACH,YAAY;MACnE,CAAC,CAAC;IACJ;EACF;EAEAlC,2BAA2B,CAACW,IAAI,CAC9B,GAAGjH,4BAA4B,CAACkE,UAAU,CAAC4B,UAAU,EAAE1B,MAAM,CAAC2C,WAAW,CAC3E,CAAC;;EAED;EACA,MAAM6B,yBAAyB,GAAG,MAAM5C,OAAO,CAACC,GAAG,CACjD1B,yBAAyB,CACtB6B,MAAM,CAAET,OAAO,IAAK;IACnB,MAAMa,mBAAmB,GAAGC,uBAAuB,CACjDvC,UAAU,CAACa,QAAQ,CAACmB,WAAW,EAC/BP,OACF,CAAC;IACD,OAAOa,mBAAmB,KAAK7D,SAAS;EAC1C,CAAC,CAAC,CACD8C,GAAG,CAAC,MAAOE,OAAO,IAAK;IACtB,MAAMa,mBAAmB,GAAGC,uBAAuB,CACjDvC,UAAU,CAACa,QAAQ,CAACmB,WAAW,EAC/BP,OACF,CAAC;IACDxG,OAAO,CAACuD,IAAI,CACV,0DAA0DiD,OAAO,KACnE,CAAC;IAED,OAAO,MAAMjG,iCAAiC,CAC5C8G,mBAAmB,EACnBhG,eAAe,CAACqB,QAAQ,EACxBrB,eAAe,CAAC2B,aAClB,CAAC;EACH,CAAC,CACL,CAAC;;EAED;EACA,MAAM0G,6BAA6B,GAAG,MAAM7C,OAAO,CAACC,GAAG,CACrDzB,6BAA6B,CAC1BiB,GAAG,CAAE6B,WAAW,IAAK;IACpB,MAAMC,iBAAiB,GAAGC,qBAAqB,CAC7CtD,UAAU,CAACa,QAAQ,CAAC0C,SAAS,EAC7BH,WACF,CAAC;IACD,IAAI,CAACC,iBAAiB,EAAE,OAAO5E,SAAS;IACxCxD,OAAO,CAACuD,IAAI,CACV,+DAA+D4E,WAAW,KAC5E,CAAC;IACD,OAAO3H,wCAAwC,CAC7C4H,iBAAiB,EACjBD,WAAW,EACXpD,UAAU,CAACa,QAAQ,CAACmB,WAAW,EAC/B1F,eAAe,CAACqB,QAAQ,EACxBrB,eAAe,CAAC2B,aAClB,CAAC;EACH,CAAC,CAAC,CACDiE,MAAM,CAAE0C,CAAC,IAAyCA,CAAC,KAAKnG,SAAS,CACtE,CAAC;EAED,MAAMoG,+BAA+B,GAAG,MAAM/C,OAAO,CAACC,GAAG,CACvDxB,oBAAoB,CAACgB,GAAG,CAAE+C,YAAY,IAAK;IACzCrJ,OAAO,CAACuD,IAAI,CACV,yDAAyD8F,YAAY,KACvE,CAAC;IACD,OAAO3I,kCAAkC,CACvC2I,YAAY,EACZhI,eAAe,CAACqB,QAAQ,EACxBrB,eAAe,CAAC2B,aAClB,CAAC;EACH,CAAC,CACH,CAAC;;EAED;EACA,MAAM6G,oBAA0C,GAAG;IACjDC,gBAAgB,EAAE,UAAU;IAC5BC,oBAAoB,EAAEvE,YAAY;IAClCwE,uBAAuB,EAAExG,SAAS;IAClCyG,yBAAyB,EAAEzG,SAAS;IACpC0G,MAAM,EAAE/D,MAAM,CAACgE,WAAW,CAAClF,MAAM,CAAC2C,WAAW,CAAC;IAC9CwC,aAAa,EAAEjE,MAAM,CAACgE,WAAW,CAAChF,oBAAoB,CAAC;IACvDkF,OAAO,EAAElE,MAAM,CAACgE,WAAW,CAAClF,MAAM,CAACqF,YAAY,CAAC;IAChDC,qBAAqB,EAAEpD,2BAA2B;IAClDqD,wBAAwB,EAAEnK,0BAA0B,CAClD0E,UAAU,CAACiB,gBAAgB,EAC3BjB,UAAU,CAAC4B,UAAU,EACrB3B,aAAa,EACbC,MAAM,CAAC2C,WACT,CAAC;IACD6C,eAAe,EAAEvF,cAAc;IAC/BwF,oBAAoB,EAAEvE,MAAM,CAACgE,WAAW,CAAClF,MAAM,CAAC0F,kBAAkB,CAAC;IACnEC,UAAU,EAAE;EACd,CAAC;;EAED;EACA,MAAMC,wBAAwB,GAAGjH,IAAI,CAAC+B,SAAS,CAC7C,CACEkE,oBAAoB,EACpB,GAAGjD,gCAAgC,EACnC,GAAG6C,yBAAyB,EAC5B,GAAGC,6BAA6B,EAChC,GAAGE,+BAA+B,EAClC,GAAGlD,gBAAgB,CACpB,EACD,IAAI,EACJ,CACF,CAAC;EACD,MAAMjH,EAAE,CAACqE,QAAQ,CAAC+B,SAAS,CAACxE,eAAe,CAACgB,MAAM,EAAEwI,wBAAwB,CAAC;EAC7E7K,OAAO,CAAC8K,OAAO,CAAC,mCAAmCzJ,eAAe,CAACgB,MAAM,EAAE,CAAC;EAC5ErC,OAAO,CAACuD,IAAI,CAAC,yBAAyBiC,YAAY,EAAE,CAAC;EAErD,IAAIkB,gBAAgB,CAACxD,MAAM,GAAG,CAAC,EAAE;IAC/B,MAAM6H,oBAAoB,GAAGnH,IAAI,CAAC+B,SAAS,CAACe,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,MAAMjH,EAAE,CAACqE,QAAQ,CAAC+B,SAAS,CACzBxE,eAAe,CAACiB,gBAAgB,EAChCyI,oBACF,CAAC;IACD/K,OAAO,CAAC8K,OAAO,CACb,8CAA8CzJ,eAAe,CAACiB,gBAAgB,EAChF,CAAC;EACH;AACF;AAEA,eAAeiD,YAAYA,CACzBzD,KAAa,EACbS,YAAoB,EACpByI,SAAkB,EAClBvG,cAAuB,EACvBT,eAAwB,EACxBhB,aAAsB,EACtB6B,4BAAmD,EACnDpB,wBAA2D,EAC3DwH,gBAA2C,EAC3C;EACA,MAAM/D,MAAM,GAAG,MAAM9G,gBAAgB,CACnCmC,YAAY,EACZ,YAAY,MAAM,MAAM,CAAC5C,aAAa,CAACmC,KAAK,CAAC,CAACoJ,IAAI,CAAC,EACnDF,SAAS,EACTvG,cAAc,EACdT,eAAe,EACfhB,aAAa,EACb6B,4BAA4B,EAC5BpB,wBAAwB,EACxBwH,gBACF,CAAC;EACD,OAAO/D,MAAM;AACf;AAEA,SAASpC,+BAA+BA,CACtCqG,QAA0C,EACpB;EACtB,MAAMjE,MAA8B,GAAG,CAAC,CAAC;EACzC,KAAK,MAAMF,UAAU,IAAIb,MAAM,CAACC,MAAM,CAAC+E,QAAQ,CAACpE,WAAW,CAAC,EAAE;IAC5D,KAAK,MAAMqE,QAAQ,IAAIpE,UAAU,CAACsB,SAAS,EAAE;MAC3C,MAAM+C,UAAU,GAAGF,QAAQ,CAACG,gBAAgB,GAAGF,QAAQ,CAACG,WAAW,CAAC;MACpE,IAAIF,UAAU,KAAK7H,SAAS,EAAE;QAC5B0D,MAAM,CAACnH,0BAA0B,CAACqL,QAAQ,CAAC5E,OAAO,CAAC,CAAC,GAAG6E,UAAU;MACnE;IACF;EACF;EACA,OAAOnE,MAAM;AACf;;AAEA;AACA;AACA;AACA,SAASI,uBAAuBA,CAC9BP,WAAkD,EAClDP,OAAe,EACoB;EACnC,OAAOL,MAAM,CAACC,MAAM,CAACW,WAAW,CAAC,CAACyE,IAAI,CACnCnE,mBAAmB,IAAKA,mBAAmB,CAACL,UAAU,CAACR,OAAO,KAAKA,OACtE,CAAC;AACH;;AAEA;AACA;AACA;AACA,SAAS6B,qBAAqBA,CAC5BC,SAA8C,EAC9C9B,OAAe,EACkB;EACjC,MAAM6E,UAAU,GAAGtL,0BAA0B,CAACyG,OAAO,CAAC;EACtD,OAAOL,MAAM,CAACC,MAAM,CAACkC,SAAS,CAAC,CAACkD,IAAI,CAAEC,EAAE,IAAKA,EAAE,CAACL,QAAQ,CAACM,EAAE,KAAKL,UAAU,CAAC;AAC7E","ignoreList":[]}
@@ -107,6 +107,69 @@ export function convertDatasourceDefinition(objectType, properties, ridGenerator
107
107
  };
108
108
  }
109
109
  }
110
+
111
+ /** Convert the primary datasource emitted by maker, preserving its cloud identity. */
112
+ export function convertDatasourceForEdge(source, objectApiName) {
113
+ const definition = source.datasource;
114
+ let direct;
115
+ switch (definition.type) {
116
+ case "direct":
117
+ case "editsOnly":
118
+ return source;
119
+ case "datasetV2":
120
+ case "datasetV3":
121
+ {
122
+ const dataset = definition.type === "datasetV2" ? definition.datasetV2 : definition.datasetV3;
123
+ direct = {
124
+ directSourceRid: dataset.datasetRid,
125
+ propertyMapping: dataset.propertyMapping,
126
+ propertySecurityGroups: definition.type === "datasetV3" ? definition.datasetV3.propertySecurityGroups : undefined
127
+ };
128
+ break;
129
+ }
130
+ case "streamV2":
131
+ direct = {
132
+ directSourceRid: definition.streamV2.streamLocator.streamLocatorRid,
133
+ propertyMapping: Object.fromEntries(Object.entries(definition.streamV2.propertyMapping).map(([property, column]) => [property, {
134
+ type: "column",
135
+ column
136
+ }])),
137
+ propertySecurityGroups: definition.streamV2.propertySecurityGroups
138
+ };
139
+ break;
140
+ default:
141
+ throw new Error(`Cannot package object "${objectApiName}" datasource "${source.rid}" for edge: unsupported datasource type "${definition.type}" with PSG v2 packaging.`);
142
+ }
143
+ return {
144
+ ...source,
145
+ datasource: {
146
+ type: "direct",
147
+ direct: {
148
+ ...direct,
149
+ propertySecurityGroups: direct.propertySecurityGroups?.groups.length ? direct.propertySecurityGroups : {
150
+ groups: [{
151
+ // Match OMS's stable PSG identity for a remapped datasource.
152
+ rid: source.rid.replace(".datasource.", ".property-security-group."),
153
+ properties: Object.keys(direct.propertyMapping),
154
+ type: {
155
+ type: "primaryKey",
156
+ primaryKey: {}
157
+ },
158
+ security: {
159
+ type: "mandatoryOnly",
160
+ mandatoryOnly: {
161
+ policy: {
162
+ markings: [],
163
+ assumedMarkings: []
164
+ }
165
+ }
166
+ }
167
+ }]
168
+ }
169
+ }
170
+ }
171
+ };
172
+ }
110
173
  function convertPropertySecurityGroups(ds, properties, primaryKeyPropertyApiName, objectTypeApiName, ridGenerator) {
111
174
  if (!ds || !("objectSecurityPolicy" in ds) && !("propertySecurityGroups" in ds)) {
112
175
  // Default security group - use property RIDs
@@ -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","generateDatasetLocator","datasetV2","datasetRid","directDatasourceLocator","generateDirectDatasourceLocator","direct","directSourceRid","convertPropertySecurityGroups","primaryKeyPropertyApiName","datasetLocator","some","objectSecurityPolicy","datasetV3","objectTypeApiName","propertyRids","groups","generatePropertySecurityGroupRid","security","granular","viewPolicy","granularPolicyCondition","and","conditions","additionalMandatory","markings","assumedMarkings","primaryKey","validPropertyNames","usedPropertyApiNames","forEach","psg","propertyName","has","process","env","NODE_ENV","name","add","propertyApiNameToRid","Map","set","objectSecurityPolicyGroup","convertGranularPolicy","granularPolicy","appliedMarkings","filter","get","property","convertSecurityCondition","keys","condition","c","or","not","convertSecurityProperty","comparison","left","convertSecurityComparisonValue","right","operator","userProperty","groupIds","constant","strings","value","otherValue","string","groupId","getGroupIds","put","getForGroup","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 SecurityGroupComparisonValue,\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\";\n\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\", \"direct\"].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((prop) => [\n ridGenerator.generatePropertyRid(prop.apiName, objectType.apiName),\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 \"direct\":\n const directDatasourceLocator =\n ridGenerator.generateDirectDatasourceLocator(\n objectType.apiName,\n getColumnNames(properties),\n \"master\",\n );\n\n return {\n type: \"direct\",\n direct: {\n directSourceRid: directDatasourceLocator.rid,\n propertyMapping: buildPropertyMapping(\n properties,\n objectType.apiName,\n ridGenerator,\n ),\n propertySecurityGroups: convertPropertySecurityGroups(\n baseDatasource,\n properties,\n objectType.primaryKeyPropertyApiName,\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(\n (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.generatePropertySecurityGroupRid(\n \"defaultObjectSecurityPolicy\",\n ),\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 ds.propertySecurityGroups?.forEach((psg) => {\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(\n (apiName) => 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 }\n return {\n type: \"and\",\n and: {\n conditions: condition.and.conditions.map((c) =>\n convertSecurityCondition(c, ridGenerator, objectTypeApiName),\n ),\n },\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 }\n return {\n type: \"or\",\n or: {\n conditions: condition.or.conditions.map((c) =>\n convertSecurityCondition(c, ridGenerator, objectTypeApiName),\n ),\n },\n };\n case \"not\":\n return {\n type: \"not\",\n not: {\n condition: convertSecurityCondition(\n condition.not.condition,\n ridGenerator,\n objectTypeApiName,\n ),\n },\n };\n case \"markings\":\n return {\n type: \"markings\",\n markings: {\n property: convertSecurityProperty(\n condition.markings.property,\n ridGenerator,\n objectTypeApiName,\n ),\n },\n };\n case \"comparison\":\n return {\n type: \"comparison\",\n comparison: {\n ...condition.comparison,\n left: convertSecurityComparisonValue(\n condition.comparison.left,\n condition.comparison.right,\n ridGenerator,\n objectTypeApiName,\n ),\n right: convertSecurityComparisonValue(\n condition.comparison.right,\n condition.comparison.left,\n ridGenerator,\n objectTypeApiName,\n ),\n },\n };\n case \"markingProperty\":\n return {\n type: \"markings\",\n markings: {\n property: convertSecurityProperty(\n condition.property,\n ridGenerator,\n objectTypeApiName,\n ),\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: convertSecurityProperty(\n condition.property,\n ridGenerator,\n objectTypeApiName,\n ),\n },\n },\n };\n case \"group\":\n return convertSecurityCondition(\n {\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: [condition.name],\n },\n },\n },\n },\n ridGenerator,\n objectTypeApiName,\n );\n\n default:\n return condition;\n }\n}\n\nfunction convertSecurityComparisonValue(\n value: SecurityGroupComparisonValue,\n otherValue: SecurityGroupComparisonValue,\n ridGenerator?: OntologyRidGenerator,\n objectTypeApiName?: string,\n): SecurityGroupComparisonValue {\n if (\n value.type === \"constant\" &&\n otherValue.type === \"userProperty\" &&\n otherValue.userProperty.type === \"groupIds\"\n ) {\n let groupIds: string[] = [];\n\n if (value.constant.type === \"string\") {\n groupIds = [value.constant.string];\n } else if (value.constant.type === \"strings\") {\n groupIds = value.constant.strings;\n }\n\n for (const groupId of groupIds) {\n ridGenerator\n ?.getGroupIds()\n .put(ReadableIdGenerator.getForGroup(groupId), groupId);\n }\n }\n if (value.type !== \"property\") {\n return value;\n }\n return {\n type: \"property\",\n property: convertSecurityProperty(\n value.property,\n ridGenerator,\n objectTypeApiName,\n ),\n };\n}\n\nfunction convertSecurityProperty(\n property: string,\n ridGenerator?: OntologyRidGenerator,\n objectTypeApiName?: string,\n): string {\n return ridGenerator && objectTypeApiName\n ? ridGenerator.generatePropertyRid(property, objectTypeApiName)\n : property;\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)?)?$/u,\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","directDatasourceLocator","generateDirectDatasourceLocator","direct","directSourceRid","convertPropertySecurityGroups","primaryKeyPropertyApiName","datasetLocator","some","objectSecurityPolicy","datasetV3","convertDatasourceForEdge","source","objectApiName","definition","datasource","dataset","entries","property","column","Error","groups","length","replace","keys","primaryKey","security","mandatoryOnly","policy","markings","assumedMarkings","objectTypeApiName","propertyRids","generatePropertySecurityGroupRid","granular","viewPolicy","granularPolicyCondition","and","conditions","additionalMandatory","validPropertyNames","usedPropertyApiNames","forEach","psg","propertyName","has","process","env","NODE_ENV","name","add","propertyApiNameToRid","Map","set","objectSecurityPolicyGroup","convertGranularPolicy","granularPolicy","appliedMarkings","filter","get","convertSecurityCondition","condition","c","or","not","convertSecurityProperty","comparison","left","convertSecurityComparisonValue","right","operator","userProperty","groupIds","constant","strings","value","otherValue","string","groupId","getGroupIds","put","getForGroup","iso8601","match","weeks","parseInt","days","hours","minutes","seconds","totalHours","parts","push","join","propertyRid","editOnly","structMapping","struct","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 ObjectTypeDatasource,\n ObjectTypeDatasourceDefinition,\n PropertySecurityGroup,\n PropertySecurityGroups,\n PropertyTypeMappingInfo,\n RetentionPolicy,\n SecurityGroupComparisonValue,\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\";\n\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\", \"direct\"].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((prop) => [\n ridGenerator.generatePropertyRid(prop.apiName, objectType.apiName),\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 \"direct\":\n const directDatasourceLocator =\n ridGenerator.generateDirectDatasourceLocator(\n objectType.apiName,\n getColumnNames(properties),\n \"master\",\n );\n\n return {\n type: \"direct\",\n direct: {\n directSourceRid: directDatasourceLocator.rid,\n propertyMapping: buildPropertyMapping(\n properties,\n objectType.apiName,\n ridGenerator,\n ),\n propertySecurityGroups: convertPropertySecurityGroups(\n baseDatasource,\n properties,\n objectType.primaryKeyPropertyApiName,\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(\n (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\n/** Convert the primary datasource emitted by maker, preserving its cloud identity. */\nexport function convertDatasourceForEdge(\n source: ObjectTypeDatasource,\n objectApiName: string,\n): ObjectTypeDatasource {\n const definition = source.datasource;\n let direct: {\n directSourceRid: string;\n propertyMapping: Record<string, PropertyTypeMappingInfo>;\n propertySecurityGroups?: PropertySecurityGroups | null;\n };\n switch (definition.type) {\n case \"direct\":\n case \"editsOnly\":\n return source;\n case \"datasetV2\":\n case \"datasetV3\": {\n const dataset =\n definition.type === \"datasetV2\"\n ? definition.datasetV2\n : definition.datasetV3;\n direct = {\n directSourceRid: dataset.datasetRid,\n propertyMapping: dataset.propertyMapping,\n propertySecurityGroups:\n definition.type === \"datasetV3\"\n ? definition.datasetV3.propertySecurityGroups\n : undefined,\n };\n break;\n }\n case \"streamV2\":\n direct = {\n directSourceRid: definition.streamV2.streamLocator.streamLocatorRid,\n propertyMapping: Object.fromEntries(\n Object.entries(definition.streamV2.propertyMapping).map(\n ([property, column]) => [property, { type: \"column\", column }],\n ),\n ),\n propertySecurityGroups: definition.streamV2.propertySecurityGroups,\n };\n break;\n default:\n throw new Error(\n `Cannot package object \"${objectApiName}\" datasource \"${source.rid}\" for edge: unsupported datasource type \"${definition.type}\" with PSG v2 packaging.`,\n );\n }\n return {\n ...source,\n datasource: {\n type: \"direct\",\n direct: {\n ...direct,\n propertySecurityGroups: direct.propertySecurityGroups?.groups.length\n ? direct.propertySecurityGroups\n : {\n groups: [\n {\n // Match OMS's stable PSG identity for a remapped datasource.\n rid: source.rid.replace(\n \".datasource.\",\n \".property-security-group.\",\n ),\n properties: Object.keys(direct.propertyMapping),\n type: { type: \"primaryKey\", primaryKey: {} },\n security: {\n type: \"mandatoryOnly\",\n mandatoryOnly: {\n policy: { markings: [], assumedMarkings: [] },\n },\n },\n },\n ],\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.generatePropertySecurityGroupRid(\n \"defaultObjectSecurityPolicy\",\n ),\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 ds.propertySecurityGroups?.forEach((psg) => {\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(\n (apiName) => 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 }\n return {\n type: \"and\",\n and: {\n conditions: condition.and.conditions.map((c) =>\n convertSecurityCondition(c, ridGenerator, objectTypeApiName),\n ),\n },\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 }\n return {\n type: \"or\",\n or: {\n conditions: condition.or.conditions.map((c) =>\n convertSecurityCondition(c, ridGenerator, objectTypeApiName),\n ),\n },\n };\n case \"not\":\n return {\n type: \"not\",\n not: {\n condition: convertSecurityCondition(\n condition.not.condition,\n ridGenerator,\n objectTypeApiName,\n ),\n },\n };\n case \"markings\":\n return {\n type: \"markings\",\n markings: {\n property: convertSecurityProperty(\n condition.markings.property,\n ridGenerator,\n objectTypeApiName,\n ),\n },\n };\n case \"comparison\":\n return {\n type: \"comparison\",\n comparison: {\n ...condition.comparison,\n left: convertSecurityComparisonValue(\n condition.comparison.left,\n condition.comparison.right,\n ridGenerator,\n objectTypeApiName,\n ),\n right: convertSecurityComparisonValue(\n condition.comparison.right,\n condition.comparison.left,\n ridGenerator,\n objectTypeApiName,\n ),\n },\n };\n case \"markingProperty\":\n return {\n type: \"markings\",\n markings: {\n property: convertSecurityProperty(\n condition.property,\n ridGenerator,\n objectTypeApiName,\n ),\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: convertSecurityProperty(\n condition.property,\n ridGenerator,\n objectTypeApiName,\n ),\n },\n },\n };\n case \"group\":\n return convertSecurityCondition(\n {\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: [condition.name],\n },\n },\n },\n },\n ridGenerator,\n objectTypeApiName,\n );\n\n default:\n return condition;\n }\n}\n\nfunction convertSecurityComparisonValue(\n value: SecurityGroupComparisonValue,\n otherValue: SecurityGroupComparisonValue,\n ridGenerator?: OntologyRidGenerator,\n objectTypeApiName?: string,\n): SecurityGroupComparisonValue {\n if (\n value.type === \"constant\" &&\n otherValue.type === \"userProperty\" &&\n otherValue.userProperty.type === \"groupIds\"\n ) {\n let groupIds: string[] = [];\n\n if (value.constant.type === \"string\") {\n groupIds = [value.constant.string];\n } else if (value.constant.type === \"strings\") {\n groupIds = value.constant.strings;\n }\n\n for (const groupId of groupIds) {\n ridGenerator\n ?.getGroupIds()\n .put(ReadableIdGenerator.getForGroup(groupId), groupId);\n }\n }\n if (value.type !== \"property\") {\n return value;\n }\n return {\n type: \"property\",\n property: convertSecurityProperty(\n value.property,\n ridGenerator,\n objectTypeApiName,\n ),\n };\n}\n\nfunction convertSecurityProperty(\n property: string,\n ridGenerator?: OntologyRidGenerator,\n objectTypeApiName?: string,\n): string {\n return ridGenerator && objectTypeApiName\n ? ridGenerator.generatePropertyRid(property, objectTypeApiName)\n : property;\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)?)?$/u,\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":[]}
@@ -17,7 +17,7 @@
17
17
  import { cleanAndValidateLinkTypeId, convertObjectStatus, getOntologyDefinition, isExotic, isInterfaceSharedPropertyType, OntologyEntityTypeEnum, withoutNamespace } from "@osdk/maker";
18
18
  import invariant from "tiny-invariant";
19
19
  import { buildDatasource } from "./convertActionHelpers.js";
20
- import { convertDatasourceDefinition } from "./convertDatasourceDefinition.js";
20
+ import { convertDatasourceDefinition, convertDatasourceForEdge } from "./convertDatasourceDefinition.js";
21
21
  import { convertObjectPropertyType } from "./convertObjectPropertyType.js";
22
22
 
23
23
  /**
@@ -67,7 +67,7 @@ function convertImplementingLinkTypeSide(linkType, sideApiName) {
67
67
  }
68
68
  throw new Error(`Interface link implementation references link side "${sideApiName}" ` + `which does not exist on link type "${linkType.apiName}".`);
69
69
  }
70
- export function convertObject(objectType, ridGenerator) {
70
+ export function convertObject(objectType, ridGenerator, packageForEdge = false) {
71
71
  const {
72
72
  derivedDatasources,
73
73
  derivedPropertyNames
@@ -152,6 +152,10 @@ export function convertObject(objectType, ridGenerator) {
152
152
  typeGroups: []
153
153
  },
154
154
  datasources: [...propertyDatasources, ...derivedDatasources, objectDatasource],
155
+ // Property and derived datasources already work on edge.
156
+ ...(packageForEdge ? {
157
+ mappedEdgeOnlyDatasources: [convertDatasourceForEdge(objectDatasource, objectType.apiName)]
158
+ } : {}),
155
159
  entityMetadata: buildEntityMetadata(objectType, ridGenerator),
156
160
  propertySecurityGroupPackagingVersion: {
157
161
  type: "v2",