@osdk/maker-experimental 0.69.0 → 0.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/build/browser/cli/generateBackingDataset.js +2 -0
- package/build/browser/cli/generateBackingDataset.js.map +1 -1
- package/build/browser/cli/main.js +1 -1
- package/build/cjs/index.cjs +3 -1
- package/build/cjs/index.cjs.map +1 -1
- package/build/esm/cli/generateBackingDataset.js +2 -0
- package/build/esm/cli/generateBackingDataset.js.map +1 -1
- package/build/esm/cli/main.js +1 -1
- package/build/types/cli/generateBackingDataset.d.ts.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -26,6 +26,8 @@ import { toBlockShapeId } from "./marketplaceSerialization/CodeBlockSpec.js";
|
|
|
26
26
|
export function propertyTypeToSchemaType(propType) {
|
|
27
27
|
const typeStr = typeof propType === "string" ? propType : propType.type;
|
|
28
28
|
switch (typeStr) {
|
|
29
|
+
case "geohash":
|
|
30
|
+
case "geoshape":
|
|
29
31
|
case "marking":
|
|
30
32
|
case "string":
|
|
31
33
|
return "STRING";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateBackingDataset.js","names":["fs","path","typeToConcreteDataType","ReadableIdGenerator","toBlockShapeId","propertyTypeToSchemaType","propType","typeStr","type","Error","typeToFieldSchema","name","nullable","userDefinedTypeClass","customMetadata","arraySubtype","array","subtype","float","precision","decimal","scale","mapKeyType","mapValueType","subSchemas","struct","structFields","map","f","fieldType","apiName","getEditOnlyPropertyRids","datasources","editOnlyRids","Set","ds","def","datasource","propertyMapping","datasetV2","datasetV3","rid","mapping","Object","entries","add","getNonEditOnlyProperties","objectTypeBlockData","objectType","propertyTypes","filter","has","_","prop","generateBackingDatasetBlock","datasetName","blockIdentifier","dirSuffix","columns","buildDir","randomnessKey","outputs","datasourceReadableId","getForDatasetOutput","columnReadableIds","col","getForDatasetColumnOutput","datasourceBlockInternalId","tabularDatasource","about","fallbackTitle","fallbackDescription","localizedTitle","localizedDescription","schema","id","buildRequirements","isBuildable","i","length","colReadableId","datasourceColumn","concrete","typeclasses","columnInternalIds","compassReadableId","compassBlockShapeId","datasourceInternalId","locationInternalId","addOnOverride","idToBlockShapeId","fromEntries","internalId","idToInputGroupId","outputToLocationInput","dsBlockDataDir","join","promises","mkdir","recursive","schemaJson","fieldSchemaList","primaryKey","dataFrameReaderClass","format","options","writeFile","JSON","stringify","blockDataJson","v1","hasSchema","includeData","emptyZip","Buffer","from","inputs","input_shape_metadata","compassResource","allowedTypes","typeConstraints","compassFolderTypeConstraints","constraints","isOptional","reconcileAccessRequirements","isAccessedInReconcile","block_identifier","block_data_directory","oci_block_data_metadata","undefined","maven_block_data_metadata","input_mapping_entries","external_recommendations","add_on_override","block_type","generateBackingDatasetBlockResult","nonEditOnlyProps","generateBackingDatasetBlockResultForLink","linkTypeBlockData","linkApiName","objectTypes","definition","linkType","m2m","manyToMany","dataset","pkRidA","keys","objectTypeAPrimaryKeyMapping","columnA","values","pkRidB","objectTypeBPrimaryKeyMapping","columnB","objectTypeA","objectTypeRidA","objectTypeB","objectTypeRidB","propTypeA","propTypeB"],"sources":["generateBackingDataset.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\";\n\nimport type {\n LinkTypeBlockDataV2,\n ObjectTypeBlockDataV2,\n PropertyType,\n PropertyTypeMappingInfo,\n Type,\n} from \"@osdk/client.unstable\";\nimport type {\n InputShape,\n InputShapeMetadata,\n OutputShape,\n} from \"@osdk/client.unstable/api\";\n\nimport { typeToConcreteDataType } from \"../conversion/toMarketplace/typeVisitors.js\";\nimport type { ReadableId } from \"../util/generateRid.js\";\nimport { ReadableIdGenerator } from \"../util/generateRid.js\";\nimport type { BlockGeneratorResult } from \"./marketplaceSerialization/BlockGeneratorResult.js\";\nimport { toBlockShapeId } from \"./marketplaceSerialization/CodeBlockSpec.js\";\n\n/**\n * Map from maker property type to Foundry schema field type\n */\nexport function propertyTypeToSchemaType(\n propType: string | { type: string },\n): string {\n const typeStr = typeof propType === \"string\" ? propType : propType.type;\n switch (typeStr) {\n case \"marking\":\n case \"string\":\n return \"STRING\";\n case \"boolean\":\n return \"BOOLEAN\";\n case \"integer\":\n return \"INTEGER\";\n case \"long\":\n return \"LONG\";\n case \"double\":\n return \"DOUBLE\";\n case \"float\":\n return \"FLOAT\";\n case \"byte\":\n return \"BYTE\";\n case \"short\":\n return \"SHORT\";\n case \"date\":\n return \"DATE\";\n case \"timestamp\":\n return \"TIMESTAMP\";\n case \"array\":\n return \"ARRAY\";\n case \"vector\":\n return \"ARRAY\";\n case \"decimal\":\n return \"DECIMAL\";\n case \"struct\":\n return \"STRUCT\";\n default:\n throw new Error(\n `Unsupported property type \"${typeStr}\" for empty backing datasource. ` +\n `If using a property type that doesn't support empty backing datasources please make the property an edit only property.`,\n );\n }\n}\n\n/**\n * A single field entry in a Foundry dataset schema.json `fieldSchemaList`.\n */\ninterface FieldSchema {\n type: string;\n name: string | null;\n nullable: boolean | null;\n userDefinedTypeClass: string | null;\n customMetadata: Record<string, unknown>;\n arraySubtype: FieldSchema | null;\n precision: number | null;\n scale: number | null;\n mapKeyType: FieldSchema | null;\n mapValueType: FieldSchema | null;\n subSchemas: FieldSchema[] | null;\n}\n\n/**\n * Build a Foundry schema field object for a column type.\n */\nexport function typeToFieldSchema(type: Type, name?: string): FieldSchema {\n return {\n type: propertyTypeToSchemaType(type),\n name: name ?? null,\n nullable: null,\n userDefinedTypeClass: null,\n customMetadata: {},\n arraySubtype:\n type.type === \"array\"\n ? typeToFieldSchema(type.array.subtype)\n : type.type === \"vector\"\n ? typeToFieldSchema({ type: \"float\", float: {} })\n : null,\n precision:\n type.type === \"decimal\" ? (type.decimal.precision ?? null) : null,\n scale: type.type === \"decimal\" ? (type.decimal.scale ?? null) : null,\n mapKeyType: null,\n mapValueType: null,\n subSchemas:\n type.type === \"struct\"\n ? type.struct.structFields.map((f) =>\n typeToFieldSchema(f.fieldType, f.apiName),\n )\n : null,\n };\n}\n\n/**\n * Extract the set of edit-only property RIDs from the wire format datasources.\n */\nfunction getEditOnlyPropertyRids(\n datasources: ObjectTypeBlockDataV2[\"datasources\"],\n): Set<string> {\n const editOnlyRids = new Set<string>();\n for (const ds of datasources) {\n const def = ds.datasource;\n let propertyMapping: Record<string, PropertyTypeMappingInfo> | undefined;\n if (def.type === \"datasetV2\") {\n propertyMapping = def.datasetV2.propertyMapping;\n } else if (def.type === \"datasetV3\") {\n propertyMapping = def.datasetV3.propertyMapping;\n }\n if (propertyMapping) {\n for (const [rid, mapping] of Object.entries(propertyMapping)) {\n if (mapping.type === \"editOnly\") {\n editOnlyRids.add(rid);\n }\n }\n }\n }\n return editOnlyRids;\n}\n\n/**\n * Extract non-edit-only properties from ObjectTypeBlockDataV2.\n */\nexport function getNonEditOnlyProperties(\n objectTypeBlockData: ObjectTypeBlockDataV2,\n): PropertyType[] {\n const editOnlyRids = getEditOnlyPropertyRids(objectTypeBlockData.datasources);\n return Object.entries(objectTypeBlockData.objectType.propertyTypes)\n .filter(([rid]) => !editOnlyRids.has(rid))\n .map(([_, prop]) => prop);\n}\n\ninterface BackingDatasetColumn {\n name: string;\n type: Type;\n}\n\n/**\n * Shared logic to generate a STATIC_DATASET BlockGeneratorResult from a list of columns.\n * Used by both object type and link type backing dataset generators.\n */\nasync function generateBackingDatasetBlock(\n datasetName: string,\n blockIdentifier: string,\n dirSuffix: string,\n columns: BackingDatasetColumn[],\n buildDir: string,\n randomnessKey?: string,\n): Promise<BlockGeneratorResult> {\n // Build output shapes\n const outputs: Record<ReadableId, OutputShape> = {} as Record<\n ReadableId,\n OutputShape\n >;\n\n const datasourceReadableId =\n ReadableIdGenerator.getForDatasetOutput(datasetName);\n const columnReadableIds: ReadableId[] = columns.map((col) =>\n ReadableIdGenerator.getForDatasetColumnOutput(datasetName, col.name),\n );\n\n const datasourceBlockInternalId = toBlockShapeId(\n datasourceReadableId,\n randomnessKey,\n );\n\n // tabularDatasource output shape\n outputs[datasourceReadableId] = {\n type: \"tabularDatasource\",\n tabularDatasource: {\n about: {\n fallbackTitle: blockIdentifier,\n fallbackDescription: \"\",\n localizedTitle: {},\n localizedDescription: {},\n },\n schema: columnReadableIds.map((id) => toBlockShapeId(id, randomnessKey)),\n type: \"DATASET\",\n buildRequirements: { isBuildable: false },\n },\n } as OutputShape;\n\n // datasourceColumn output shapes\n for (let i = 0; i < columns.length; i++) {\n const col = columns[i];\n const colReadableId = columnReadableIds[i];\n\n outputs[colReadableId] = {\n type: \"datasourceColumn\",\n datasourceColumn: {\n about: {\n fallbackTitle: col.name,\n fallbackDescription: \"\",\n localizedTitle: {},\n localizedDescription: {},\n },\n type: {\n type: \"concrete\",\n concrete: typeToConcreteDataType(col.type),\n },\n datasource: datasourceBlockInternalId,\n typeclasses: [],\n },\n } as OutputShape;\n }\n\n // Generate internal IDs for block-data.json columns.\n // These are distinct from the block shape IDs that appear in the manifest outputs.\n // The add-on maps these internal IDs -> block shape IDs.\n const columnInternalIds = columns.map((col) =>\n toBlockShapeId(`column-internal-${datasetName}-${col.name}`, randomnessKey),\n );\n\n const compassReadableId = `${blockIdentifier}-compass-resource` as ReadableId;\n const compassBlockShapeId = toBlockShapeId(compassReadableId, randomnessKey);\n\n const datasourceInternalId = toBlockShapeId(\n `datasource-internal-${datasetName}`,\n randomnessKey,\n );\n const locationInternalId = toBlockShapeId(\n `location-internal-${datasetName}`,\n randomnessKey,\n );\n\n const addOnOverride: Record<string, unknown> = {\n idToBlockShapeId: {\n \"dataset-internal-shape-id\": datasourceBlockInternalId,\n [datasourceInternalId]: datasourceBlockInternalId,\n [locationInternalId]: compassBlockShapeId,\n ...Object.fromEntries(\n columnInternalIds.map((internalId, i) => [\n internalId,\n toBlockShapeId(columnReadableIds[i], randomnessKey),\n ]),\n ),\n },\n idToInputGroupId: {},\n outputToLocationInput: {\n [datasourceBlockInternalId]: compassBlockShapeId,\n },\n };\n\n // Create block data directory\n const dsBlockDataDir = path.join(buildDir, `temp_block_data_${dirSuffix}`);\n await fs.promises.mkdir(dsBlockDataDir, { recursive: true });\n\n // Write schema.json\n const schemaJson = {\n fieldSchemaList: columns.map((col) =>\n typeToFieldSchema(col.type, col.name),\n ),\n primaryKey: null,\n dataFrameReaderClass:\n \"com.palantir.foundry.spark.input.ParquetDataFrameReader\",\n customMetadata: {\n format: \"parquet\",\n options: {},\n },\n };\n await fs.promises.writeFile(\n path.join(dsBlockDataDir, \"schema.json\"),\n JSON.stringify(schemaJson, null, 2),\n );\n\n // Write block-data.json — column keys are the internal IDs mapped in the add-on\n const blockDataJson = {\n type: \"v1\",\n v1: {\n columns: Object.fromEntries(\n columns.map((col, i) => [columnInternalIds[i], col.name]),\n ),\n hasSchema: true,\n includeData: false,\n },\n };\n await fs.promises.writeFile(\n path.join(dsBlockDataDir, \"block-data.json\"),\n JSON.stringify(blockDataJson, null, 2),\n );\n\n // Write VERSION\n await fs.promises.writeFile(path.join(dsBlockDataDir, \"VERSION\"), '\"1\"');\n\n // Write empty files.zip\n // An empty zip file is just the end-of-central-directory record (22 bytes)\n const emptyZip = Buffer.from([\n 0x50, 0x4b, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n ]);\n await fs.promises.writeFile(path.join(dsBlockDataDir, \"files.zip\"), emptyZip);\n\n // Build inputs (compassResource for install location)\n const inputs: Record<ReadableId, InputShape> = {} as Record<\n ReadableId,\n InputShape\n >;\n const input_shape_metadata: Record<ReadableId, InputShapeMetadata> =\n {} as Record<ReadableId, InputShapeMetadata>;\n inputs[compassReadableId] = {\n type: \"compassResource\",\n compassResource: {\n about: {\n fallbackTitle: blockIdentifier,\n fallbackDescription: \"\",\n localizedTitle: {},\n localizedDescription: {},\n },\n allowedTypes: [],\n typeConstraints: [\n {\n type: \"compassFolderTypeConstraints\",\n compassFolderTypeConstraints: {\n constraints: [\"INSTALL_LOCATION\"],\n },\n },\n ],\n },\n } as InputShape;\n input_shape_metadata[compassReadableId] = {\n isOptional: true,\n reconcileAccessRequirements: \"RESOURCE_EXISTENCE_REQUIRED\",\n isAccessedInReconcile: true,\n } as InputShapeMetadata;\n\n return {\n block_identifier: blockIdentifier,\n block_data_directory: dsBlockDataDir,\n oci_block_data_metadata: undefined,\n maven_block_data_metadata: undefined,\n inputs,\n outputs,\n input_mapping_entries: [],\n external_recommendations: [],\n add_on_override: addOnOverride,\n input_shape_metadata,\n block_type: \"STATIC_DATASET\",\n };\n}\n\n/**\n * Generate a backing datasource BlockGeneratorResult for an object type.\n */\n// TODO(oxc type-aware): the type-aware typescript/require-await rule does not flag this (it returns a Promise); remove this disable once type-aware linting is enabled.\n// oxlint-disable-next-line require-await -- intentionally async: returns a Promise to satisfy its declared/contract type; no await needed\nexport async function generateBackingDatasetBlockResult(\n objectTypeBlockData: ObjectTypeBlockDataV2,\n buildDir: string,\n randomnessKey?: string,\n): Promise<BlockGeneratorResult> {\n const apiName = objectTypeBlockData.objectType.apiName!;\n const nonEditOnlyProps = getNonEditOnlyProperties(objectTypeBlockData);\n\n const columns: BackingDatasetColumn[] = nonEditOnlyProps.map((prop) => ({\n name: prop.apiName!,\n type: prop.type,\n }));\n\n return generateBackingDatasetBlock(\n apiName,\n `${apiName}-backing-ds`,\n `${apiName}_backing_ds`,\n columns,\n buildDir,\n randomnessKey,\n );\n}\n\n/**\n * Generate a backing datasource BlockGeneratorResult for a many-to-many link type.\n */\n// TODO(oxc type-aware): the type-aware typescript/require-await rule does not flag this (it returns a Promise); remove this disable once type-aware linting is enabled.\n// oxlint-disable-next-line require-await -- intentionally async: returns a Promise to satisfy its declared/contract type; no await needed\nexport async function generateBackingDatasetBlockResultForLink(\n linkTypeBlockData: LinkTypeBlockDataV2,\n linkApiName: string,\n objectTypes: Record<string, ObjectTypeBlockDataV2>,\n buildDir: string,\n randomnessKey?: string,\n): Promise<BlockGeneratorResult> {\n const definition = linkTypeBlockData.linkType.definition;\n if (definition.type !== \"manyToMany\") {\n throw new Error(\n `Link type \"${linkApiName}\" is not a many-to-many link type`,\n );\n }\n\n const m2m = definition.manyToMany;\n const datasource = linkTypeBlockData.datasources[0]?.datasource;\n if (!datasource || datasource.type !== \"dataset\") {\n throw new Error(\n `Link type \"${linkApiName}\" does not have a dataset datasource`,\n );\n }\n const ds = datasource.dataset;\n\n // Extract column names and PK RIDs from the datasource mappings\n const pkRidA = Object.keys(ds.objectTypeAPrimaryKeyMapping)[0];\n const columnA = Object.values(ds.objectTypeAPrimaryKeyMapping)[0];\n const pkRidB = Object.keys(ds.objectTypeBPrimaryKeyMapping)[0];\n const columnB = Object.values(ds.objectTypeBPrimaryKeyMapping)[0];\n\n // Resolve column types from the referenced object types\n const objectTypeA = objectTypes[m2m.objectTypeRidA];\n const objectTypeB = objectTypes[m2m.objectTypeRidB];\n if (!objectTypeA || !objectTypeB) {\n throw new Error(`Could not find object types for link \"${linkApiName}\"`);\n }\n const propTypeA = objectTypeA.objectType.propertyTypes[pkRidA]?.type;\n const propTypeB = objectTypeB.objectType.propertyTypes[pkRidB]?.type;\n if (!propTypeA || !propTypeB) {\n throw new Error(\n `Could not find primary key property types for link \"${linkApiName}\"`,\n );\n }\n\n // Dataset name must match what convertLink.ts registered with generateDatasetLocator\n return generateBackingDatasetBlock(\n `link.${linkApiName}`,\n `${linkApiName}-link-backing-ds`,\n `${linkApiName}_link_backing_ds`,\n [\n { name: columnA, type: propTypeA },\n { name: columnB, type: propTypeB },\n ],\n buildDir,\n randomnessKey,\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"generateBackingDataset.js","names":["fs","path","typeToConcreteDataType","ReadableIdGenerator","toBlockShapeId","propertyTypeToSchemaType","propType","typeStr","type","Error","typeToFieldSchema","name","nullable","userDefinedTypeClass","customMetadata","arraySubtype","array","subtype","float","precision","decimal","scale","mapKeyType","mapValueType","subSchemas","struct","structFields","map","f","fieldType","apiName","getEditOnlyPropertyRids","datasources","editOnlyRids","Set","ds","def","datasource","propertyMapping","datasetV2","datasetV3","rid","mapping","Object","entries","add","getNonEditOnlyProperties","objectTypeBlockData","objectType","propertyTypes","filter","has","_","prop","generateBackingDatasetBlock","datasetName","blockIdentifier","dirSuffix","columns","buildDir","randomnessKey","outputs","datasourceReadableId","getForDatasetOutput","columnReadableIds","col","getForDatasetColumnOutput","datasourceBlockInternalId","tabularDatasource","about","fallbackTitle","fallbackDescription","localizedTitle","localizedDescription","schema","id","buildRequirements","isBuildable","i","length","colReadableId","datasourceColumn","concrete","typeclasses","columnInternalIds","compassReadableId","compassBlockShapeId","datasourceInternalId","locationInternalId","addOnOverride","idToBlockShapeId","fromEntries","internalId","idToInputGroupId","outputToLocationInput","dsBlockDataDir","join","promises","mkdir","recursive","schemaJson","fieldSchemaList","primaryKey","dataFrameReaderClass","format","options","writeFile","JSON","stringify","blockDataJson","v1","hasSchema","includeData","emptyZip","Buffer","from","inputs","input_shape_metadata","compassResource","allowedTypes","typeConstraints","compassFolderTypeConstraints","constraints","isOptional","reconcileAccessRequirements","isAccessedInReconcile","block_identifier","block_data_directory","oci_block_data_metadata","undefined","maven_block_data_metadata","input_mapping_entries","external_recommendations","add_on_override","block_type","generateBackingDatasetBlockResult","nonEditOnlyProps","generateBackingDatasetBlockResultForLink","linkTypeBlockData","linkApiName","objectTypes","definition","linkType","m2m","manyToMany","dataset","pkRidA","keys","objectTypeAPrimaryKeyMapping","columnA","values","pkRidB","objectTypeBPrimaryKeyMapping","columnB","objectTypeA","objectTypeRidA","objectTypeB","objectTypeRidB","propTypeA","propTypeB"],"sources":["generateBackingDataset.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\";\n\nimport type {\n LinkTypeBlockDataV2,\n ObjectTypeBlockDataV2,\n PropertyType,\n PropertyTypeMappingInfo,\n Type,\n} from \"@osdk/client.unstable\";\nimport type {\n InputShape,\n InputShapeMetadata,\n OutputShape,\n} from \"@osdk/client.unstable/api\";\n\nimport { typeToConcreteDataType } from \"../conversion/toMarketplace/typeVisitors.js\";\nimport type { ReadableId } from \"../util/generateRid.js\";\nimport { ReadableIdGenerator } from \"../util/generateRid.js\";\nimport type { BlockGeneratorResult } from \"./marketplaceSerialization/BlockGeneratorResult.js\";\nimport { toBlockShapeId } from \"./marketplaceSerialization/CodeBlockSpec.js\";\n\n/**\n * Map from maker property type to Foundry schema field type\n */\nexport function propertyTypeToSchemaType(\n propType: string | { type: string },\n): string {\n const typeStr = typeof propType === \"string\" ? propType : propType.type;\n switch (typeStr) {\n case \"geohash\":\n case \"geoshape\":\n case \"marking\":\n case \"string\":\n return \"STRING\";\n case \"boolean\":\n return \"BOOLEAN\";\n case \"integer\":\n return \"INTEGER\";\n case \"long\":\n return \"LONG\";\n case \"double\":\n return \"DOUBLE\";\n case \"float\":\n return \"FLOAT\";\n case \"byte\":\n return \"BYTE\";\n case \"short\":\n return \"SHORT\";\n case \"date\":\n return \"DATE\";\n case \"timestamp\":\n return \"TIMESTAMP\";\n case \"array\":\n return \"ARRAY\";\n case \"vector\":\n return \"ARRAY\";\n case \"decimal\":\n return \"DECIMAL\";\n case \"struct\":\n return \"STRUCT\";\n default:\n throw new Error(\n `Unsupported property type \"${typeStr}\" for empty backing datasource. ` +\n `If using a property type that doesn't support empty backing datasources please make the property an edit only property.`,\n );\n }\n}\n\n/**\n * A single field entry in a Foundry dataset schema.json `fieldSchemaList`.\n */\ninterface FieldSchema {\n type: string;\n name: string | null;\n nullable: boolean | null;\n userDefinedTypeClass: string | null;\n customMetadata: Record<string, unknown>;\n arraySubtype: FieldSchema | null;\n precision: number | null;\n scale: number | null;\n mapKeyType: FieldSchema | null;\n mapValueType: FieldSchema | null;\n subSchemas: FieldSchema[] | null;\n}\n\n/**\n * Build a Foundry schema field object for a column type.\n */\nexport function typeToFieldSchema(type: Type, name?: string): FieldSchema {\n return {\n type: propertyTypeToSchemaType(type),\n name: name ?? null,\n nullable: null,\n userDefinedTypeClass: null,\n customMetadata: {},\n arraySubtype:\n type.type === \"array\"\n ? typeToFieldSchema(type.array.subtype)\n : type.type === \"vector\"\n ? typeToFieldSchema({ type: \"float\", float: {} })\n : null,\n precision:\n type.type === \"decimal\" ? (type.decimal.precision ?? null) : null,\n scale: type.type === \"decimal\" ? (type.decimal.scale ?? null) : null,\n mapKeyType: null,\n mapValueType: null,\n subSchemas:\n type.type === \"struct\"\n ? type.struct.structFields.map((f) =>\n typeToFieldSchema(f.fieldType, f.apiName),\n )\n : null,\n };\n}\n\n/**\n * Extract the set of edit-only property RIDs from the wire format datasources.\n */\nfunction getEditOnlyPropertyRids(\n datasources: ObjectTypeBlockDataV2[\"datasources\"],\n): Set<string> {\n const editOnlyRids = new Set<string>();\n for (const ds of datasources) {\n const def = ds.datasource;\n let propertyMapping: Record<string, PropertyTypeMappingInfo> | undefined;\n if (def.type === \"datasetV2\") {\n propertyMapping = def.datasetV2.propertyMapping;\n } else if (def.type === \"datasetV3\") {\n propertyMapping = def.datasetV3.propertyMapping;\n }\n if (propertyMapping) {\n for (const [rid, mapping] of Object.entries(propertyMapping)) {\n if (mapping.type === \"editOnly\") {\n editOnlyRids.add(rid);\n }\n }\n }\n }\n return editOnlyRids;\n}\n\n/**\n * Extract non-edit-only properties from ObjectTypeBlockDataV2.\n */\nexport function getNonEditOnlyProperties(\n objectTypeBlockData: ObjectTypeBlockDataV2,\n): PropertyType[] {\n const editOnlyRids = getEditOnlyPropertyRids(objectTypeBlockData.datasources);\n return Object.entries(objectTypeBlockData.objectType.propertyTypes)\n .filter(([rid]) => !editOnlyRids.has(rid))\n .map(([_, prop]) => prop);\n}\n\ninterface BackingDatasetColumn {\n name: string;\n type: Type;\n}\n\n/**\n * Shared logic to generate a STATIC_DATASET BlockGeneratorResult from a list of columns.\n * Used by both object type and link type backing dataset generators.\n */\nasync function generateBackingDatasetBlock(\n datasetName: string,\n blockIdentifier: string,\n dirSuffix: string,\n columns: BackingDatasetColumn[],\n buildDir: string,\n randomnessKey?: string,\n): Promise<BlockGeneratorResult> {\n // Build output shapes\n const outputs: Record<ReadableId, OutputShape> = {} as Record<\n ReadableId,\n OutputShape\n >;\n\n const datasourceReadableId =\n ReadableIdGenerator.getForDatasetOutput(datasetName);\n const columnReadableIds: ReadableId[] = columns.map((col) =>\n ReadableIdGenerator.getForDatasetColumnOutput(datasetName, col.name),\n );\n\n const datasourceBlockInternalId = toBlockShapeId(\n datasourceReadableId,\n randomnessKey,\n );\n\n // tabularDatasource output shape\n outputs[datasourceReadableId] = {\n type: \"tabularDatasource\",\n tabularDatasource: {\n about: {\n fallbackTitle: blockIdentifier,\n fallbackDescription: \"\",\n localizedTitle: {},\n localizedDescription: {},\n },\n schema: columnReadableIds.map((id) => toBlockShapeId(id, randomnessKey)),\n type: \"DATASET\",\n buildRequirements: { isBuildable: false },\n },\n } as OutputShape;\n\n // datasourceColumn output shapes\n for (let i = 0; i < columns.length; i++) {\n const col = columns[i];\n const colReadableId = columnReadableIds[i];\n\n outputs[colReadableId] = {\n type: \"datasourceColumn\",\n datasourceColumn: {\n about: {\n fallbackTitle: col.name,\n fallbackDescription: \"\",\n localizedTitle: {},\n localizedDescription: {},\n },\n type: {\n type: \"concrete\",\n concrete: typeToConcreteDataType(col.type),\n },\n datasource: datasourceBlockInternalId,\n typeclasses: [],\n },\n } as OutputShape;\n }\n\n // Generate internal IDs for block-data.json columns.\n // These are distinct from the block shape IDs that appear in the manifest outputs.\n // The add-on maps these internal IDs -> block shape IDs.\n const columnInternalIds = columns.map((col) =>\n toBlockShapeId(`column-internal-${datasetName}-${col.name}`, randomnessKey),\n );\n\n const compassReadableId = `${blockIdentifier}-compass-resource` as ReadableId;\n const compassBlockShapeId = toBlockShapeId(compassReadableId, randomnessKey);\n\n const datasourceInternalId = toBlockShapeId(\n `datasource-internal-${datasetName}`,\n randomnessKey,\n );\n const locationInternalId = toBlockShapeId(\n `location-internal-${datasetName}`,\n randomnessKey,\n );\n\n const addOnOverride: Record<string, unknown> = {\n idToBlockShapeId: {\n \"dataset-internal-shape-id\": datasourceBlockInternalId,\n [datasourceInternalId]: datasourceBlockInternalId,\n [locationInternalId]: compassBlockShapeId,\n ...Object.fromEntries(\n columnInternalIds.map((internalId, i) => [\n internalId,\n toBlockShapeId(columnReadableIds[i], randomnessKey),\n ]),\n ),\n },\n idToInputGroupId: {},\n outputToLocationInput: {\n [datasourceBlockInternalId]: compassBlockShapeId,\n },\n };\n\n // Create block data directory\n const dsBlockDataDir = path.join(buildDir, `temp_block_data_${dirSuffix}`);\n await fs.promises.mkdir(dsBlockDataDir, { recursive: true });\n\n // Write schema.json\n const schemaJson = {\n fieldSchemaList: columns.map((col) =>\n typeToFieldSchema(col.type, col.name),\n ),\n primaryKey: null,\n dataFrameReaderClass:\n \"com.palantir.foundry.spark.input.ParquetDataFrameReader\",\n customMetadata: {\n format: \"parquet\",\n options: {},\n },\n };\n await fs.promises.writeFile(\n path.join(dsBlockDataDir, \"schema.json\"),\n JSON.stringify(schemaJson, null, 2),\n );\n\n // Write block-data.json — column keys are the internal IDs mapped in the add-on\n const blockDataJson = {\n type: \"v1\",\n v1: {\n columns: Object.fromEntries(\n columns.map((col, i) => [columnInternalIds[i], col.name]),\n ),\n hasSchema: true,\n includeData: false,\n },\n };\n await fs.promises.writeFile(\n path.join(dsBlockDataDir, \"block-data.json\"),\n JSON.stringify(blockDataJson, null, 2),\n );\n\n // Write VERSION\n await fs.promises.writeFile(path.join(dsBlockDataDir, \"VERSION\"), '\"1\"');\n\n // Write empty files.zip\n // An empty zip file is just the end-of-central-directory record (22 bytes)\n const emptyZip = Buffer.from([\n 0x50, 0x4b, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n ]);\n await fs.promises.writeFile(path.join(dsBlockDataDir, \"files.zip\"), emptyZip);\n\n // Build inputs (compassResource for install location)\n const inputs: Record<ReadableId, InputShape> = {} as Record<\n ReadableId,\n InputShape\n >;\n const input_shape_metadata: Record<ReadableId, InputShapeMetadata> =\n {} as Record<ReadableId, InputShapeMetadata>;\n inputs[compassReadableId] = {\n type: \"compassResource\",\n compassResource: {\n about: {\n fallbackTitle: blockIdentifier,\n fallbackDescription: \"\",\n localizedTitle: {},\n localizedDescription: {},\n },\n allowedTypes: [],\n typeConstraints: [\n {\n type: \"compassFolderTypeConstraints\",\n compassFolderTypeConstraints: {\n constraints: [\"INSTALL_LOCATION\"],\n },\n },\n ],\n },\n } as InputShape;\n input_shape_metadata[compassReadableId] = {\n isOptional: true,\n reconcileAccessRequirements: \"RESOURCE_EXISTENCE_REQUIRED\",\n isAccessedInReconcile: true,\n } as InputShapeMetadata;\n\n return {\n block_identifier: blockIdentifier,\n block_data_directory: dsBlockDataDir,\n oci_block_data_metadata: undefined,\n maven_block_data_metadata: undefined,\n inputs,\n outputs,\n input_mapping_entries: [],\n external_recommendations: [],\n add_on_override: addOnOverride,\n input_shape_metadata,\n block_type: \"STATIC_DATASET\",\n };\n}\n\n/**\n * Generate a backing datasource BlockGeneratorResult for an object type.\n */\n// TODO(oxc type-aware): the type-aware typescript/require-await rule does not flag this (it returns a Promise); remove this disable once type-aware linting is enabled.\n// oxlint-disable-next-line require-await -- intentionally async: returns a Promise to satisfy its declared/contract type; no await needed\nexport async function generateBackingDatasetBlockResult(\n objectTypeBlockData: ObjectTypeBlockDataV2,\n buildDir: string,\n randomnessKey?: string,\n): Promise<BlockGeneratorResult> {\n const apiName = objectTypeBlockData.objectType.apiName!;\n const nonEditOnlyProps = getNonEditOnlyProperties(objectTypeBlockData);\n\n const columns: BackingDatasetColumn[] = nonEditOnlyProps.map((prop) => ({\n name: prop.apiName!,\n type: prop.type,\n }));\n\n return generateBackingDatasetBlock(\n apiName,\n `${apiName}-backing-ds`,\n `${apiName}_backing_ds`,\n columns,\n buildDir,\n randomnessKey,\n );\n}\n\n/**\n * Generate a backing datasource BlockGeneratorResult for a many-to-many link type.\n */\n// TODO(oxc type-aware): the type-aware typescript/require-await rule does not flag this (it returns a Promise); remove this disable once type-aware linting is enabled.\n// oxlint-disable-next-line require-await -- intentionally async: returns a Promise to satisfy its declared/contract type; no await needed\nexport async function generateBackingDatasetBlockResultForLink(\n linkTypeBlockData: LinkTypeBlockDataV2,\n linkApiName: string,\n objectTypes: Record<string, ObjectTypeBlockDataV2>,\n buildDir: string,\n randomnessKey?: string,\n): Promise<BlockGeneratorResult> {\n const definition = linkTypeBlockData.linkType.definition;\n if (definition.type !== \"manyToMany\") {\n throw new Error(\n `Link type \"${linkApiName}\" is not a many-to-many link type`,\n );\n }\n\n const m2m = definition.manyToMany;\n const datasource = linkTypeBlockData.datasources[0]?.datasource;\n if (!datasource || datasource.type !== \"dataset\") {\n throw new Error(\n `Link type \"${linkApiName}\" does not have a dataset datasource`,\n );\n }\n const ds = datasource.dataset;\n\n // Extract column names and PK RIDs from the datasource mappings\n const pkRidA = Object.keys(ds.objectTypeAPrimaryKeyMapping)[0];\n const columnA = Object.values(ds.objectTypeAPrimaryKeyMapping)[0];\n const pkRidB = Object.keys(ds.objectTypeBPrimaryKeyMapping)[0];\n const columnB = Object.values(ds.objectTypeBPrimaryKeyMapping)[0];\n\n // Resolve column types from the referenced object types\n const objectTypeA = objectTypes[m2m.objectTypeRidA];\n const objectTypeB = objectTypes[m2m.objectTypeRidB];\n if (!objectTypeA || !objectTypeB) {\n throw new Error(`Could not find object types for link \"${linkApiName}\"`);\n }\n const propTypeA = objectTypeA.objectType.propertyTypes[pkRidA]?.type;\n const propTypeB = objectTypeB.objectType.propertyTypes[pkRidB]?.type;\n if (!propTypeA || !propTypeB) {\n throw new Error(\n `Could not find primary key property types for link \"${linkApiName}\"`,\n );\n }\n\n // Dataset name must match what convertLink.ts registered with generateDatasetLocator\n return generateBackingDatasetBlock(\n `link.${linkApiName}`,\n `${linkApiName}-link-backing-ds`,\n `${linkApiName}_link_backing_ds`,\n [\n { name: columnA, type: propTypeA },\n { name: columnB, type: propTypeB },\n ],\n buildDir,\n randomnessKey,\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.
|
|
38
|
+
const commandLineOpts = await yargs(hideBin(args)).version("0.70.0" ?? "").wrap(Math.min(150, yargs().terminalWidth())).strict().help().options({
|
|
39
39
|
input: {
|
|
40
40
|
alias: "i",
|
|
41
41
|
describe: "Input file",
|
package/build/cjs/index.cjs
CHANGED
|
@@ -6137,6 +6137,8 @@ function getExternalRecommendations(importedOntology, producedValueTypes, import
|
|
|
6137
6137
|
function propertyTypeToSchemaType(propType) {
|
|
6138
6138
|
const typeStr = typeof propType === "string" ? propType : propType.type;
|
|
6139
6139
|
switch (typeStr) {
|
|
6140
|
+
case "geohash":
|
|
6141
|
+
case "geoshape":
|
|
6140
6142
|
case "marking":
|
|
6141
6143
|
case "string":
|
|
6142
6144
|
return "STRING";
|
|
@@ -6684,7 +6686,7 @@ var apiNamespaceRegex = /^[a-z0-9-]+(\.[a-z0-9-]+)*\.$/u;
|
|
|
6684
6686
|
var uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/u;
|
|
6685
6687
|
async function main(args = process.argv) {
|
|
6686
6688
|
consola.consola.log("Generating BlockGeneratorResult for ontology...");
|
|
6687
|
-
const commandLineOpts = await yargs__default.default(helpers.hideBin(args)).version("0.
|
|
6689
|
+
const commandLineOpts = await yargs__default.default(helpers.hideBin(args)).version("0.70.0").wrap(Math.min(150, yargs__default.default().terminalWidth())).strict().help().options({
|
|
6688
6690
|
input: {
|
|
6689
6691
|
alias: "i",
|
|
6690
6692
|
describe: "Input file",
|