@osdk/faux 0.48.0 → 0.49.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.
@@ -30,6 +30,7 @@ export class FauxOntology {
30
30
  constructor(ontology) {
31
31
  this.#ontology = {
32
32
  actionTypes: {},
33
+ actionTypesFullMetadata: {},
33
34
  interfaceTypes: {},
34
35
  objectTypes: {},
35
36
  ontology,
@@ -52,6 +53,7 @@ export class FauxOntology {
52
53
  linkTypes: objectTypeDefinition.linkTypes.filter(linkType => request.linkTypes.includes(linkType.apiName))
53
54
  }])),
54
55
  actionTypes: filterRecord(this.#ontology.actionTypes, request.actionTypes),
56
+ actionTypesFullMetadata: {},
55
57
  queryTypes: this.#getFilteredQueryTypes(request),
56
58
  interfaceTypes: filterRecord(this.#ontology.interfaceTypes, request.interfaceTypes),
57
59
  sharedPropertyTypes: {},
@@ -1 +1 @@
1
- {"version":3,"file":"FauxOntology.js","names":["semver","valid","invariant","ActionNotFoundError","LinkTypeNotFound","ObjectNotFoundError","ObjectTypeDoesNotExistError","QueryNotFoundError","camelize","OpenApiCallError","FauxOntology","ontology","actionImpl","Map","queryImpl","constructor","actionTypes","interfaceTypes","objectTypes","queryTypes","sharedPropertyTypes","valueTypes","apiName","getOntologyFullMetadata","getFilteredOntologyMetadata","request","Object","fromEntries","entries","filter","objectType","includes","map","objectTypeApiName","objectTypeDefinition","linkTypes","linkType","filterRecord","getFilteredQueryTypes","getAllInterfaceTypes","values","getAllObjectTypes","getAllActionTypes","getAllQueryTypes","getInterfaceType","interfaceType","ret","undefined","getObjectTypeFullMetadata","getObjectTypeFullMetadataOrThrow","getActionDef","actionTypeApiName","actionType","getActionImpl","impl","get","process","env","NODE_ENV","getQueryDef","queryTypeApiNameAndVersion","queryType","convertToVersionedApiName","getQueryImpl","queryTypeApiName","version","versionMap","rsort","Array","from","keys","getInterfaceToObjectTypeMappings","objectApiNames","objectDefs","ifaceToObjMap","objDef","ifaceApiName","properties","implementsInterfaces2","getLinkTypeSideV2","linkTypeName","find","a","getOtherLinkTypeSideV2OrThrow","thisSideLink","otherObj","candidates","l","linkTypeRid","length","candidate","getBothLinkTypeSides","leftObjectType","leftLinkName","rightObjectType","leftTypeSideV2","rightTypeSideV2","registerObjectType","def","Error","registerActionType","implementation","set","registerQueryType","has","registerInterfaceType","registerSharedPropertyType","#getFilteredQueryTypes","remappedQueryTypes","x","queryTypeDefinition","indexOf","#convertToVersionedApiName","extractVersion","split","record","key"],"sources":["FauxOntology.ts"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { type ObjectTypeDefinition } from \"@osdk/api\";\nimport type * as OntologiesV2 from \"@osdk/foundry.ontologies\";\nimport type {\n LoadOntologyMetadataRequest,\n VersionedQueryTypeApiName,\n} from \"@osdk/internal.foundry.ontologies\";\nimport semver, { valid } from \"semver\";\nimport invariant from \"tiny-invariant\";\nimport type { ReadonlyDeep } from \"type-fest\";\n\nimport {\n ActionNotFoundError,\n LinkTypeNotFound,\n ObjectNotFoundError,\n ObjectTypeDoesNotExistError,\n QueryNotFoundError,\n} from \"../errors.js\";\nimport { camelize } from \"../handlers/util/camelize.js\";\nimport { OpenApiCallError } from \"../handlers/util/handleOpenApiCall.js\";\nimport type { FauxActionImpl } from \"./FauxActionImpl.js\";\nimport type { FauxQueryImpl } from \"./FauxQueryImpl.js\";\nimport type { TH_ObjectTypeFullMetadata } from \"./typeHelpers/TH_ObjectTypeFullMetadata.js\";\n\n/**\n * Currently Unsupported Concepts:\n * - many:many links.\n */\nexport class FauxOntology {\n #ontology: OntologiesV2.OntologyFullMetadata;\n #actionImpl: Map<OntologiesV2.ActionTypeApiName, FauxActionImpl> = new Map();\n #queryImpl: Map<\n OntologiesV2.QueryApiName,\n Map<OntologiesV2.FunctionVersion, FauxQueryImpl>\n > = new Map();\n\n constructor(ontology: OntologiesV2.OntologyV2) {\n this.#ontology = {\n actionTypes: {},\n interfaceTypes: {},\n objectTypes: {},\n ontology,\n queryTypes: {},\n sharedPropertyTypes: {},\n valueTypes: {},\n };\n }\n\n get apiName(): OntologiesV2.OntologyApiName {\n return this.#ontology.ontology.apiName;\n }\n\n getOntologyFullMetadata(): OntologiesV2.OntologyFullMetadata {\n return this.#ontology;\n }\n\n getFilteredOntologyMetadata(\n request: OntologiesV2.LoadOntologyMetadataRequest,\n ): OntologiesV2.OntologyFullMetadata {\n return {\n ontology: this.#ontology.ontology,\n objectTypes: Object.fromEntries(\n Object.entries(this.#ontology.objectTypes)\n .filter(([objectType]) => request.objectTypes.includes(objectType))\n .map(([objectTypeApiName, objectTypeDefinition]) => [\n objectTypeApiName,\n {\n ...objectTypeDefinition,\n linkTypes: objectTypeDefinition.linkTypes.filter((linkType) =>\n request.linkTypes.includes(linkType.apiName),\n ),\n },\n ]),\n ),\n actionTypes: filterRecord(\n this.#ontology.actionTypes,\n request.actionTypes,\n ),\n queryTypes: this.#getFilteredQueryTypes(request),\n\n interfaceTypes: filterRecord(\n this.#ontology.interfaceTypes,\n request.interfaceTypes,\n ),\n sharedPropertyTypes: {},\n valueTypes: {},\n };\n }\n\n getAllInterfaceTypes(): OntologiesV2.InterfaceType[] {\n return Object.values(this.#ontology.interfaceTypes);\n }\n\n getAllObjectTypes(): OntologiesV2.ObjectTypeFullMetadata[] {\n return Object.values(this.#ontology.objectTypes);\n }\n\n getAllActionTypes(): OntologiesV2.ActionTypeV2[] {\n return Object.values(this.#ontology.actionTypes);\n }\n\n getAllQueryTypes(): OntologiesV2.QueryTypeV2[] {\n return Object.values(this.#ontology.queryTypes);\n }\n\n getInterfaceType(interfaceType: string): OntologiesV2.InterfaceType {\n const ret = this.#ontology.interfaceTypes[interfaceType];\n\n if (ret === undefined) {\n throw new OpenApiCallError(404, ObjectNotFoundError(interfaceType, \"\"));\n }\n\n return this.#ontology.interfaceTypes[interfaceType];\n }\n\n public getObjectTypeFullMetadata(\n objectTypeApiName: string,\n ): OntologiesV2.ObjectTypeFullMetadata | undefined {\n return this.#ontology.objectTypes[objectTypeApiName];\n }\n\n public getObjectTypeFullMetadataOrThrow(\n objectTypeApiName: string,\n ): OntologiesV2.ObjectTypeFullMetadata {\n const objectType = this.#ontology.objectTypes[objectTypeApiName];\n if (objectType === undefined) {\n throw new OpenApiCallError(\n 404,\n ObjectTypeDoesNotExistError(objectTypeApiName),\n );\n }\n return objectType;\n }\n\n public getActionDef(actionTypeApiName: string): OntologiesV2.ActionTypeV2 {\n const actionType = this.#ontology.actionTypes[camelize(actionTypeApiName)];\n if (actionType === undefined) {\n throw new OpenApiCallError(404, ActionNotFoundError());\n }\n return actionType;\n }\n\n public getActionImpl(actionTypeApiName: string): FauxActionImpl {\n const impl = this.#actionImpl.get(camelize(actionTypeApiName));\n invariant(impl, \"Action implementation not found for \" + actionTypeApiName);\n return impl;\n }\n\n public getQueryDef(\n queryTypeApiNameAndVersion: string,\n ): OntologiesV2.QueryTypeV2 {\n const queryType =\n this.#ontology.queryTypes[\n this.#convertToVersionedApiName(queryTypeApiNameAndVersion)\n ];\n if (queryType === undefined) {\n throw new OpenApiCallError(\n 404,\n QueryNotFoundError(queryTypeApiNameAndVersion),\n );\n }\n return queryType;\n }\n\n public getQueryImpl(\n queryTypeApiName: string,\n version?: string,\n ): FauxQueryImpl {\n const versionMap = this.#queryImpl.get(queryTypeApiName);\n\n const impl =\n version !== undefined\n ? versionMap?.get(version)\n : versionMap?.get(semver.rsort(Array.from(versionMap.keys() ?? []))[0]);\n\n if (!impl) {\n throw new OpenApiCallError(404, QueryNotFoundError(queryTypeApiName));\n }\n invariant(impl, \"Query implementation not found for \" + queryTypeApiName);\n return impl;\n }\n\n public getInterfaceToObjectTypeMappings(\n objectApiNames: Iterable<OntologiesV2.ObjectTypeApiName>,\n ): Record<\n OntologiesV2.InterfaceTypeApiName,\n OntologiesV2.InterfaceToObjectTypeMappings\n > {\n const objectDefs = Array.from(objectApiNames).map((apiName) =>\n this.getObjectTypeFullMetadataOrThrow(apiName),\n );\n\n const ifaceToObjMap: Record<\n OntologiesV2.InterfaceTypeApiName,\n OntologiesV2.InterfaceToObjectTypeMappings\n > = {};\n\n for (const objDef of objectDefs) {\n for (const [ifaceApiName, { properties }] of Object.entries(\n objDef.implementsInterfaces2,\n )) {\n if (ifaceToObjMap[ifaceApiName] === undefined) {\n ifaceToObjMap[ifaceApiName] = {};\n }\n\n ifaceToObjMap[ifaceApiName][objDef.objectType.apiName] = properties;\n }\n }\n\n return ifaceToObjMap;\n }\n\n public getLinkTypeSideV2(\n objectTypeApiName: string,\n linkTypeName: string,\n ): OntologiesV2.LinkTypeSideV2 {\n const objectType = this.getObjectTypeFullMetadataOrThrow(objectTypeApiName);\n const linkType = objectType.linkTypes.find(\n (a) => a.apiName === linkTypeName,\n );\n if (linkType === undefined) {\n throw new OpenApiCallError(\n 404,\n LinkTypeNotFound(objectTypeApiName, linkTypeName),\n );\n }\n return linkType;\n }\n\n public getOtherLinkTypeSideV2OrThrow(\n objectTypeApiName: string,\n linkTypeName: string,\n ): OntologiesV2.LinkTypeSideV2 {\n const thisSideLink = this.getLinkTypeSideV2(\n objectTypeApiName,\n linkTypeName,\n );\n const otherObj = this.getObjectTypeFullMetadataOrThrow(\n thisSideLink.objectTypeApiName,\n );\n const candidates = otherObj.linkTypes.filter(\n (l) => l.linkTypeRid === thisSideLink.linkTypeRid,\n );\n if (otherObj.objectType.apiName !== objectTypeApiName) {\n // if its not the same object type then there should only be one\n invariant(\n candidates.length === 1,\n \"Expected only one candidate link type\",\n );\n return candidates[0];\n }\n // if its the same object type, then this could be a link that points to itself that\n // is 1:1, many:1 or many:many. In the 1:1 case, the link could have the same name\n // and there would only be 1 entry in that case. Otherwise there should be 2 entries\n // and we want the one that doesn't match the one passed in.\n if (candidates.length === 1) {\n return candidates[0];\n }\n invariant(\n candidates.length === 2,\n \"Expected only two candidate link types\",\n );\n const candidate = candidates.find(\n (l) => l.apiName !== thisSideLink.apiName,\n );\n invariant(\n candidate,\n \"Expected to find a candidate link type that is not the same as the one passed in\",\n );\n return candidate;\n }\n\n getBothLinkTypeSides(\n leftObjectType: string,\n leftLinkName: string,\n rightObjectType: string,\n ): [OntologiesV2.LinkTypeSideV2, OntologiesV2.LinkTypeSideV2] {\n const leftTypeSideV2 = this.getLinkTypeSideV2(leftObjectType, leftLinkName);\n\n // the rhs passed in should match the target of the lhs\n invariant(rightObjectType === leftTypeSideV2.objectTypeApiName);\n\n const rightTypeSideV2 = this.getOtherLinkTypeSideV2OrThrow(\n leftObjectType,\n leftLinkName,\n );\n\n return [leftTypeSideV2, rightTypeSideV2];\n }\n\n registerObjectType<Q extends ObjectTypeDefinition>(\n def: TH_ObjectTypeFullMetadata<Q>,\n ): void;\n registerObjectType(\n def: ReadonlyDeep<OntologiesV2.ObjectTypeFullMetadata>,\n ): void;\n registerObjectType<Q extends ObjectTypeDefinition>(\n def: TH_ObjectTypeFullMetadata<Q> | OntologiesV2.ObjectTypeFullMetadata,\n ): void {\n if (def.objectType.apiName in this.#ontology.objectTypes) {\n throw new Error(\n `ObjectType ${def.objectType.apiName} already registered`,\n );\n }\n this.#ontology.objectTypes[def.objectType.apiName] = def;\n }\n\n registerActionType<Q extends OntologiesV2.ActionTypeV2>(\n def: Q,\n implementation?: FauxActionImpl<Q>,\n ): void;\n registerActionType(\n def: OntologiesV2.ActionTypeV2,\n implementation?: FauxActionImpl,\n ): void;\n registerActionType(\n def: OntologiesV2.ActionTypeV2,\n implementation?: FauxActionImpl,\n ): void {\n if (def.apiName in this.#ontology.actionTypes) {\n throw new Error(`ActionType ${def.apiName} already registered`);\n }\n this.#ontology.actionTypes[def.apiName] = def;\n if (implementation) {\n this.#actionImpl.set(def.apiName, implementation);\n }\n }\n\n registerQueryType(\n def: OntologiesV2.QueryTypeV2,\n implementation?: FauxQueryImpl,\n ): void {\n if (`${def.apiName}:${def.version}` in this.#ontology.queryTypes) {\n throw new Error(`QueryType ${def.apiName} already registered`);\n }\n this.#ontology.queryTypes[\n `${def.apiName}:${def.version}` as VersionedQueryTypeApiName\n ] = def;\n if (implementation) {\n if (!this.#queryImpl.has(def.apiName)) {\n this.#queryImpl.set(def.apiName, new Map());\n }\n if (!valid(def.version)) {\n throw new Error(\n `QueryType ${def.apiName} version ${def.version} is not semver valid`,\n );\n }\n this.#queryImpl.get(def.apiName)?.set(def.version, implementation);\n }\n }\n\n registerInterfaceType(def: OntologiesV2.InterfaceType): void {\n if (def.apiName in this.#ontology.interfaceTypes) {\n throw new Error(`InterfaceType ${def.apiName} already registered`);\n }\n this.#ontology.interfaceTypes[def.apiName] = def;\n }\n\n registerSharedPropertyType(def: OntologiesV2.SharedPropertyType): void {\n if (def.apiName in this.#ontology.sharedPropertyTypes) {\n throw new Error(`SharedPropertyType ${def.apiName} already registered`);\n }\n this.#ontology.sharedPropertyTypes[def.apiName] = def;\n }\n\n #getFilteredQueryTypes(\n request: LoadOntologyMetadataRequest,\n ): Record<OntologiesV2.QueryApiName, OntologiesV2.QueryTypeV2> {\n const remappedQueryTypes = request.queryTypes.map((x) =>\n this.#convertToVersionedApiName(x),\n );\n return Object.fromEntries(\n Object.entries(this.#ontology.queryTypes)\n .filter(([queryTypeApiName]) =>\n remappedQueryTypes.includes(queryTypeApiName),\n )\n .map(([queryTypeApiName, queryTypeDefinition]) => [\n request.queryTypes[remappedQueryTypes.indexOf(queryTypeApiName)],\n queryTypeDefinition,\n ]),\n );\n }\n\n #convertToVersionedApiName(apiName: string): VersionedQueryTypeApiName {\n // If a query is requested without a version, we remap it to include a versioned api name with the latest version\n if (extractVersion(apiName) !== undefined) {\n return apiName as VersionedQueryTypeApiName;\n }\n const version = semver.rsort(\n Object.keys(this.#ontology.queryTypes)\n .filter(\n (queryTypeApiName) => queryTypeApiName.split(\":\")[0] === apiName,\n )\n .map((x) => extractVersion(x)),\n )[0];\n return `${apiName}:${version}`;\n }\n}\n\nfunction filterRecord<T>(\n record: Record<string, T>,\n keys: string[],\n): Record<string, T> {\n return Object.fromEntries(\n Object.entries(record).filter(([key]) => keys.includes(key)),\n );\n}\n\nfunction extractVersion(apiName: string): string {\n return apiName.split(\":\")[1];\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FauxOntology.js","names":["semver","valid","invariant","ActionNotFoundError","LinkTypeNotFound","ObjectNotFoundError","ObjectTypeDoesNotExistError","QueryNotFoundError","camelize","OpenApiCallError","FauxOntology","ontology","actionImpl","Map","queryImpl","constructor","actionTypes","actionTypesFullMetadata","interfaceTypes","objectTypes","queryTypes","sharedPropertyTypes","valueTypes","apiName","getOntologyFullMetadata","getFilteredOntologyMetadata","request","Object","fromEntries","entries","filter","objectType","includes","map","objectTypeApiName","objectTypeDefinition","linkTypes","linkType","filterRecord","getFilteredQueryTypes","getAllInterfaceTypes","values","getAllObjectTypes","getAllActionTypes","getAllQueryTypes","getInterfaceType","interfaceType","ret","undefined","getObjectTypeFullMetadata","getObjectTypeFullMetadataOrThrow","getActionDef","actionTypeApiName","actionType","getActionImpl","impl","get","process","env","NODE_ENV","getQueryDef","queryTypeApiNameAndVersion","queryType","convertToVersionedApiName","getQueryImpl","queryTypeApiName","version","versionMap","rsort","Array","from","keys","getInterfaceToObjectTypeMappings","objectApiNames","objectDefs","ifaceToObjMap","objDef","ifaceApiName","properties","implementsInterfaces2","getLinkTypeSideV2","linkTypeName","find","a","getOtherLinkTypeSideV2OrThrow","thisSideLink","otherObj","candidates","l","linkTypeRid","length","candidate","getBothLinkTypeSides","leftObjectType","leftLinkName","rightObjectType","leftTypeSideV2","rightTypeSideV2","registerObjectType","def","Error","registerActionType","implementation","set","registerQueryType","has","registerInterfaceType","registerSharedPropertyType","#getFilteredQueryTypes","remappedQueryTypes","x","queryTypeDefinition","indexOf","#convertToVersionedApiName","extractVersion","split","record","key"],"sources":["FauxOntology.ts"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { type ObjectTypeDefinition } from \"@osdk/api\";\nimport type * as OntologiesV2 from \"@osdk/foundry.ontologies\";\nimport type {\n LoadOntologyMetadataRequest,\n VersionedQueryTypeApiName,\n} from \"@osdk/internal.foundry.ontologies\";\nimport semver, { valid } from \"semver\";\nimport invariant from \"tiny-invariant\";\nimport type { ReadonlyDeep } from \"type-fest\";\n\nimport {\n ActionNotFoundError,\n LinkTypeNotFound,\n ObjectNotFoundError,\n ObjectTypeDoesNotExistError,\n QueryNotFoundError,\n} from \"../errors.js\";\nimport { camelize } from \"../handlers/util/camelize.js\";\nimport { OpenApiCallError } from \"../handlers/util/handleOpenApiCall.js\";\nimport type { FauxActionImpl } from \"./FauxActionImpl.js\";\nimport type { FauxQueryImpl } from \"./FauxQueryImpl.js\";\nimport type { TH_ObjectTypeFullMetadata } from \"./typeHelpers/TH_ObjectTypeFullMetadata.js\";\n\n/**\n * Currently Unsupported Concepts:\n * - many:many links.\n */\nexport class FauxOntology {\n #ontology: OntologiesV2.OntologyFullMetadata;\n #actionImpl: Map<OntologiesV2.ActionTypeApiName, FauxActionImpl> = new Map();\n #queryImpl: Map<\n OntologiesV2.QueryApiName,\n Map<OntologiesV2.FunctionVersion, FauxQueryImpl>\n > = new Map();\n\n constructor(ontology: OntologiesV2.OntologyV2) {\n this.#ontology = {\n actionTypes: {},\n actionTypesFullMetadata: {},\n interfaceTypes: {},\n objectTypes: {},\n ontology,\n queryTypes: {},\n sharedPropertyTypes: {},\n valueTypes: {},\n };\n }\n\n get apiName(): OntologiesV2.OntologyApiName {\n return this.#ontology.ontology.apiName;\n }\n\n getOntologyFullMetadata(): OntologiesV2.OntologyFullMetadata {\n return this.#ontology;\n }\n\n getFilteredOntologyMetadata(\n request: OntologiesV2.LoadOntologyMetadataRequest,\n ): OntologiesV2.OntologyFullMetadata {\n return {\n ontology: this.#ontology.ontology,\n objectTypes: Object.fromEntries(\n Object.entries(this.#ontology.objectTypes)\n .filter(([objectType]) => request.objectTypes.includes(objectType))\n .map(([objectTypeApiName, objectTypeDefinition]) => [\n objectTypeApiName,\n {\n ...objectTypeDefinition,\n linkTypes: objectTypeDefinition.linkTypes.filter((linkType) =>\n request.linkTypes.includes(linkType.apiName),\n ),\n },\n ]),\n ),\n actionTypes: filterRecord(\n this.#ontology.actionTypes,\n request.actionTypes,\n ),\n actionTypesFullMetadata: {},\n queryTypes: this.#getFilteredQueryTypes(request),\n\n interfaceTypes: filterRecord(\n this.#ontology.interfaceTypes,\n request.interfaceTypes,\n ),\n sharedPropertyTypes: {},\n valueTypes: {},\n };\n }\n\n getAllInterfaceTypes(): OntologiesV2.InterfaceType[] {\n return Object.values(this.#ontology.interfaceTypes);\n }\n\n getAllObjectTypes(): OntologiesV2.ObjectTypeFullMetadata[] {\n return Object.values(this.#ontology.objectTypes);\n }\n\n getAllActionTypes(): OntologiesV2.ActionTypeV2[] {\n return Object.values(this.#ontology.actionTypes);\n }\n\n getAllQueryTypes(): OntologiesV2.QueryTypeV2[] {\n return Object.values(this.#ontology.queryTypes);\n }\n\n getInterfaceType(interfaceType: string): OntologiesV2.InterfaceType {\n const ret = this.#ontology.interfaceTypes[interfaceType];\n\n if (ret === undefined) {\n throw new OpenApiCallError(404, ObjectNotFoundError(interfaceType, \"\"));\n }\n\n return this.#ontology.interfaceTypes[interfaceType];\n }\n\n public getObjectTypeFullMetadata(\n objectTypeApiName: string,\n ): OntologiesV2.ObjectTypeFullMetadata | undefined {\n return this.#ontology.objectTypes[objectTypeApiName];\n }\n\n public getObjectTypeFullMetadataOrThrow(\n objectTypeApiName: string,\n ): OntologiesV2.ObjectTypeFullMetadata {\n const objectType = this.#ontology.objectTypes[objectTypeApiName];\n if (objectType === undefined) {\n throw new OpenApiCallError(\n 404,\n ObjectTypeDoesNotExistError(objectTypeApiName),\n );\n }\n return objectType;\n }\n\n public getActionDef(actionTypeApiName: string): OntologiesV2.ActionTypeV2 {\n const actionType = this.#ontology.actionTypes[camelize(actionTypeApiName)];\n if (actionType === undefined) {\n throw new OpenApiCallError(404, ActionNotFoundError());\n }\n return actionType;\n }\n\n public getActionImpl(actionTypeApiName: string): FauxActionImpl {\n const impl = this.#actionImpl.get(camelize(actionTypeApiName));\n invariant(impl, \"Action implementation not found for \" + actionTypeApiName);\n return impl;\n }\n\n public getQueryDef(\n queryTypeApiNameAndVersion: string,\n ): OntologiesV2.QueryTypeV2 {\n const queryType =\n this.#ontology.queryTypes[\n this.#convertToVersionedApiName(queryTypeApiNameAndVersion)\n ];\n if (queryType === undefined) {\n throw new OpenApiCallError(\n 404,\n QueryNotFoundError(queryTypeApiNameAndVersion),\n );\n }\n return queryType;\n }\n\n public getQueryImpl(\n queryTypeApiName: string,\n version?: string,\n ): FauxQueryImpl {\n const versionMap = this.#queryImpl.get(queryTypeApiName);\n\n const impl =\n version !== undefined\n ? versionMap?.get(version)\n : versionMap?.get(semver.rsort(Array.from(versionMap.keys() ?? []))[0]);\n\n if (!impl) {\n throw new OpenApiCallError(404, QueryNotFoundError(queryTypeApiName));\n }\n invariant(impl, \"Query implementation not found for \" + queryTypeApiName);\n return impl;\n }\n\n public getInterfaceToObjectTypeMappings(\n objectApiNames: Iterable<OntologiesV2.ObjectTypeApiName>,\n ): Record<\n OntologiesV2.InterfaceTypeApiName,\n OntologiesV2.InterfaceToObjectTypeMappings\n > {\n const objectDefs = Array.from(objectApiNames).map((apiName) =>\n this.getObjectTypeFullMetadataOrThrow(apiName),\n );\n\n const ifaceToObjMap: Record<\n OntologiesV2.InterfaceTypeApiName,\n OntologiesV2.InterfaceToObjectTypeMappings\n > = {};\n\n for (const objDef of objectDefs) {\n for (const [ifaceApiName, { properties }] of Object.entries(\n objDef.implementsInterfaces2,\n )) {\n if (ifaceToObjMap[ifaceApiName] === undefined) {\n ifaceToObjMap[ifaceApiName] = {};\n }\n\n ifaceToObjMap[ifaceApiName][objDef.objectType.apiName] = properties;\n }\n }\n\n return ifaceToObjMap;\n }\n\n public getLinkTypeSideV2(\n objectTypeApiName: string,\n linkTypeName: string,\n ): OntologiesV2.LinkTypeSideV2 {\n const objectType = this.getObjectTypeFullMetadataOrThrow(objectTypeApiName);\n const linkType = objectType.linkTypes.find(\n (a) => a.apiName === linkTypeName,\n );\n if (linkType === undefined) {\n throw new OpenApiCallError(\n 404,\n LinkTypeNotFound(objectTypeApiName, linkTypeName),\n );\n }\n return linkType;\n }\n\n public getOtherLinkTypeSideV2OrThrow(\n objectTypeApiName: string,\n linkTypeName: string,\n ): OntologiesV2.LinkTypeSideV2 {\n const thisSideLink = this.getLinkTypeSideV2(\n objectTypeApiName,\n linkTypeName,\n );\n const otherObj = this.getObjectTypeFullMetadataOrThrow(\n thisSideLink.objectTypeApiName,\n );\n const candidates = otherObj.linkTypes.filter(\n (l) => l.linkTypeRid === thisSideLink.linkTypeRid,\n );\n if (otherObj.objectType.apiName !== objectTypeApiName) {\n // if its not the same object type then there should only be one\n invariant(\n candidates.length === 1,\n \"Expected only one candidate link type\",\n );\n return candidates[0];\n }\n // if its the same object type, then this could be a link that points to itself that\n // is 1:1, many:1 or many:many. In the 1:1 case, the link could have the same name\n // and there would only be 1 entry in that case. Otherwise there should be 2 entries\n // and we want the one that doesn't match the one passed in.\n if (candidates.length === 1) {\n return candidates[0];\n }\n invariant(\n candidates.length === 2,\n \"Expected only two candidate link types\",\n );\n const candidate = candidates.find(\n (l) => l.apiName !== thisSideLink.apiName,\n );\n invariant(\n candidate,\n \"Expected to find a candidate link type that is not the same as the one passed in\",\n );\n return candidate;\n }\n\n getBothLinkTypeSides(\n leftObjectType: string,\n leftLinkName: string,\n rightObjectType: string,\n ): [OntologiesV2.LinkTypeSideV2, OntologiesV2.LinkTypeSideV2] {\n const leftTypeSideV2 = this.getLinkTypeSideV2(leftObjectType, leftLinkName);\n\n // the rhs passed in should match the target of the lhs\n invariant(rightObjectType === leftTypeSideV2.objectTypeApiName);\n\n const rightTypeSideV2 = this.getOtherLinkTypeSideV2OrThrow(\n leftObjectType,\n leftLinkName,\n );\n\n return [leftTypeSideV2, rightTypeSideV2];\n }\n\n registerObjectType<Q extends ObjectTypeDefinition>(\n def: TH_ObjectTypeFullMetadata<Q>,\n ): void;\n registerObjectType(\n def: ReadonlyDeep<OntologiesV2.ObjectTypeFullMetadata>,\n ): void;\n registerObjectType<Q extends ObjectTypeDefinition>(\n def: TH_ObjectTypeFullMetadata<Q> | OntologiesV2.ObjectTypeFullMetadata,\n ): void {\n if (def.objectType.apiName in this.#ontology.objectTypes) {\n throw new Error(\n `ObjectType ${def.objectType.apiName} already registered`,\n );\n }\n this.#ontology.objectTypes[def.objectType.apiName] = def;\n }\n\n registerActionType<Q extends OntologiesV2.ActionTypeV2>(\n def: Q,\n implementation?: FauxActionImpl<Q>,\n ): void;\n registerActionType(\n def: OntologiesV2.ActionTypeV2,\n implementation?: FauxActionImpl,\n ): void;\n registerActionType(\n def: OntologiesV2.ActionTypeV2,\n implementation?: FauxActionImpl,\n ): void {\n if (def.apiName in this.#ontology.actionTypes) {\n throw new Error(`ActionType ${def.apiName} already registered`);\n }\n this.#ontology.actionTypes[def.apiName] = def;\n if (implementation) {\n this.#actionImpl.set(def.apiName, implementation);\n }\n }\n\n registerQueryType(\n def: OntologiesV2.QueryTypeV2,\n implementation?: FauxQueryImpl,\n ): void {\n if (`${def.apiName}:${def.version}` in this.#ontology.queryTypes) {\n throw new Error(`QueryType ${def.apiName} already registered`);\n }\n this.#ontology.queryTypes[\n `${def.apiName}:${def.version}` as VersionedQueryTypeApiName\n ] = def;\n if (implementation) {\n if (!this.#queryImpl.has(def.apiName)) {\n this.#queryImpl.set(def.apiName, new Map());\n }\n if (!valid(def.version)) {\n throw new Error(\n `QueryType ${def.apiName} version ${def.version} is not semver valid`,\n );\n }\n this.#queryImpl.get(def.apiName)?.set(def.version, implementation);\n }\n }\n\n registerInterfaceType(def: OntologiesV2.InterfaceType): void {\n if (def.apiName in this.#ontology.interfaceTypes) {\n throw new Error(`InterfaceType ${def.apiName} already registered`);\n }\n this.#ontology.interfaceTypes[def.apiName] = def;\n }\n\n registerSharedPropertyType(def: OntologiesV2.SharedPropertyType): void {\n if (def.apiName in this.#ontology.sharedPropertyTypes) {\n throw new Error(`SharedPropertyType ${def.apiName} already registered`);\n }\n this.#ontology.sharedPropertyTypes[def.apiName] = def;\n }\n\n #getFilteredQueryTypes(\n request: LoadOntologyMetadataRequest,\n ): Record<OntologiesV2.QueryApiName, OntologiesV2.QueryTypeV2> {\n const remappedQueryTypes = request.queryTypes.map((x) =>\n this.#convertToVersionedApiName(x),\n );\n return Object.fromEntries(\n Object.entries(this.#ontology.queryTypes)\n .filter(([queryTypeApiName]) =>\n remappedQueryTypes.includes(queryTypeApiName),\n )\n .map(([queryTypeApiName, queryTypeDefinition]) => [\n request.queryTypes[remappedQueryTypes.indexOf(queryTypeApiName)],\n queryTypeDefinition,\n ]),\n );\n }\n\n #convertToVersionedApiName(apiName: string): VersionedQueryTypeApiName {\n // If a query is requested without a version, we remap it to include a versioned api name with the latest version\n if (extractVersion(apiName) !== undefined) {\n return apiName as VersionedQueryTypeApiName;\n }\n const version = semver.rsort(\n Object.keys(this.#ontology.queryTypes)\n .filter(\n (queryTypeApiName) => queryTypeApiName.split(\":\")[0] === apiName,\n )\n .map((x) => extractVersion(x)),\n )[0];\n return `${apiName}:${version}`;\n }\n}\n\nfunction filterRecord<T>(\n record: Record<string, T>,\n keys: string[],\n): Record<string, T> {\n return Object.fromEntries(\n Object.entries(record).filter(([key]) => keys.includes(key)),\n );\n}\n\nfunction extractVersion(apiName: string): string {\n return apiName.split(\":\")[1];\n}\n"],"mappings":"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","ignoreList":[]}
@@ -108,6 +108,7 @@ function validateActionParameterType(dataType, paramDef, value, ret, paramKey, d
108
108
  }
109
109
  case "boolean":
110
110
  case "date":
111
+ case "decimal":
111
112
  case "long":
112
113
  case "double":
113
114
  case "integer":
@@ -1 +1 @@
1
- {"version":3,"file":"validateAction.js","names":["NUMERIC_LITERAL_BOUNDS","byte","minimum","maximum","double","Number","MAX_VALUE","float","integer","long","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","short","validateAction","payload","def","dataStore","ret","parameters","submissionCriteria","result","k","v","Object","entries","value","validateActionParameterType","dataType","paramDef","paramKey","required","evaluatedConstraints","baseParam","type","Array","isArray","item","subType","matchesOntologyDataType","isInterfaceActionParam","getObject","objectTypeApiName","primaryKeyValue","isMediaReference","name","fieldType","fields","fieldValue","ontology","getObjectTypeFullMetadata","scenarioRid","Error","odt","every","itemType","isInBounds","isValidCipherText","isValidDateString","isValidDecimalString","isInteger","startsWith","isValidTimestampString","o","mimeType","reference","mediaSetViewItem","mediaSetRid","mediaSetViewRid","mediaItemRid","isPoint","obj","coordinates","length","bounds","test","date","Date","isNaN","getTime","toISOString","parts","split","isValidCipherAffix","channelRid","encryptedValue","affix","prefixOnly","totalParts","parseFloat"],"sources":["validateAction.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { MediaReference } from \"@osdk/foundry.core\";\nimport type {\n ActionParameterType,\n ActionParameterV2,\n ActionTypeV2,\n ApplyActionRequestV2,\n BatchApplyActionRequestItem,\n OntologyDataType,\n ParameterEvaluationResult,\n ValidateActionResponseV2,\n} from \"@osdk/foundry.ontologies\";\n\nimport type { FauxDataStore } from \"./FauxDataStore.js\";\n\ninterface Bounds {\n minimum: number;\n maximum: number;\n}\n\nconst NUMERIC_LITERAL_BOUNDS: Record<\n Extract<\n OntologyDataType[\"type\"],\n \"double\" | \"integer\" | \"long\" | \"float\" | \"byte\" | \"short\"\n >,\n Bounds\n> = {\n byte: {\n // Java min/max byte bounds\n minimum: -128,\n maximum: 127,\n },\n double: {\n // These numbers are smaller than the actual min/max of a java double,\n // but going higher will require using BigInt in our input fields.\n minimum: -Number.MAX_VALUE,\n maximum: Number.MAX_VALUE,\n },\n float: {\n // Java min/max float bounds\n minimum: -3.4028235e38,\n maximum: 3.4028235e38,\n },\n integer: {\n // Java min/max integer bounds\n minimum: -2147483648,\n maximum: 2147483647,\n },\n long: {\n // These numbers are smaller than the actual min/max of a java long,\n // but going higher will require using BigInt in our input fields.\n minimum: Number.MIN_SAFE_INTEGER,\n maximum: Number.MAX_SAFE_INTEGER,\n },\n short: {\n // Java min/max short bounds\n minimum: -32768,\n maximum: 32767,\n },\n} as const;\n\nexport function validateAction(\n payload: ApplyActionRequestV2 | BatchApplyActionRequestItem,\n def: ActionTypeV2,\n dataStore: FauxDataStore,\n): ValidateActionResponseV2 {\n const ret: ValidateActionResponseV2 = {\n parameters: {},\n submissionCriteria: [],\n result: \"VALID\",\n };\n for (const [k, v] of Object.entries(def.parameters)) {\n const value = payload.parameters[k];\n validateActionParameterType(v.dataType, v, value, ret, k, dataStore);\n }\n\n return ret;\n}\n\n// So far these all basically return the same thing\n// and can likely be rewritten as a function that return boolean\nfunction validateActionParameterType(\n dataType: ActionParameterType,\n paramDef: ActionParameterV2,\n value: unknown,\n ret: ValidateActionResponseV2,\n paramKey: string,\n dataStore: FauxDataStore,\n) {\n if (paramDef.required && value == null) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n result: \"INVALID\",\n evaluatedConstraints: [],\n required: true,\n };\n return;\n }\n if (!paramDef.required && value == null) {\n return;\n }\n\n const baseParam: ParameterEvaluationResult = {\n result: \"INVALID\",\n evaluatedConstraints: [],\n required: paramDef.required,\n };\n\n switch (dataType.type) {\n case \"array\": {\n if (!Array.isArray(value)) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n return;\n }\n for (const item of value) {\n validateActionParameterType(\n dataType.subType,\n paramDef,\n item,\n ret,\n paramKey,\n dataStore,\n );\n }\n return;\n }\n\n case \"attachment\": {\n if (typeof value !== \"string\") {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n }\n return;\n }\n\n case \"boolean\":\n case \"date\":\n case \"long\":\n case \"double\":\n case \"integer\":\n case \"marking\":\n case \"objectSet\":\n case \"timestamp\":\n case \"object\":\n case \"string\":\n if (!matchesOntologyDataType(dataType, value)) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n }\n return;\n case \"geohash\":\n if (\n !(\n typeof value === \"string\" ||\n (typeof value === \"object\" && value != null && \"coordinates\" in value)\n )\n ) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n }\n return;\n\n case \"geoshape\":\n if (\n !(\n typeof value === \"object\" &&\n (\"coordinates\" in value! ||\n \"geometries\" in value! ||\n \"features\" in value!)\n )\n ) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n }\n return;\n case \"interfaceObject\": {\n if (!isInterfaceActionParam(value)) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n } else if (\n dataStore.getObject(value.objectTypeApiName, value.primaryKeyValue) ==\n null\n ) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n evaluatedConstraints: [\n {\n type: \"objectPropertyValue\",\n },\n ],\n };\n }\n return;\n }\n\n case \"mediaReference\": {\n if (!isMediaReference(value)) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n }\n return;\n }\n\n case \"vector\": {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n return;\n }\n\n case \"struct\": {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n return;\n }\n\n for (const { name, fieldType, required } of dataType.fields) {\n const fieldValue = (value as Record<string, unknown>)[name];\n // A non-required field may be omitted or explicitly null; only run the\n // type check when a value is actually present.\n if (fieldValue == null) {\n if (required) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n return;\n }\n continue;\n }\n if (!matchesOntologyDataType(fieldType, fieldValue)) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n\n return;\n }\n }\n\n return;\n }\n\n case \"objectType\": {\n if (\n typeof value !== \"string\" ||\n !dataStore.ontology.getObjectTypeFullMetadata(value)\n ) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n return;\n }\n\n return;\n }\n\n case \"scenarioReference\": {\n if (\n !value ||\n typeof value !== \"object\" ||\n typeof (value as { scenarioRid?: unknown }).scenarioRid !== \"string\"\n ) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n }\n return;\n }\n\n default: {\n const _assertNever: never = dataType;\n throw new Error(`validateDataType: unknown type`);\n }\n }\n}\n\nexport function matchesOntologyDataType(\n odt: OntologyDataType,\n value: unknown,\n): boolean {\n switch (odt.type) {\n case \"any\":\n return true;\n case \"array\":\n return (\n Array.isArray(value) &&\n value.every((v) => matchesOntologyDataType(odt.itemType, v))\n );\n case \"binary\":\n throw new Error(`validateDataType: ${odt.type} not implemented yet.`);\n case \"boolean\":\n return typeof value === \"boolean\";\n case \"byte\":\n return (\n typeof value === \"number\" &&\n isInBounds(value, NUMERIC_LITERAL_BOUNDS.byte)\n );\n case \"cipherText\":\n return isValidCipherText(value);\n case \"date\":\n return isValidDateString(value);\n case \"decimal\":\n return isValidDecimalString(value);\n case \"double\":\n return (\n typeof value === \"number\" &&\n isInBounds(value, NUMERIC_LITERAL_BOUNDS.double)\n );\n case \"float\":\n return (\n typeof value === \"number\" &&\n isInBounds(value, NUMERIC_LITERAL_BOUNDS.float)\n );\n case \"integer\":\n return (\n typeof value === \"number\" &&\n Number.isInteger(value) &&\n isInBounds(value, NUMERIC_LITERAL_BOUNDS.integer)\n );\n case \"long\":\n return (\n typeof value === \"number\" &&\n Number.isInteger(value) &&\n isInBounds(value, NUMERIC_LITERAL_BOUNDS.long)\n );\n case \"map\":\n throw new Error(\n `matchesOntologyDataType: ${odt.type} not implemented yet.`,\n );\n case \"marking\":\n return typeof value === \"string\";\n case \"object\":\n return (\n typeof value === \"string\" ||\n (value != null && typeof value === \"object\" && \"$primaryKey\" in value)\n );\n case \"objectSet\":\n return (\n (typeof value === \"string\" && value.startsWith(\"ri.\")) ||\n (value != null && typeof value === \"object\" && \"objectSet\" in value)\n );\n case \"set\":\n throw new Error(\n `matchesOntologyDataType: ${odt.type} not implemented yet.`,\n );\n case \"short\":\n return (\n typeof value === \"number\" &&\n isInBounds(value, NUMERIC_LITERAL_BOUNDS.short)\n );\n case \"string\":\n return typeof value === \"string\";\n case \"struct\":\n throw new Error(\n `matchesOntologyDataType: ${odt.type} not implemented yet.`,\n );\n case \"timestamp\":\n return isValidTimestampString(value);\n case \"unsupported\":\n throw new Error(\n `matchesOntologyDataType: ${odt.type} not implemented yet.`,\n );\n default:\n const _assertNever = odt;\n throw new Error(\n `matchesOntologyDataType: ${(odt as any).type} not implemented yet.`,\n );\n }\n}\n\nexport function isMediaReference(o: any): o is MediaReference {\n return (\n typeof o === `object` &&\n typeof o.mimeType === \"string\" &&\n \"reference\" in o &&\n typeof o.reference === \"object\" &&\n o.reference.type === \"mediaSetViewItem\" &&\n \"mediaSetViewItem\" in o.reference &&\n typeof o.reference.mediaSetViewItem === \"object\" &&\n typeof o.reference.mediaSetViewItem.mediaSetRid === \"string\" &&\n typeof o.reference.mediaSetViewItem.mediaSetViewRid === \"string\" &&\n typeof o.reference.mediaSetViewItem.mediaItemRid === \"string\"\n );\n}\n\nexport function isInterfaceActionParam(value: any): value is {\n objectTypeApiName: string;\n primaryKeyValue: string | number | boolean;\n} {\n return (\n typeof value === \"object\" &&\n \"objectTypeApiName\" in value &&\n typeof value.objectTypeApiName === \"string\" &&\n \"primaryKeyValue\" in value &&\n (typeof value.primaryKeyValue === \"string\" ||\n typeof value.primaryKeyValue === \"number\" ||\n typeof value.primaryKeyValue === \"boolean\")\n );\n}\n\nfunction isPoint(obj: any): obj is GeoJSON.Point {\n return (\n obj.type === \"Point\" &&\n Array.isArray(obj.coordinates) &&\n obj.coordinates.length === 2 &&\n typeof obj.coordinates[0] === \"number\" &&\n typeof obj.coordinates[1] === \"number\"\n );\n}\n\nfunction isInBounds(\n value: number,\n bounds: { minimum: number; maximum: number },\n) {\n return bounds.minimum <= value && value <= bounds.maximum;\n}\n\nfunction isValidDateString(value: unknown): boolean {\n if (typeof value !== \"string\") {\n return false;\n }\n\n const dateRegex = /^\\d{4}-\\d{2}-\\d{2}$/u;\n if (!dateRegex.test(value)) {\n return false;\n }\n const date = new Date(value);\n return !isNaN(date.getTime()) && date.toISOString().startsWith(value);\n}\n\nfunction isValidTimestampString(value: unknown): boolean {\n return typeof value === \"string\" && !isNaN(new Date(value).getTime());\n}\n\nfunction isValidCipherText(value: unknown): boolean {\n if (typeof value !== \"string\") {\n return false;\n }\n\n const parts = value.split(\"::\");\n\n if (\n !(\n isValidCipherAffix(parts, \"CIPHER\") ||\n isValidCipherAffix(parts, \"BELLASO\") ||\n isValidCipherAffix(parts, \"BELLASO\", true)\n )\n ) {\n return false;\n }\n\n const channelRid = parts[1];\n const encryptedValue = parts[2];\n\n return channelRid.startsWith(\"ri.\") && encryptedValue !== \"\";\n}\n\nfunction isValidCipherAffix(\n parts: string[],\n affix: \"BELLASO\" | \"CIPHER\",\n prefixOnly: boolean = false,\n): boolean {\n const totalParts = prefixOnly ? 3 : 4;\n\n return (\n parts.length === totalParts &&\n parts[0] === affix &&\n (prefixOnly || parts[3] === affix)\n );\n}\n\nfunction isValidDecimalString(value: unknown): boolean {\n if (typeof value !== \"string\") {\n return false;\n }\n\n const decimalRegex = /^[+-]?(\\d+\\.?\\d*|\\.\\d+)(E[+-]?\\d+)?$/u;\n return decimalRegex.test(value) && !isNaN(parseFloat(value));\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"validateAction.js","names":["NUMERIC_LITERAL_BOUNDS","byte","minimum","maximum","double","Number","MAX_VALUE","float","integer","long","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","short","validateAction","payload","def","dataStore","ret","parameters","submissionCriteria","result","k","v","Object","entries","value","validateActionParameterType","dataType","paramDef","paramKey","required","evaluatedConstraints","baseParam","type","Array","isArray","item","subType","matchesOntologyDataType","isInterfaceActionParam","getObject","objectTypeApiName","primaryKeyValue","isMediaReference","name","fieldType","fields","fieldValue","ontology","getObjectTypeFullMetadata","scenarioRid","Error","odt","every","itemType","isInBounds","isValidCipherText","isValidDateString","isValidDecimalString","isInteger","startsWith","isValidTimestampString","o","mimeType","reference","mediaSetViewItem","mediaSetRid","mediaSetViewRid","mediaItemRid","isPoint","obj","coordinates","length","bounds","test","date","Date","isNaN","getTime","toISOString","parts","split","isValidCipherAffix","channelRid","encryptedValue","affix","prefixOnly","totalParts","parseFloat"],"sources":["validateAction.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { MediaReference } from \"@osdk/foundry.core\";\nimport type {\n ActionParameterType,\n ActionParameterV2,\n ActionTypeV2,\n ApplyActionRequestV2,\n BatchApplyActionRequestItem,\n OntologyDataType,\n ParameterEvaluationResult,\n ValidateActionResponseV2,\n} from \"@osdk/foundry.ontologies\";\n\nimport type { FauxDataStore } from \"./FauxDataStore.js\";\n\ninterface Bounds {\n minimum: number;\n maximum: number;\n}\n\nconst NUMERIC_LITERAL_BOUNDS: Record<\n Extract<\n OntologyDataType[\"type\"],\n \"double\" | \"integer\" | \"long\" | \"float\" | \"byte\" | \"short\"\n >,\n Bounds\n> = {\n byte: {\n // Java min/max byte bounds\n minimum: -128,\n maximum: 127,\n },\n double: {\n // These numbers are smaller than the actual min/max of a java double,\n // but going higher will require using BigInt in our input fields.\n minimum: -Number.MAX_VALUE,\n maximum: Number.MAX_VALUE,\n },\n float: {\n // Java min/max float bounds\n minimum: -3.4028235e38,\n maximum: 3.4028235e38,\n },\n integer: {\n // Java min/max integer bounds\n minimum: -2147483648,\n maximum: 2147483647,\n },\n long: {\n // These numbers are smaller than the actual min/max of a java long,\n // but going higher will require using BigInt in our input fields.\n minimum: Number.MIN_SAFE_INTEGER,\n maximum: Number.MAX_SAFE_INTEGER,\n },\n short: {\n // Java min/max short bounds\n minimum: -32768,\n maximum: 32767,\n },\n} as const;\n\nexport function validateAction(\n payload: ApplyActionRequestV2 | BatchApplyActionRequestItem,\n def: ActionTypeV2,\n dataStore: FauxDataStore,\n): ValidateActionResponseV2 {\n const ret: ValidateActionResponseV2 = {\n parameters: {},\n submissionCriteria: [],\n result: \"VALID\",\n };\n for (const [k, v] of Object.entries(def.parameters)) {\n const value = payload.parameters[k];\n validateActionParameterType(v.dataType, v, value, ret, k, dataStore);\n }\n\n return ret;\n}\n\n// So far these all basically return the same thing\n// and can likely be rewritten as a function that return boolean\nfunction validateActionParameterType(\n dataType: ActionParameterType,\n paramDef: ActionParameterV2,\n value: unknown,\n ret: ValidateActionResponseV2,\n paramKey: string,\n dataStore: FauxDataStore,\n) {\n if (paramDef.required && value == null) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n result: \"INVALID\",\n evaluatedConstraints: [],\n required: true,\n };\n return;\n }\n if (!paramDef.required && value == null) {\n return;\n }\n\n const baseParam: ParameterEvaluationResult = {\n result: \"INVALID\",\n evaluatedConstraints: [],\n required: paramDef.required,\n };\n\n switch (dataType.type) {\n case \"array\": {\n if (!Array.isArray(value)) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n return;\n }\n for (const item of value) {\n validateActionParameterType(\n dataType.subType,\n paramDef,\n item,\n ret,\n paramKey,\n dataStore,\n );\n }\n return;\n }\n\n case \"attachment\": {\n if (typeof value !== \"string\") {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n }\n return;\n }\n\n case \"boolean\":\n case \"date\":\n case \"decimal\":\n case \"long\":\n case \"double\":\n case \"integer\":\n case \"marking\":\n case \"objectSet\":\n case \"timestamp\":\n case \"object\":\n case \"string\":\n if (!matchesOntologyDataType(dataType, value)) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n }\n return;\n case \"geohash\":\n if (\n !(\n typeof value === \"string\" ||\n (typeof value === \"object\" && value != null && \"coordinates\" in value)\n )\n ) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n }\n return;\n\n case \"geoshape\":\n if (\n !(\n typeof value === \"object\" &&\n (\"coordinates\" in value! ||\n \"geometries\" in value! ||\n \"features\" in value!)\n )\n ) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n }\n return;\n case \"interfaceObject\": {\n if (!isInterfaceActionParam(value)) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n } else if (\n dataStore.getObject(value.objectTypeApiName, value.primaryKeyValue) ==\n null\n ) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n evaluatedConstraints: [\n {\n type: \"objectPropertyValue\",\n },\n ],\n };\n }\n return;\n }\n\n case \"mediaReference\": {\n if (!isMediaReference(value)) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n }\n return;\n }\n\n case \"vector\": {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n return;\n }\n\n case \"struct\": {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n return;\n }\n\n for (const { name, fieldType, required } of dataType.fields) {\n const fieldValue = (value as Record<string, unknown>)[name];\n // A non-required field may be omitted or explicitly null; only run the\n // type check when a value is actually present.\n if (fieldValue == null) {\n if (required) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n return;\n }\n continue;\n }\n if (!matchesOntologyDataType(fieldType, fieldValue)) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n\n return;\n }\n }\n\n return;\n }\n\n case \"objectType\": {\n if (\n typeof value !== \"string\" ||\n !dataStore.ontology.getObjectTypeFullMetadata(value)\n ) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n return;\n }\n\n return;\n }\n\n case \"scenarioReference\": {\n if (\n !value ||\n typeof value !== \"object\" ||\n typeof (value as { scenarioRid?: unknown }).scenarioRid !== \"string\"\n ) {\n ret.result = \"INVALID\";\n ret.parameters[paramKey] = {\n ...baseParam,\n };\n }\n return;\n }\n\n default: {\n const _assertNever: never = dataType;\n throw new Error(`validateDataType: unknown type`);\n }\n }\n}\n\nexport function matchesOntologyDataType(\n odt: OntologyDataType,\n value: unknown,\n): boolean {\n switch (odt.type) {\n case \"any\":\n return true;\n case \"array\":\n return (\n Array.isArray(value) &&\n value.every((v) => matchesOntologyDataType(odt.itemType, v))\n );\n case \"binary\":\n throw new Error(`validateDataType: ${odt.type} not implemented yet.`);\n case \"boolean\":\n return typeof value === \"boolean\";\n case \"byte\":\n return (\n typeof value === \"number\" &&\n isInBounds(value, NUMERIC_LITERAL_BOUNDS.byte)\n );\n case \"cipherText\":\n return isValidCipherText(value);\n case \"date\":\n return isValidDateString(value);\n case \"decimal\":\n return isValidDecimalString(value);\n case \"double\":\n return (\n typeof value === \"number\" &&\n isInBounds(value, NUMERIC_LITERAL_BOUNDS.double)\n );\n case \"float\":\n return (\n typeof value === \"number\" &&\n isInBounds(value, NUMERIC_LITERAL_BOUNDS.float)\n );\n case \"integer\":\n return (\n typeof value === \"number\" &&\n Number.isInteger(value) &&\n isInBounds(value, NUMERIC_LITERAL_BOUNDS.integer)\n );\n case \"long\":\n return (\n typeof value === \"number\" &&\n Number.isInteger(value) &&\n isInBounds(value, NUMERIC_LITERAL_BOUNDS.long)\n );\n case \"map\":\n throw new Error(\n `matchesOntologyDataType: ${odt.type} not implemented yet.`,\n );\n case \"marking\":\n return typeof value === \"string\";\n case \"object\":\n return (\n typeof value === \"string\" ||\n (value != null && typeof value === \"object\" && \"$primaryKey\" in value)\n );\n case \"objectSet\":\n return (\n (typeof value === \"string\" && value.startsWith(\"ri.\")) ||\n (value != null && typeof value === \"object\" && \"objectSet\" in value)\n );\n case \"set\":\n throw new Error(\n `matchesOntologyDataType: ${odt.type} not implemented yet.`,\n );\n case \"short\":\n return (\n typeof value === \"number\" &&\n isInBounds(value, NUMERIC_LITERAL_BOUNDS.short)\n );\n case \"string\":\n return typeof value === \"string\";\n case \"struct\":\n throw new Error(\n `matchesOntologyDataType: ${odt.type} not implemented yet.`,\n );\n case \"timestamp\":\n return isValidTimestampString(value);\n case \"unsupported\":\n throw new Error(\n `matchesOntologyDataType: ${odt.type} not implemented yet.`,\n );\n default:\n const _assertNever = odt;\n throw new Error(\n `matchesOntologyDataType: ${(odt as any).type} not implemented yet.`,\n );\n }\n}\n\nexport function isMediaReference(o: any): o is MediaReference {\n return (\n typeof o === `object` &&\n typeof o.mimeType === \"string\" &&\n \"reference\" in o &&\n typeof o.reference === \"object\" &&\n o.reference.type === \"mediaSetViewItem\" &&\n \"mediaSetViewItem\" in o.reference &&\n typeof o.reference.mediaSetViewItem === \"object\" &&\n typeof o.reference.mediaSetViewItem.mediaSetRid === \"string\" &&\n typeof o.reference.mediaSetViewItem.mediaSetViewRid === \"string\" &&\n typeof o.reference.mediaSetViewItem.mediaItemRid === \"string\"\n );\n}\n\nexport function isInterfaceActionParam(value: any): value is {\n objectTypeApiName: string;\n primaryKeyValue: string | number | boolean;\n} {\n return (\n typeof value === \"object\" &&\n \"objectTypeApiName\" in value &&\n typeof value.objectTypeApiName === \"string\" &&\n \"primaryKeyValue\" in value &&\n (typeof value.primaryKeyValue === \"string\" ||\n typeof value.primaryKeyValue === \"number\" ||\n typeof value.primaryKeyValue === \"boolean\")\n );\n}\n\nfunction isPoint(obj: any): obj is GeoJSON.Point {\n return (\n obj.type === \"Point\" &&\n Array.isArray(obj.coordinates) &&\n obj.coordinates.length === 2 &&\n typeof obj.coordinates[0] === \"number\" &&\n typeof obj.coordinates[1] === \"number\"\n );\n}\n\nfunction isInBounds(\n value: number,\n bounds: { minimum: number; maximum: number },\n) {\n return bounds.minimum <= value && value <= bounds.maximum;\n}\n\nfunction isValidDateString(value: unknown): boolean {\n if (typeof value !== \"string\") {\n return false;\n }\n\n const dateRegex = /^\\d{4}-\\d{2}-\\d{2}$/u;\n if (!dateRegex.test(value)) {\n return false;\n }\n const date = new Date(value);\n return !isNaN(date.getTime()) && date.toISOString().startsWith(value);\n}\n\nfunction isValidTimestampString(value: unknown): boolean {\n return typeof value === \"string\" && !isNaN(new Date(value).getTime());\n}\n\nfunction isValidCipherText(value: unknown): boolean {\n if (typeof value !== \"string\") {\n return false;\n }\n\n const parts = value.split(\"::\");\n\n if (\n !(\n isValidCipherAffix(parts, \"CIPHER\") ||\n isValidCipherAffix(parts, \"BELLASO\") ||\n isValidCipherAffix(parts, \"BELLASO\", true)\n )\n ) {\n return false;\n }\n\n const channelRid = parts[1];\n const encryptedValue = parts[2];\n\n return channelRid.startsWith(\"ri.\") && encryptedValue !== \"\";\n}\n\nfunction isValidCipherAffix(\n parts: string[],\n affix: \"BELLASO\" | \"CIPHER\",\n prefixOnly: boolean = false,\n): boolean {\n const totalParts = prefixOnly ? 3 : 4;\n\n return (\n parts.length === totalParts &&\n parts[0] === affix &&\n (prefixOnly || parts[3] === affix)\n );\n}\n\nfunction isValidDecimalString(value: unknown): boolean {\n if (typeof value !== \"string\") {\n return false;\n }\n\n const decimalRegex = /^[+-]?(\\d+\\.?\\d*|\\.\\d+)(E[+-]?\\d+)?$/u;\n return decimalRegex.test(value) && !isNaN(parseFloat(value));\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"mappings":"AAgBA,cAAc,4BAA4B,WAAY;AACtD,iBAAiB,kBAAkB,0BAA2B;AAO9D,cAAc,oBAAoB,WAAY;AAW9C,cAAc,sBAAsB,qBAAsB;AAC1D,cAAc,qBAAqB,oBAAqB;AACxD,cAAc,iCAAiC,4CAA6C;;;;;AAM5F,OAAO,cAAM,aAAa;;CAQxB,YAAYA,UAAU,aAAa;CAYnC,IAAI,WAAW,aAAa;CAI5B,2BAA2B,aAAa;CAIxC,4BACEC,SAAS,aAAa,8BACrB,aAAa;CA+BhB,wBAAwB,aAAa;CAIrC,qBAAqB,aAAa;CAIlC,qBAAqB,aAAa;CAIlC,oBAAoB,aAAa;CAIjC,iBAAiBC,wBAAwB,aAAa;CAUtD,AAAO,0BACLC,4BACC,aAAa;CAIhB,AAAO,iCACLA,4BACC,aAAa;CAWhB,AAAO,aAAaC,4BAA4B,aAAa;CAQ7D,AAAO,cAAcA,4BAA4B;CAMjD,AAAO,YACLC,qCACC,aAAa;CAchB,AAAO,aACLC,0BACAC,mBACC;CAeH,AAAO,iCACLC,gBAAgB,SAAS,aAAa,qBACrC,OACD,aAAa,sBACb,aAAa;CA0Bf,AAAO,kBACLL,2BACAM,uBACC,aAAa;CAchB,AAAO,8BACLN,2BACAM,uBACC,aAAa;CAwChB,qBACEC,wBACAC,sBACAC,2BACE,aAAa,gBAAgB,aAAa;CAc9C,mBAAmB,UAAU,sBAC3BC,KAAK,0BAA0B;CAEjC,mBACEC,KAAK,aAAa,aAAa;CAajC,mBAAmB,UAAU,aAAa,cACxCC,KAAK,GACLC,iBAAiB,eAAe;CAElC,mBACEC,KAAK,aAAa,cAClBC,iBAAiB;CAenB,kBACEC,KAAK,aAAa,aAClBC,iBAAiB;CAqBnB,sBAAsBC,KAAK,aAAa;CAOxC,2BAA2BC,KAAK,aAAa;AAuC9C","names":["ontology: OntologiesV2.OntologyV2","request: OntologiesV2.LoadOntologyMetadataRequest","interfaceType: string","objectTypeApiName: string","actionTypeApiName: string","queryTypeApiNameAndVersion: string","queryTypeApiName: string","version?: string","objectApiNames: Iterable<OntologiesV2.ObjectTypeApiName>","linkTypeName: string","leftObjectType: string","leftLinkName: string","rightObjectType: string","def: TH_ObjectTypeFullMetadata<Q>","def: ReadonlyDeep<OntologiesV2.ObjectTypeFullMetadata>","def: Q","implementation?: FauxActionImpl<Q>","def: OntologiesV2.ActionTypeV2","implementation?: FauxActionImpl","def: OntologiesV2.QueryTypeV2","implementation?: FauxQueryImpl","def: OntologiesV2.InterfaceType","def: OntologiesV2.SharedPropertyType"],"sources":["../../../src/FauxFoundry/FauxOntology.ts"],"version":3,"file":"FauxOntology.d.ts"}
1
+ {"mappings":"AAgBA,cAAc,4BAA4B,WAAY;AACtD,iBAAiB,kBAAkB,0BAA2B;AAO9D,cAAc,oBAAoB,WAAY;AAW9C,cAAc,sBAAsB,qBAAsB;AAC1D,cAAc,qBAAqB,oBAAqB;AACxD,cAAc,iCAAiC,4CAA6C;;;;;AAM5F,OAAO,cAAM,aAAa;;CAQxB,YAAYA,UAAU,aAAa;CAanC,IAAI,WAAW,aAAa;CAI5B,2BAA2B,aAAa;CAIxC,4BACEC,SAAS,aAAa,8BACrB,aAAa;CAgChB,wBAAwB,aAAa;CAIrC,qBAAqB,aAAa;CAIlC,qBAAqB,aAAa;CAIlC,oBAAoB,aAAa;CAIjC,iBAAiBC,wBAAwB,aAAa;CAUtD,AAAO,0BACLC,4BACC,aAAa;CAIhB,AAAO,iCACLA,4BACC,aAAa;CAWhB,AAAO,aAAaC,4BAA4B,aAAa;CAQ7D,AAAO,cAAcA,4BAA4B;CAMjD,AAAO,YACLC,qCACC,aAAa;CAchB,AAAO,aACLC,0BACAC,mBACC;CAeH,AAAO,iCACLC,gBAAgB,SAAS,aAAa,qBACrC,OACD,aAAa,sBACb,aAAa;CA0Bf,AAAO,kBACLL,2BACAM,uBACC,aAAa;CAchB,AAAO,8BACLN,2BACAM,uBACC,aAAa;CAwChB,qBACEC,wBACAC,sBACAC,2BACE,aAAa,gBAAgB,aAAa;CAc9C,mBAAmB,UAAU,sBAC3BC,KAAK,0BAA0B;CAEjC,mBACEC,KAAK,aAAa,aAAa;CAajC,mBAAmB,UAAU,aAAa,cACxCC,KAAK,GACLC,iBAAiB,eAAe;CAElC,mBACEC,KAAK,aAAa,cAClBC,iBAAiB;CAenB,kBACEC,KAAK,aAAa,aAClBC,iBAAiB;CAqBnB,sBAAsBC,KAAK,aAAa;CAOxC,2BAA2BC,KAAK,aAAa;AAuC9C","names":["ontology: OntologiesV2.OntologyV2","request: OntologiesV2.LoadOntologyMetadataRequest","interfaceType: string","objectTypeApiName: string","actionTypeApiName: string","queryTypeApiNameAndVersion: string","queryTypeApiName: string","version?: string","objectApiNames: Iterable<OntologiesV2.ObjectTypeApiName>","linkTypeName: string","leftObjectType: string","leftLinkName: string","rightObjectType: string","def: TH_ObjectTypeFullMetadata<Q>","def: ReadonlyDeep<OntologiesV2.ObjectTypeFullMetadata>","def: Q","implementation?: FauxActionImpl<Q>","def: OntologiesV2.ActionTypeV2","implementation?: FauxActionImpl","def: OntologiesV2.QueryTypeV2","implementation?: FauxQueryImpl","def: OntologiesV2.InterfaceType","def: OntologiesV2.SharedPropertyType"],"sources":["../../../src/FauxFoundry/FauxOntology.ts"],"version":3,"file":"FauxOntology.d.ts"}
@@ -1 +1 @@
1
- {"mappings":"AAgBA,cAAc,sBAAsB,oBAAqB;AACzD,cAGE,cACA,sBACA,6BACA,kBAEA,gCACK,0BAA2B;AAElC,cAAc,qBAAqB,oBAAqB;AAgDxD,OAAO,iBAAS,eACdA,SAAS,uBAAuB,6BAChCC,KAAK,cACLC,WAAW,gBACV;AA0OH,OAAO,iBAAS,wBACdC,KAAK,kBACLC;AA4FF,OAAO,iBAAS,iBAAiBC,SAAS,KAAK;AAe/C,OAAO,iBAAS,uBAAuBC,aAAa,SAAS;CAC3D;CACA;AACD","names":["payload: ApplyActionRequestV2 | BatchApplyActionRequestItem","def: ActionTypeV2","dataStore: FauxDataStore","odt: OntologyDataType","value: unknown","o: any","value: any"],"sources":["../../../src/FauxFoundry/validateAction.ts"],"version":3,"file":"validateAction.d.ts"}
1
+ {"mappings":"AAgBA,cAAc,sBAAsB,oBAAqB;AACzD,cAGE,cACA,sBACA,6BACA,kBAEA,gCACK,0BAA2B;AAElC,cAAc,qBAAqB,oBAAqB;AAgDxD,OAAO,iBAAS,eACdA,SAAS,uBAAuB,6BAChCC,KAAK,cACLC,WAAW,gBACV;AA2OH,OAAO,iBAAS,wBACdC,KAAK,kBACLC;AA4FF,OAAO,iBAAS,iBAAiBC,SAAS,KAAK;AAe/C,OAAO,iBAAS,uBAAuBC,aAAa,SAAS;CAC3D;CACA;AACD","names":["payload: ApplyActionRequestV2 | BatchApplyActionRequestItem","def: ActionTypeV2","dataStore: FauxDataStore","odt: OntologyDataType","value: unknown","o: any","value: any"],"sources":["../../../src/FauxFoundry/validateAction.ts"],"version":3,"file":"validateAction.d.ts"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osdk/faux",
3
- "version": "0.48.0",
3
+ "version": "0.49.0",
4
4
  "description": "",
5
5
  "access": "private",
6
6
  "license": "Apache-2.0",
@@ -29,12 +29,12 @@
29
29
  }
30
30
  },
31
31
  "dependencies": {
32
- "@osdk/foundry.admin": "2.75.0",
33
- "@osdk/foundry.core": "2.75.0",
34
- "@osdk/foundry.geo": "2.75.0",
35
- "@osdk/foundry.mediasets": "2.75.0",
36
- "@osdk/foundry.ontologies": "2.75.0",
37
- "@osdk/internal.foundry.ontologies": "2.75.0",
32
+ "@osdk/foundry.admin": "2.77.0",
33
+ "@osdk/foundry.core": "2.77.0",
34
+ "@osdk/foundry.geo": "2.77.0",
35
+ "@osdk/foundry.mediasets": "2.77.0",
36
+ "@osdk/foundry.ontologies": "2.77.0",
37
+ "@osdk/internal.foundry.ontologies": "2.77.0",
38
38
  "date-fns": "^4.1.0",
39
39
  "decimal.js": "^10.6.0",
40
40
  "fast-deep-equal": "^3.1.3",
@@ -44,8 +44,8 @@
44
44
  "semver": "^7.7.2",
45
45
  "tiny-invariant": "^1.3.3",
46
46
  "type-fest": "^4.41.0",
47
- "@osdk/api": "~2.64.0",
48
- "@osdk/generator-converters": "~2.64.0"
47
+ "@osdk/api": "~2.65.0",
48
+ "@osdk/generator-converters": "~2.65.0"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@types/json-stable-stringify": "^1.2.0",