@osdk/maker 0.9.0-beta.28 → 0.9.0-beta.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @osdk/maker
2
2
 
3
+ ## 0.9.0-beta.29
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [f1145ff]
8
+ - @osdk/api@2.1.0-beta.29
9
+
3
10
  ## 0.9.0-beta.28
4
11
 
5
12
  ### Patch Changes
@@ -26,7 +26,7 @@ import { defineOntology } from "../api/defineOntology.js";
26
26
  import { defineSharedPropertyType } from "../api/defineSpt.js";
27
27
  const apiNamespaceRegex = /^[a-z0-9-]+(\.[a-z0-9-]+)*\.$/;
28
28
  export default async function main(args = process.argv) {
29
- const commandLineOpts = await yargs(hideBin(args)).version("0.9.0-beta.28" ?? "").wrap(Math.min(150, yargs().terminalWidth())).strict().help().options({
29
+ const commandLineOpts = await yargs(hideBin(args)).version("0.9.0-beta.29" ?? "").wrap(Math.min(150, yargs().terminalWidth())).strict().help().options({
30
30
  input: {
31
31
  alias: "i",
32
32
  describe: "Input file",
@@ -131,7 +131,7 @@ function convertObject(objectType) {
131
131
  displayMetadata: {
132
132
  description: objectType.description,
133
133
  displayName: objectType.displayName,
134
- groupDisplayName: void 0,
134
+ groupDisplayName: undefined,
135
135
  icon: {
136
136
  type: "blueprint",
137
137
  blueprint: objectType.icon ?? {
@@ -175,7 +175,7 @@ function convertProperty(property) {
175
175
  visibility: property.visibility ?? "NORMAL"
176
176
  },
177
177
  indexedForSearch: property.indexedForSearch ?? true,
178
- ruleSetBinding: void 0,
178
+ ruleSetBinding: undefined,
179
179
  baseFormatter: property.baseFormatter,
180
180
  type: convertType(property.type),
181
181
  typeClasses: property.typeClasses ?? [],
@@ -183,10 +183,10 @@ function convertProperty(property) {
183
183
  type: "active",
184
184
  active: {}
185
185
  },
186
- inlineAction: void 0,
186
+ inlineAction: undefined,
187
187
  dataConstraints: property.dataConstraints,
188
188
  sharedPropertyTypeRid: property.sharedPropertyType?.apiName,
189
- valueType: void 0
189
+ valueType: undefined
190
190
  };
191
191
  return output;
192
192
  }
@@ -212,12 +212,12 @@ function convertSpt({
212
212
  }) {
213
213
  const dataConstraint = typeof type === "object" && type.type === "marking" ? {
214
214
  propertyTypeConstraints: [],
215
- nullability: void 0,
215
+ nullability: undefined,
216
216
  nullabilityV2: {
217
217
  noEmptyCollections: true,
218
218
  noNulls: true
219
219
  }
220
- } : void 0;
220
+ } : undefined;
221
221
  return {
222
222
  apiName,
223
223
  displayMetadata: {
@@ -232,11 +232,11 @@ function convertSpt({
232
232
  }
233
233
  } : convertType(type),
234
234
  aliases: [],
235
- baseFormatter: void 0,
235
+ baseFormatter: undefined,
236
236
  dataConstraints: dataConstraint,
237
237
  gothamMapping,
238
238
  indexedForSearch: true,
239
- provenance: void 0,
239
+ provenance: undefined,
240
240
  typeClasses: typeClasses ?? [],
241
241
  valueType
242
242
  };
@@ -260,7 +260,7 @@ function convertType(type) {
260
260
  apiName: key,
261
261
  displayMetadata: {
262
262
  displayName: key,
263
- description: void 0
263
+ description: undefined
264
264
  },
265
265
  typeClasses: [],
266
266
  aliases: [],
@@ -280,7 +280,7 @@ function convertType(type) {
280
280
  apiName: key,
281
281
  displayMetadata: {
282
282
  displayName: key,
283
- description: void 0
283
+ description: undefined
284
284
  },
285
285
  typeClasses: [],
286
286
  aliases: [],
@@ -305,16 +305,16 @@ function convertType(type) {
305
305
  return {
306
306
  type,
307
307
  [type]: {
308
- precision: void 0,
309
- scale: void 0
308
+ precision: undefined,
309
+ scale: undefined
310
310
  }
311
311
  };
312
312
  case type === "string":
313
313
  return {
314
314
  type,
315
315
  [type]: {
316
- analyzerOverride: void 0,
317
- enableAsciiFolding: void 0,
316
+ analyzerOverride: undefined,
317
+ enableAsciiFolding: undefined,
318
318
  isLongText: false,
319
319
  supportsEfficientLeadingWildcard: false,
320
320
  supportsExactMatching: true
@@ -344,7 +344,7 @@ var defaultTypeClasses = [{
344
344
  }];
345
345
  function defineSharedPropertyType(opts) {
346
346
  const apiName = namespace + opts.apiName;
347
- !(ontologyDefinition.sharedPropertyTypes[apiName] === void 0) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `Shared property type ${apiName} already exists`) : invariant2__default.default(false) : void 0;
347
+ !(ontologyDefinition.sharedPropertyTypes[apiName] === undefined) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `Shared property type ${apiName} already exists`) : invariant2__default.default(false) : undefined;
348
348
  return ontologyDefinition.sharedPropertyTypes[apiName] = {
349
349
  ...opts,
350
350
  apiName,
@@ -358,10 +358,10 @@ function defineSharedPropertyType(opts) {
358
358
  // src/api/defineInterface.ts
359
359
  function defineInterface(opts) {
360
360
  const apiName = namespace + opts.apiName;
361
- !(ontologyDefinition.interfaceTypes[apiName] === void 0) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `Interface ${apiName} already exists`) : invariant2__default.default(false) : void 0;
361
+ !(ontologyDefinition.interfaceTypes[apiName] === undefined) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `Interface ${apiName} already exists`) : invariant2__default.default(false) : undefined;
362
362
  const properties = Object.fromEntries(Object.entries(opts.properties ?? {}).map(([apiName2, type]) => {
363
363
  if (typeof type === "string" || typeof type === "object" && !("apiName" in type)) {
364
- !isPropertyTypeType(type) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `Invalid data type ${JSON.stringify(type)} for property ${apiName2} on InterfaceType ${apiName2}`) : invariant2__default.default(false) : void 0;
364
+ !isPropertyTypeType(type) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `Invalid data type ${JSON.stringify(type)} for property ${apiName2} on InterfaceType ${apiName2}`) : invariant2__default.default(false) : undefined;
365
365
  const spt = defineSharedPropertyType({
366
366
  apiName: apiName2,
367
367
  displayName: apiName2,
@@ -374,7 +374,7 @@ function defineInterface(opts) {
374
374
  !(namespace + apiName2 === type.apiName || apiName2 === unNamespacedTypeApiName) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `property key and it's apiName must be identical. ${JSON.stringify({
375
375
  key: apiName2,
376
376
  apiName: type.apiName
377
- })}`) : invariant2__default.default(false) : void 0;
377
+ })}`) : invariant2__default.default(false) : undefined;
378
378
  return [apiName2, type];
379
379
  }
380
380
  }));
@@ -384,7 +384,7 @@ function defineInterface(opts) {
384
384
  extendsInterfaces = [opts.extends];
385
385
  } else if (Array.isArray(opts.extends) && opts.extends.every((item) => typeof item === "string")) {
386
386
  extendsInterfaces = opts.extends;
387
- } else if (opts.extends.apiName !== void 0) {
387
+ } else if (opts.extends.apiName !== undefined) {
388
388
  extendsInterfaces = [opts.extends.apiName];
389
389
  } else {
390
390
  extendsInterfaces = opts.extends.map((item) => item.apiName);
@@ -393,19 +393,19 @@ function defineInterface(opts) {
393
393
  const status = mapSimplifiedStatusToInterfaceTypeStatus(opts.status ?? {
394
394
  type: "active"
395
395
  });
396
- !(status.type !== "deprecated" || status.deprecated.message && status.deprecated.deadline) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `Deprecated status must include message and deadline properties.`) : invariant2__default.default(false) : void 0;
396
+ !(status.type !== "deprecated" || status.deprecated.message && status.deprecated.deadline) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `Deprecated status must include message and deadline properties.`) : invariant2__default.default(false) : undefined;
397
397
  const a = {
398
398
  apiName,
399
399
  displayMetadata: {
400
400
  displayName: opts.displayName ?? opts.apiName,
401
401
  description: opts.description ?? opts.displayName ?? opts.apiName,
402
- icon: opts.icon !== void 0 ? {
402
+ icon: opts.icon !== undefined ? {
403
403
  type: "blueprint",
404
404
  blueprint: {
405
405
  color: opts.icon.color,
406
406
  locator: opts.icon.locator
407
407
  }
408
- } : void 0
408
+ } : undefined
409
409
  },
410
410
  extendsInterfaces,
411
411
  links: [],
@@ -425,7 +425,7 @@ function mapSimplifiedStatusToInterfaceTypeStatus(status) {
425
425
  deprecated: {
426
426
  message: status.message,
427
427
  deadline: status.deadline,
428
- replacedBy: void 0
428
+ replacedBy: undefined
429
429
  }
430
430
  };
431
431
  case "active":
@@ -445,15 +445,15 @@ function mapSimplifiedStatusToInterfaceTypeStatus(status) {
445
445
  function defineObject(objectDef) {
446
446
  const apiName = namespace + objectDef.apiName;
447
447
  const propertyApiNames = (objectDef.properties ?? []).map((val) => val.apiName);
448
- if (ontologyDefinition.objectTypes[apiName] !== void 0) {
448
+ if (ontologyDefinition.objectTypes[apiName] !== undefined) {
449
449
  throw new Error(`Object type with apiName ${objectDef.apiName} is already defined`);
450
450
  }
451
- !propertyApiNames.includes(objectDef.titlePropertyApiName) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `Title property ${objectDef.titlePropertyApiName} is not defined on object ${objectDef.apiName}`) : invariant2__default.default(false) : void 0;
452
- !(objectDef.primaryKeys.length !== 0) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `${objectDef.apiName} does not have any primary keys, objects must have at least one primary key`) : invariant2__default.default(false) : void 0;
451
+ !propertyApiNames.includes(objectDef.titlePropertyApiName) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `Title property ${objectDef.titlePropertyApiName} is not defined on object ${objectDef.apiName}`) : invariant2__default.default(false) : undefined;
452
+ !(objectDef.primaryKeys.length !== 0) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `${objectDef.apiName} does not have any primary keys, objects must have at least one primary key`) : invariant2__default.default(false) : undefined;
453
453
  const nonExistentPrimaryKeys = objectDef.primaryKeys.filter((primaryKey) => !objectDef.properties?.map((val) => val.apiName).includes(primaryKey));
454
- !(nonExistentPrimaryKeys.length === 0) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `Primary key properties ${nonExistentPrimaryKeys} do not exist on object ${objectDef.apiName}`) : invariant2__default.default(false) : void 0;
454
+ !(nonExistentPrimaryKeys.length === 0) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `Primary key properties ${nonExistentPrimaryKeys} do not exist on object ${objectDef.apiName}`) : invariant2__default.default(false) : undefined;
455
455
  objectDef.implementsInterfaces?.forEach((interfaceImpl) => {
456
- const nonExistentInterfaceProperties = interfaceImpl.propertyMapping.map((val) => val.interfaceProperty).filter((interfaceProperty) => interfaceImpl.implements.properties[interfaceProperty] === void 0).map((interfaceProp) => ({
456
+ const nonExistentInterfaceProperties = interfaceImpl.propertyMapping.map((val) => val.interfaceProperty).filter((interfaceProperty) => interfaceImpl.implements.properties[interfaceProperty] === undefined).map((interfaceProp) => ({
457
457
  type: "invalid",
458
458
  reason: `Interface property ${interfaceImpl.implements.apiName}.${interfaceProp} referenced in ${objectDef.apiName} object does not exist`
459
459
  }));
@@ -470,7 +470,7 @@ function defineObject(objectDef) {
470
470
  const baseValidations = Object.entries(interfaceImpl.implements.properties).map(validateProperty);
471
471
  const extendsValidations = interfaceImpl.implements.extendsInterfaces.flatMap((interfaceApiName) => Object.entries(ontologyDefinition.interfaceTypes[interfaceApiName].properties).map(validateProperty));
472
472
  const allFailedValidations = baseValidations.concat(extendsValidations, nonExistentInterfaceProperties).filter((val) => val.type === "invalid");
473
- !(allFailedValidations.length === 0) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "\n" + allFailedValidations.map(formatValidationErrors).join("\n")) : invariant2__default.default(false) : void 0;
473
+ !(allFailedValidations.length === 0) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "\n" + allFailedValidations.map(formatValidationErrors).join("\n")) : invariant2__default.default(false) : undefined;
474
474
  });
475
475
  ontologyDefinition.objectTypes[apiName] = {
476
476
  ...objectDef,
@@ -487,7 +487,7 @@ function formatValidationErrors(error) {
487
487
  }
488
488
  function validateInterfaceImplProperty(spt, mappedObjectProp, object) {
489
489
  const objProp = object.properties?.find((prop) => prop.apiName === mappedObjectProp);
490
- if (objProp === void 0) {
490
+ if (objProp === undefined) {
491
491
  return {
492
492
  type: "invalid",
493
493
  reason: `Object property mapped to interface does not exist. Object Property Mapped: ${mappedObjectProp}`
@@ -507,7 +507,7 @@ function validateInterfaceImplProperty(spt, mappedObjectProp, object) {
507
507
  // src/cli/main.ts
508
508
  var apiNamespaceRegex = /^[a-z0-9-]+(\.[a-z0-9-]+)*\.$/;
509
509
  async function main(args = process.argv) {
510
- const commandLineOpts = await yargs__default.default(helpers.hideBin(args)).version("0.9.0-beta.28").wrap(Math.min(150, yargs__default.default().terminalWidth())).strict().help().options({
510
+ const commandLineOpts = await yargs__default.default(helpers.hideBin(args)).version("0.9.0-beta.29").wrap(Math.min(150, yargs__default.default().terminalWidth())).strict().help().options({
511
511
  input: {
512
512
  alias: "i",
513
513
  describe: "Input file",
@@ -544,8 +544,8 @@ async function main(args = process.argv) {
544
544
  let apiNamespace = "";
545
545
  if (commandLineOpts.apiNamespace.length !== 0) {
546
546
  apiNamespace = commandLineOpts.apiNamespace.slice(-1) !== "." ? commandLineOpts.apiNamespace + "." : commandLineOpts.apiNamespace;
547
- !(apiNamespace.length < 1024) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "API namespace is too long.") : invariant2__default.default(false) : void 0;
548
- !apiNamespaceRegex.test(apiNamespace) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "API namespace is invalid! It is expected to conform to ^[a-z0-9-]+(.[a-z0-9-]+)*.$") : invariant2__default.default(false) : void 0;
547
+ !(apiNamespace.length < 1024) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "API namespace is too long.") : invariant2__default.default(false) : undefined;
548
+ !apiNamespaceRegex.test(apiNamespace) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "API namespace is invalid! It is expected to conform to ^[a-z0-9-]+(.[a-z0-9-]+)*.$") : invariant2__default.default(false) : undefined;
549
549
  }
550
550
  consola.consola.info(`Loading ontology from ${commandLineOpts.input}`);
551
551
  const ontology = await loadOntology(commandLineOpts.input, apiNamespace);
@@ -565,13 +565,13 @@ function importSharedPropertyType(opts) {
565
565
  packageName,
566
566
  typeHint
567
567
  } = opts;
568
- if (packageName !== void 0) {
568
+ if (packageName !== undefined) {
569
569
  ontologyDefinition.importedTypes.sharedPropertyTypes.push({
570
570
  apiName,
571
571
  packageName
572
572
  });
573
- !!packageName.endsWith(".") ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "Package name format invalid ends with period") : invariant2__default.default(false) : void 0;
574
- !(packageName.match("[A-Z]") == null) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "Package name includes upper case characters") : invariant2__default.default(false) : void 0;
573
+ !!packageName.endsWith(".") ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "Package name format invalid ends with period") : invariant2__default.default(false) : undefined;
574
+ !(packageName.match("[A-Z]") == null) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "Package name includes upper case characters") : invariant2__default.default(false) : undefined;
575
575
  return {
576
576
  apiName: packageName + "." + apiName,
577
577
  type: typeHint,
@@ -586,7 +586,7 @@ function importSharedPropertyType(opts) {
586
586
  }
587
587
  function defineInterfaceLinkConstraint(linkDef) {
588
588
  const fromLinkMeta = getLinkMeta(linkDef);
589
- !(linkDef.from.links.find((a) => a.metadata.apiName === fromLinkMeta.apiName) == null) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `Link with apiName ${fromLinkMeta.apiName} already exists on ${linkDef.apiName}`) : invariant2__default.default(false) : void 0;
589
+ !(linkDef.from.links.find((a) => a.metadata.apiName === fromLinkMeta.apiName) == null) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, `Link with apiName ${fromLinkMeta.apiName} already exists on ${linkDef.apiName}`) : invariant2__default.default(false) : undefined;
590
590
  linkDef.from.links.push({
591
591
  cardinality: linkDef.toMany ? "MANY" : "SINGLE",
592
592
  linkedEntityTypeId: getLinkedType(linkDef.toMany ?? linkDef.toOne),
@@ -668,7 +668,7 @@ function defineValueType(opts) {
668
668
  version
669
669
  } = opts;
670
670
  const semverValidation = /^((([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)$/;
671
- !semverValidation.test(version) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "Version is not a valid semver") : invariant2__default.default(false) : void 0;
671
+ !semverValidation.test(version) ? process.env.NODE_ENV !== "production" ? invariant2__default.default(false, "Version is not a valid semver") : invariant2__default.default(false) : undefined;
672
672
  const typeName = typeof type.type === "string" ? type.type : type.type.type === "struct" ? "structV2" : type.type.type;
673
673
  const constraints = type.constraints ? type.constraints.map((constraint) => {
674
674
  const output = {
@@ -698,7 +698,7 @@ function defineValueType(opts) {
698
698
  constraints,
699
699
  exampleValues: []
700
700
  };
701
- if (ontologyDefinition.valueTypes[apiName] === void 0) {
701
+ if (ontologyDefinition.valueTypes[apiName] === undefined) {
702
702
  ontologyDefinition.valueTypes[apiName] = [];
703
703
  }
704
704
  ontologyDefinition.valueTypes[apiName].push(vt);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/api/defineOntology.ts","../../src/api/defineSpt.ts","../../src/api/defineInterface.ts","../../src/api/defineObject.ts","../../src/cli/main.ts","../../src/api/defineImportSpt.ts","../../src/api/defineInterfaceLinkConstraint.ts","../../src/api/defineValueType.ts"],"names":["invariant","apiName","yargs","hideBin","path","consola","fs"],"mappings":"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","file":"index.cjs","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\n/*\n * Copyright 2024 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\n/** @internal */\nexport let ontologyDefinition;\n\n/** @internal */\nexport let namespace;\nexport async function defineOntology(ns, body) {\n namespace = ns;\n ontologyDefinition = {\n actionTypes: {},\n objectTypes: {},\n queryTypes: {},\n interfaceTypes: {},\n sharedPropertyTypes: {},\n valueTypes: {},\n importedTypes: {\n sharedPropertyTypes: []\n }\n };\n try {\n await body();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected error while processing the body of the ontology\", e);\n throw e;\n }\n return {\n ontology: convertToWireOntologyIr(ontologyDefinition),\n valueType: convertOntologyToValueTypeIr(ontologyDefinition)\n };\n}\nfunction convertOntologyToValueTypeIr(ontology) {\n return {\n valueTypes: Object.values(ontology.valueTypes).map(definitions => ({\n metadata: {\n apiName: definitions[0].apiName,\n displayMetadata: definitions[0].displayMetadata,\n status: definitions[0].status\n },\n versions: definitions.map(definition => ({\n version: definition.version,\n baseType: definition.baseType,\n constraints: definition.constraints,\n exampleValues: definition.exampleValues\n }))\n }))\n };\n}\nfunction convertToWireOntologyIr(ontology) {\n return {\n blockData: {\n objectTypes: Object.fromEntries(Object.entries(ontology.objectTypes).map(([apiName, objectType]) => {\n return [apiName, convertObject(objectType)];\n })),\n sharedPropertyTypes: Object.fromEntries(Object.entries(ontology.sharedPropertyTypes).map(([apiName, spt]) => [apiName, {\n sharedPropertyType: convertSpt(spt)\n }])),\n interfaceTypes: Object.fromEntries(Object.entries(ontology.interfaceTypes).map(([apiName, interfaceType]) => {\n return [apiName, {\n interfaceType: convertInterface(interfaceType)\n }];\n })),\n blockPermissionInformation: {\n actionTypes: {},\n linkTypes: {},\n objectTypes: {}\n }\n },\n importedTypes: ontology.importedTypes\n };\n}\nfunction convertObject(objectType) {\n const propertyDatasource = {};\n (objectType.properties ?? []).forEach(property => {\n propertyDatasource[property.apiName] = {\n type: \"column\",\n column: property.apiName\n };\n });\n const datasource = {\n rid: \"ri.ontology.main.datasource.\".concat(objectType.apiName),\n datasource: {\n type: \"datasetV2\",\n datasetV2: {\n datasetRid: objectType.apiName,\n propertyMapping: propertyDatasource\n }\n },\n editsConfiguration: {\n onlyAllowPrivilegedEdits: false\n },\n redacted: false\n };\n const implementations = objectType.implementsInterfaces ?? [];\n return {\n objectType: {\n displayMetadata: {\n description: objectType.description,\n displayName: objectType.displayName,\n groupDisplayName: undefined,\n icon: {\n type: \"blueprint\",\n blueprint: objectType.icon ?? {\n locator: \"cube\",\n color: \"#2D72D2\"\n }\n },\n pluralDisplayName: objectType.pluralDisplayName,\n visibility: objectType.visibility ?? \"NORMAL\"\n },\n primaryKeys: objectType.primaryKeys,\n propertyTypes: Object.fromEntries(objectType.properties?.map(val => [val.apiName, convertProperty(val)]) ?? []),\n titlePropertyTypeRid: objectType.titlePropertyApiName,\n apiName: objectType.apiName,\n status: objectType.status ?? {\n type: \"active\",\n active: {}\n },\n redacted: false,\n implementsInterfaces2: implementations.map(impl => ({\n interfaceTypeApiName: impl.implements.apiName,\n properties: Object.fromEntries(impl.propertyMapping.map(mapping => [namespace + mapping.interfaceProperty, {\n propertyTypeRid: mapping.mapsTo\n }]))\n })),\n allImplementsInterfaces: {}\n },\n datasources: [datasource],\n entityMetadata: {\n arePatchesEnabled: objectType.editsEnabled ?? false\n }\n };\n}\nfunction convertProperty(property) {\n const output = {\n apiName: property.apiName,\n sharedPropertyTypeApiName: property.sharedPropertyType?.apiName,\n displayMetadata: {\n displayName: property.displayName,\n description: property.description,\n visibility: property.visibility ?? \"NORMAL\"\n },\n indexedForSearch: property.indexedForSearch ?? true,\n ruleSetBinding: undefined,\n baseFormatter: property.baseFormatter,\n type: convertType(property.type),\n typeClasses: property.typeClasses ?? [],\n status: property.status ?? {\n type: \"active\",\n active: {}\n },\n inlineAction: undefined,\n dataConstraints: property.dataConstraints,\n sharedPropertyTypeRid: property.sharedPropertyType?.apiName,\n valueType: undefined\n };\n return output;\n}\nfunction convertInterface(interfaceType) {\n return {\n ...interfaceType,\n properties: Object.values(interfaceType.properties).map(spt => convertSpt(spt)),\n // these are omitted from our internal types but we need to re-add them for the final json\n allExtendsInterfaces: [],\n allLinks: [],\n allProperties: []\n };\n}\nexport function dumpOntologyFullMetadata() {\n return convertToWireOntologyIr(ontologyDefinition);\n}\nexport function dumpValueTypeWireType() {\n return convertOntologyToValueTypeIr(ontologyDefinition);\n}\nfunction convertSpt({\n type,\n array,\n description,\n apiName,\n displayName,\n gothamMapping,\n typeClasses,\n valueType\n}) {\n const dataConstraint = typeof type === \"object\" && type.type === \"marking\" ? {\n propertyTypeConstraints: [],\n nullability: undefined,\n nullabilityV2: {\n noEmptyCollections: true,\n noNulls: true\n }\n } : undefined;\n return {\n apiName,\n displayMetadata: {\n displayName: displayName ?? apiName,\n visibility: \"NORMAL\",\n description\n },\n type: array ? {\n type: \"array\",\n array: {\n subtype: convertType(type)\n }\n } : convertType(type),\n aliases: [],\n baseFormatter: undefined,\n dataConstraints: dataConstraint,\n gothamMapping: gothamMapping,\n indexedForSearch: true,\n provenance: undefined,\n typeClasses: typeClasses ?? [],\n valueType: valueType\n };\n}\nfunction convertType(type) {\n switch (true) {\n case typeof type === \"object\" && \"markingType\" in type:\n return {\n \"type\": \"marking\",\n marking: {\n markingType: type.markingType\n }\n };\n case typeof type === \"object\" && \"structDefinition\" in type:\n const structFields = new Array();\n for (const key in type.structDefinition) {\n const fieldTypeDefinition = type.structDefinition[key];\n let field;\n if (typeof fieldTypeDefinition === \"string\") {\n field = {\n apiName: key,\n displayMetadata: {\n displayName: key,\n description: undefined\n },\n typeClasses: [],\n aliases: [],\n fieldType: convertType(fieldTypeDefinition)\n };\n } else {\n // If it is a full form type definition then process it as such\n if (\"fieldType\" in fieldTypeDefinition) {\n field = {\n ...fieldTypeDefinition,\n apiName: key,\n fieldType: convertType(fieldTypeDefinition.fieldType),\n typeClasses: fieldTypeDefinition.typeClasses ?? [],\n aliases: fieldTypeDefinition.aliases ?? []\n };\n } else {\n field = {\n apiName: key,\n displayMetadata: {\n displayName: key,\n description: undefined\n },\n typeClasses: [],\n aliases: [],\n fieldType: convertType(fieldTypeDefinition)\n };\n }\n }\n structFields.push(field);\n }\n return {\n type: \"struct\",\n struct: {\n structFields\n }\n };\n case type === \"geopoint\":\n return {\n type: \"geohash\",\n geohash: {}\n };\n case type === \"decimal\":\n return {\n type,\n [type]: {\n precision: undefined,\n scale: undefined\n }\n };\n case type === \"string\":\n return {\n type,\n [type]: {\n analyzerOverride: undefined,\n enableAsciiFolding: undefined,\n isLongText: false,\n supportsEfficientLeadingWildcard: false,\n supportsExactMatching: true\n }\n };\n case type === \"mediaReference\":\n return {\n type: type,\n mediaReference: {}\n };\n default:\n // use helper function to distribute `type` properly\n return distributeTypeHelper(type);\n }\n}\n\n/**\n * Helper function to avoid duplication. Makes the types match properly with the correct\n * behavior without needing to switch on type.\n * @param type\n * @returns\n */\nfunction distributeTypeHelper(type) {\n return {\n type,\n [type]: {}\n }; // any cast to match conditional return type\n}","/*\n * Copyright 2024 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 invariant from \"tiny-invariant\";\nimport { namespace, ontologyDefinition } from \"./defineOntology.js\";\nconst defaultTypeClasses = [{\n kind: \"render_hint\",\n name: \"SELECTABLE\"\n}, {\n kind: \"render_hint\",\n name: \"SORTABLE\"\n}];\nexport function defineSharedPropertyType(opts) {\n const apiName = namespace + opts.apiName;\n !(ontologyDefinition.sharedPropertyTypes[apiName] === undefined) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Shared property type ${apiName} already exists`) : invariant(false) : void 0;\n return ontologyDefinition.sharedPropertyTypes[apiName] = {\n ...opts,\n apiName,\n nonNameSpacedApiName: opts.apiName,\n displayName: opts.displayName ?? opts.apiName,\n // This way the non-namespaced api name is the display name (maybe not ideal)\n typeClasses: opts.typeClasses ?? defaultTypeClasses\n };\n}","/*\n * Copyright 2024 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 invariant from \"tiny-invariant\";\nimport { namespace, ontologyDefinition } from \"./defineOntology.js\";\nimport { defineSharedPropertyType } from \"./defineSpt.js\";\nexport function defineInterface(opts) {\n const apiName = namespace + opts.apiName;\n !(ontologyDefinition.interfaceTypes[apiName] === undefined) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Interface ${apiName} already exists`) : invariant(false) : void 0;\n const properties = Object.fromEntries(Object.entries(opts.properties ?? {}).map(([apiName, type]) => {\n if (typeof type === \"string\" || typeof type === \"object\" && !(\"apiName\" in type)) {\n !isPropertyTypeType(type) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Invalid data type ${JSON.stringify(type)} for property ${apiName} on InterfaceType ${apiName}`) : invariant(false) : void 0;\n const spt = defineSharedPropertyType({\n apiName,\n displayName: apiName,\n type,\n array: false\n });\n return [apiName, spt];\n } else {\n const unNamespacedTypeApiName = type.apiName.slice(type.apiName.lastIndexOf(\".\") + 1);\n !(namespace + apiName === type.apiName || apiName === unNamespacedTypeApiName) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `property key and it's apiName must be identical. ${JSON.stringify({\n key: apiName,\n apiName: type.apiName\n })}`) : invariant(false) : void 0;\n return [apiName, type];\n }\n }));\n let extendsInterfaces = [];\n if (opts.extends) {\n if (typeof opts.extends === \"string\") {\n extendsInterfaces = [opts.extends];\n } else if (Array.isArray(opts.extends) && opts.extends.every(item => typeof item === \"string\")) {\n extendsInterfaces = opts.extends;\n } else if (opts.extends.apiName !== undefined) {\n extendsInterfaces = [opts.extends.apiName];\n } else {\n extendsInterfaces = opts.extends.map(item => item.apiName);\n }\n }\n const status = mapSimplifiedStatusToInterfaceTypeStatus(opts.status ?? {\n type: \"active\"\n });\n !(status.type !== \"deprecated\" || status.deprecated.message && status.deprecated.deadline) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Deprecated status must include message and deadline properties.`) : invariant(false) : void 0;\n const a = {\n apiName,\n displayMetadata: {\n displayName: opts.displayName ?? opts.apiName,\n description: opts.description ?? opts.displayName ?? opts.apiName,\n icon: opts.icon !== undefined ? {\n type: \"blueprint\",\n blueprint: {\n color: opts.icon.color,\n locator: opts.icon.locator\n }\n } : undefined\n },\n extendsInterfaces: extendsInterfaces,\n links: [],\n properties,\n status\n };\n return ontologyDefinition.interfaceTypes[apiName] = a;\n}\nfunction isPropertyTypeType(v) {\n return v === \"boolean\" || v === \"byte\" || v === \"date\" || v === \"decimal\" || v === \"double\" || v === \"float\" || v === \"geopoint\" || v === \"geoshape\" || v === \"integer\" || v === \"long\" || typeof v === \"object\" && v.type === \"marking\" || v === \"short\" || v === \"string\" || v === \"timestamp\";\n}\nfunction mapSimplifiedStatusToInterfaceTypeStatus(status) {\n switch (status.type) {\n case \"deprecated\":\n return {\n type: \"deprecated\",\n deprecated: {\n message: status.message,\n deadline: status.deadline,\n replacedBy: undefined\n }\n };\n case \"active\":\n return {\n type: \"active\",\n active: {}\n };\n case \"experimental\":\n return {\n type: \"experimental\",\n experimental: {}\n };\n default:\n throw new Error(`Invalid status type: ${status.type}`);\n }\n}","/*\n * Copyright 2024 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 invariant from \"tiny-invariant\";\nimport { namespace, ontologyDefinition } from \"./defineOntology.js\";\nexport function defineObject(objectDef) {\n const apiName = namespace + objectDef.apiName;\n const propertyApiNames = (objectDef.properties ?? []).map(val => val.apiName);\n if (ontologyDefinition.objectTypes[apiName] !== undefined) {\n throw new Error(`Object type with apiName ${objectDef.apiName} is already defined`);\n }\n !propertyApiNames.includes(objectDef.titlePropertyApiName) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Title property ${objectDef.titlePropertyApiName} is not defined on object ${objectDef.apiName}`) : invariant(false) : void 0;\n !(objectDef.primaryKeys.length !== 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `${objectDef.apiName} does not have any primary keys, objects must have at least one primary key`) : invariant(false) : void 0;\n const nonExistentPrimaryKeys = objectDef.primaryKeys.filter(primaryKey => !objectDef.properties?.map(val => val.apiName).includes(primaryKey));\n !(nonExistentPrimaryKeys.length === 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Primary key properties ${nonExistentPrimaryKeys} do not exist on object ${objectDef.apiName}`) : invariant(false) : void 0;\n objectDef.implementsInterfaces?.forEach(interfaceImpl => {\n const nonExistentInterfaceProperties = interfaceImpl.propertyMapping.map(val => val.interfaceProperty).filter(interfaceProperty => interfaceImpl.implements.properties[interfaceProperty] === undefined).map(interfaceProp => ({\n type: \"invalid\",\n reason: `Interface property ${interfaceImpl.implements.apiName}.${interfaceProp} referenced in ${objectDef.apiName} object does not exist`\n }));\n const interfaceToObjectProperties = Object.fromEntries(interfaceImpl.propertyMapping.map(mapping => [mapping.interfaceProperty, mapping.mapsTo]));\n const validateProperty = interfaceProp => {\n if (interfaceProp[1].nonNameSpacedApiName in interfaceToObjectProperties) {\n return validateInterfaceImplProperty(interfaceProp[1], interfaceToObjectProperties[interfaceProp[0]], objectDef);\n }\n return {\n type: \"invalid\",\n reason: `Interface property ${interfaceImpl.implements.apiName}.${interfaceProp[1].nonNameSpacedApiName} not implemented by ${objectDef.apiName} object definition`\n };\n };\n const baseValidations = Object.entries(interfaceImpl.implements.properties).map(validateProperty);\n const extendsValidations = interfaceImpl.implements.extendsInterfaces.flatMap(interfaceApiName => Object.entries(ontologyDefinition.interfaceTypes[interfaceApiName].properties).map(validateProperty));\n const allFailedValidations = baseValidations.concat(extendsValidations, nonExistentInterfaceProperties).filter(val => val.type === \"invalid\");\n !(allFailedValidations.length === 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"\\n\" + allFailedValidations.map(formatValidationErrors).join(\"\\n\")) : invariant(false) : void 0;\n });\n ontologyDefinition.objectTypes[apiName] = {\n ...objectDef,\n apiName: apiName\n };\n return {\n ...objectDef,\n apiName: apiName\n };\n}\nfunction formatValidationErrors(error) {\n return `Ontology Definition Error: ${error.reason}\\n`;\n}\n\n// Validate that the object and the interface property match up\nfunction validateInterfaceImplProperty(spt, mappedObjectProp, object) {\n const objProp = object.properties?.find(prop => prop.apiName === mappedObjectProp);\n if (objProp === undefined) {\n return {\n type: \"invalid\",\n reason: `Object property mapped to interface does not exist. Object Property Mapped: ${mappedObjectProp}`\n };\n }\n if (spt.type !== objProp?.type) {\n return {\n type: \"invalid\",\n reason: `Object property type does not match the interface property it is mapped to. Interface Property: ${spt.apiName}, objectProperty: ${mappedObjectProp}`\n };\n }\n return {\n type: \"valid\"\n };\n}","/*\n * Copyright 2024 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 { consola } from \"consola\";\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport invariant from \"tiny-invariant\";\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\nimport { defineInterface } from \"../api/defineInterface.js\";\nimport { defineObject } from \"../api/defineObject.js\";\nimport { defineOntology } from \"../api/defineOntology.js\";\nimport { defineSharedPropertyType } from \"../api/defineSpt.js\";\nconst apiNamespaceRegex = /^[a-z0-9-]+(\\.[a-z0-9-]+)*\\.$/;\nexport default async function main(args = process.argv) {\n const commandLineOpts = await yargs(hideBin(args)).version(process.env.PACKAGE_VERSION ?? \"\").wrap(Math.min(150, yargs().terminalWidth())).strict().help().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\",\n type: \"string\",\n default: \"ontology.json\",\n coerce: path.resolve\n },\n apiNamespace: {\n describe: \"Api name prefix for namespaced ontology types\",\n type: \"string\",\n default: \"\"\n },\n snapshotDir: {\n alias: \"s\",\n describe: \"Snapshot directory\",\n type: \"string\",\n default: \"snapshots\",\n coerce: path.resolve\n },\n valueTypesOutput: {\n describe: \"Value Type Output File\",\n type: \"string\",\n default: \"value-types.json\",\n coerce: path.resolve\n }\n }).parseAsync();\n let apiNamespace = \"\";\n if (commandLineOpts.apiNamespace.length !== 0) {\n apiNamespace = commandLineOpts.apiNamespace.slice(-1) !== \".\" ? commandLineOpts.apiNamespace + \".\" : commandLineOpts.apiNamespace;\n !(apiNamespace.length < 1024) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"API namespace is too long.\") : invariant(false) : void 0;\n !apiNamespaceRegex.test(apiNamespace) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"API namespace is invalid! It is expected to conform to ^[a-z0-9-]+(\\.[a-z0-9-]+)*\\.$\") : invariant(false) : void 0;\n }\n consola.info(`Loading ontology from ${commandLineOpts.input}`);\n const ontology = await loadOntology(commandLineOpts.input, apiNamespace);\n consola.info(`Saving ontology to ${commandLineOpts.output}`);\n await fs.writeFile(commandLineOpts.output, JSON.stringify(ontology.ontology, null, 2));\n // No point in generating block if there aren't any value types\n if (ontology.valueType.valueTypes.length > 0) {\n await fs.writeFile(commandLineOpts.valueTypesOutput, JSON.stringify(ontology.valueType, null, 2));\n }\n}\nasync function loadOntologyViaJiti(input) {\n Object.assign(globalThis, {\n defineInterface,\n defineObject,\n defineSharedPropertyType\n });\n const jiti_ = await import(\"jiti\");\n const jiti = jiti_.default(process.cwd(), {\n debug: true\n });\n return defineOntology(\"\", async () => await jiti(input));\n}\nasync function loadOntologyViaTsNode(input) {\n Object.assign(globalThis, {\n defineInterface,\n defineObject,\n defineSharedPropertyType\n });\n const tsNode = await import(\"ts-node\");\n const tsNodeService = tsNode.register({\n transpileOnly: true,\n compilerOptions: {\n module: \"commonjs\",\n target: \"esnext\"\n },\n esm: true\n });\n tsNodeService.enabled(true);\n const q = await import(input);\n return q;\n}\nasync function loadOntology(input, apiNamespace) {\n // Object.assign(globalThis, {\n // defineInterface,\n // defineLink,\n // defineObject,\n // defineSharedPropertyType,\n // });\n\n const q = await defineOntology(apiNamespace, async () => await import(input));\n return q;\n}","/*\n * Copyright 2024 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 invariant from \"tiny-invariant\";\nimport { ontologyDefinition } from \"./defineOntology.js\";\n/**\n * Defines a foreign shared property type you want to take as an input to your product. The typeHint field is used for OSDK generation\n */\nexport function importSharedPropertyType(opts) {\n const {\n apiName,\n packageName,\n typeHint\n } = opts;\n if (packageName !== undefined) {\n ontologyDefinition.importedTypes.sharedPropertyTypes.push({\n apiName,\n packageName\n });\n !!packageName.endsWith(\".\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Package name format invalid ends with period\") : invariant(false) : void 0;\n !(packageName.match(\"[A-Z]\") == null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Package name includes upper case characters\") : invariant(false) : void 0;\n return {\n apiName: packageName + \".\" + apiName,\n type: typeHint,\n nonNameSpacedApiName: apiName\n };\n }\n return {\n apiName: apiName,\n type: typeHint,\n nonNameSpacedApiName: apiName\n };\n}","/*\n * Copyright 2024 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 invariant from \"tiny-invariant\";\nimport { namespace } from \"./defineOntology.js\";\nexport function defineInterfaceLinkConstraint(linkDef) {\n const fromLinkMeta = getLinkMeta(linkDef);\n !(linkDef.from.links.find(a => a.metadata.apiName === fromLinkMeta.apiName) == null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Link with apiName ${fromLinkMeta.apiName} already exists on ${linkDef.apiName}`) : invariant(false) : void 0;\n linkDef.from.links.push({\n cardinality: linkDef.toMany ? \"MANY\" : \"SINGLE\",\n linkedEntityTypeId: getLinkedType(linkDef.toMany ?? linkDef.toOne),\n metadata: fromLinkMeta,\n required: linkDef.required ?? true\n });\n}\nfunction getLinkedType(t) {\n return {\n type: \"interfaceType\",\n interfaceType: typeof t === \"string\" ? t : t.apiName\n };\n}\nfunction getLinkMeta(meta) {\n return typeof meta === \"string\" ? withDefaults({\n apiName: namespace + meta\n }) : withDefaults(meta);\n}\nfunction withDefaults({\n apiName,\n description,\n displayName\n}) {\n return {\n apiName: namespace + apiName,\n displayName: displayName ?? apiName,\n description: description ?? displayName ?? apiName\n };\n}","/*\n * Copyright 2024 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 invariant from \"tiny-invariant\";\nimport { ontologyDefinition } from \"./defineOntology.js\";\nfunction convertValueTypeTypeToBaseType(valueType) {\n if (typeof valueType === \"string\") {}\n switch (true) {\n case typeof valueType === \"object\" && valueType.type === \"array\":\n return {\n type: \"array\",\n array: {\n elementType: convertValueTypeTypeToBaseType(valueType.elementType)\n }\n };\n case typeof valueType === \"object\" && valueType.type === \"struct\":\n return {\n type: \"structV2\",\n structV2: {\n fields: valueType.fields.map(field => ({\n identifier: field.identifier,\n baseType: convertValueTypeTypeToBaseType(field.baseType)\n }))\n }\n };\n case typeof valueType === \"object\" && valueType.type === \"map\":\n return {\n type: \"map\",\n map: {\n keyType: convertValueTypeTypeToBaseType(valueType.keyType),\n valueType: convertValueTypeTypeToBaseType(valueType.valueType)\n }\n };\n case typeof valueType === \"object\" && valueType.type === \"optional\":\n return {\n type: \"optional\",\n optional: {\n wrappedType: convertValueTypeTypeToBaseType(valueType.wrappedType)\n }\n };\n case typeof valueType === \"string\":\n return {\n type: valueType,\n [valueType]: {}\n };\n default:\n throw new Error(\"Invalid ValueTypeType\");\n }\n}\nexport function defineValueType(opts) {\n const {\n apiName,\n displayName,\n description,\n type,\n version\n } = opts;\n const semverValidation = /^((([0-9]+)\\.([0-9]+)\\.([0-9]+)(?:-([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)$/;\n !semverValidation.test(version) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Version is not a valid semver\") : invariant(false) : void 0;\n const typeName = typeof type.type === \"string\" ? type.type : type.type.type === \"struct\" ? \"structV2\" : type.type.type;\n // These suck but TS doesn't understand the relationship from the key of the base type to the type string\n const constraints = type.constraints ? type.constraints.map(constraint => {\n const output = {\n constraint: {\n type: typeName,\n [typeName]: constraint.constraint\n },\n failureMessage: constraint.failureMessage\n };\n return {\n constraint: output\n };\n }) : [];\n const baseType = convertValueTypeTypeToBaseType(type.type);\n const vt = {\n apiName,\n displayMetadata: {\n displayName: displayName,\n description: description ?? \"\"\n },\n status: {\n type: \"active\",\n active: {}\n },\n version: version,\n baseType: baseType,\n constraints: constraints,\n exampleValues: []\n };\n if (ontologyDefinition.valueTypes[apiName] === undefined) {\n ontologyDefinition.valueTypes[apiName] = [];\n }\n ontologyDefinition.valueTypes[apiName].push(vt);\n return vt;\n}"]}
1
+ {"version":3,"sources":["../../src/api/defineOntology.ts","../../src/api/defineSpt.ts","../../src/api/defineInterface.ts","../../src/api/defineObject.ts","../../src/cli/main.ts","../../src/api/defineImportSpt.ts","../../src/api/defineInterfaceLinkConstraint.ts","../../src/api/defineValueType.ts"],"names":["invariant","apiName","yargs","hideBin","path","consola","fs"],"mappings":"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","file":"index.cjs","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\n/*\n * Copyright 2024 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\n/** @internal */\nexport let ontologyDefinition;\n\n/** @internal */\nexport let namespace;\nexport async function defineOntology(ns, body) {\n namespace = ns;\n ontologyDefinition = {\n actionTypes: {},\n objectTypes: {},\n queryTypes: {},\n interfaceTypes: {},\n sharedPropertyTypes: {},\n valueTypes: {},\n importedTypes: {\n sharedPropertyTypes: []\n }\n };\n try {\n await body();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Unexpected error while processing the body of the ontology\", e);\n throw e;\n }\n return {\n ontology: convertToWireOntologyIr(ontologyDefinition),\n valueType: convertOntologyToValueTypeIr(ontologyDefinition)\n };\n}\nfunction convertOntologyToValueTypeIr(ontology) {\n return {\n valueTypes: Object.values(ontology.valueTypes).map(definitions => ({\n metadata: {\n apiName: definitions[0].apiName,\n displayMetadata: definitions[0].displayMetadata,\n status: definitions[0].status\n },\n versions: definitions.map(definition => ({\n version: definition.version,\n baseType: definition.baseType,\n constraints: definition.constraints,\n exampleValues: definition.exampleValues\n }))\n }))\n };\n}\nfunction convertToWireOntologyIr(ontology) {\n return {\n blockData: {\n objectTypes: Object.fromEntries(Object.entries(ontology.objectTypes).map(([apiName, objectType]) => {\n return [apiName, convertObject(objectType)];\n })),\n sharedPropertyTypes: Object.fromEntries(Object.entries(ontology.sharedPropertyTypes).map(([apiName, spt]) => [apiName, {\n sharedPropertyType: convertSpt(spt)\n }])),\n interfaceTypes: Object.fromEntries(Object.entries(ontology.interfaceTypes).map(([apiName, interfaceType]) => {\n return [apiName, {\n interfaceType: convertInterface(interfaceType)\n }];\n })),\n blockPermissionInformation: {\n actionTypes: {},\n linkTypes: {},\n objectTypes: {}\n }\n },\n importedTypes: ontology.importedTypes\n };\n}\nfunction convertObject(objectType) {\n const propertyDatasource = {};\n (objectType.properties ?? []).forEach(property => {\n propertyDatasource[property.apiName] = {\n type: \"column\",\n column: property.apiName\n };\n });\n const datasource = {\n rid: \"ri.ontology.main.datasource.\".concat(objectType.apiName),\n datasource: {\n type: \"datasetV2\",\n datasetV2: {\n datasetRid: objectType.apiName,\n propertyMapping: propertyDatasource\n }\n },\n editsConfiguration: {\n onlyAllowPrivilegedEdits: false\n },\n redacted: false\n };\n const implementations = objectType.implementsInterfaces ?? [];\n return {\n objectType: {\n displayMetadata: {\n description: objectType.description,\n displayName: objectType.displayName,\n groupDisplayName: undefined,\n icon: {\n type: \"blueprint\",\n blueprint: objectType.icon ?? {\n locator: \"cube\",\n color: \"#2D72D2\"\n }\n },\n pluralDisplayName: objectType.pluralDisplayName,\n visibility: objectType.visibility ?? \"NORMAL\"\n },\n primaryKeys: objectType.primaryKeys,\n propertyTypes: Object.fromEntries(objectType.properties?.map(val => [val.apiName, convertProperty(val)]) ?? []),\n titlePropertyTypeRid: objectType.titlePropertyApiName,\n apiName: objectType.apiName,\n status: objectType.status ?? {\n type: \"active\",\n active: {}\n },\n redacted: false,\n implementsInterfaces2: implementations.map(impl => ({\n interfaceTypeApiName: impl.implements.apiName,\n properties: Object.fromEntries(impl.propertyMapping.map(mapping => [namespace + mapping.interfaceProperty, {\n propertyTypeRid: mapping.mapsTo\n }]))\n })),\n allImplementsInterfaces: {}\n },\n datasources: [datasource],\n entityMetadata: {\n arePatchesEnabled: objectType.editsEnabled ?? false\n }\n };\n}\nfunction convertProperty(property) {\n const output = {\n apiName: property.apiName,\n sharedPropertyTypeApiName: property.sharedPropertyType?.apiName,\n displayMetadata: {\n displayName: property.displayName,\n description: property.description,\n visibility: property.visibility ?? \"NORMAL\"\n },\n indexedForSearch: property.indexedForSearch ?? true,\n ruleSetBinding: undefined,\n baseFormatter: property.baseFormatter,\n type: convertType(property.type),\n typeClasses: property.typeClasses ?? [],\n status: property.status ?? {\n type: \"active\",\n active: {}\n },\n inlineAction: undefined,\n dataConstraints: property.dataConstraints,\n sharedPropertyTypeRid: property.sharedPropertyType?.apiName,\n valueType: undefined\n };\n return output;\n}\nfunction convertInterface(interfaceType) {\n return {\n ...interfaceType,\n properties: Object.values(interfaceType.properties).map(spt => convertSpt(spt)),\n // these are omitted from our internal types but we need to re-add them for the final json\n allExtendsInterfaces: [],\n allLinks: [],\n allProperties: []\n };\n}\nexport function dumpOntologyFullMetadata() {\n return convertToWireOntologyIr(ontologyDefinition);\n}\nexport function dumpValueTypeWireType() {\n return convertOntologyToValueTypeIr(ontologyDefinition);\n}\nfunction convertSpt({\n type,\n array,\n description,\n apiName,\n displayName,\n gothamMapping,\n typeClasses,\n valueType\n}) {\n const dataConstraint = typeof type === \"object\" && type.type === \"marking\" ? {\n propertyTypeConstraints: [],\n nullability: undefined,\n nullabilityV2: {\n noEmptyCollections: true,\n noNulls: true\n }\n } : undefined;\n return {\n apiName,\n displayMetadata: {\n displayName: displayName ?? apiName,\n visibility: \"NORMAL\",\n description\n },\n type: array ? {\n type: \"array\",\n array: {\n subtype: convertType(type)\n }\n } : convertType(type),\n aliases: [],\n baseFormatter: undefined,\n dataConstraints: dataConstraint,\n gothamMapping: gothamMapping,\n indexedForSearch: true,\n provenance: undefined,\n typeClasses: typeClasses ?? [],\n valueType: valueType\n };\n}\nfunction convertType(type) {\n switch (true) {\n case typeof type === \"object\" && \"markingType\" in type:\n return {\n \"type\": \"marking\",\n marking: {\n markingType: type.markingType\n }\n };\n case typeof type === \"object\" && \"structDefinition\" in type:\n const structFields = new Array();\n for (const key in type.structDefinition) {\n const fieldTypeDefinition = type.structDefinition[key];\n let field;\n if (typeof fieldTypeDefinition === \"string\") {\n field = {\n apiName: key,\n displayMetadata: {\n displayName: key,\n description: undefined\n },\n typeClasses: [],\n aliases: [],\n fieldType: convertType(fieldTypeDefinition)\n };\n } else {\n // If it is a full form type definition then process it as such\n if (\"fieldType\" in fieldTypeDefinition) {\n field = {\n ...fieldTypeDefinition,\n apiName: key,\n fieldType: convertType(fieldTypeDefinition.fieldType),\n typeClasses: fieldTypeDefinition.typeClasses ?? [],\n aliases: fieldTypeDefinition.aliases ?? []\n };\n } else {\n field = {\n apiName: key,\n displayMetadata: {\n displayName: key,\n description: undefined\n },\n typeClasses: [],\n aliases: [],\n fieldType: convertType(fieldTypeDefinition)\n };\n }\n }\n structFields.push(field);\n }\n return {\n type: \"struct\",\n struct: {\n structFields\n }\n };\n case type === \"geopoint\":\n return {\n type: \"geohash\",\n geohash: {}\n };\n case type === \"decimal\":\n return {\n type,\n [type]: {\n precision: undefined,\n scale: undefined\n }\n };\n case type === \"string\":\n return {\n type,\n [type]: {\n analyzerOverride: undefined,\n enableAsciiFolding: undefined,\n isLongText: false,\n supportsEfficientLeadingWildcard: false,\n supportsExactMatching: true\n }\n };\n case type === \"mediaReference\":\n return {\n type: type,\n mediaReference: {}\n };\n default:\n // use helper function to distribute `type` properly\n return distributeTypeHelper(type);\n }\n}\n\n/**\n * Helper function to avoid duplication. Makes the types match properly with the correct\n * behavior without needing to switch on type.\n * @param type\n * @returns\n */\nfunction distributeTypeHelper(type) {\n return {\n type,\n [type]: {}\n }; // any cast to match conditional return type\n}","/*\n * Copyright 2024 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 invariant from \"tiny-invariant\";\nimport { namespace, ontologyDefinition } from \"./defineOntology.js\";\nconst defaultTypeClasses = [{\n kind: \"render_hint\",\n name: \"SELECTABLE\"\n}, {\n kind: \"render_hint\",\n name: \"SORTABLE\"\n}];\nexport function defineSharedPropertyType(opts) {\n const apiName = namespace + opts.apiName;\n !(ontologyDefinition.sharedPropertyTypes[apiName] === undefined) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Shared property type ${apiName} already exists`) : invariant(false) : void 0;\n return ontologyDefinition.sharedPropertyTypes[apiName] = {\n ...opts,\n apiName,\n nonNameSpacedApiName: opts.apiName,\n displayName: opts.displayName ?? opts.apiName,\n // This way the non-namespaced api name is the display name (maybe not ideal)\n typeClasses: opts.typeClasses ?? defaultTypeClasses\n };\n}","/*\n * Copyright 2024 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 invariant from \"tiny-invariant\";\nimport { namespace, ontologyDefinition } from \"./defineOntology.js\";\nimport { defineSharedPropertyType } from \"./defineSpt.js\";\nexport function defineInterface(opts) {\n const apiName = namespace + opts.apiName;\n !(ontologyDefinition.interfaceTypes[apiName] === undefined) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Interface ${apiName} already exists`) : invariant(false) : void 0;\n const properties = Object.fromEntries(Object.entries(opts.properties ?? {}).map(([apiName, type]) => {\n if (typeof type === \"string\" || typeof type === \"object\" && !(\"apiName\" in type)) {\n !isPropertyTypeType(type) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Invalid data type ${JSON.stringify(type)} for property ${apiName} on InterfaceType ${apiName}`) : invariant(false) : void 0;\n const spt = defineSharedPropertyType({\n apiName,\n displayName: apiName,\n type,\n array: false\n });\n return [apiName, spt];\n } else {\n const unNamespacedTypeApiName = type.apiName.slice(type.apiName.lastIndexOf(\".\") + 1);\n !(namespace + apiName === type.apiName || apiName === unNamespacedTypeApiName) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `property key and it's apiName must be identical. ${JSON.stringify({\n key: apiName,\n apiName: type.apiName\n })}`) : invariant(false) : void 0;\n return [apiName, type];\n }\n }));\n let extendsInterfaces = [];\n if (opts.extends) {\n if (typeof opts.extends === \"string\") {\n extendsInterfaces = [opts.extends];\n } else if (Array.isArray(opts.extends) && opts.extends.every(item => typeof item === \"string\")) {\n extendsInterfaces = opts.extends;\n } else if (opts.extends.apiName !== undefined) {\n extendsInterfaces = [opts.extends.apiName];\n } else {\n extendsInterfaces = opts.extends.map(item => item.apiName);\n }\n }\n const status = mapSimplifiedStatusToInterfaceTypeStatus(opts.status ?? {\n type: \"active\"\n });\n !(status.type !== \"deprecated\" || status.deprecated.message && status.deprecated.deadline) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Deprecated status must include message and deadline properties.`) : invariant(false) : void 0;\n const a = {\n apiName,\n displayMetadata: {\n displayName: opts.displayName ?? opts.apiName,\n description: opts.description ?? opts.displayName ?? opts.apiName,\n icon: opts.icon !== undefined ? {\n type: \"blueprint\",\n blueprint: {\n color: opts.icon.color,\n locator: opts.icon.locator\n }\n } : undefined\n },\n extendsInterfaces: extendsInterfaces,\n links: [],\n properties,\n status\n };\n return ontologyDefinition.interfaceTypes[apiName] = a;\n}\nfunction isPropertyTypeType(v) {\n return v === \"boolean\" || v === \"byte\" || v === \"date\" || v === \"decimal\" || v === \"double\" || v === \"float\" || v === \"geopoint\" || v === \"geoshape\" || v === \"integer\" || v === \"long\" || typeof v === \"object\" && v.type === \"marking\" || v === \"short\" || v === \"string\" || v === \"timestamp\";\n}\nfunction mapSimplifiedStatusToInterfaceTypeStatus(status) {\n switch (status.type) {\n case \"deprecated\":\n return {\n type: \"deprecated\",\n deprecated: {\n message: status.message,\n deadline: status.deadline,\n replacedBy: undefined\n }\n };\n case \"active\":\n return {\n type: \"active\",\n active: {}\n };\n case \"experimental\":\n return {\n type: \"experimental\",\n experimental: {}\n };\n default:\n throw new Error(`Invalid status type: ${status.type}`);\n }\n}","/*\n * Copyright 2024 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 invariant from \"tiny-invariant\";\nimport { namespace, ontologyDefinition } from \"./defineOntology.js\";\nexport function defineObject(objectDef) {\n const apiName = namespace + objectDef.apiName;\n const propertyApiNames = (objectDef.properties ?? []).map(val => val.apiName);\n if (ontologyDefinition.objectTypes[apiName] !== undefined) {\n throw new Error(`Object type with apiName ${objectDef.apiName} is already defined`);\n }\n !propertyApiNames.includes(objectDef.titlePropertyApiName) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Title property ${objectDef.titlePropertyApiName} is not defined on object ${objectDef.apiName}`) : invariant(false) : void 0;\n !(objectDef.primaryKeys.length !== 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `${objectDef.apiName} does not have any primary keys, objects must have at least one primary key`) : invariant(false) : void 0;\n const nonExistentPrimaryKeys = objectDef.primaryKeys.filter(primaryKey => !objectDef.properties?.map(val => val.apiName).includes(primaryKey));\n !(nonExistentPrimaryKeys.length === 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Primary key properties ${nonExistentPrimaryKeys} do not exist on object ${objectDef.apiName}`) : invariant(false) : void 0;\n objectDef.implementsInterfaces?.forEach(interfaceImpl => {\n const nonExistentInterfaceProperties = interfaceImpl.propertyMapping.map(val => val.interfaceProperty).filter(interfaceProperty => interfaceImpl.implements.properties[interfaceProperty] === undefined).map(interfaceProp => ({\n type: \"invalid\",\n reason: `Interface property ${interfaceImpl.implements.apiName}.${interfaceProp} referenced in ${objectDef.apiName} object does not exist`\n }));\n const interfaceToObjectProperties = Object.fromEntries(interfaceImpl.propertyMapping.map(mapping => [mapping.interfaceProperty, mapping.mapsTo]));\n const validateProperty = interfaceProp => {\n if (interfaceProp[1].nonNameSpacedApiName in interfaceToObjectProperties) {\n return validateInterfaceImplProperty(interfaceProp[1], interfaceToObjectProperties[interfaceProp[0]], objectDef);\n }\n return {\n type: \"invalid\",\n reason: `Interface property ${interfaceImpl.implements.apiName}.${interfaceProp[1].nonNameSpacedApiName} not implemented by ${objectDef.apiName} object definition`\n };\n };\n const baseValidations = Object.entries(interfaceImpl.implements.properties).map(validateProperty);\n const extendsValidations = interfaceImpl.implements.extendsInterfaces.flatMap(interfaceApiName => Object.entries(ontologyDefinition.interfaceTypes[interfaceApiName].properties).map(validateProperty));\n const allFailedValidations = baseValidations.concat(extendsValidations, nonExistentInterfaceProperties).filter(val => val.type === \"invalid\");\n !(allFailedValidations.length === 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"\\n\" + allFailedValidations.map(formatValidationErrors).join(\"\\n\")) : invariant(false) : void 0;\n });\n ontologyDefinition.objectTypes[apiName] = {\n ...objectDef,\n apiName: apiName\n };\n return {\n ...objectDef,\n apiName: apiName\n };\n}\nfunction formatValidationErrors(error) {\n return `Ontology Definition Error: ${error.reason}\\n`;\n}\n\n// Validate that the object and the interface property match up\nfunction validateInterfaceImplProperty(spt, mappedObjectProp, object) {\n const objProp = object.properties?.find(prop => prop.apiName === mappedObjectProp);\n if (objProp === undefined) {\n return {\n type: \"invalid\",\n reason: `Object property mapped to interface does not exist. Object Property Mapped: ${mappedObjectProp}`\n };\n }\n if (spt.type !== objProp?.type) {\n return {\n type: \"invalid\",\n reason: `Object property type does not match the interface property it is mapped to. Interface Property: ${spt.apiName}, objectProperty: ${mappedObjectProp}`\n };\n }\n return {\n type: \"valid\"\n };\n}","/*\n * Copyright 2024 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 { consola } from \"consola\";\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport invariant from \"tiny-invariant\";\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\nimport { defineInterface } from \"../api/defineInterface.js\";\nimport { defineObject } from \"../api/defineObject.js\";\nimport { defineOntology } from \"../api/defineOntology.js\";\nimport { defineSharedPropertyType } from \"../api/defineSpt.js\";\nconst apiNamespaceRegex = /^[a-z0-9-]+(\\.[a-z0-9-]+)*\\.$/;\nexport default async function main(args = process.argv) {\n const commandLineOpts = await yargs(hideBin(args)).version(process.env.PACKAGE_VERSION ?? \"\").wrap(Math.min(150, yargs().terminalWidth())).strict().help().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\",\n type: \"string\",\n default: \"ontology.json\",\n coerce: path.resolve\n },\n apiNamespace: {\n describe: \"Api name prefix for namespaced ontology types\",\n type: \"string\",\n default: \"\"\n },\n snapshotDir: {\n alias: \"s\",\n describe: \"Snapshot directory\",\n type: \"string\",\n default: \"snapshots\",\n coerce: path.resolve\n },\n valueTypesOutput: {\n describe: \"Value Type Output File\",\n type: \"string\",\n default: \"value-types.json\",\n coerce: path.resolve\n }\n }).parseAsync();\n let apiNamespace = \"\";\n if (commandLineOpts.apiNamespace.length !== 0) {\n apiNamespace = commandLineOpts.apiNamespace.slice(-1) !== \".\" ? commandLineOpts.apiNamespace + \".\" : commandLineOpts.apiNamespace;\n !(apiNamespace.length < 1024) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"API namespace is too long.\") : invariant(false) : void 0;\n !apiNamespaceRegex.test(apiNamespace) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"API namespace is invalid! It is expected to conform to ^[a-z0-9-]+(\\.[a-z0-9-]+)*\\.$\") : invariant(false) : void 0;\n }\n consola.info(`Loading ontology from ${commandLineOpts.input}`);\n const ontology = await loadOntology(commandLineOpts.input, apiNamespace);\n consola.info(`Saving ontology to ${commandLineOpts.output}`);\n await fs.writeFile(commandLineOpts.output, JSON.stringify(ontology.ontology, null, 2));\n // No point in generating block if there aren't any value types\n if (ontology.valueType.valueTypes.length > 0) {\n await fs.writeFile(commandLineOpts.valueTypesOutput, JSON.stringify(ontology.valueType, null, 2));\n }\n}\nasync function loadOntologyViaJiti(input) {\n Object.assign(globalThis, {\n defineInterface,\n defineObject,\n defineSharedPropertyType\n });\n const jiti_ = await import(\"jiti\");\n const jiti = jiti_.default(process.cwd(), {\n debug: true\n });\n return defineOntology(\"\", async () => await jiti(input));\n}\nasync function loadOntologyViaTsNode(input) {\n Object.assign(globalThis, {\n defineInterface,\n defineObject,\n defineSharedPropertyType\n });\n const tsNode = await import(\"ts-node\");\n const tsNodeService = tsNode.register({\n transpileOnly: true,\n compilerOptions: {\n module: \"commonjs\",\n target: \"esnext\"\n },\n esm: true\n });\n tsNodeService.enabled(true);\n const q = await import(input);\n return q;\n}\nasync function loadOntology(input, apiNamespace) {\n // Object.assign(globalThis, {\n // defineInterface,\n // defineLink,\n // defineObject,\n // defineSharedPropertyType,\n // });\n\n const q = await defineOntology(apiNamespace, async () => await import(input));\n return q;\n}","/*\n * Copyright 2024 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 invariant from \"tiny-invariant\";\nimport { ontologyDefinition } from \"./defineOntology.js\";\n/**\n * Defines a foreign shared property type you want to take as an input to your product. The typeHint field is used for OSDK generation\n */\nexport function importSharedPropertyType(opts) {\n const {\n apiName,\n packageName,\n typeHint\n } = opts;\n if (packageName !== undefined) {\n ontologyDefinition.importedTypes.sharedPropertyTypes.push({\n apiName,\n packageName\n });\n !!packageName.endsWith(\".\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Package name format invalid ends with period\") : invariant(false) : void 0;\n !(packageName.match(\"[A-Z]\") == null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Package name includes upper case characters\") : invariant(false) : void 0;\n return {\n apiName: packageName + \".\" + apiName,\n type: typeHint,\n nonNameSpacedApiName: apiName\n };\n }\n return {\n apiName: apiName,\n type: typeHint,\n nonNameSpacedApiName: apiName\n };\n}","/*\n * Copyright 2024 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 invariant from \"tiny-invariant\";\nimport { namespace } from \"./defineOntology.js\";\nexport function defineInterfaceLinkConstraint(linkDef) {\n const fromLinkMeta = getLinkMeta(linkDef);\n !(linkDef.from.links.find(a => a.metadata.apiName === fromLinkMeta.apiName) == null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Link with apiName ${fromLinkMeta.apiName} already exists on ${linkDef.apiName}`) : invariant(false) : void 0;\n linkDef.from.links.push({\n cardinality: linkDef.toMany ? \"MANY\" : \"SINGLE\",\n linkedEntityTypeId: getLinkedType(linkDef.toMany ?? linkDef.toOne),\n metadata: fromLinkMeta,\n required: linkDef.required ?? true\n });\n}\nfunction getLinkedType(t) {\n return {\n type: \"interfaceType\",\n interfaceType: typeof t === \"string\" ? t : t.apiName\n };\n}\nfunction getLinkMeta(meta) {\n return typeof meta === \"string\" ? withDefaults({\n apiName: namespace + meta\n }) : withDefaults(meta);\n}\nfunction withDefaults({\n apiName,\n description,\n displayName\n}) {\n return {\n apiName: namespace + apiName,\n displayName: displayName ?? apiName,\n description: description ?? displayName ?? apiName\n };\n}","/*\n * Copyright 2024 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 invariant from \"tiny-invariant\";\nimport { ontologyDefinition } from \"./defineOntology.js\";\nfunction convertValueTypeTypeToBaseType(valueType) {\n if (typeof valueType === \"string\") {}\n switch (true) {\n case typeof valueType === \"object\" && valueType.type === \"array\":\n return {\n type: \"array\",\n array: {\n elementType: convertValueTypeTypeToBaseType(valueType.elementType)\n }\n };\n case typeof valueType === \"object\" && valueType.type === \"struct\":\n return {\n type: \"structV2\",\n structV2: {\n fields: valueType.fields.map(field => ({\n identifier: field.identifier,\n baseType: convertValueTypeTypeToBaseType(field.baseType)\n }))\n }\n };\n case typeof valueType === \"object\" && valueType.type === \"map\":\n return {\n type: \"map\",\n map: {\n keyType: convertValueTypeTypeToBaseType(valueType.keyType),\n valueType: convertValueTypeTypeToBaseType(valueType.valueType)\n }\n };\n case typeof valueType === \"object\" && valueType.type === \"optional\":\n return {\n type: \"optional\",\n optional: {\n wrappedType: convertValueTypeTypeToBaseType(valueType.wrappedType)\n }\n };\n case typeof valueType === \"string\":\n return {\n type: valueType,\n [valueType]: {}\n };\n default:\n throw new Error(\"Invalid ValueTypeType\");\n }\n}\nexport function defineValueType(opts) {\n const {\n apiName,\n displayName,\n description,\n type,\n version\n } = opts;\n const semverValidation = /^((([0-9]+)\\.([0-9]+)\\.([0-9]+)(?:-([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)$/;\n !semverValidation.test(version) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Version is not a valid semver\") : invariant(false) : void 0;\n const typeName = typeof type.type === \"string\" ? type.type : type.type.type === \"struct\" ? \"structV2\" : type.type.type;\n // These suck but TS doesn't understand the relationship from the key of the base type to the type string\n const constraints = type.constraints ? type.constraints.map(constraint => {\n const output = {\n constraint: {\n type: typeName,\n [typeName]: constraint.constraint\n },\n failureMessage: constraint.failureMessage\n };\n return {\n constraint: output\n };\n }) : [];\n const baseType = convertValueTypeTypeToBaseType(type.type);\n const vt = {\n apiName,\n displayMetadata: {\n displayName: displayName,\n description: description ?? \"\"\n },\n status: {\n type: \"active\",\n active: {}\n },\n version: version,\n baseType: baseType,\n constraints: constraints,\n exampleValues: []\n };\n if (ontologyDefinition.valueTypes[apiName] === undefined) {\n ontologyDefinition.valueTypes[apiName] = [];\n }\n ontologyDefinition.valueTypes[apiName].push(vt);\n return vt;\n}"]}
@@ -26,7 +26,7 @@ import { defineOntology } from "../api/defineOntology.js";
26
26
  import { defineSharedPropertyType } from "../api/defineSpt.js";
27
27
  const apiNamespaceRegex = /^[a-z0-9-]+(\.[a-z0-9-]+)*\.$/;
28
28
  export default async function main(args = process.argv) {
29
- const commandLineOpts = await yargs(hideBin(args)).version("0.9.0-beta.28" ?? "").wrap(Math.min(150, yargs().terminalWidth())).strict().help().options({
29
+ const commandLineOpts = await yargs(hideBin(args)).version("0.9.0-beta.29" ?? "").wrap(Math.min(150, yargs().terminalWidth())).strict().help().options({
30
30
  input: {
31
31
  alias: "i",
32
32
  describe: "Input file",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osdk/maker",
3
- "version": "0.9.0-beta.28",
3
+ "version": "0.9.0-beta.29",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -32,16 +32,16 @@
32
32
  "tiny-invariant": "^1.3.3",
33
33
  "ts-node": "^10.9.2",
34
34
  "yargs": "^17.7.2",
35
- "@osdk/api": "~2.1.0-beta.28"
35
+ "@osdk/api": "~2.1.0-beta.29"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@osdk/internal.foundry.core": "2.11.0",
39
39
  "@types/yargs": "^17.0.32",
40
40
  "typescript": "~5.5.4",
41
41
  "vitest": "^3.0.5",
42
+ "@osdk/client.unstable": "~2.1.0-beta.29",
42
43
  "@osdk/monorepo.api-extractor": "~0.0.0",
43
- "@osdk/monorepo.tsconfig": "~0.0.0",
44
- "@osdk/client.unstable": "~2.1.0-beta.28"
44
+ "@osdk/monorepo.tsconfig": "~0.0.0"
45
45
  },
46
46
  "publishConfig": {
47
47
  "access": "public"