@osdk/generator 2.7.0-beta.1 → 2.7.0-beta.10
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 +78 -0
- package/build/browser/util/test/TodoWireOntology.js +2 -1
- package/build/browser/util/test/TodoWireOntology.js.map +1 -1
- package/build/browser/v2.0/generateClientSdkVersionTwoPointZero.test.js +24 -4
- package/build/browser/v2.0/generateClientSdkVersionTwoPointZero.test.js.map +1 -1
- package/build/browser/v2.0/generateMetadata.js +1 -1
- package/build/browser/v2.0/generateMetadata.js.map +1 -1
- package/build/browser/v2.0/generatePerActionDataFiles.js +12 -2
- package/build/browser/v2.0/generatePerActionDataFiles.js.map +1 -1
- package/build/cjs/index.cjs +11 -3
- package/build/cjs/index.cjs.map +1 -1
- package/build/esm/util/test/TodoWireOntology.js +2 -1
- package/build/esm/util/test/TodoWireOntology.js.map +1 -1
- package/build/esm/v2.0/generateClientSdkVersionTwoPointZero.test.js +24 -4
- package/build/esm/v2.0/generateClientSdkVersionTwoPointZero.test.js.map +1 -1
- package/build/esm/v2.0/generateMetadata.js +1 -1
- package/build/esm/v2.0/generateMetadata.js.map +1 -1
- package/build/esm/v2.0/generatePerActionDataFiles.js +12 -2
- package/build/esm/v2.0/generatePerActionDataFiles.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateClientSdkVersionTwoPointZero.test.js","names":["consola","mkdir","readdir","rmdir","writeFile","immer","beforeEach","describe","expect","it","test","vi","compileThis","createMockMinimalFiles","TodoWireOntology","generateClientSdkVersionTwoPointZero","changeValue","draft","key","oldValue","newValue","changeKey","oldInterfaceName","newInterfaceName","changeArrayEntry","oldNew","newName","idx","findIndex","a","changeEachEntry","wireData","data","changer","changeSelf","oldName","Object","entries","k","keys","changeDataType","dataType","oldObjectName","newObjectName","type","subType","objectTypeApiName","objectApiName","changeNames","ontology","newNames","produce","sharedPropertyTypes","spts","oldSptName","newSptName","queryTypes","queries","oldActionName","newActionName","apiName","actionTypes","actions","interfaceTypes","interfaces","ifaceType","oldIfaceName","newIfaceName","extendsInterfaces","allExtendsInterfaces","map","v","allProperties","property","objectTypes","objectType","implementsInterfaces","implementsInterfaces2","objects","queryType","output","values","parameters","linkTypes","l","action","op","operations","referencedOntology","sharedPropertyTypeMapping","displayName","pluralDisplayName","icon","color","name","titleProperty","rid","properties","required","propertiesV2","implementedByObjectTypes","links","allLinks","allPropertiesV2","valueTypes","referencingOntology","primaryKey","status","getTask","version","fooBarTodoWireOntology","markTodoCompleted","deleteTodos","BASE_PATH","helper","timeout","minimalFiles","files","getFiles","toMatchObject","anything","diagnostics","q","console","error","file","fileName","getLineStarts","messageText","errors","filter","code","toHaveLength","tweakedFilesForSnapshotConsistency","toMatchInlineSnapshot","fn","rejects","toThrow","undefined","resolves","toBeUndefined","not","toEqual","skip","__dirname","recursive","e","path","contents","flag","options","Map","toContain","getCount","returnsTodo","mockConsola","spyOn","toHaveBeenCalledWith","ret","replace"],"sources":["generateClientSdkVersionTwoPointZero.test.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 {\n ActionParameterType,\n ObjectPropertyType,\n QueryDataType,\n} from \"@osdk/foundry.ontologies\";\nimport { consola } from \"consola\";\nimport { mkdir, readdir, rmdir, writeFile } from \"fs/promises\";\nimport * as immer from \"immer\";\nimport { beforeEach, describe, expect, it, test, vi } from \"vitest\";\nimport { compileThis } from \"../util/test/compileThis.js\";\nimport { createMockMinimalFiles } from \"../util/test/createMockMinimalFiles.js\";\nimport { TodoWireOntology } from \"../util/test/TodoWireOntology.js\";\nimport type { WireOntologyDefinition } from \"../WireOntologyDefinition.js\";\nimport { generateClientSdkVersionTwoPointZero } from \"./generateClientSdkVersionTwoPointZero.js\";\n\nfunction changeValue<T extends Record<K, any>, K extends keyof immer.Draft<T>>(\n draft: immer.Draft<T>,\n key: K,\n oldValue: immer.Draft<T>[K],\n newValue: immer.Draft<T>[K],\n) {\n if (draft[key] === oldValue) {\n draft[key] = newValue;\n }\n}\n\nfunction changeKey<\n T extends Record<K, any>,\n K extends keyof immer.Draft<T>,\n>(\n draft: immer.Draft<T>,\n oldInterfaceName: K,\n newInterfaceName: K,\n) {\n if (draft[oldInterfaceName]) {\n draft[newInterfaceName] = draft[oldInterfaceName];\n delete draft[oldInterfaceName];\n }\n}\n\nfunction changeArrayEntry(\n draft: immer.Draft<string[]>,\n oldNew: string,\n newName: string,\n) {\n const idx = draft.findIndex(a => a === oldNew);\n if (idx >= 0) {\n draft[idx] = newName;\n }\n}\n\nfunction changeEachEntry<T extends object>(\n wireData: immer.WritableDraft<Record<string, T>>,\n data: Record<string, string>,\n changer: (\n input: immer.Draft<T>,\n oldApiName: string,\n newApiName: string,\n ) => void,\n changeSelf?: boolean,\n) {\n for (const [oldName, newName] of Object.entries(data)) {\n for (const k of Object.keys(wireData)) {\n changer(\n wireData[k],\n oldName,\n newName,\n );\n\n if (changeSelf && k === oldName) {\n wireData[newName] = wireData[k];\n delete wireData[k];\n }\n }\n }\n}\n\nfunction changeDataType(\n dataType: immer.Draft<QueryDataType | ActionParameterType>,\n oldObjectName: string,\n newObjectName: string,\n) {\n if (dataType.type === \"array\") {\n changeDataType(dataType.subType, oldObjectName, newObjectName);\n } else if (dataType.type === \"object\" || dataType.type === \"objectSet\") {\n if (dataType.objectTypeApiName === oldObjectName) {\n dataType.objectTypeApiName = newObjectName;\n }\n if (dataType.objectApiName === oldObjectName) {\n dataType.objectApiName = newObjectName;\n }\n }\n}\n\nfunction changeNames(ontology: WireOntologyDefinition, newNames: {\n objects: Record<string, string>;\n spts: Record<string, string>;\n interfaces: Record<string, string>;\n actions: Record<string, string>;\n queries: Record<string, string>;\n}) {\n return immer.produce(ontology, (draft) => {\n // Handle spt renames\n changeEachEntry(\n draft.sharedPropertyTypes,\n newNames.spts,\n (draft, oldSptName, newSptName) => {\n changeValue(draft, \"apiName\", oldSptName, newSptName);\n },\n true,\n );\n\n // Handle query renames\n changeEachEntry(\n draft.queryTypes,\n newNames.queries,\n (draft, oldActionName, newActionName) => {\n if (draft.apiName === oldActionName) {\n draft.apiName = newActionName;\n }\n },\n true,\n );\n\n // Handle action renames\n changeEachEntry(\n draft.actionTypes,\n newNames.actions,\n (draft, oldActionName, newActionName) => {\n changeValue(draft, \"apiName\", oldActionName, newActionName);\n },\n true,\n );\n\n // Handle interface renames\n changeEachEntry(\n draft.interfaceTypes,\n newNames.interfaces,\n (ifaceType, oldIfaceName, newIfaceName) => {\n changeValue(ifaceType, \"apiName\", oldIfaceName, newIfaceName);\n ifaceType.extendsInterfaces = ifaceType.allExtendsInterfaces.map(\n v => v === oldIfaceName ? newIfaceName : v,\n );\n changeEachEntry(\n ifaceType.allProperties,\n newNames.spts,\n (property, oldSptName, newSptName) => {\n changeValue(property, \"apiName\", oldSptName, newSptName);\n },\n true,\n );\n },\n true,\n );\n\n changeEachEntry(\n draft.objectTypes,\n newNames.interfaces,\n (objectType, oldIfaceName, newIfaceName) => {\n changeArrayEntry(\n objectType.implementsInterfaces,\n oldIfaceName,\n newIfaceName,\n );\n\n changeKey(\n objectType.implementsInterfaces2,\n oldIfaceName,\n newIfaceName,\n );\n },\n );\n\n // Handle object renames\n changeEachEntry(\n draft.queryTypes,\n newNames.objects,\n (queryType, oldObjectName, newObjectName) => {\n changeDataType(queryType.output, oldObjectName, newObjectName);\n\n for (const { dataType } of Object.values(queryType.parameters)) {\n changeDataType(dataType, oldObjectName, newObjectName);\n }\n },\n );\n\n changeEachEntry(\n draft.objectTypes,\n newNames.objects,\n ({ objectType, linkTypes }, oldObjectName, newObjectName) => {\n changeValue(objectType, \"apiName\", oldObjectName, newObjectName);\n\n for (const l of linkTypes) {\n changeValue(l, \"objectTypeApiName\", oldObjectName, newObjectName);\n }\n },\n true,\n );\n\n changeEachEntry(\n draft.actionTypes,\n newNames.objects,\n (action, oldObjectName, newObjectName) => {\n for (const op of action.operations) {\n switch (op.type) {\n case \"deleteObject\":\n case \"modifyObject\":\n case \"createObject\":\n if (op.objectTypeApiName === oldObjectName) {\n op.objectTypeApiName = newObjectName;\n }\n }\n }\n\n for (const { dataType } of Object.values(action.parameters)) {\n changeDataType(dataType, oldObjectName, newObjectName);\n }\n },\n );\n });\n}\n\nconst referencedOntology = {\n \"ontology\": {\n \"apiName\": \"dep\",\n \"rid\": \"ri.ontology.main.ontology.dep\",\n \"displayName\": \"\",\n \"description\": \"\",\n },\n \"actionTypes\": {},\n \"objectTypes\": {\n \"com.example.dep.Task\": {\n implementsInterfaces: [],\n implementsInterfaces2: {},\n sharedPropertyTypeMapping: {},\n \"objectType\": {\n \"apiName\": \"com.example.dep.Task\",\n \"primaryKey\": \"taskId\",\n displayName: \"Task\",\n pluralDisplayName: \"Tasks\",\n icon: { type: \"blueprint\", color: \"blue\", name: \"document\" },\n\n titleProperty: \"taskId\",\n\n \"properties\": {\n \"taskId\": {\n \"dataType\": {\n \"type\": \"string\",\n },\n \"rid\": \"ridForTaskId\",\n },\n \"body\": {\n \"dataType\": {\n \"type\": \"string\",\n },\n \"rid\": \"ridForBody\",\n },\n \"shouldBeIgnored\": {\n \"dataType\": {\n \"type\": \"futureUnknownType\",\n } as unknown as ObjectPropertyType,\n \"rid\": \"ridForShouldBeIgnored\",\n },\n },\n \"status\": \"ACTIVE\",\n \"rid\": \"ridForTask\",\n },\n \"linkTypes\": [],\n },\n },\n \"queryTypes\": {},\n \"interfaceTypes\": {\n \"com.example.dep.SomeInterface\": {\n apiName: \"com.example.dep.SomeInterface\",\n rid: \"idk2\",\n displayName: \"Sum Interface\",\n extendsInterfaces: [],\n properties: {\n \"com.example.dep.spt\": {\n apiName: \"com.example.dep.spt\",\n dataType: {\n type: \"string\",\n },\n displayName: \"Some Property\",\n rid: \"idk\",\n required: true,\n },\n },\n propertiesV2: {},\n implementedByObjectTypes: [],\n links: {},\n allExtendsInterfaces: [],\n allLinks: {},\n allProperties: {\n \"com.example.dep.spt\": {\n apiName: \"com.example.dep.spt\",\n dataType: {\n type: \"string\",\n },\n displayName: \"Some Property\",\n rid: \"idk\",\n required: true,\n },\n \"com.example.dep.spt2\": {\n apiName: \"com.example.dep.spt2\",\n dataType: {\n type: \"string\",\n },\n displayName: \"Some Property 2\",\n rid: \"idk\",\n required: true,\n },\n },\n allPropertiesV2: {},\n },\n },\n \"sharedPropertyTypes\": {\n \"com.example.dep.spt\": {\n apiName: \"com.example.dep.spt\",\n dataType: {\n type: \"string\",\n },\n displayName: \"Some Property\",\n rid: \"idk\",\n },\n },\n \"branch\": {\n rid: \"someRidHere\",\n },\n valueTypes: {},\n} satisfies WireOntologyDefinition;\n\nconst referencingOntology: WireOntologyDefinition = {\n ontology: TodoWireOntology.ontology,\n \"actionTypes\": {\n \"setTaskBody\": {\n \"apiName\": \"setTaskBody\",\n \"parameters\": {\n \"task\": {\n \"displayName\": \"taskBody\",\n \"dataType\": {\n \"type\": \"object\",\n \"objectApiName\": \"com.example.dep.Task\",\n \"objectTypeApiName\": \"com.example.dep.Task\",\n },\n \"required\": true,\n },\n \"body\": {\n \"displayName\": \"body\",\n \"dataType\": {\n \"type\": \"string\",\n },\n \"required\": true,\n },\n },\n \"status\": \"ACTIVE\",\n \"rid\": \"ri.a.b.c.d\",\n \"operations\": [\n {\n \"type\": \"modifyObject\",\n \"objectTypeApiName\": \"com.example.dep.Task\",\n },\n ],\n },\n },\n interfaceTypes: {\n ...referencedOntology.interfaceTypes,\n },\n objectTypes: {\n ...referencedOntology.objectTypes,\n \"Thing\": {\n implementsInterfaces: [\"com.example.dep.SomeInterface\"],\n implementsInterfaces2: {\n \"com.example.dep.SomeInterface\": {\n links: {},\n properties: {\n \"com.example.dep.spt\": \"body\",\n },\n propertiesV2: {},\n },\n },\n linkTypes: [],\n objectType: {\n apiName: \"Thing\",\n displayName: \"Thing\",\n pluralDisplayName: \"Things\",\n icon: { type: \"blueprint\", color: \"blue\", name: \"document\" },\n primaryKey: \"id\",\n properties: {\n \"id\": {\n dataType: {\n type: \"integer\",\n },\n rid: \"rid\",\n },\n \"body\": {\n dataType: {\n type: \"string\",\n },\n \"rid\": \"rid\",\n },\n },\n rid: \"ridForThing\",\n status: \"ACTIVE\",\n titleProperty: \"id\",\n },\n sharedPropertyTypeMapping: {},\n },\n \"UsesForeignSpt\": {\n implementsInterfaces: [],\n implementsInterfaces2: {},\n linkTypes: [],\n objectType: {\n apiName: \"UsesForeignSpt\",\n primaryKey: \"id\",\n displayName: \"Uses Foreign Spt\",\n icon: { type: \"blueprint\", color: \"blue\", name: \"document\" },\n pluralDisplayName: \"Uses Foreign Spts\",\n properties: {\n \"id\": {\n dataType: {\n type: \"integer\",\n },\n rid: \"rid\",\n },\n \"body\": {\n dataType: {\n type: \"string\",\n },\n rid: \"rid\",\n },\n },\n rid: \"theRid\",\n status: \"ACTIVE\",\n titleProperty: \"id\",\n },\n sharedPropertyTypeMapping: {\n \"com.example.dep.spt\": \"body\",\n },\n },\n },\n queryTypes: {\n getTask: {\n apiName: \"getTask\",\n output: {\n type: \"object\",\n objectApiName: \"com.example.dep.Task\",\n objectTypeApiName: \"com.example.dep.Task\",\n },\n parameters: {\n \"a\": {\n dataType: {\n type: \"object\",\n objectApiName: \"com.example.dep.Task\",\n objectTypeApiName: \"com.example.dep.Task\",\n },\n },\n },\n rid: \"ri.a.b.c\",\n version: \"0\",\n },\n },\n sharedPropertyTypes: {},\n valueTypes: {},\n} satisfies WireOntologyDefinition;\n\nconst fooBarTodoWireOntology = changeNames(\n TodoWireOntology,\n {\n objects: { \"Todo\": \"foo.bar.Todo\", \"Person\": \"foo.bar.Person\" },\n actions: {\n markTodoCompleted: \"foo.bar.markTodoCompleted\",\n deleteTodos: \"foo.bar.deleteTodos\",\n },\n interfaces: {\n \"SomeInterface\": \"foo.bar.SomeInterface\",\n },\n queries: {\n \"getCount\": \"foo.bar.getCount\",\n \"returnsTodo\": \"foo.bar.returnsTodo\",\n },\n spts: {\n \"SomeProperty\": \"foo.bar.SomeProperty\",\n },\n },\n);\n\nconst BASE_PATH = \"/foo\";\n\ndescribe(\"generator\", () => {\n let helper: ReturnType<typeof createMockMinimalFiles>;\n beforeEach(async () => {\n helper = createMockMinimalFiles();\n });\n\n test(\n \"should be able to generate a project\",\n { timeout: 20_000 },\n async () => {\n await generateClientSdkVersionTwoPointZero(\n TodoWireOntology,\n \"typescript-sdk/0.0.0 osdk-cli/0.0.0\",\n helper.minimalFiles,\n BASE_PATH,\n );\n\n const files = helper.getFiles();\n\n expect(files).toMatchObject({\n [`${BASE_PATH}/index.ts`]: expect.anything(),\n [`${BASE_PATH}/OntologyMetadata.ts`]: expect.anything(),\n [`${BASE_PATH}/ontology/objects/Todo.ts`]: expect.anything(),\n });\n\n const diagnostics = compileThis(helper.getFiles(), BASE_PATH);\n for (const q of diagnostics) {\n console.error(\n `${q.file?.fileName}:${q.file?.getLineStarts()}`,\n q.messageText,\n );\n }\n\n // TODO: Certain errors are expected since we can't resolve the static code, but we should fix them.\n const errors = diagnostics.filter(q => q.code !== 2792);\n expect(errors).toHaveLength(0);\n\n expect(\n tweakedFilesForSnapshotConsistency(helper.getFiles()),\n ).toMatchInlineSnapshot(`\n {\n \"/foo/OntologyMetadata.ts\": \"export type $ExpectedClientVersion = 'PLACEHOLDER';\n export const $osdkMetadata = { extraUserAgent: 'typescript-sdk/0.0.0 osdk-cli/0.0.0' };\n\n export const $ontologyRid = 'ridHere';\n \",\n \"/foo/index.ts\": \"export { deleteTodos, markTodoCompleted } from './ontology/actions.js';\n export * as $Actions from './ontology/actions.js';\n export { SomeInterface } from './ontology/interfaces.js';\n export * as $Interfaces from './ontology/interfaces.js';\n export { Person, Todo } from './ontology/objects.js';\n export * as $Objects from './ontology/objects.js';\n export { getCount, returnsTodo } from './ontology/queries.js';\n export * as $Queries from './ontology/queries.js';\n export { $osdkMetadata } from './OntologyMetadata.js';\n export { $ontologyRid } from './OntologyMetadata.js';\n \",\n \"/foo/ontology/actions.ts\": \"export { deleteTodos } from './actions/deleteTodos.js';\n export { markTodoCompleted } from './actions/markTodoCompleted.js';\n \",\n \"/foo/ontology/actions/deleteTodos.ts\": \"import type {\n ActionDefinition,\n ActionMetadata,\n ActionParam,\n ActionReturnTypeForOptions,\n ApplyActionOptions,\n ApplyBatchActionOptions,\n } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Todo } from '../objects/Todo.js';\n\n export namespace deleteTodos {\n // Represents the definition of the parameters for the action\n export type ParamsDefinition = {\n object: {\n description: 'Todo(s) to be deleted';\n multiplicity: true;\n nullable: true;\n type: ActionMetadata.DataType.Object<Todo>;\n };\n };\n\n /**\n * An action which takes in an array of objects\n */\n export interface Params {\n /**\n * Todo(s) to be deleted\n */\n readonly object?: ReadonlyArray<ActionParam.ObjectType<Todo>>;\n }\n\n // Represents a fqn of the action\n export interface Signatures {\n /**\n * An action which takes in an array of objects\n */\n applyAction<OP extends ApplyActionOptions>(\n args: deleteTodos.Params,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n\n batchApplyAction<OP extends ApplyBatchActionOptions>(\n args: ReadonlyArray<deleteTodos.Params>,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n }\n }\n\n /**\n * An action which takes in an array of objects\n * @param {ActionParam.ObjectType<Todo>} [object] Todo(s) to be deleted\n */\n export interface deleteTodos extends ActionDefinition<deleteTodos.Signatures> {\n __DefinitionMetadata?: {\n apiName: 'deleteTodos';\n description: 'An action which takes in an array of objects';\n modifiedEntities: {};\n parameters: deleteTodos.ParamsDefinition;\n rid: 'ri.ontology.main.action-type.8f94017d-cf17-4fa8-84c3-8e01e5d594f2';\n status: 'ACTIVE';\n type: 'action';\n\n signatures: deleteTodos.Signatures;\n };\n apiName: 'deleteTodos';\n type: 'action';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const deleteTodos: deleteTodos = {\n apiName: 'deleteTodos',\n type: 'action',\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/actions/markTodoCompleted.ts\": \"import type {\n ActionDefinition,\n ActionMetadata,\n ActionParam,\n ActionReturnTypeForOptions,\n ApplyActionOptions,\n ApplyBatchActionOptions,\n } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Todo } from '../objects/Todo.js';\n\n export namespace markTodoCompleted {\n // Represents the definition of the parameters for the action\n export type ParamsDefinition = {\n object: {\n description: 'A Todo to mark completed';\n multiplicity: false;\n nullable: true;\n type: ActionMetadata.DataType.Object<Todo>;\n };\n };\n\n /**\n * An action which takes different types of parameters\n */\n export interface Params {\n /**\n * A Todo to mark completed\n */\n readonly object?: ActionParam.ObjectType<Todo>;\n }\n\n // Represents a fqn of the action\n export interface Signatures {\n /**\n * An action which takes different types of parameters\n */\n applyAction<OP extends ApplyActionOptions>(\n args: markTodoCompleted.Params,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n\n batchApplyAction<OP extends ApplyBatchActionOptions>(\n args: ReadonlyArray<markTodoCompleted.Params>,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n }\n }\n\n /**\n * An action which takes different types of parameters\n * @param {ActionParam.ObjectType<Todo>} [object] A Todo to mark completed\n */\n export interface markTodoCompleted extends ActionDefinition<markTodoCompleted.Signatures> {\n __DefinitionMetadata?: {\n apiName: 'markTodoCompleted';\n description: 'An action which takes different types of parameters';\n modifiedEntities: {\n Todo: {\n created: false;\n modified: true;\n };\n };\n parameters: markTodoCompleted.ParamsDefinition;\n rid: 'ri.ontology.main.action-type.9f84017d-cf17-4fa8-84c3-8e01e5d594f2';\n status: 'ACTIVE';\n type: 'action';\n\n signatures: markTodoCompleted.Signatures;\n };\n apiName: 'markTodoCompleted';\n type: 'action';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const markTodoCompleted: markTodoCompleted = {\n apiName: 'markTodoCompleted',\n type: 'action',\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/interfaces.ts\": \"export { SomeInterface } from './interfaces/SomeInterface.js';\n \",\n \"/foo/ontology/interfaces/SomeInterface.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n\n import type {\n InterfaceDefinition as $InterfaceDefinition,\n InterfaceMetadata as $InterfaceMetadata,\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n PropertyValueWireToClient as $PropType,\n } from '@osdk/client';\n\n export type OsdkObjectLinks$SomeInterface = {};\n\n export namespace SomeInterface {\n export type PropertyKeys = 'SomeProperty';\n\n export interface Props {\n /**\n * display name: 'Sum Property',\n *\n * description: Some property\n */\n readonly SomeProperty: $PropType['string'] | undefined;\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<SomeInterface, SomeInterface.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof SomeInterface.Props = keyof SomeInterface.Props,\n > = $Osdk.Instance<SomeInterface, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof SomeInterface.Props = keyof SomeInterface.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface SomeInterface extends $InterfaceDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'interface';\n apiName: 'SomeInterface';\n __DefinitionMetadata?: {\n objectSet: SomeInterface.ObjectSet;\n props: SomeInterface.Props;\n linksType: OsdkObjectLinks$SomeInterface;\n strictProps: SomeInterface.StrictProps;\n apiName: 'SomeInterface';\n description: 'Some interface';\n displayName: 'Sum Interface';\n implementedBy: [];\n implements: [];\n links: {};\n properties: {\n /**\n * display name: 'Sum Property',\n *\n * description: Some property\n */\n SomeProperty: $PropertyDef<'string', 'nullable', 'single'>;\n };\n rid: 'idk';\n type: 'interface';\n };\n }\n\n export const SomeInterface: SomeInterface = {\n type: 'interface',\n apiName: 'SomeInterface',\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/objects.ts\": \"export { Person } from './objects/Person.js';\n export { Todo } from './objects/Todo.js';\n \",\n \"/foo/ontology/objects/Person.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import type { Todo } from './Todo.js';\n import type {\n PropertyKeys as $PropertyKeys,\n ObjectTypeDefinition as $ObjectTypeDefinition,\n ObjectMetadata as $ObjectMetadata,\n } from '@osdk/client';\n import type {\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n OsdkObject as $OsdkObject,\n PropertyValueWireToClient as $PropType,\n SingleLinkAccessor as $SingleLinkAccessor,\n } from '@osdk/client';\n\n export namespace Person {\n export type PropertyKeys = 'email';\n\n export interface Links {\n readonly Todos: Todo.ObjectSet;\n }\n\n export interface Props {\n /**\n * (no ontology metadata)\n */\n readonly email: 'osdk@palantir.com' | 'foundry@palantir.com';\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<Person, Person.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Person.Props = keyof Person.Props,\n > = $Osdk.Instance<Person, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Person.Props = keyof Person.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface Person extends $ObjectTypeDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'object';\n apiName: 'Person';\n __DefinitionMetadata?: {\n objectSet: Person.ObjectSet;\n props: Person.Props;\n linksType: Person.Links;\n strictProps: Person.StrictProps;\n apiName: 'Person';\n description: 'A person';\n displayName: 'Person';\n icon: {\n type: 'blueprint';\n name: 'document';\n color: 'blue';\n };\n implements: [];\n interfaceMap: {};\n inverseInterfaceMap: {};\n links: {\n Todos: $ObjectMetadata.Link<Todo, true>;\n };\n pluralDisplayName: 'Persons';\n primaryKeyApiName: 'email';\n primaryKeyType: 'string';\n properties: {\n /**\n * (no ontology metadata)\n */\n email: $PropertyDef<'string', 'non-nullable', 'single'>;\n };\n rid: 'ridForPerson';\n status: 'ACTIVE';\n titleProperty: 'email';\n type: 'object';\n visibility: undefined;\n };\n }\n\n export const Person = {\n type: 'object',\n apiName: 'Person',\n osdkMetadata: $osdkMetadata,\n internalDoNotUseMetadata: {\n rid: 'ridForPerson',\n },\n } satisfies Person & { internalDoNotUseMetadata: { rid: string } } as Person;\n \",\n \"/foo/ontology/objects/Todo.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import type { Person } from './Person.js';\n import type {\n PropertyKeys as $PropertyKeys,\n ObjectTypeDefinition as $ObjectTypeDefinition,\n ObjectMetadata as $ObjectMetadata,\n } from '@osdk/client';\n import type {\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n OsdkObject as $OsdkObject,\n PropertyValueWireToClient as $PropType,\n SingleLinkAccessor as $SingleLinkAccessor,\n } from '@osdk/client';\n\n export namespace Todo {\n export type PropertyKeys = 'id' | 'body' | 'complete' | 'array';\n\n export interface Links {\n readonly Assignee: $SingleLinkAccessor<Person>;\n }\n\n export interface Props {\n /**\n * (no ontology metadata)\n */\n readonly array: ('a' | 'b' | 'c')[] | undefined;\n /**\n * display name: 'Body',\n *\n * description: The text of the todo\n */\n readonly body: $PropType['string'] | undefined;\n /**\n * (no ontology metadata)\n */\n readonly complete: $PropType['boolean'] | undefined;\n /**\n * (no ontology metadata)\n */\n readonly id: $PropType['integer'];\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<Todo, Todo.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Todo.Props = keyof Todo.Props,\n > = $Osdk.Instance<Todo, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Todo.Props = keyof Todo.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface Todo extends $ObjectTypeDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'object';\n apiName: 'Todo';\n __DefinitionMetadata?: {\n objectSet: Todo.ObjectSet;\n props: Todo.Props;\n linksType: Todo.Links;\n strictProps: Todo.StrictProps;\n apiName: 'Todo';\n description: 'Its a todo item.';\n displayName: 'AwesomeTodoDisplayname';\n icon: {\n type: 'blueprint';\n name: 'document';\n color: 'blue';\n };\n implements: ['SomeInterface'];\n interfaceMap: {\n SomeInterface: {\n SomeProperty: 'body';\n };\n };\n inverseInterfaceMap: {\n SomeInterface: {\n body: 'SomeProperty';\n };\n };\n links: {\n Assignee: $ObjectMetadata.Link<Person, false>;\n };\n pluralDisplayName: 'AwesomeTodoDisplayNames';\n primaryKeyApiName: 'id';\n primaryKeyType: 'integer';\n properties: {\n /**\n * (no ontology metadata)\n */\n array: $PropertyDef<'string', 'nullable', 'array'>;\n /**\n * display name: 'Body',\n *\n * description: The text of the todo\n */\n body: $PropertyDef<'string', 'nullable', 'single'>;\n /**\n * (no ontology metadata)\n */\n complete: $PropertyDef<'boolean', 'nullable', 'single'>;\n /**\n * (no ontology metadata)\n */\n id: $PropertyDef<'integer', 'non-nullable', 'single'>;\n };\n rid: 'ridForTodo';\n status: 'ACTIVE';\n titleProperty: 'body';\n type: 'object';\n visibility: undefined;\n };\n }\n\n export const Todo = {\n type: 'object',\n apiName: 'Todo',\n osdkMetadata: $osdkMetadata,\n internalDoNotUseMetadata: {\n rid: 'ridForTodo',\n },\n } satisfies Todo & { internalDoNotUseMetadata: { rid: string } } as Todo;\n \",\n \"/foo/ontology/queries.ts\": \"export { getCount } from './queries/getCount.js';\n export { returnsTodo } from './queries/returnsTodo.js';\n \",\n \"/foo/ontology/queries/getCount.ts\": \"import type { ObjectSpecifier, QueryDefinition, QueryParam, QueryResult, VersionBound } from '@osdk/client';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n\n export namespace getCount {\n export interface Signature {\n (query: getCount.Parameters): Promise<getCount.ReturnType>;\n }\n\n export interface Parameters {\n /**\n * (no ontology metadata)\n */\n readonly completed: QueryParam.PrimitiveType<'boolean'>;\n }\n\n export type ReturnType = QueryResult.PrimitiveType<'integer'>;\n }\n\n export interface getCount extends QueryDefinition<getCount.Signature>, VersionBound<$ExpectedClientVersion> {\n __DefinitionMetadata?: {\n apiName: 'getCount';\n rid: 'rid.query.1';\n type: 'query';\n version: '1.1.0';\n isFixedVersion: false;\n parameters: {\n /**\n * (no ontology metadata)\n */\n completed: {\n nullable: false;\n type: 'boolean';\n };\n };\n output: {\n nullable: false;\n type: 'integer';\n };\n signature: getCount.Signature;\n };\n apiName: 'getCount';\n type: 'query';\n version: '1.1.0';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const getCount: getCount = {\n apiName: 'getCount',\n type: 'query',\n version: '1.1.0',\n isFixedVersion: false,\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/queries/returnsTodo.ts\": \"import type { ObjectSpecifier, QueryDefinition, QueryParam, QueryResult, VersionBound } from '@osdk/client';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Todo } from '../objects/Todo.js';\n\n export namespace returnsTodo {\n export interface Signature {\n (query: returnsTodo.Parameters): Promise<returnsTodo.ReturnType>;\n }\n\n export interface Parameters {\n /**\n * description: Random desc so we test jsdoc\n */\n readonly someTodo: QueryParam.ObjectType<Todo>;\n }\n\n export type ReturnType = QueryResult.ObjectType<Todo>;\n }\n\n export interface returnsTodo extends QueryDefinition<returnsTodo.Signature>, VersionBound<$ExpectedClientVersion> {\n __DefinitionMetadata?: {\n apiName: 'returnsTodo';\n rid: 'rid.query.2';\n type: 'query';\n version: '3.2.0';\n isFixedVersion: false;\n parameters: {\n /**\n * description: Random desc so we test jsdoc\n */\n someTodo: {\n description: 'Random desc so we test jsdoc';\n nullable: false;\n object: 'Todo';\n type: 'object';\n __OsdkTargetType?: Todo;\n };\n };\n output: {\n nullable: false;\n object: 'Todo';\n type: 'object';\n __OsdkTargetType?: Todo;\n };\n signature: returnsTodo.Signature;\n };\n apiName: 'returnsTodo';\n type: 'query';\n version: '3.2.0';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const returnsTodo: returnsTodo = {\n apiName: 'returnsTodo',\n type: 'query',\n version: '3.2.0',\n isFixedVersion: false,\n osdkMetadata: $osdkMetadata,\n };\n \",\n }\n `);\n },\n );\n\n test(\"throws an error when target destination is not empty\", async () => {\n helper.minimalFiles.readdir = vi.fn(async (_path: string) => [\"file\"]);\n\n await expect(async () => {\n await expect(generateClientSdkVersionTwoPointZero(\n TodoWireOntology,\n \"typescript-sdk/0.0.0 osdk-cli/0.0.0\",\n helper.minimalFiles,\n BASE_PATH,\n )).rejects.toThrow();\n });\n });\n\n it(\"throws an error if a namespace is provided that all top levels do not use\", async () => {\n await expect(\n generateClientSdkVersionTwoPointZero(\n { ...TodoWireOntology },\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n undefined,\n undefined,\n undefined,\n true,\n ),\n );\n\n // Disabled for now since we can't really enforce it from dev console at the moment\n // .rejects.toThrowErrorMatchingInlineSnapshot(\n // `[Error: Found type { ns:'undefined', shortName: 'Todo'} but it is not in the generation namespace 'foo.bar'. This violates the contract of the generator.]`,\n // );\n });\n\n it(\"does not throw an error if a namespace is provided that all top levels use\", async () => {\n await expect(\n generateClientSdkVersionTwoPointZero(\n fooBarTodoWireOntology,\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n undefined,\n undefined,\n undefined,\n true,\n ),\n ).resolves.toMatchInlineSnapshot(`undefined`);\n\n expect(helper.getFiles()[\"/foo/ontology/objects/foo.bar.Todo.ts\"])\n .toBeUndefined();\n\n expect(helper.getFiles()[\"/foo/ontology/objects/Todo.ts\"])\n .not.toBeUndefined();\n\n expect(tweakedFilesForSnapshotConsistency(helper.getFiles()))\n .toMatchInlineSnapshot(`\n {\n \"/foo/OntologyMetadata.ts\": \"export type $ExpectedClientVersion = 'PLACEHOLDER';\n export const $osdkMetadata = { extraUserAgent: '' };\n\n export const $ontologyRid = 'ridHere';\n \",\n \"/foo/index.ts\": \"export { deleteTodos, markTodoCompleted } from './ontology/actions.js';\n export * as $Actions from './ontology/actions.js';\n export { SomeInterface } from './ontology/interfaces.js';\n export * as $Interfaces from './ontology/interfaces.js';\n export { Person, Todo } from './ontology/objects.js';\n export * as $Objects from './ontology/objects.js';\n export { getCount, returnsTodo } from './ontology/queries.js';\n export * as $Queries from './ontology/queries.js';\n export { $osdkMetadata } from './OntologyMetadata.js';\n export { $ontologyRid } from './OntologyMetadata.js';\n \",\n \"/foo/ontology/actions.ts\": \"export { deleteTodos } from './actions/deleteTodos.js';\n export { markTodoCompleted } from './actions/markTodoCompleted.js';\n \",\n \"/foo/ontology/actions/deleteTodos.ts\": \"import type {\n ActionDefinition,\n ActionMetadata,\n ActionParam,\n ActionReturnTypeForOptions,\n ApplyActionOptions,\n ApplyBatchActionOptions,\n } from '@osdk/api';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Todo } from '../objects/Todo.js';\n\n export namespace deleteTodos {\n // Represents the definition of the parameters for the action\n export type ParamsDefinition = {\n object: {\n description: 'Todo(s) to be deleted';\n multiplicity: true;\n nullable: true;\n type: ActionMetadata.DataType.Object<Todo>;\n };\n };\n\n /**\n * An action which takes in an array of objects\n */\n export interface Params {\n /**\n * Todo(s) to be deleted\n */\n readonly object?: ReadonlyArray<ActionParam.ObjectType<Todo>>;\n }\n\n // Represents a fqn of the action\n export interface Signatures {\n /**\n * An action which takes in an array of objects\n */\n applyAction<OP extends ApplyActionOptions>(\n args: deleteTodos.Params,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n\n batchApplyAction<OP extends ApplyBatchActionOptions>(\n args: ReadonlyArray<deleteTodos.Params>,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n }\n }\n\n /**\n * An action which takes in an array of objects\n * @param {ActionParam.ObjectType<Todo>} [object] Todo(s) to be deleted\n */\n export interface deleteTodos extends ActionDefinition<deleteTodos.Signatures> {\n __DefinitionMetadata?: {\n apiName: 'foo.bar.deleteTodos';\n description: 'An action which takes in an array of objects';\n modifiedEntities: {};\n parameters: deleteTodos.ParamsDefinition;\n rid: 'ri.ontology.main.action-type.8f94017d-cf17-4fa8-84c3-8e01e5d594f2';\n status: 'ACTIVE';\n type: 'action';\n\n signatures: deleteTodos.Signatures;\n };\n apiName: 'foo.bar.deleteTodos';\n type: 'action';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const deleteTodos: deleteTodos = {\n apiName: 'foo.bar.deleteTodos',\n type: 'action',\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/actions/markTodoCompleted.ts\": \"import type {\n ActionDefinition,\n ActionMetadata,\n ActionParam,\n ActionReturnTypeForOptions,\n ApplyActionOptions,\n ApplyBatchActionOptions,\n } from '@osdk/api';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Todo } from '../objects/Todo.js';\n\n export namespace markTodoCompleted {\n // Represents the definition of the parameters for the action\n export type ParamsDefinition = {\n object: {\n description: 'A Todo to mark completed';\n multiplicity: false;\n nullable: true;\n type: ActionMetadata.DataType.Object<Todo>;\n };\n };\n\n /**\n * An action which takes different types of parameters\n */\n export interface Params {\n /**\n * A Todo to mark completed\n */\n readonly object?: ActionParam.ObjectType<Todo>;\n }\n\n // Represents a fqn of the action\n export interface Signatures {\n /**\n * An action which takes different types of parameters\n */\n applyAction<OP extends ApplyActionOptions>(\n args: markTodoCompleted.Params,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n\n batchApplyAction<OP extends ApplyBatchActionOptions>(\n args: ReadonlyArray<markTodoCompleted.Params>,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n }\n }\n\n /**\n * An action which takes different types of parameters\n * @param {ActionParam.ObjectType<Todo>} [object] A Todo to mark completed\n */\n export interface markTodoCompleted extends ActionDefinition<markTodoCompleted.Signatures> {\n __DefinitionMetadata?: {\n apiName: 'foo.bar.markTodoCompleted';\n description: 'An action which takes different types of parameters';\n modifiedEntities: {\n 'foo.bar.Todo': {\n created: false;\n modified: true;\n };\n };\n parameters: markTodoCompleted.ParamsDefinition;\n rid: 'ri.ontology.main.action-type.9f84017d-cf17-4fa8-84c3-8e01e5d594f2';\n status: 'ACTIVE';\n type: 'action';\n\n signatures: markTodoCompleted.Signatures;\n };\n apiName: 'foo.bar.markTodoCompleted';\n type: 'action';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const markTodoCompleted: markTodoCompleted = {\n apiName: 'foo.bar.markTodoCompleted',\n type: 'action',\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/interfaces.ts\": \"export { SomeInterface } from './interfaces/SomeInterface.js';\n \",\n \"/foo/ontology/interfaces/SomeInterface.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/api';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n\n import type {\n InterfaceDefinition as $InterfaceDefinition,\n InterfaceMetadata as $InterfaceMetadata,\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n PropertyValueWireToClient as $PropType,\n } from '@osdk/api';\n\n export type OsdkObjectLinks$SomeInterface = {};\n\n export namespace SomeInterface {\n export type PropertyKeys = 'SomeProperty';\n\n export interface Props {\n /**\n * display name: 'Sum Property',\n *\n * description: Some property\n */\n readonly SomeProperty: $PropType['string'] | undefined;\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<SomeInterface, SomeInterface.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof SomeInterface.Props = keyof SomeInterface.Props,\n > = $Osdk.Instance<SomeInterface, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof SomeInterface.Props = keyof SomeInterface.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface SomeInterface extends $InterfaceDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'interface';\n apiName: 'foo.bar.SomeInterface';\n __DefinitionMetadata?: {\n objectSet: SomeInterface.ObjectSet;\n props: SomeInterface.Props;\n linksType: OsdkObjectLinks$SomeInterface;\n strictProps: SomeInterface.StrictProps;\n apiName: 'foo.bar.SomeInterface';\n description: 'Some interface';\n displayName: 'Sum Interface';\n implementedBy: [];\n implements: [];\n links: {};\n properties: {\n /**\n * display name: 'Sum Property',\n *\n * description: Some property\n */\n SomeProperty: $PropertyDef<'string', 'nullable', 'single'>;\n };\n rid: 'idk';\n type: 'interface';\n };\n }\n\n export const SomeInterface: SomeInterface = {\n type: 'interface',\n apiName: 'foo.bar.SomeInterface',\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/objects.ts\": \"export { Person } from './objects/Person.js';\n export { Todo } from './objects/Todo.js';\n \",\n \"/foo/ontology/objects/Person.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/api';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import type { Todo } from './Todo.js';\n import type {\n PropertyKeys as $PropertyKeys,\n ObjectTypeDefinition as $ObjectTypeDefinition,\n ObjectMetadata as $ObjectMetadata,\n } from '@osdk/api';\n import type {\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n OsdkObject as $OsdkObject,\n PropertyValueWireToClient as $PropType,\n SingleLinkAccessor as $SingleLinkAccessor,\n } from '@osdk/api';\n\n export namespace Person {\n export type PropertyKeys = 'email';\n\n export interface Links {\n readonly Todos: Todo.ObjectSet;\n }\n\n export interface Props {\n /**\n * (no ontology metadata)\n */\n readonly email: 'osdk@palantir.com' | 'foundry@palantir.com';\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<Person, Person.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Person.Props = keyof Person.Props,\n > = $Osdk.Instance<Person, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Person.Props = keyof Person.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface Person extends $ObjectTypeDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'object';\n apiName: 'foo.bar.Person';\n __DefinitionMetadata?: {\n objectSet: Person.ObjectSet;\n props: Person.Props;\n linksType: Person.Links;\n strictProps: Person.StrictProps;\n apiName: 'foo.bar.Person';\n description: 'A person';\n displayName: 'Person';\n icon: {\n type: 'blueprint';\n name: 'document';\n color: 'blue';\n };\n implements: [];\n interfaceMap: {};\n inverseInterfaceMap: {};\n links: {\n Todos: $ObjectMetadata.Link<Todo, true>;\n };\n pluralDisplayName: 'Persons';\n primaryKeyApiName: 'email';\n primaryKeyType: 'string';\n properties: {\n /**\n * (no ontology metadata)\n */\n email: $PropertyDef<'string', 'non-nullable', 'single'>;\n };\n rid: 'ridForPerson';\n status: 'ACTIVE';\n titleProperty: 'email';\n type: 'object';\n visibility: undefined;\n };\n }\n\n export const Person = {\n type: 'object',\n apiName: 'foo.bar.Person',\n osdkMetadata: $osdkMetadata,\n internalDoNotUseMetadata: {\n rid: 'ridForPerson',\n },\n } satisfies Person & { internalDoNotUseMetadata: { rid: string } } as Person;\n \",\n \"/foo/ontology/objects/Todo.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/api';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import type { Person } from './Person.js';\n import type {\n PropertyKeys as $PropertyKeys,\n ObjectTypeDefinition as $ObjectTypeDefinition,\n ObjectMetadata as $ObjectMetadata,\n } from '@osdk/api';\n import type {\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n OsdkObject as $OsdkObject,\n PropertyValueWireToClient as $PropType,\n SingleLinkAccessor as $SingleLinkAccessor,\n } from '@osdk/api';\n\n export namespace Todo {\n export type PropertyKeys = 'id' | 'body' | 'complete' | 'array';\n\n export interface Links {\n readonly Assignee: $SingleLinkAccessor<Person>;\n }\n\n export interface Props {\n /**\n * (no ontology metadata)\n */\n readonly array: ('a' | 'b' | 'c')[] | undefined;\n /**\n * display name: 'Body',\n *\n * description: The text of the todo\n */\n readonly body: $PropType['string'] | undefined;\n /**\n * (no ontology metadata)\n */\n readonly complete: $PropType['boolean'] | undefined;\n /**\n * (no ontology metadata)\n */\n readonly id: $PropType['integer'];\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<Todo, Todo.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Todo.Props = keyof Todo.Props,\n > = $Osdk.Instance<Todo, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Todo.Props = keyof Todo.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface Todo extends $ObjectTypeDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'object';\n apiName: 'foo.bar.Todo';\n __DefinitionMetadata?: {\n objectSet: Todo.ObjectSet;\n props: Todo.Props;\n linksType: Todo.Links;\n strictProps: Todo.StrictProps;\n apiName: 'foo.bar.Todo';\n description: 'Its a todo item.';\n displayName: 'AwesomeTodoDisplayname';\n icon: {\n type: 'blueprint';\n name: 'document';\n color: 'blue';\n };\n implements: ['foo.bar.SomeInterface'];\n interfaceMap: {\n 'foo.bar.SomeInterface': {\n SomeProperty: 'body';\n };\n };\n inverseInterfaceMap: {\n 'foo.bar.SomeInterface': {\n body: 'SomeProperty';\n };\n };\n links: {\n Assignee: $ObjectMetadata.Link<Person, false>;\n };\n pluralDisplayName: 'AwesomeTodoDisplayNames';\n primaryKeyApiName: 'id';\n primaryKeyType: 'integer';\n properties: {\n /**\n * (no ontology metadata)\n */\n array: $PropertyDef<'string', 'nullable', 'array'>;\n /**\n * display name: 'Body',\n *\n * description: The text of the todo\n */\n body: $PropertyDef<'string', 'nullable', 'single'>;\n /**\n * (no ontology metadata)\n */\n complete: $PropertyDef<'boolean', 'nullable', 'single'>;\n /**\n * (no ontology metadata)\n */\n id: $PropertyDef<'integer', 'non-nullable', 'single'>;\n };\n rid: 'ridForTodo';\n status: 'ACTIVE';\n titleProperty: 'body';\n type: 'object';\n visibility: undefined;\n };\n }\n\n export const Todo = {\n type: 'object',\n apiName: 'foo.bar.Todo',\n osdkMetadata: $osdkMetadata,\n internalDoNotUseMetadata: {\n rid: 'ridForTodo',\n },\n } satisfies Todo & { internalDoNotUseMetadata: { rid: string } } as Todo;\n \",\n \"/foo/ontology/queries.ts\": \"export { getCount } from './queries/getCount.js';\n export { returnsTodo } from './queries/returnsTodo.js';\n \",\n \"/foo/ontology/queries/getCount.ts\": \"import type { ObjectSpecifier, QueryDefinition, QueryParam, QueryResult, VersionBound } from '@osdk/api';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n\n export namespace getCount {\n export interface Signature {\n (query: getCount.Parameters): Promise<getCount.ReturnType>;\n }\n\n export interface Parameters {\n /**\n * (no ontology metadata)\n */\n readonly completed: QueryParam.PrimitiveType<'boolean'>;\n }\n\n export type ReturnType = QueryResult.PrimitiveType<'integer'>;\n }\n\n export interface getCount extends QueryDefinition<getCount.Signature>, VersionBound<$ExpectedClientVersion> {\n __DefinitionMetadata?: {\n apiName: 'foo.bar.getCount';\n rid: 'rid.query.1';\n type: 'query';\n version: '1.1.0';\n isFixedVersion: false;\n parameters: {\n /**\n * (no ontology metadata)\n */\n completed: {\n nullable: false;\n type: 'boolean';\n };\n };\n output: {\n nullable: false;\n type: 'integer';\n };\n signature: getCount.Signature;\n };\n apiName: 'foo.bar.getCount';\n type: 'query';\n version: '1.1.0';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const getCount: getCount = {\n apiName: 'foo.bar.getCount',\n type: 'query',\n version: '1.1.0',\n isFixedVersion: false,\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/queries/returnsTodo.ts\": \"import type { ObjectSpecifier, QueryDefinition, QueryParam, QueryResult, VersionBound } from '@osdk/api';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Todo } from '../objects/Todo.js';\n\n export namespace returnsTodo {\n export interface Signature {\n (query: returnsTodo.Parameters): Promise<returnsTodo.ReturnType>;\n }\n\n export interface Parameters {\n /**\n * description: Random desc so we test jsdoc\n */\n readonly someTodo: QueryParam.ObjectType<Todo>;\n }\n\n export type ReturnType = QueryResult.ObjectType<Todo>;\n }\n\n export interface returnsTodo extends QueryDefinition<returnsTodo.Signature>, VersionBound<$ExpectedClientVersion> {\n __DefinitionMetadata?: {\n apiName: 'foo.bar.returnsTodo';\n rid: 'rid.query.2';\n type: 'query';\n version: '3.2.0';\n isFixedVersion: false;\n parameters: {\n /**\n * description: Random desc so we test jsdoc\n */\n someTodo: {\n description: 'Random desc so we test jsdoc';\n nullable: false;\n object: 'foo.bar.Todo';\n type: 'object';\n __OsdkTargetType?: Todo;\n };\n };\n output: {\n nullable: false;\n object: 'foo.bar.Todo';\n type: 'object';\n __OsdkTargetType?: Todo;\n };\n signature: returnsTodo.Signature;\n };\n apiName: 'foo.bar.returnsTodo';\n type: 'query';\n version: '3.2.0';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const returnsTodo: returnsTodo = {\n apiName: 'foo.bar.returnsTodo',\n type: 'query',\n version: '3.2.0',\n isFixedVersion: false,\n osdkMetadata: $osdkMetadata,\n };\n \",\n }\n `);\n });\n\n it(\"guards against empty objects\", async () => {\n await generateClientSdkVersionTwoPointZero(\n {\n ontology: TodoWireOntology.ontology,\n actionTypes: {},\n interfaceTypes: {},\n objectTypes: {},\n queryTypes: {},\n sharedPropertyTypes: {},\n valueTypes: {},\n },\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n );\n\n expect(helper.getFiles()[`${BASE_PATH}/ontology/objects.ts`]).toEqual(\n \"export {};\\n\",\n );\n });\n\n test.skip(\"runs generator locally\", async () => {\n try {\n await rmdir(`${__dirname}/generated`, { recursive: true });\n } catch (e) {\n }\n await mkdir(`${__dirname}/generated`, { recursive: true });\n await generateClientSdkVersionTwoPointZero(\n TodoWireOntology,\n \"typescript-sdk/0.0.0 osdk-cli/0.0.0\",\n {\n writeFile: async (path, contents) => {\n await writeFile(path, contents, { flag: \"w\" });\n },\n mkdir: async (path, options) => {\n await mkdir(path, options);\n },\n readdir: async (path) => await readdir(path),\n },\n `${__dirname}/generated/`,\n );\n });\n\n describe(\"$ontologyRid\", () => {\n it(\"does not exist when an ontology api name is provided\", async () => {\n const BASE_PATH = \"/foo\";\n\n await expect(\n generateClientSdkVersionTwoPointZero(\n fooBarTodoWireOntology,\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n new Map(),\n ),\n ).resolves.toMatchInlineSnapshot(`undefined`);\n\n // expect(helper.getFiles()[\"/foo/index.ts\"]).not.toContain(\n // \"$ontologyRid\",\n // );\n });\n\n it(\"does exist when an ontology api name is not provided\", async () => {\n const BASE_PATH = \"/foo\";\n\n await expect(\n generateClientSdkVersionTwoPointZero(\n TodoWireOntology,\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n undefined,\n new Map(),\n ),\n ).resolves.toMatchInlineSnapshot(`undefined`);\n\n expect(helper.getFiles()[\"/foo/index.ts\"]).toContain(\n \"$ontologyRid\",\n );\n });\n });\n\n describe(\"query depends on foreign object\", () => {\n it(\"generates the correct code\", async () => {\n await expect(\n generateClientSdkVersionTwoPointZero(\n referencingOntology,\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n new Map([[\"com.example.dep.Task\", \"@com.example.dep/osdk\"]]),\n new Map([[\"com.example.dep.SomeInterface\", \"@com.example.dep/osdk\"]]),\n new Map([[\"com.example.dep.spt\", \"@com.example.dep/osdk\"]]),\n true,\n ),\n ).resolves.toMatchInlineSnapshot(`undefined`);\n\n expect(helper.getFiles()[\"/foo/ontology/queries/getTask.ts\"])\n .toMatchInlineSnapshot(`\n \"import type { ObjectSpecifier, QueryDefinition, QueryParam, QueryResult, VersionBound } from '@osdk/api';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Task as $Imported$com$example$dep$Task } from '@com.example.dep/osdk';\n\n export namespace getTask {\n export interface Signature {\n (query: getTask.Parameters): Promise<getTask.ReturnType>;\n }\n\n export interface Parameters {\n /**\n * (no ontology metadata)\n */\n readonly a: QueryParam.ObjectType<$Imported$com$example$dep$Task>;\n }\n\n export type ReturnType = QueryResult.ObjectType<$Imported$com$example$dep$Task>;\n }\n\n export interface getTask extends QueryDefinition<getTask.Signature>, VersionBound<$ExpectedClientVersion> {\n __DefinitionMetadata?: {\n apiName: 'getTask';\n rid: 'ri.a.b.c';\n type: 'query';\n version: '0';\n isFixedVersion: false;\n parameters: {\n /**\n * (no ontology metadata)\n */\n a: {\n nullable: false;\n object: 'com.example.dep.Task';\n type: 'object';\n __OsdkTargetType?: $Imported$com$example$dep$Task;\n };\n };\n output: {\n nullable: false;\n object: 'com.example.dep.Task';\n type: 'object';\n __OsdkTargetType?: $Imported$com$example$dep$Task;\n };\n signature: getTask.Signature;\n };\n apiName: 'getTask';\n type: 'query';\n version: '0';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const getTask: getTask = {\n apiName: 'getTask',\n type: 'query',\n version: '0',\n isFixedVersion: false,\n osdkMetadata: $osdkMetadata,\n };\n \"\n `);\n });\n });\n\n describe(\"object uses on foreign spt\", () => {\n it(\"stuff\", async () => {\n await expect(\n generateClientSdkVersionTwoPointZero(\n referencingOntology,\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n new Map([[\"com.example.dep.Task\", \"@com.example.dep/osdk\"]]),\n new Map([[\"com.example.dep.SomeInterface\", \"@com.example.dep/osdk\"]]),\n new Map([[\"com.example.dep.spt\", \"@com.example.dep/osdk\"]]),\n true,\n ),\n ).resolves.toMatchInlineSnapshot(`undefined`);\n\n expect(helper.getFiles()[\"/foo/ontology/objects/UsesForeignSpt.ts\"])\n .toMatchInlineSnapshot(`\n \"import type { PropertyDef as $PropertyDef } from '@osdk/api';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import type {\n PropertyKeys as $PropertyKeys,\n ObjectTypeDefinition as $ObjectTypeDefinition,\n ObjectMetadata as $ObjectMetadata,\n } from '@osdk/api';\n import type {\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n OsdkObject as $OsdkObject,\n PropertyValueWireToClient as $PropType,\n SingleLinkAccessor as $SingleLinkAccessor,\n } from '@osdk/api';\n\n export namespace UsesForeignSpt {\n export type PropertyKeys = 'id' | 'body';\n\n export type Links = {};\n\n export interface Props {\n /**\n * (no ontology metadata)\n */\n readonly body: $PropType['string'] | undefined;\n /**\n * (no ontology metadata)\n */\n readonly id: $PropType['integer'];\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<UsesForeignSpt, UsesForeignSpt.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof UsesForeignSpt.Props = keyof UsesForeignSpt.Props,\n > = $Osdk.Instance<UsesForeignSpt, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof UsesForeignSpt.Props = keyof UsesForeignSpt.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface UsesForeignSpt extends $ObjectTypeDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'object';\n apiName: 'UsesForeignSpt';\n __DefinitionMetadata?: {\n objectSet: UsesForeignSpt.ObjectSet;\n props: UsesForeignSpt.Props;\n linksType: UsesForeignSpt.Links;\n strictProps: UsesForeignSpt.StrictProps;\n apiName: 'UsesForeignSpt';\n description: undefined;\n displayName: 'Uses Foreign Spt';\n icon: {\n type: 'blueprint';\n color: 'blue';\n name: 'document';\n };\n implements: [];\n interfaceMap: {};\n inverseInterfaceMap: {};\n links: {};\n pluralDisplayName: 'Uses Foreign Spts';\n primaryKeyApiName: 'id';\n primaryKeyType: 'integer';\n properties: {\n /**\n * (no ontology metadata)\n */\n body: $PropertyDef<'string', 'nullable', 'single'>;\n /**\n * (no ontology metadata)\n */\n id: $PropertyDef<'integer', 'non-nullable', 'single'>;\n };\n rid: 'theRid';\n status: 'ACTIVE';\n titleProperty: 'id';\n type: 'object';\n visibility: undefined;\n };\n }\n\n export const UsesForeignSpt = {\n type: 'object',\n apiName: 'UsesForeignSpt',\n osdkMetadata: $osdkMetadata,\n internalDoNotUseMetadata: {\n rid: 'theRid',\n },\n } satisfies UsesForeignSpt & { internalDoNotUseMetadata: { rid: string } } as UsesForeignSpt;\n \"\n `);\n });\n });\n\n describe(\"action depends on foreign object\", () => {\n it(\"can generate the action\", async () => {\n await expect(\n generateClientSdkVersionTwoPointZero(\n referencingOntology,\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n new Map([[\"com.example.dep.Task\", \"@com.example.dep/osdk\"]]),\n new Map([[\"com.example.dep.SomeInterface\", \"@com.example.dep/osdk\"]]),\n new Map([[\"com.example.dep.spt\", \"@com.example.dep/osdk\"]]),\n true,\n ),\n ).resolves.toMatchInlineSnapshot(`undefined`);\n\n expect(helper.getFiles()[\"/foo/ontology/actions/setTaskBody.ts\"])\n .toMatchInlineSnapshot(`\n \"import type {\n ActionDefinition,\n ActionMetadata,\n ActionParam,\n ActionReturnTypeForOptions,\n ApplyActionOptions,\n ApplyBatchActionOptions,\n } from '@osdk/api';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Task as $Imported$com$example$dep$Task } from '@com.example.dep/osdk';\n\n export namespace setTaskBody {\n // Represents the definition of the parameters for the action\n export type ParamsDefinition = {\n body: {\n description: undefined;\n multiplicity: false;\n nullable: false;\n type: 'string';\n };\n task: {\n description: undefined;\n multiplicity: false;\n nullable: false;\n type: ActionMetadata.DataType.Object<$Imported$com$example$dep$Task>;\n };\n };\n\n export interface Params {\n readonly body: ActionParam.PrimitiveType<'string'>;\n\n readonly task: ActionParam.ObjectType<$Imported$com$example$dep$Task>;\n }\n\n // Represents a fqn of the action\n export interface Signatures {\n applyAction<OP extends ApplyActionOptions>(\n args: setTaskBody.Params,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n\n batchApplyAction<OP extends ApplyBatchActionOptions>(\n args: ReadonlyArray<setTaskBody.Params>,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n }\n }\n\n /**\n * @param {ActionParam.PrimitiveType<\"string\">} body\n * @param {ActionParam.ObjectType<$Imported$com$example$dep$Task>} task\n */\n export interface setTaskBody extends ActionDefinition<setTaskBody.Signatures> {\n __DefinitionMetadata?: {\n apiName: 'setTaskBody';\n modifiedEntities: {\n 'com.example.dep.Task': {\n created: false;\n modified: true;\n };\n };\n parameters: setTaskBody.ParamsDefinition;\n rid: 'ri.a.b.c.d';\n status: 'ACTIVE';\n type: 'action';\n\n signatures: setTaskBody.Signatures;\n };\n apiName: 'setTaskBody';\n type: 'action';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const setTaskBody: setTaskBody = {\n apiName: 'setTaskBody',\n type: 'action',\n osdkMetadata: $osdkMetadata,\n };\n \"\n `);\n });\n });\n\n describe(\"queries with versions\", () => {\n it(\"can generate properly when queries have versions and optionally have fixed versions\", async () => {\n await generateClientSdkVersionTwoPointZero(\n {\n ontology: TodoWireOntology.ontology,\n actionTypes: {},\n interfaceTypes: {},\n objectTypes: TodoWireOntology.objectTypes,\n queryTypes: {\n \"getCount:1.1.0\": {\n ...TodoWireOntology.queryTypes.getCount,\n },\n \"returnsTodo:3.2.0\": {\n ...TodoWireOntology.queryTypes.returnsTodo,\n version: \"0\",\n },\n },\n sharedPropertyTypes: {},\n valueTypes: {},\n },\n \"typescript-sdk/0.0.0 osdk-cli/0.0.0\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n new Map(),\n new Map(),\n new Map(),\n false,\n [\"getCount\"],\n );\n\n expect(\n tweakedFilesForSnapshotConsistency(helper.getFiles()),\n ).toMatchInlineSnapshot(`\n {\n \"/foo/OntologyMetadata.ts\": \"export type $ExpectedClientVersion = 'PLACEHOLDER';\n export const $osdkMetadata = { extraUserAgent: 'typescript-sdk/0.0.0 osdk-cli/0.0.0' };\n\n export const $ontologyRid = 'ridHere';\n \",\n \"/foo/index.ts\": \"export {} from './ontology/actions.js';\n export * as $Actions from './ontology/actions.js';\n export {} from './ontology/interfaces.js';\n export * as $Interfaces from './ontology/interfaces.js';\n export { Person, Todo } from './ontology/objects.js';\n export * as $Objects from './ontology/objects.js';\n export { getCount, returnsTodo } from './ontology/queries.js';\n export * as $Queries from './ontology/queries.js';\n export { $osdkMetadata } from './OntologyMetadata.js';\n export { $ontologyRid } from './OntologyMetadata.js';\n \",\n \"/foo/ontology/actions.ts\": \"export {};\n \",\n \"/foo/ontology/interfaces.ts\": \"export {};\n \",\n \"/foo/ontology/objects.ts\": \"export { Person } from './objects/Person.js';\n export { Todo } from './objects/Todo.js';\n \",\n \"/foo/ontology/objects/Person.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import type { Todo } from './Todo.js';\n import type {\n PropertyKeys as $PropertyKeys,\n ObjectTypeDefinition as $ObjectTypeDefinition,\n ObjectMetadata as $ObjectMetadata,\n } from '@osdk/client';\n import type {\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n OsdkObject as $OsdkObject,\n PropertyValueWireToClient as $PropType,\n SingleLinkAccessor as $SingleLinkAccessor,\n } from '@osdk/client';\n\n export namespace Person {\n export type PropertyKeys = 'email';\n\n export interface Links {\n readonly Todos: Todo.ObjectSet;\n }\n\n export interface Props {\n /**\n * (no ontology metadata)\n */\n readonly email: $PropType['string'];\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<Person, Person.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Person.Props = keyof Person.Props,\n > = $Osdk.Instance<Person, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Person.Props = keyof Person.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface Person extends $ObjectTypeDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'object';\n apiName: 'Person';\n __DefinitionMetadata?: {\n objectSet: Person.ObjectSet;\n props: Person.Props;\n linksType: Person.Links;\n strictProps: Person.StrictProps;\n apiName: 'Person';\n description: 'A person';\n displayName: 'Person';\n icon: {\n type: 'blueprint';\n name: 'document';\n color: 'blue';\n };\n implements: [];\n interfaceMap: {};\n inverseInterfaceMap: {};\n links: {\n Todos: $ObjectMetadata.Link<Todo, true>;\n };\n pluralDisplayName: 'Persons';\n primaryKeyApiName: 'email';\n primaryKeyType: 'string';\n properties: {\n /**\n * (no ontology metadata)\n */\n email: $PropertyDef<'string', 'non-nullable', 'single'>;\n };\n rid: 'ridForPerson';\n status: 'ACTIVE';\n titleProperty: 'email';\n type: 'object';\n visibility: undefined;\n };\n }\n\n export const Person = {\n type: 'object',\n apiName: 'Person',\n osdkMetadata: $osdkMetadata,\n internalDoNotUseMetadata: {\n rid: 'ridForPerson',\n },\n } satisfies Person & { internalDoNotUseMetadata: { rid: string } } as Person;\n \",\n \"/foo/ontology/objects/Todo.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import type { Person } from './Person.js';\n import type {\n PropertyKeys as $PropertyKeys,\n ObjectTypeDefinition as $ObjectTypeDefinition,\n ObjectMetadata as $ObjectMetadata,\n } from '@osdk/client';\n import type {\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n OsdkObject as $OsdkObject,\n PropertyValueWireToClient as $PropType,\n SingleLinkAccessor as $SingleLinkAccessor,\n } from '@osdk/client';\n\n export namespace Todo {\n export type PropertyKeys = 'id' | 'body' | 'complete' | 'array';\n\n export interface Links {\n readonly Assignee: $SingleLinkAccessor<Person>;\n }\n\n export interface Props {\n /**\n * (no ontology metadata)\n */\n readonly array: $PropType['string'][] | undefined;\n /**\n * display name: 'Body',\n *\n * description: The text of the todo\n */\n readonly body: $PropType['string'] | undefined;\n /**\n * (no ontology metadata)\n */\n readonly complete: $PropType['boolean'] | undefined;\n /**\n * (no ontology metadata)\n */\n readonly id: $PropType['integer'];\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<Todo, Todo.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Todo.Props = keyof Todo.Props,\n > = $Osdk.Instance<Todo, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Todo.Props = keyof Todo.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface Todo extends $ObjectTypeDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'object';\n apiName: 'Todo';\n __DefinitionMetadata?: {\n objectSet: Todo.ObjectSet;\n props: Todo.Props;\n linksType: Todo.Links;\n strictProps: Todo.StrictProps;\n apiName: 'Todo';\n description: 'Its a todo item.';\n displayName: 'AwesomeTodoDisplayname';\n icon: {\n type: 'blueprint';\n name: 'document';\n color: 'blue';\n };\n implements: ['SomeInterface'];\n interfaceMap: {\n SomeInterface: {\n SomeProperty: 'body';\n };\n };\n inverseInterfaceMap: {\n SomeInterface: {\n body: 'SomeProperty';\n };\n };\n links: {\n Assignee: $ObjectMetadata.Link<Person, false>;\n };\n pluralDisplayName: 'AwesomeTodoDisplayNames';\n primaryKeyApiName: 'id';\n primaryKeyType: 'integer';\n properties: {\n /**\n * (no ontology metadata)\n */\n array: $PropertyDef<'string', 'nullable', 'array'>;\n /**\n * display name: 'Body',\n *\n * description: The text of the todo\n */\n body: $PropertyDef<'string', 'nullable', 'single'>;\n /**\n * (no ontology metadata)\n */\n complete: $PropertyDef<'boolean', 'nullable', 'single'>;\n /**\n * (no ontology metadata)\n */\n id: $PropertyDef<'integer', 'non-nullable', 'single'>;\n };\n rid: 'ridForTodo';\n status: 'ACTIVE';\n titleProperty: 'body';\n type: 'object';\n visibility: undefined;\n };\n }\n\n export const Todo = {\n type: 'object',\n apiName: 'Todo',\n osdkMetadata: $osdkMetadata,\n internalDoNotUseMetadata: {\n rid: 'ridForTodo',\n },\n } satisfies Todo & { internalDoNotUseMetadata: { rid: string } } as Todo;\n \",\n \"/foo/ontology/queries.ts\": \"export { getCount } from './queries/getCount.js';\n export { returnsTodo } from './queries/returnsTodo.js';\n \",\n \"/foo/ontology/queries/getCount.ts\": \"import type { ObjectSpecifier, QueryDefinition, QueryParam, QueryResult, VersionBound } from '@osdk/client';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n\n export namespace getCount {\n export interface Signature {\n (query: getCount.Parameters): Promise<getCount.ReturnType>;\n }\n\n export interface Parameters {\n /**\n * (no ontology metadata)\n */\n readonly completed: QueryParam.PrimitiveType<'boolean'>;\n }\n\n export type ReturnType = QueryResult.PrimitiveType<'integer'>;\n }\n\n export interface getCount extends QueryDefinition<getCount.Signature>, VersionBound<$ExpectedClientVersion> {\n __DefinitionMetadata?: {\n apiName: 'getCount';\n rid: 'rid.query.1';\n type: 'query';\n version: '1.1.0';\n isFixedVersion: true;\n parameters: {\n /**\n * (no ontology metadata)\n */\n completed: {\n nullable: false;\n type: 'boolean';\n };\n };\n output: {\n nullable: false;\n type: 'integer';\n };\n signature: getCount.Signature;\n };\n apiName: 'getCount';\n type: 'query';\n version: '1.1.0';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const getCount: getCount = {\n apiName: 'getCount',\n type: 'query',\n version: '1.1.0',\n isFixedVersion: true,\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/queries/returnsTodo.ts\": \"import type { ObjectSpecifier, QueryDefinition, QueryParam, QueryResult, VersionBound } from '@osdk/client';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Todo } from '../objects/Todo.js';\n\n export namespace returnsTodo {\n export interface Signature {\n (query: returnsTodo.Parameters): Promise<returnsTodo.ReturnType>;\n }\n\n export interface Parameters {\n /**\n * description: Random desc so we test jsdoc\n */\n readonly someTodo: QueryParam.ObjectType<Todo>;\n }\n\n export type ReturnType = QueryResult.ObjectType<Todo>;\n }\n\n export interface returnsTodo extends QueryDefinition<returnsTodo.Signature>, VersionBound<$ExpectedClientVersion> {\n __DefinitionMetadata?: {\n apiName: 'returnsTodo';\n rid: 'rid.query.2';\n type: 'query';\n version: '0';\n isFixedVersion: false;\n parameters: {\n /**\n * description: Random desc so we test jsdoc\n */\n someTodo: {\n description: 'Random desc so we test jsdoc';\n nullable: false;\n object: 'Todo';\n type: 'object';\n __OsdkTargetType?: Todo;\n };\n };\n output: {\n nullable: false;\n object: 'Todo';\n type: 'object';\n __OsdkTargetType?: Todo;\n };\n signature: returnsTodo.Signature;\n };\n apiName: 'returnsTodo';\n type: 'query';\n version: '0';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const returnsTodo: returnsTodo = {\n apiName: 'returnsTodo',\n type: 'query',\n version: '0',\n isFixedVersion: false,\n osdkMetadata: $osdkMetadata,\n };\n \",\n }\n `);\n });\n });\n\n it(\"can generate an sdk package that is entirely a library\", async () => {\n const mockConsola = vi.spyOn(consola, \"info\");\n\n await expect(\n generateClientSdkVersionTwoPointZero(\n referencedOntology,\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n ),\n ).resolves.toMatchInlineSnapshot(`undefined`);\n expect(mockConsola).toHaveBeenCalledWith(\n `{\"type\":\"futureUnknownType\"} is not a supported propertyType`,\n );\n\n expect(tweakedFilesForSnapshotConsistency(helper.getFiles()))\n .toMatchInlineSnapshot(`\n {\n \"/foo/OntologyMetadata.ts\": \"export type $ExpectedClientVersion = 'PLACEHOLDER';\n export const $osdkMetadata = { extraUserAgent: '' };\n\n export const $ontologyRid = 'ri.ontology.main.ontology.dep';\n\n export const $branch = 'someRidHere';\n \",\n \"/foo/index.ts\": \"export {} from './ontology/actions.js';\n export * as $Actions from './ontology/actions.js';\n export { SomeInterface } from './ontology/interfaces.js';\n export * as $Interfaces from './ontology/interfaces.js';\n export { Task } from './ontology/objects.js';\n export * as $Objects from './ontology/objects.js';\n export {} from './ontology/queries.js';\n export * as $Queries from './ontology/queries.js';\n export { $osdkMetadata } from './OntologyMetadata.js';\n export { $ontologyRid } from './OntologyMetadata.js';\n \",\n \"/foo/ontology/actions.ts\": \"export {};\n \",\n \"/foo/ontology/interfaces.ts\": \"export { SomeInterface } from './interfaces/SomeInterface.js';\n \",\n \"/foo/ontology/interfaces/SomeInterface.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n\n import type {\n InterfaceDefinition as $InterfaceDefinition,\n InterfaceMetadata as $InterfaceMetadata,\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n PropertyValueWireToClient as $PropType,\n } from '@osdk/client';\n\n export type OsdkObjectLinks$SomeInterface = {};\n\n export namespace SomeInterface {\n export type PropertyKeys = 'spt' | 'spt2';\n\n export interface Props {\n /**\n * display name: 'Some Property'\n */\n readonly spt: $PropType['string'] | undefined;\n /**\n * display name: 'Some Property 2'\n */\n readonly spt2: $PropType['string'] | undefined;\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<SomeInterface, SomeInterface.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof SomeInterface.Props = keyof SomeInterface.Props,\n > = $Osdk.Instance<SomeInterface, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof SomeInterface.Props = keyof SomeInterface.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface SomeInterface extends $InterfaceDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'interface';\n apiName: 'com.example.dep.SomeInterface';\n __DefinitionMetadata?: {\n objectSet: SomeInterface.ObjectSet;\n props: SomeInterface.Props;\n linksType: OsdkObjectLinks$SomeInterface;\n strictProps: SomeInterface.StrictProps;\n apiName: 'com.example.dep.SomeInterface';\n description: undefined;\n displayName: 'Sum Interface';\n implementedBy: [];\n implements: [];\n links: {};\n properties: {\n /**\n * display name: 'Some Property'\n */\n spt: $PropertyDef<'string', 'nullable', 'single'>;\n /**\n * display name: 'Some Property 2'\n */\n spt2: $PropertyDef<'string', 'nullable', 'single'>;\n };\n rid: 'idk2';\n type: 'interface';\n };\n }\n\n export const SomeInterface: SomeInterface = {\n type: 'interface',\n apiName: 'com.example.dep.SomeInterface',\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/objects.ts\": \"export { Task } from './objects/Task.js';\n \",\n \"/foo/ontology/objects/Task.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import type {\n PropertyKeys as $PropertyKeys,\n ObjectTypeDefinition as $ObjectTypeDefinition,\n ObjectMetadata as $ObjectMetadata,\n } from '@osdk/client';\n import type {\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n OsdkObject as $OsdkObject,\n PropertyValueWireToClient as $PropType,\n SingleLinkAccessor as $SingleLinkAccessor,\n } from '@osdk/client';\n\n export namespace Task {\n export type PropertyKeys = 'taskId' | 'body';\n\n export type Links = {};\n\n export interface Props {\n /**\n * (no ontology metadata)\n */\n readonly body: $PropType['string'] | undefined;\n /**\n * (no ontology metadata)\n */\n readonly taskId: $PropType['string'];\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<Task, Task.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Task.Props = keyof Task.Props,\n > = $Osdk.Instance<Task, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Task.Props = keyof Task.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface Task extends $ObjectTypeDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'object';\n apiName: 'com.example.dep.Task';\n __DefinitionMetadata?: {\n objectSet: Task.ObjectSet;\n props: Task.Props;\n linksType: Task.Links;\n strictProps: Task.StrictProps;\n apiName: 'com.example.dep.Task';\n description: undefined;\n displayName: 'Task';\n icon: {\n type: 'blueprint';\n color: 'blue';\n name: 'document';\n };\n implements: [];\n interfaceMap: {};\n inverseInterfaceMap: {};\n links: {};\n pluralDisplayName: 'Tasks';\n primaryKeyApiName: 'taskId';\n primaryKeyType: 'string';\n properties: {\n /**\n * (no ontology metadata)\n */\n body: $PropertyDef<'string', 'nullable', 'single'>;\n /**\n * (no ontology metadata)\n */\n taskId: $PropertyDef<'string', 'non-nullable', 'single'>;\n };\n rid: 'ridForTask';\n status: 'ACTIVE';\n titleProperty: 'taskId';\n type: 'object';\n visibility: undefined;\n };\n }\n\n export const Task = {\n type: 'object',\n apiName: 'com.example.dep.Task',\n osdkMetadata: $osdkMetadata,\n internalDoNotUseMetadata: {\n rid: 'ridForTask',\n },\n } satisfies Task & { internalDoNotUseMetadata: { rid: string } } as Task;\n \",\n \"/foo/ontology/queries.ts\": \"export {};\n \",\n }\n `);\n });\n});\n\nfunction tweakedFilesForSnapshotConsistency(\n files: {\n [k: string]: string;\n },\n) {\n const ret = { ...files };\n\n ret[\"/foo/OntologyMetadata.ts\"] = ret[\"/foo/OntologyMetadata.ts\"].replace(\n /export type \\$ExpectedClientVersion = '.*?';/,\n `export type $ExpectedClientVersion = 'PLACEHOLDER';`,\n );\n\n return ret;\n}\n"],"mappings":"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CAAC;MACvD,CAAC,GAAGP,SAAS,2BAA2B,GAAGzG,MAAM,CAACgH,QAAQ,CAAC;IAC7D,CAAC,CAAC;IAEF,MAAMC,WAAW,GAAG7G,WAAW,CAACsG,MAAM,CAACI,QAAQ,CAAC,CAAC,EAAEL,SAAS,CAAC;IAC7D,KAAK,MAAMS,CAAC,IAAID,WAAW,EAAE;MAC3BE,OAAO,CAACC,KAAK,CACX,GAAGF,CAAC,CAACG,IAAI,EAAEC,QAAQ,IAAIJ,CAAC,CAACG,IAAI,EAAEE,aAAa,CAAC,CAAC,EAAE,EAChDL,CAAC,CAACM,WACJ,CAAC;IACH;;IAEA;IACA,MAAMC,MAAM,GAAGR,WAAW,CAACS,MAAM,CAACR,CAAC,IAAIA,CAAC,CAACS,IAAI,KAAK,IAAI,CAAC;IACvD3H,MAAM,CAACyH,MAAM,CAAC,CAACG,YAAY,CAAC,CAAC,CAAC;IAE9B5H,MAAM,CACJ6H,kCAAkC,CAACnB,MAAM,CAACI,QAAQ,CAAC,CAAC,CACtD,CAAC,CAACgB,qBAAqB,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;EACJ,CACF,CAAC;EAED5H,IAAI,CAAC,sDAAsD,EAAE,YAAY;IACvEwG,MAAM,CAACE,YAAY,CAAClH,OAAO,GAAGS,EAAE,CAAC4H,EAAE,CAAC,YAAyB,CAAC,MAAM,CAAC,CAAC;IAEtE,MAAM/H,MAAM,CAAC,YAAY;MACvB,MAAMA,MAAM,CAACO,oCAAoC,CAC/CD,gBAAgB,EAChB,qCAAqC,EACrCoG,MAAM,CAACE,YAAY,EACnBH,SACF,CAAC,CAAC,CAACuB,OAAO,CAACC,OAAO,CAAC,CAAC;IACtB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFhI,EAAE,CAAC,2EAA2E,EAAE,YAAY;IAC1F,MAAMD,MAAM,CACVO,oCAAoC,CAClC;MAAE,GAAGD;IAAiB,CAAC,EACvB,EAAE,EACFoG,MAAM,CAACE,YAAY,EACnBH,SAAS,EACT,QAAQ,EACRyB,SAAS,EACTA,SAAS,EACTA,SAAS,EACT,IACF,CACF,CAAC;;IAED;IACA;IACA;IACA;EACF,CAAC,CAAC;EAEFjI,EAAE,CAAC,4EAA4E,EAAE,YAAY;IAC3F,MAAMD,MAAM,CACVO,oCAAoC,CAClC+F,sBAAsB,EACtB,EAAE,EACFI,MAAM,CAACE,YAAY,EACnBH,SAAS,EACT,QAAQ,EACRyB,SAAS,EACTA,SAAS,EACTA,SAAS,EACT,IACF,CACF,CAAC,CAACC,QAAQ,CAACL,qBAAqB,CAAC,WAAW,CAAC;IAE7C9H,MAAM,CAAC0G,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAC/DsB,aAAa,CAAC,CAAC;IAElBpI,MAAM,CAAC0G,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CACvDuB,GAAG,CAACD,aAAa,CAAC,CAAC;IAEtBpI,MAAM,CAAC6H,kCAAkC,CAACnB,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC1DgB,qBAAqB,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;EACN,CAAC,CAAC;EAEF7H,EAAE,CAAC,8BAA8B,EAAE,YAAY;IAC7C,MAAMM,oCAAoC,CACxC;MACEkC,QAAQ,EAAEnC,gBAAgB,CAACmC,QAAQ;MACnCY,WAAW,EAAE,CAAC,CAAC;MACfE,cAAc,EAAE,CAAC,CAAC;MAClBW,WAAW,EAAE,CAAC,CAAC;MACflB,UAAU,EAAE,CAAC,CAAC;MACdJ,mBAAmB,EAAE,CAAC,CAAC;MACvBoD,UAAU,EAAE,CAAC;IACf,CAAC,EACD,EAAE,EACFU,MAAM,CAACE,YAAY,EACnBH,SACF,CAAC;IAEDzG,MAAM,CAAC0G,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,GAAGL,SAAS,sBAAsB,CAAC,CAAC,CAAC6B,OAAO,CACnE,cACF,CAAC;EACH,CAAC,CAAC;EAEFpI,IAAI,CAACqI,IAAI,CAAC,wBAAwB,EAAE,YAAY;IAC9C,IAAI;MACF,MAAM5I,KAAK,CAAC,GAAG6I,SAAS,YAAY,EAAE;QAAEC,SAAS,EAAE;MAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,OAAOC,CAAC,EAAE,CACZ;IACA,MAAMjJ,KAAK,CAAC,GAAG+I,SAAS,YAAY,EAAE;MAAEC,SAAS,EAAE;IAAK,CAAC,CAA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AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC;IACN,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/H,QAAQ,CAAC,kCAAkC,EAAE,MAAM;IACjDE,EAAE,CAAC,yBAAyB,EAAE,YAAY;MACxC,MAAMD,MAAM,CACVO,oCAAoC,CAClC0F,mBAAmB,EACnB,EAAE,EACFS,MAAM,CAACE,YAAY,EACnBH,SAAS,EACT,QAAQ,EACR,IAAIsC,GAAG,CAAC,CAAC,CAAC,sBAAsB,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAC5D,IAAIA,GAAG,CAAC,CAAC,CAAC,+BAA+B,EAAE,uBAAuB,CAAC,CAAC,CAAC,EACrE,IAAIA,GAAG,CAAC,CAAC,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAC3D,IACF,CACF,CAAC,CAACZ,QAAQ,CAACL,qBAAqB,CAAC,WAAW,CAAC;MAE7C9H,MAAM,CAAC0G,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAC9DgB,qBAAqB,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC;IACN,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/H,QAAQ,CAAC,uBAAuB,EAAE,MAAM;IACtCE,EAAE,CAAC,qFAAqF,EAAE,YAAY;MACpG,MAAMM,oCAAoC,CACxC;QACEkC,QAAQ,EAAEnC,gBAAgB,CAACmC,QAAQ;QACnCY,WAAW,EAAE,CAAC,CAAC;QACfE,cAAc,EAAE,CAAC,CAAC;QAClBW,WAAW,EAAE5D,gBAAgB,CAAC4D,WAAW;QACzClB,UAAU,EAAE;UACV,gBAAgB,EAAE;YAChB,GAAG1C,gBAAgB,CAAC0C,UAAU,CAACiG;UACjC,CAAC;UACD,mBAAmB,EAAE;YACnB,GAAG3I,gBAAgB,CAAC0C,UAAU,CAACkG,WAAW;YAC1C7C,OAAO,EAAE;UACX;QACF,CAAC;QACDzD,mBAAmB,EAAE,CAAC,CAAC;QACvBoD,UAAU,EAAE,CAAC;MACf,CAAC,EACD,qCAAqC,EACrCU,MAAM,CAACE,YAAY,EACnBH,SAAS,EACT,QAAQ,EACR,IAAIsC,GAAG,CAAC,CAAC,EACT,IAAIA,GAAG,CAAC,CAAC,EACT,IAAIA,GAAG,CAAC,CAAC,EACT,KAAK,EACL,CAAC,UAAU,CACb,CAAC;MAED/I,MAAM,CACJ6H,kCAAkC,CAACnB,MAAM,CAACI,QAAQ,CAAC,CAAC,CACtD,CAAC,CAACgB,qBAAqB,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF7H,EAAE,CAAC,wDAAwD,EAAE,YAAY;IACvE,MAAMkJ,WAAW,GAAGhJ,EAAE,CAACiJ,KAAK,CAAC5J,OAAO,EAAE,MAAM,CAAC;IAE7C,MAAMQ,MAAM,CACVO,oCAAoC,CAClCyE,kBAAkB,EAClB,EAAE,EACF0B,MAAM,CAACE,YAAY,EACnBH,SAAS,EACT,QACF,CACF,CAAC,CAAC0B,QAAQ,CAACL,qBAAqB,CAAC,WAAW,CAAC;IAC7C9H,MAAM,CAACmJ,WAAW,CAAC,CAACE,oBAAoB,CACtC,8DACF,CAAC;IAEDrJ,MAAM,CAAC6H,kCAAkC,CAACnB,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC1DgB,qBAAqB,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;EACN,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,SAASD,kCAAkCA,CACzChB,KAEC,EACD;EACA,MAAMyC,GAAG,GAAG;IAAE,GAAGzC;EAAM,CAAC;EAExByC,GAAG,CAAC,0BAA0B,CAAC,GAAGA,GAAG,CAAC,0BAA0B,CAAC,CAACC,OAAO,CACvE,8CAA8C,EAC9C,qDACF,CAAC;EAED,OAAOD,GAAG;AACZ","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"generateClientSdkVersionTwoPointZero.test.js","names":["consola","mkdir","readdir","rmdir","writeFile","immer","beforeEach","describe","expect","it","test","vi","compileThis","createMockMinimalFiles","TodoWireOntology","generateClientSdkVersionTwoPointZero","changeValue","draft","key","oldValue","newValue","changeKey","oldInterfaceName","newInterfaceName","changeArrayEntry","oldNew","newName","idx","findIndex","a","changeEachEntry","wireData","data","changer","changeSelf","oldName","Object","entries","k","keys","changeDataType","dataType","oldObjectName","newObjectName","type","subType","objectTypeApiName","objectApiName","changeNames","ontology","newNames","produce","sharedPropertyTypes","spts","oldSptName","newSptName","queryTypes","queries","oldActionName","newActionName","apiName","actionTypes","actions","interfaceTypes","interfaces","ifaceType","oldIfaceName","newIfaceName","extendsInterfaces","allExtendsInterfaces","map","v","allProperties","property","objectTypes","objectType","implementsInterfaces","implementsInterfaces2","objects","queryType","output","values","parameters","linkTypes","l","action","op","operations","referencedOntology","sharedPropertyTypeMapping","displayName","pluralDisplayName","icon","color","name","titleProperty","rid","properties","required","propertiesV2","implementedByObjectTypes","links","allLinks","allPropertiesV2","valueTypes","referencingOntology","primaryKey","status","getTask","version","fooBarTodoWireOntology","markTodoCompleted","deleteTodos","BASE_PATH","helper","timeout","minimalFiles","files","getFiles","toMatchObject","anything","diagnostics","q","console","error","file","fileName","getLineStarts","messageText","errors","filter","code","toHaveLength","tweakedFilesForSnapshotConsistency","toMatchInlineSnapshot","fn","rejects","toThrow","undefined","resolves","toBeUndefined","not","toEqual","skip","__dirname","recursive","e","path","contents","flag","options","Map","toContain","getCount","returnsTodo","mockConsola","spyOn","toHaveBeenCalledWith","ret","replace"],"sources":["generateClientSdkVersionTwoPointZero.test.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 {\n ActionParameterType,\n ObjectPropertyType,\n QueryDataType,\n} from \"@osdk/foundry.ontologies\";\nimport { consola } from \"consola\";\nimport { mkdir, readdir, rmdir, writeFile } from \"fs/promises\";\nimport * as immer from \"immer\";\nimport { beforeEach, describe, expect, it, test, vi } from \"vitest\";\nimport { compileThis } from \"../util/test/compileThis.js\";\nimport { createMockMinimalFiles } from \"../util/test/createMockMinimalFiles.js\";\nimport { TodoWireOntology } from \"../util/test/TodoWireOntology.js\";\nimport type { WireOntologyDefinition } from \"../WireOntologyDefinition.js\";\nimport { generateClientSdkVersionTwoPointZero } from \"./generateClientSdkVersionTwoPointZero.js\";\n\nfunction changeValue<T extends Record<K, any>, K extends keyof immer.Draft<T>>(\n draft: immer.Draft<T>,\n key: K,\n oldValue: immer.Draft<T>[K],\n newValue: immer.Draft<T>[K],\n) {\n if (draft[key] === oldValue) {\n draft[key] = newValue;\n }\n}\n\nfunction changeKey<\n T extends Record<K, any>,\n K extends keyof immer.Draft<T>,\n>(\n draft: immer.Draft<T>,\n oldInterfaceName: K,\n newInterfaceName: K,\n) {\n if (draft[oldInterfaceName]) {\n draft[newInterfaceName] = draft[oldInterfaceName];\n delete draft[oldInterfaceName];\n }\n}\n\nfunction changeArrayEntry(\n draft: immer.Draft<string[]>,\n oldNew: string,\n newName: string,\n) {\n const idx = draft.findIndex(a => a === oldNew);\n if (idx >= 0) {\n draft[idx] = newName;\n }\n}\n\nfunction changeEachEntry<T extends object>(\n wireData: immer.WritableDraft<Record<string, T>>,\n data: Record<string, string>,\n changer: (\n input: immer.Draft<T>,\n oldApiName: string,\n newApiName: string,\n ) => void,\n changeSelf?: boolean,\n) {\n for (const [oldName, newName] of Object.entries(data)) {\n for (const k of Object.keys(wireData)) {\n changer(\n wireData[k],\n oldName,\n newName,\n );\n\n if (changeSelf && k === oldName) {\n wireData[newName] = wireData[k];\n delete wireData[k];\n }\n }\n }\n}\n\nfunction changeDataType(\n dataType: immer.Draft<QueryDataType | ActionParameterType>,\n oldObjectName: string,\n newObjectName: string,\n) {\n if (dataType.type === \"array\") {\n changeDataType(dataType.subType, oldObjectName, newObjectName);\n } else if (dataType.type === \"object\" || dataType.type === \"objectSet\") {\n if (dataType.objectTypeApiName === oldObjectName) {\n dataType.objectTypeApiName = newObjectName;\n }\n if (dataType.objectApiName === oldObjectName) {\n dataType.objectApiName = newObjectName;\n }\n }\n}\n\nfunction changeNames(ontology: WireOntologyDefinition, newNames: {\n objects: Record<string, string>;\n spts: Record<string, string>;\n interfaces: Record<string, string>;\n actions: Record<string, string>;\n queries: Record<string, string>;\n}) {\n return immer.produce(ontology, (draft) => {\n // Handle spt renames\n changeEachEntry(\n draft.sharedPropertyTypes,\n newNames.spts,\n (draft, oldSptName, newSptName) => {\n changeValue(draft, \"apiName\", oldSptName, newSptName);\n },\n true,\n );\n\n // Handle query renames\n changeEachEntry(\n draft.queryTypes,\n newNames.queries,\n (draft, oldActionName, newActionName) => {\n if (draft.apiName === oldActionName) {\n draft.apiName = newActionName;\n }\n },\n true,\n );\n\n // Handle action renames\n changeEachEntry(\n draft.actionTypes,\n newNames.actions,\n (draft, oldActionName, newActionName) => {\n changeValue(draft, \"apiName\", oldActionName, newActionName);\n },\n true,\n );\n\n // Handle interface renames\n changeEachEntry(\n draft.interfaceTypes,\n newNames.interfaces,\n (ifaceType, oldIfaceName, newIfaceName) => {\n changeValue(ifaceType, \"apiName\", oldIfaceName, newIfaceName);\n ifaceType.extendsInterfaces = ifaceType.allExtendsInterfaces.map(\n v => v === oldIfaceName ? newIfaceName : v,\n );\n changeEachEntry(\n ifaceType.allProperties,\n newNames.spts,\n (property, oldSptName, newSptName) => {\n changeValue(property, \"apiName\", oldSptName, newSptName);\n },\n true,\n );\n },\n true,\n );\n\n changeEachEntry(\n draft.objectTypes,\n newNames.interfaces,\n (objectType, oldIfaceName, newIfaceName) => {\n changeArrayEntry(\n objectType.implementsInterfaces,\n oldIfaceName,\n newIfaceName,\n );\n\n changeKey(\n objectType.implementsInterfaces2,\n oldIfaceName,\n newIfaceName,\n );\n },\n );\n\n // Handle object renames\n changeEachEntry(\n draft.queryTypes,\n newNames.objects,\n (queryType, oldObjectName, newObjectName) => {\n changeDataType(queryType.output, oldObjectName, newObjectName);\n\n for (const { dataType } of Object.values(queryType.parameters)) {\n changeDataType(dataType, oldObjectName, newObjectName);\n }\n },\n );\n\n changeEachEntry(\n draft.objectTypes,\n newNames.objects,\n ({ objectType, linkTypes }, oldObjectName, newObjectName) => {\n changeValue(objectType, \"apiName\", oldObjectName, newObjectName);\n\n for (const l of linkTypes) {\n changeValue(l, \"objectTypeApiName\", oldObjectName, newObjectName);\n }\n },\n true,\n );\n\n changeEachEntry(\n draft.actionTypes,\n newNames.objects,\n (action, oldObjectName, newObjectName) => {\n for (const op of action.operations) {\n switch (op.type) {\n case \"deleteObject\":\n case \"modifyObject\":\n case \"createObject\":\n if (op.objectTypeApiName === oldObjectName) {\n op.objectTypeApiName = newObjectName;\n }\n }\n }\n\n for (const { dataType } of Object.values(action.parameters)) {\n changeDataType(dataType, oldObjectName, newObjectName);\n }\n },\n );\n });\n}\n\nconst referencedOntology = {\n \"ontology\": {\n \"apiName\": \"dep\",\n \"rid\": \"ri.ontology.main.ontology.dep\",\n \"displayName\": \"\",\n \"description\": \"\",\n },\n \"actionTypes\": {},\n \"objectTypes\": {\n \"com.example.dep.Task\": {\n implementsInterfaces: [],\n implementsInterfaces2: {},\n sharedPropertyTypeMapping: {},\n \"objectType\": {\n \"apiName\": \"com.example.dep.Task\",\n \"primaryKey\": \"taskId\",\n displayName: \"Task\",\n pluralDisplayName: \"Tasks\",\n icon: { type: \"blueprint\", color: \"blue\", name: \"document\" },\n\n titleProperty: \"taskId\",\n\n \"properties\": {\n \"taskId\": {\n \"dataType\": {\n \"type\": \"string\",\n },\n \"rid\": \"ridForTaskId\",\n },\n \"body\": {\n \"dataType\": {\n \"type\": \"string\",\n },\n \"rid\": \"ridForBody\",\n },\n \"shouldBeIgnored\": {\n \"dataType\": {\n \"type\": \"futureUnknownType\",\n } as unknown as ObjectPropertyType,\n \"rid\": \"ridForShouldBeIgnored\",\n },\n },\n \"status\": \"ACTIVE\",\n \"rid\": \"ridForTask\",\n },\n \"linkTypes\": [],\n },\n },\n \"queryTypes\": {},\n \"interfaceTypes\": {\n \"com.example.dep.SomeInterface\": {\n apiName: \"com.example.dep.SomeInterface\",\n rid: \"idk2\",\n displayName: \"Sum Interface\",\n extendsInterfaces: [],\n properties: {\n \"com.example.dep.spt\": {\n apiName: \"com.example.dep.spt\",\n dataType: {\n type: \"string\",\n },\n displayName: \"Some Property\",\n rid: \"idk\",\n required: true,\n },\n },\n propertiesV2: {},\n implementedByObjectTypes: [],\n links: {},\n allExtendsInterfaces: [],\n allLinks: {},\n allProperties: {\n \"com.example.dep.spt\": {\n apiName: \"com.example.dep.spt\",\n dataType: {\n type: \"string\",\n },\n displayName: \"Some Property\",\n rid: \"idk\",\n required: true,\n },\n \"com.example.dep.spt2\": {\n apiName: \"com.example.dep.spt2\",\n dataType: {\n type: \"string\",\n },\n displayName: \"Some Property 2\",\n rid: \"idk\",\n required: true,\n },\n },\n allPropertiesV2: {},\n },\n },\n \"sharedPropertyTypes\": {\n \"com.example.dep.spt\": {\n apiName: \"com.example.dep.spt\",\n dataType: {\n type: \"string\",\n },\n displayName: \"Some Property\",\n rid: \"idk\",\n },\n },\n \"branch\": {\n rid: \"someRidHere\",\n },\n valueTypes: {},\n} satisfies WireOntologyDefinition;\n\nconst referencingOntology: WireOntologyDefinition = {\n ontology: TodoWireOntology.ontology,\n \"actionTypes\": {\n \"setTaskBody\": {\n \"apiName\": \"setTaskBody\",\n \"parameters\": {\n \"task\": {\n \"displayName\": \"taskBody\",\n \"dataType\": {\n \"type\": \"object\",\n \"objectApiName\": \"com.example.dep.Task\",\n \"objectTypeApiName\": \"com.example.dep.Task\",\n },\n \"required\": true,\n },\n \"body\": {\n \"displayName\": \"body\",\n \"dataType\": {\n \"type\": \"string\",\n },\n \"required\": true,\n },\n },\n \"status\": \"ACTIVE\",\n \"rid\": \"ri.a.b.c.d\",\n \"operations\": [\n {\n \"type\": \"modifyObject\",\n \"objectTypeApiName\": \"com.example.dep.Task\",\n },\n ],\n },\n },\n interfaceTypes: {\n ...referencedOntology.interfaceTypes,\n },\n objectTypes: {\n ...referencedOntology.objectTypes,\n \"Thing\": {\n implementsInterfaces: [\"com.example.dep.SomeInterface\"],\n implementsInterfaces2: {\n \"com.example.dep.SomeInterface\": {\n links: {},\n properties: {\n \"com.example.dep.spt\": \"body\",\n },\n propertiesV2: {},\n },\n },\n linkTypes: [],\n objectType: {\n apiName: \"Thing\",\n displayName: \"Thing\",\n pluralDisplayName: \"Things\",\n icon: { type: \"blueprint\", color: \"blue\", name: \"document\" },\n primaryKey: \"id\",\n properties: {\n \"id\": {\n dataType: {\n type: \"integer\",\n },\n rid: \"rid\",\n },\n \"body\": {\n dataType: {\n type: \"string\",\n },\n \"rid\": \"rid\",\n },\n },\n rid: \"ridForThing\",\n status: \"ACTIVE\",\n titleProperty: \"id\",\n },\n sharedPropertyTypeMapping: {},\n },\n \"UsesForeignSpt\": {\n implementsInterfaces: [],\n implementsInterfaces2: {},\n linkTypes: [],\n objectType: {\n apiName: \"UsesForeignSpt\",\n primaryKey: \"id\",\n displayName: \"Uses Foreign Spt\",\n icon: { type: \"blueprint\", color: \"blue\", name: \"document\" },\n pluralDisplayName: \"Uses Foreign Spts\",\n properties: {\n \"id\": {\n dataType: {\n type: \"integer\",\n },\n rid: \"rid\",\n },\n \"body\": {\n dataType: {\n type: \"string\",\n },\n rid: \"rid\",\n },\n },\n rid: \"theRid\",\n status: \"ACTIVE\",\n titleProperty: \"id\",\n },\n sharedPropertyTypeMapping: {\n \"com.example.dep.spt\": \"body\",\n },\n },\n },\n queryTypes: {\n getTask: {\n apiName: \"getTask\",\n output: {\n type: \"object\",\n objectApiName: \"com.example.dep.Task\",\n objectTypeApiName: \"com.example.dep.Task\",\n },\n parameters: {\n \"a\": {\n dataType: {\n type: \"object\",\n objectApiName: \"com.example.dep.Task\",\n objectTypeApiName: \"com.example.dep.Task\",\n },\n },\n },\n rid: \"ri.a.b.c\",\n version: \"0\",\n },\n },\n sharedPropertyTypes: {},\n valueTypes: {},\n} satisfies WireOntologyDefinition;\n\nconst fooBarTodoWireOntology = changeNames(\n TodoWireOntology,\n {\n objects: { \"Todo\": \"foo.bar.Todo\", \"Person\": \"foo.bar.Person\" },\n actions: {\n markTodoCompleted: \"foo.bar.markTodoCompleted\",\n deleteTodos: \"foo.bar.deleteTodos\",\n },\n interfaces: {\n \"SomeInterface\": \"foo.bar.SomeInterface\",\n },\n queries: {\n \"getCount\": \"foo.bar.getCount\",\n \"returnsTodo\": \"foo.bar.returnsTodo\",\n },\n spts: {\n \"SomeProperty\": \"foo.bar.SomeProperty\",\n },\n },\n);\n\nconst BASE_PATH = \"/foo\";\n\ndescribe(\"generator\", () => {\n let helper: ReturnType<typeof createMockMinimalFiles>;\n beforeEach(async () => {\n helper = createMockMinimalFiles();\n });\n\n test(\n \"should be able to generate a project\",\n { timeout: 20_000 },\n async () => {\n await generateClientSdkVersionTwoPointZero(\n TodoWireOntology,\n \"typescript-sdk/0.0.0 osdk-cli/0.0.0\",\n helper.minimalFiles,\n BASE_PATH,\n );\n\n const files = helper.getFiles();\n\n expect(files).toMatchObject({\n [`${BASE_PATH}/index.ts`]: expect.anything(),\n [`${BASE_PATH}/OntologyMetadata.ts`]: expect.anything(),\n [`${BASE_PATH}/ontology/objects/Todo.ts`]: expect.anything(),\n });\n\n const diagnostics = compileThis(helper.getFiles(), BASE_PATH);\n for (const q of diagnostics) {\n console.error(\n `${q.file?.fileName}:${q.file?.getLineStarts()}`,\n q.messageText,\n );\n }\n\n // TODO: Certain errors are expected since we can't resolve the static code, but we should fix them.\n const errors = diagnostics.filter(q => q.code !== 2792);\n expect(errors).toHaveLength(0);\n\n expect(\n tweakedFilesForSnapshotConsistency(helper.getFiles()),\n ).toMatchInlineSnapshot(`\n {\n \"/foo/OntologyMetadata.ts\": \"export type $ExpectedClientVersion = 'PLACEHOLDER';\n export const $osdkMetadata = { extraUserAgent: 'typescript-sdk/0.0.0 osdk-cli/0.0.0' };\n\n export const $ontologyRid = 'ridHere';\n \",\n \"/foo/index.ts\": \"export { deleteTodos, markTodoCompleted } from './ontology/actions.js';\n export * as $Actions from './ontology/actions.js';\n export { SomeInterface } from './ontology/interfaces.js';\n export * as $Interfaces from './ontology/interfaces.js';\n export { Person, Todo } from './ontology/objects.js';\n export * as $Objects from './ontology/objects.js';\n export { getCount, returnsTodo } from './ontology/queries.js';\n export * as $Queries from './ontology/queries.js';\n export { $osdkMetadata } from './OntologyMetadata.js';\n export { $ontologyRid } from './OntologyMetadata.js';\n \",\n \"/foo/ontology/actions.ts\": \"export { deleteTodos } from './actions/deleteTodos.js';\n export { markTodoCompleted } from './actions/markTodoCompleted.js';\n \",\n \"/foo/ontology/actions/deleteTodos.ts\": \"import type {\n ActionDefinition,\n ActionMetadata,\n ActionParam,\n ActionReturnTypeForOptions,\n ApplyActionOptions,\n ApplyBatchActionOptions,\n } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Todo } from '../objects/Todo.js';\n\n export namespace deleteTodos {\n // Represents the definition of the parameters for the action\n export type ParamsDefinition = {\n object: {\n description: 'Todo(s) to be deleted';\n multiplicity: true;\n nullable: true;\n type: ActionMetadata.DataType.Object<Todo>;\n };\n };\n\n /**\n * An action which takes in an array of objects\n */\n export interface Params {\n /**\n * Todo(s) to be deleted\n */\n readonly object?: ReadonlyArray<ActionParam.ObjectType<Todo>> | null;\n }\n\n // Represents a fqn of the action\n export interface Signatures {\n /**\n * An action which takes in an array of objects\n */\n applyAction<OP extends ApplyActionOptions>(\n args: deleteTodos.Params,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n\n batchApplyAction<OP extends ApplyBatchActionOptions>(\n args: ReadonlyArray<deleteTodos.Params>,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n }\n }\n\n /**\n * An action which takes in an array of objects\n *\n * **Note on null values:** _For optional parameters, explicitly providing a null value instead of undefined\n * can change the behavior of the applied action. If prefills are configured, null prevents them\n * from being applied. If a parameter modifies an object's property, null will clear the data from\n * the object, whereas undefined would not modify that property._\n * @param {ActionParam.ObjectType<Todo>} [object] Todo(s) to be deleted\n */\n export interface deleteTodos extends ActionDefinition<deleteTodos.Signatures> {\n __DefinitionMetadata?: {\n apiName: 'deleteTodos';\n description: 'An action which takes in an array of objects';\n modifiedEntities: {};\n parameters: deleteTodos.ParamsDefinition;\n rid: 'ri.ontology.main.action-type.8f94017d-cf17-4fa8-84c3-8e01e5d594f2';\n status: 'ACTIVE';\n type: 'action';\n\n signatures: deleteTodos.Signatures;\n };\n apiName: 'deleteTodos';\n type: 'action';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const deleteTodos: deleteTodos = {\n apiName: 'deleteTodos',\n type: 'action',\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/actions/markTodoCompleted.ts\": \"import type {\n ActionDefinition,\n ActionMetadata,\n ActionParam,\n ActionReturnTypeForOptions,\n ApplyActionOptions,\n ApplyBatchActionOptions,\n } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Todo } from '../objects/Todo.js';\n\n export namespace markTodoCompleted {\n // Represents the definition of the parameters for the action\n export type ParamsDefinition = {\n object: {\n description: 'A Todo to mark completed';\n multiplicity: false;\n nullable: true;\n type: ActionMetadata.DataType.Object<Todo>;\n };\n };\n\n /**\n * An action which takes different types of parameters\n */\n export interface Params {\n /**\n * A Todo to mark completed\n */\n readonly object?: ActionParam.ObjectType<Todo> | null;\n }\n\n // Represents a fqn of the action\n export interface Signatures {\n /**\n * An action which takes different types of parameters\n */\n applyAction<OP extends ApplyActionOptions>(\n args: markTodoCompleted.Params,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n\n batchApplyAction<OP extends ApplyBatchActionOptions>(\n args: ReadonlyArray<markTodoCompleted.Params>,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n }\n }\n\n /**\n * An action which takes different types of parameters\n *\n * **Note on null values:** _For optional parameters, explicitly providing a null value instead of undefined\n * can change the behavior of the applied action. If prefills are configured, null prevents them\n * from being applied. If a parameter modifies an object's property, null will clear the data from\n * the object, whereas undefined would not modify that property._\n * @param {ActionParam.ObjectType<Todo>} [object] A Todo to mark completed\n */\n export interface markTodoCompleted extends ActionDefinition<markTodoCompleted.Signatures> {\n __DefinitionMetadata?: {\n apiName: 'markTodoCompleted';\n description: 'An action which takes different types of parameters';\n modifiedEntities: {\n Todo: {\n created: false;\n modified: true;\n };\n };\n parameters: markTodoCompleted.ParamsDefinition;\n rid: 'ri.ontology.main.action-type.9f84017d-cf17-4fa8-84c3-8e01e5d594f2';\n status: 'ACTIVE';\n type: 'action';\n\n signatures: markTodoCompleted.Signatures;\n };\n apiName: 'markTodoCompleted';\n type: 'action';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const markTodoCompleted: markTodoCompleted = {\n apiName: 'markTodoCompleted',\n type: 'action',\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/interfaces.ts\": \"export { SomeInterface } from './interfaces/SomeInterface.js';\n \",\n \"/foo/ontology/interfaces/SomeInterface.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n\n import type {\n InterfaceDefinition as $InterfaceDefinition,\n InterfaceMetadata as $InterfaceMetadata,\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n PropertyValueWireToClient as $PropType,\n } from '@osdk/client';\n\n export type OsdkObjectLinks$SomeInterface = {};\n\n export namespace SomeInterface {\n export type PropertyKeys = 'SomeProperty';\n\n export interface Props {\n /**\n * display name: 'Sum Property',\n *\n * description: Some property\n */\n readonly SomeProperty: $PropType['string'] | undefined;\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<SomeInterface, SomeInterface.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof SomeInterface.Props = keyof SomeInterface.Props,\n > = $Osdk.Instance<SomeInterface, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof SomeInterface.Props = keyof SomeInterface.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface SomeInterface extends $InterfaceDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'interface';\n apiName: 'SomeInterface';\n __DefinitionMetadata?: {\n objectSet: SomeInterface.ObjectSet;\n props: SomeInterface.Props;\n linksType: OsdkObjectLinks$SomeInterface;\n strictProps: SomeInterface.StrictProps;\n apiName: 'SomeInterface';\n description: 'Some interface';\n displayName: 'Sum Interface';\n implementedBy: [];\n implements: [];\n links: {};\n properties: {\n /**\n * display name: 'Sum Property',\n *\n * description: Some property\n */\n SomeProperty: $PropertyDef<'string', 'nullable', 'single'>;\n };\n rid: 'idk';\n type: 'interface';\n };\n }\n\n export const SomeInterface: SomeInterface = {\n type: 'interface',\n apiName: 'SomeInterface',\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/objects.ts\": \"export { Person } from './objects/Person.js';\n export { Todo } from './objects/Todo.js';\n \",\n \"/foo/ontology/objects/Person.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import type { Todo } from './Todo.js';\n import type {\n PropertyKeys as $PropertyKeys,\n ObjectTypeDefinition as $ObjectTypeDefinition,\n ObjectMetadata as $ObjectMetadata,\n } from '@osdk/client';\n import type {\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n OsdkObject as $OsdkObject,\n PropertyValueWireToClient as $PropType,\n SingleLinkAccessor as $SingleLinkAccessor,\n } from '@osdk/client';\n\n export namespace Person {\n export type PropertyKeys = 'email';\n\n export interface Links {\n readonly Todos: Todo.ObjectSet;\n }\n\n export interface Props {\n /**\n * (no ontology metadata)\n */\n readonly email: 'osdk@palantir.com' | 'foundry@palantir.com';\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<Person, Person.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Person.Props = keyof Person.Props,\n > = $Osdk.Instance<Person, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Person.Props = keyof Person.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface Person extends $ObjectTypeDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'object';\n apiName: 'Person';\n __DefinitionMetadata?: {\n objectSet: Person.ObjectSet;\n props: Person.Props;\n linksType: Person.Links;\n strictProps: Person.StrictProps;\n apiName: 'Person';\n description: 'A person';\n displayName: 'Person';\n icon: {\n type: 'blueprint';\n name: 'document';\n color: 'blue';\n };\n implements: [];\n interfaceMap: {};\n inverseInterfaceMap: {};\n links: {\n Todos: $ObjectMetadata.Link<Todo, true>;\n };\n pluralDisplayName: 'Persons';\n primaryKeyApiName: 'email';\n primaryKeyType: 'string';\n properties: {\n /**\n * (no ontology metadata)\n */\n email: $PropertyDef<'string', 'non-nullable', 'single'>;\n };\n rid: 'ridForPerson';\n status: 'ACTIVE';\n titleProperty: 'email';\n type: 'object';\n visibility: undefined;\n };\n }\n\n export const Person = {\n type: 'object',\n apiName: 'Person',\n osdkMetadata: $osdkMetadata,\n internalDoNotUseMetadata: {\n rid: 'ridForPerson',\n },\n } satisfies Person & { internalDoNotUseMetadata: { rid: string } } as Person;\n \",\n \"/foo/ontology/objects/Todo.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import type { Person } from './Person.js';\n import type {\n PropertyKeys as $PropertyKeys,\n ObjectTypeDefinition as $ObjectTypeDefinition,\n ObjectMetadata as $ObjectMetadata,\n } from '@osdk/client';\n import type {\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n OsdkObject as $OsdkObject,\n PropertyValueWireToClient as $PropType,\n SingleLinkAccessor as $SingleLinkAccessor,\n } from '@osdk/client';\n\n export namespace Todo {\n export type PropertyKeys = 'id' | 'body' | 'complete' | 'array';\n\n export interface Links {\n readonly Assignee: $SingleLinkAccessor<Person>;\n }\n\n export interface Props {\n /**\n * (no ontology metadata)\n */\n readonly array: ('a' | 'b' | 'c')[] | undefined;\n /**\n * display name: 'Body',\n *\n * description: The text of the todo\n */\n readonly body: $PropType['string'] | undefined;\n /**\n * (no ontology metadata)\n */\n readonly complete: $PropType['boolean'] | undefined;\n /**\n * (no ontology metadata)\n */\n readonly id: $PropType['integer'];\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<Todo, Todo.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Todo.Props = keyof Todo.Props,\n > = $Osdk.Instance<Todo, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Todo.Props = keyof Todo.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface Todo extends $ObjectTypeDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'object';\n apiName: 'Todo';\n __DefinitionMetadata?: {\n objectSet: Todo.ObjectSet;\n props: Todo.Props;\n linksType: Todo.Links;\n strictProps: Todo.StrictProps;\n apiName: 'Todo';\n description: 'Its a todo item.';\n displayName: 'AwesomeTodoDisplayname';\n icon: {\n type: 'blueprint';\n name: 'document';\n color: 'blue';\n };\n implements: ['SomeInterface'];\n interfaceMap: {\n SomeInterface: {\n SomeProperty: 'body';\n };\n };\n inverseInterfaceMap: {\n SomeInterface: {\n body: 'SomeProperty';\n };\n };\n links: {\n Assignee: $ObjectMetadata.Link<Person, false>;\n };\n pluralDisplayName: 'AwesomeTodoDisplayNames';\n primaryKeyApiName: 'id';\n primaryKeyType: 'integer';\n properties: {\n /**\n * (no ontology metadata)\n */\n array: $PropertyDef<'string', 'nullable', 'array'>;\n /**\n * display name: 'Body',\n *\n * description: The text of the todo\n */\n body: $PropertyDef<'string', 'nullable', 'single'>;\n /**\n * (no ontology metadata)\n */\n complete: $PropertyDef<'boolean', 'nullable', 'single'>;\n /**\n * (no ontology metadata)\n */\n id: $PropertyDef<'integer', 'non-nullable', 'single'>;\n };\n rid: 'ridForTodo';\n status: 'ACTIVE';\n titleProperty: 'body';\n type: 'object';\n visibility: undefined;\n };\n }\n\n export const Todo = {\n type: 'object',\n apiName: 'Todo',\n osdkMetadata: $osdkMetadata,\n internalDoNotUseMetadata: {\n rid: 'ridForTodo',\n },\n } satisfies Todo & { internalDoNotUseMetadata: { rid: string } } as Todo;\n \",\n \"/foo/ontology/queries.ts\": \"export { getCount } from './queries/getCount.js';\n export { returnsTodo } from './queries/returnsTodo.js';\n \",\n \"/foo/ontology/queries/getCount.ts\": \"import type { ObjectSpecifier, QueryDefinition, QueryParam, QueryResult, VersionBound } from '@osdk/client';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n\n export namespace getCount {\n export interface Signature {\n (query: getCount.Parameters): Promise<getCount.ReturnType>;\n }\n\n export interface Parameters {\n /**\n * (no ontology metadata)\n */\n readonly completed: QueryParam.PrimitiveType<'boolean'>;\n }\n\n export type ReturnType = QueryResult.PrimitiveType<'integer'>;\n }\n\n export interface getCount extends QueryDefinition<getCount.Signature>, VersionBound<$ExpectedClientVersion> {\n __DefinitionMetadata?: {\n apiName: 'getCount';\n rid: 'rid.query.1';\n type: 'query';\n version: '1.1.0';\n isFixedVersion: false;\n parameters: {\n /**\n * (no ontology metadata)\n */\n completed: {\n nullable: false;\n type: 'boolean';\n };\n };\n output: {\n nullable: false;\n type: 'integer';\n };\n signature: getCount.Signature;\n };\n apiName: 'getCount';\n type: 'query';\n version: '1.1.0';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const getCount: getCount = {\n apiName: 'getCount',\n type: 'query',\n version: '1.1.0',\n isFixedVersion: false,\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/queries/returnsTodo.ts\": \"import type { ObjectSpecifier, QueryDefinition, QueryParam, QueryResult, VersionBound } from '@osdk/client';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Todo } from '../objects/Todo.js';\n\n export namespace returnsTodo {\n export interface Signature {\n (query: returnsTodo.Parameters): Promise<returnsTodo.ReturnType>;\n }\n\n export interface Parameters {\n /**\n * description: Random desc so we test jsdoc\n */\n readonly someTodo: QueryParam.ObjectType<Todo>;\n }\n\n export type ReturnType = QueryResult.ObjectType<Todo>;\n }\n\n export interface returnsTodo extends QueryDefinition<returnsTodo.Signature>, VersionBound<$ExpectedClientVersion> {\n __DefinitionMetadata?: {\n apiName: 'returnsTodo';\n rid: 'rid.query.2';\n type: 'query';\n version: '3.2.0';\n isFixedVersion: false;\n parameters: {\n /**\n * description: Random desc so we test jsdoc\n */\n someTodo: {\n description: 'Random desc so we test jsdoc';\n nullable: false;\n object: 'Todo';\n type: 'object';\n __OsdkTargetType?: Todo;\n };\n };\n output: {\n nullable: false;\n object: 'Todo';\n type: 'object';\n __OsdkTargetType?: Todo;\n };\n signature: returnsTodo.Signature;\n };\n apiName: 'returnsTodo';\n type: 'query';\n version: '3.2.0';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const returnsTodo: returnsTodo = {\n apiName: 'returnsTodo',\n type: 'query',\n version: '3.2.0',\n isFixedVersion: false,\n osdkMetadata: $osdkMetadata,\n };\n \",\n }\n `);\n },\n );\n\n test(\"throws an error when target destination is not empty\", async () => {\n helper.minimalFiles.readdir = vi.fn(async (_path: string) => [\"file\"]);\n\n await expect(async () => {\n await expect(generateClientSdkVersionTwoPointZero(\n TodoWireOntology,\n \"typescript-sdk/0.0.0 osdk-cli/0.0.0\",\n helper.minimalFiles,\n BASE_PATH,\n )).rejects.toThrow();\n });\n });\n\n it(\"throws an error if a namespace is provided that all top levels do not use\", async () => {\n await expect(\n generateClientSdkVersionTwoPointZero(\n { ...TodoWireOntology },\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n undefined,\n undefined,\n undefined,\n true,\n ),\n );\n\n // Disabled for now since we can't really enforce it from dev console at the moment\n // .rejects.toThrowErrorMatchingInlineSnapshot(\n // `[Error: Found type { ns:'undefined', shortName: 'Todo'} but it is not in the generation namespace 'foo.bar'. This violates the contract of the generator.]`,\n // );\n });\n\n it(\"does not throw an error if a namespace is provided that all top levels use\", async () => {\n await expect(\n generateClientSdkVersionTwoPointZero(\n fooBarTodoWireOntology,\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n undefined,\n undefined,\n undefined,\n true,\n ),\n ).resolves.toMatchInlineSnapshot(`undefined`);\n\n expect(helper.getFiles()[\"/foo/ontology/objects/foo.bar.Todo.ts\"])\n .toBeUndefined();\n\n expect(helper.getFiles()[\"/foo/ontology/objects/Todo.ts\"])\n .not.toBeUndefined();\n\n expect(tweakedFilesForSnapshotConsistency(helper.getFiles()))\n .toMatchInlineSnapshot(`\n {\n \"/foo/OntologyMetadata.ts\": \"export type $ExpectedClientVersion = 'PLACEHOLDER';\n export const $osdkMetadata = { extraUserAgent: '' };\n\n export const $ontologyRid = 'ridHere';\n \",\n \"/foo/index.ts\": \"export { deleteTodos, markTodoCompleted } from './ontology/actions.js';\n export * as $Actions from './ontology/actions.js';\n export { SomeInterface } from './ontology/interfaces.js';\n export * as $Interfaces from './ontology/interfaces.js';\n export { Person, Todo } from './ontology/objects.js';\n export * as $Objects from './ontology/objects.js';\n export { getCount, returnsTodo } from './ontology/queries.js';\n export * as $Queries from './ontology/queries.js';\n export { $osdkMetadata } from './OntologyMetadata.js';\n export { $ontologyRid } from './OntologyMetadata.js';\n \",\n \"/foo/ontology/actions.ts\": \"export { deleteTodos } from './actions/deleteTodos.js';\n export { markTodoCompleted } from './actions/markTodoCompleted.js';\n \",\n \"/foo/ontology/actions/deleteTodos.ts\": \"import type {\n ActionDefinition,\n ActionMetadata,\n ActionParam,\n ActionReturnTypeForOptions,\n ApplyActionOptions,\n ApplyBatchActionOptions,\n } from '@osdk/api';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Todo } from '../objects/Todo.js';\n\n export namespace deleteTodos {\n // Represents the definition of the parameters for the action\n export type ParamsDefinition = {\n object: {\n description: 'Todo(s) to be deleted';\n multiplicity: true;\n nullable: true;\n type: ActionMetadata.DataType.Object<Todo>;\n };\n };\n\n /**\n * An action which takes in an array of objects\n */\n export interface Params {\n /**\n * Todo(s) to be deleted\n */\n readonly object?: ReadonlyArray<ActionParam.ObjectType<Todo>> | null;\n }\n\n // Represents a fqn of the action\n export interface Signatures {\n /**\n * An action which takes in an array of objects\n */\n applyAction<OP extends ApplyActionOptions>(\n args: deleteTodos.Params,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n\n batchApplyAction<OP extends ApplyBatchActionOptions>(\n args: ReadonlyArray<deleteTodos.Params>,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n }\n }\n\n /**\n * An action which takes in an array of objects\n *\n * **Note on null values:** _For optional parameters, explicitly providing a null value instead of undefined\n * can change the behavior of the applied action. If prefills are configured, null prevents them\n * from being applied. If a parameter modifies an object's property, null will clear the data from\n * the object, whereas undefined would not modify that property._\n * @param {ActionParam.ObjectType<Todo>} [object] Todo(s) to be deleted\n */\n export interface deleteTodos extends ActionDefinition<deleteTodos.Signatures> {\n __DefinitionMetadata?: {\n apiName: 'foo.bar.deleteTodos';\n description: 'An action which takes in an array of objects';\n modifiedEntities: {};\n parameters: deleteTodos.ParamsDefinition;\n rid: 'ri.ontology.main.action-type.8f94017d-cf17-4fa8-84c3-8e01e5d594f2';\n status: 'ACTIVE';\n type: 'action';\n\n signatures: deleteTodos.Signatures;\n };\n apiName: 'foo.bar.deleteTodos';\n type: 'action';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const deleteTodos: deleteTodos = {\n apiName: 'foo.bar.deleteTodos',\n type: 'action',\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/actions/markTodoCompleted.ts\": \"import type {\n ActionDefinition,\n ActionMetadata,\n ActionParam,\n ActionReturnTypeForOptions,\n ApplyActionOptions,\n ApplyBatchActionOptions,\n } from '@osdk/api';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Todo } from '../objects/Todo.js';\n\n export namespace markTodoCompleted {\n // Represents the definition of the parameters for the action\n export type ParamsDefinition = {\n object: {\n description: 'A Todo to mark completed';\n multiplicity: false;\n nullable: true;\n type: ActionMetadata.DataType.Object<Todo>;\n };\n };\n\n /**\n * An action which takes different types of parameters\n */\n export interface Params {\n /**\n * A Todo to mark completed\n */\n readonly object?: ActionParam.ObjectType<Todo> | null;\n }\n\n // Represents a fqn of the action\n export interface Signatures {\n /**\n * An action which takes different types of parameters\n */\n applyAction<OP extends ApplyActionOptions>(\n args: markTodoCompleted.Params,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n\n batchApplyAction<OP extends ApplyBatchActionOptions>(\n args: ReadonlyArray<markTodoCompleted.Params>,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n }\n }\n\n /**\n * An action which takes different types of parameters\n *\n * **Note on null values:** _For optional parameters, explicitly providing a null value instead of undefined\n * can change the behavior of the applied action. If prefills are configured, null prevents them\n * from being applied. If a parameter modifies an object's property, null will clear the data from\n * the object, whereas undefined would not modify that property._\n * @param {ActionParam.ObjectType<Todo>} [object] A Todo to mark completed\n */\n export interface markTodoCompleted extends ActionDefinition<markTodoCompleted.Signatures> {\n __DefinitionMetadata?: {\n apiName: 'foo.bar.markTodoCompleted';\n description: 'An action which takes different types of parameters';\n modifiedEntities: {\n 'foo.bar.Todo': {\n created: false;\n modified: true;\n };\n };\n parameters: markTodoCompleted.ParamsDefinition;\n rid: 'ri.ontology.main.action-type.9f84017d-cf17-4fa8-84c3-8e01e5d594f2';\n status: 'ACTIVE';\n type: 'action';\n\n signatures: markTodoCompleted.Signatures;\n };\n apiName: 'foo.bar.markTodoCompleted';\n type: 'action';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const markTodoCompleted: markTodoCompleted = {\n apiName: 'foo.bar.markTodoCompleted',\n type: 'action',\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/interfaces.ts\": \"export { SomeInterface } from './interfaces/SomeInterface.js';\n \",\n \"/foo/ontology/interfaces/SomeInterface.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/api';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n\n import type {\n InterfaceDefinition as $InterfaceDefinition,\n InterfaceMetadata as $InterfaceMetadata,\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n PropertyValueWireToClient as $PropType,\n } from '@osdk/api';\n\n export type OsdkObjectLinks$SomeInterface = {};\n\n export namespace SomeInterface {\n export type PropertyKeys = 'SomeProperty';\n\n export interface Props {\n /**\n * display name: 'Sum Property',\n *\n * description: Some property\n */\n readonly SomeProperty: $PropType['string'] | undefined;\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<SomeInterface, SomeInterface.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof SomeInterface.Props = keyof SomeInterface.Props,\n > = $Osdk.Instance<SomeInterface, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof SomeInterface.Props = keyof SomeInterface.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface SomeInterface extends $InterfaceDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'interface';\n apiName: 'foo.bar.SomeInterface';\n __DefinitionMetadata?: {\n objectSet: SomeInterface.ObjectSet;\n props: SomeInterface.Props;\n linksType: OsdkObjectLinks$SomeInterface;\n strictProps: SomeInterface.StrictProps;\n apiName: 'foo.bar.SomeInterface';\n description: 'Some interface';\n displayName: 'Sum Interface';\n implementedBy: [];\n implements: [];\n links: {};\n properties: {\n /**\n * display name: 'Sum Property',\n *\n * description: Some property\n */\n SomeProperty: $PropertyDef<'string', 'nullable', 'single'>;\n };\n rid: 'idk';\n type: 'interface';\n };\n }\n\n export const SomeInterface: SomeInterface = {\n type: 'interface',\n apiName: 'foo.bar.SomeInterface',\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/objects.ts\": \"export { Person } from './objects/Person.js';\n export { Todo } from './objects/Todo.js';\n \",\n \"/foo/ontology/objects/Person.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/api';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import type { Todo } from './Todo.js';\n import type {\n PropertyKeys as $PropertyKeys,\n ObjectTypeDefinition as $ObjectTypeDefinition,\n ObjectMetadata as $ObjectMetadata,\n } from '@osdk/api';\n import type {\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n OsdkObject as $OsdkObject,\n PropertyValueWireToClient as $PropType,\n SingleLinkAccessor as $SingleLinkAccessor,\n } from '@osdk/api';\n\n export namespace Person {\n export type PropertyKeys = 'email';\n\n export interface Links {\n readonly Todos: Todo.ObjectSet;\n }\n\n export interface Props {\n /**\n * (no ontology metadata)\n */\n readonly email: 'osdk@palantir.com' | 'foundry@palantir.com';\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<Person, Person.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Person.Props = keyof Person.Props,\n > = $Osdk.Instance<Person, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Person.Props = keyof Person.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface Person extends $ObjectTypeDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'object';\n apiName: 'foo.bar.Person';\n __DefinitionMetadata?: {\n objectSet: Person.ObjectSet;\n props: Person.Props;\n linksType: Person.Links;\n strictProps: Person.StrictProps;\n apiName: 'foo.bar.Person';\n description: 'A person';\n displayName: 'Person';\n icon: {\n type: 'blueprint';\n name: 'document';\n color: 'blue';\n };\n implements: [];\n interfaceMap: {};\n inverseInterfaceMap: {};\n links: {\n Todos: $ObjectMetadata.Link<Todo, true>;\n };\n pluralDisplayName: 'Persons';\n primaryKeyApiName: 'email';\n primaryKeyType: 'string';\n properties: {\n /**\n * (no ontology metadata)\n */\n email: $PropertyDef<'string', 'non-nullable', 'single'>;\n };\n rid: 'ridForPerson';\n status: 'ACTIVE';\n titleProperty: 'email';\n type: 'object';\n visibility: undefined;\n };\n }\n\n export const Person = {\n type: 'object',\n apiName: 'foo.bar.Person',\n osdkMetadata: $osdkMetadata,\n internalDoNotUseMetadata: {\n rid: 'ridForPerson',\n },\n } satisfies Person & { internalDoNotUseMetadata: { rid: string } } as Person;\n \",\n \"/foo/ontology/objects/Todo.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/api';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import type { Person } from './Person.js';\n import type {\n PropertyKeys as $PropertyKeys,\n ObjectTypeDefinition as $ObjectTypeDefinition,\n ObjectMetadata as $ObjectMetadata,\n } from '@osdk/api';\n import type {\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n OsdkObject as $OsdkObject,\n PropertyValueWireToClient as $PropType,\n SingleLinkAccessor as $SingleLinkAccessor,\n } from '@osdk/api';\n\n export namespace Todo {\n export type PropertyKeys = 'id' | 'body' | 'complete' | 'array';\n\n export interface Links {\n readonly Assignee: $SingleLinkAccessor<Person>;\n }\n\n export interface Props {\n /**\n * (no ontology metadata)\n */\n readonly array: ('a' | 'b' | 'c')[] | undefined;\n /**\n * display name: 'Body',\n *\n * description: The text of the todo\n */\n readonly body: $PropType['string'] | undefined;\n /**\n * (no ontology metadata)\n */\n readonly complete: $PropType['boolean'] | undefined;\n /**\n * (no ontology metadata)\n */\n readonly id: $PropType['integer'];\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<Todo, Todo.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Todo.Props = keyof Todo.Props,\n > = $Osdk.Instance<Todo, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Todo.Props = keyof Todo.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface Todo extends $ObjectTypeDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'object';\n apiName: 'foo.bar.Todo';\n __DefinitionMetadata?: {\n objectSet: Todo.ObjectSet;\n props: Todo.Props;\n linksType: Todo.Links;\n strictProps: Todo.StrictProps;\n apiName: 'foo.bar.Todo';\n description: 'Its a todo item.';\n displayName: 'AwesomeTodoDisplayname';\n icon: {\n type: 'blueprint';\n name: 'document';\n color: 'blue';\n };\n implements: ['foo.bar.SomeInterface'];\n interfaceMap: {\n 'foo.bar.SomeInterface': {\n SomeProperty: 'body';\n };\n };\n inverseInterfaceMap: {\n 'foo.bar.SomeInterface': {\n body: 'SomeProperty';\n };\n };\n links: {\n Assignee: $ObjectMetadata.Link<Person, false>;\n };\n pluralDisplayName: 'AwesomeTodoDisplayNames';\n primaryKeyApiName: 'id';\n primaryKeyType: 'integer';\n properties: {\n /**\n * (no ontology metadata)\n */\n array: $PropertyDef<'string', 'nullable', 'array'>;\n /**\n * display name: 'Body',\n *\n * description: The text of the todo\n */\n body: $PropertyDef<'string', 'nullable', 'single'>;\n /**\n * (no ontology metadata)\n */\n complete: $PropertyDef<'boolean', 'nullable', 'single'>;\n /**\n * (no ontology metadata)\n */\n id: $PropertyDef<'integer', 'non-nullable', 'single'>;\n };\n rid: 'ridForTodo';\n status: 'ACTIVE';\n titleProperty: 'body';\n type: 'object';\n visibility: undefined;\n };\n }\n\n export const Todo = {\n type: 'object',\n apiName: 'foo.bar.Todo',\n osdkMetadata: $osdkMetadata,\n internalDoNotUseMetadata: {\n rid: 'ridForTodo',\n },\n } satisfies Todo & { internalDoNotUseMetadata: { rid: string } } as Todo;\n \",\n \"/foo/ontology/queries.ts\": \"export { getCount } from './queries/getCount.js';\n export { returnsTodo } from './queries/returnsTodo.js';\n \",\n \"/foo/ontology/queries/getCount.ts\": \"import type { ObjectSpecifier, QueryDefinition, QueryParam, QueryResult, VersionBound } from '@osdk/api';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n\n export namespace getCount {\n export interface Signature {\n (query: getCount.Parameters): Promise<getCount.ReturnType>;\n }\n\n export interface Parameters {\n /**\n * (no ontology metadata)\n */\n readonly completed: QueryParam.PrimitiveType<'boolean'>;\n }\n\n export type ReturnType = QueryResult.PrimitiveType<'integer'>;\n }\n\n export interface getCount extends QueryDefinition<getCount.Signature>, VersionBound<$ExpectedClientVersion> {\n __DefinitionMetadata?: {\n apiName: 'foo.bar.getCount';\n rid: 'rid.query.1';\n type: 'query';\n version: '1.1.0';\n isFixedVersion: false;\n parameters: {\n /**\n * (no ontology metadata)\n */\n completed: {\n nullable: false;\n type: 'boolean';\n };\n };\n output: {\n nullable: false;\n type: 'integer';\n };\n signature: getCount.Signature;\n };\n apiName: 'foo.bar.getCount';\n type: 'query';\n version: '1.1.0';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const getCount: getCount = {\n apiName: 'foo.bar.getCount',\n type: 'query',\n version: '1.1.0',\n isFixedVersion: false,\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/queries/returnsTodo.ts\": \"import type { ObjectSpecifier, QueryDefinition, QueryParam, QueryResult, VersionBound } from '@osdk/api';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Todo } from '../objects/Todo.js';\n\n export namespace returnsTodo {\n export interface Signature {\n (query: returnsTodo.Parameters): Promise<returnsTodo.ReturnType>;\n }\n\n export interface Parameters {\n /**\n * description: Random desc so we test jsdoc\n */\n readonly someTodo: QueryParam.ObjectType<Todo>;\n }\n\n export type ReturnType = QueryResult.ObjectType<Todo>;\n }\n\n export interface returnsTodo extends QueryDefinition<returnsTodo.Signature>, VersionBound<$ExpectedClientVersion> {\n __DefinitionMetadata?: {\n apiName: 'foo.bar.returnsTodo';\n rid: 'rid.query.2';\n type: 'query';\n version: '3.2.0';\n isFixedVersion: false;\n parameters: {\n /**\n * description: Random desc so we test jsdoc\n */\n someTodo: {\n description: 'Random desc so we test jsdoc';\n nullable: false;\n object: 'foo.bar.Todo';\n type: 'object';\n __OsdkTargetType?: Todo;\n };\n };\n output: {\n nullable: false;\n object: 'foo.bar.Todo';\n type: 'object';\n __OsdkTargetType?: Todo;\n };\n signature: returnsTodo.Signature;\n };\n apiName: 'foo.bar.returnsTodo';\n type: 'query';\n version: '3.2.0';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const returnsTodo: returnsTodo = {\n apiName: 'foo.bar.returnsTodo',\n type: 'query',\n version: '3.2.0',\n isFixedVersion: false,\n osdkMetadata: $osdkMetadata,\n };\n \",\n }\n `);\n });\n\n it(\"guards against empty objects\", async () => {\n await generateClientSdkVersionTwoPointZero(\n {\n ontology: TodoWireOntology.ontology,\n actionTypes: {},\n interfaceTypes: {},\n objectTypes: {},\n queryTypes: {},\n sharedPropertyTypes: {},\n valueTypes: {},\n },\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n );\n\n expect(helper.getFiles()[`${BASE_PATH}/ontology/objects.ts`]).toEqual(\n \"export {};\\n\",\n );\n });\n\n test.skip(\"runs generator locally\", async () => {\n try {\n await rmdir(`${__dirname}/generated`, { recursive: true });\n } catch (e) {\n }\n await mkdir(`${__dirname}/generated`, { recursive: true });\n await generateClientSdkVersionTwoPointZero(\n TodoWireOntology,\n \"typescript-sdk/0.0.0 osdk-cli/0.0.0\",\n {\n writeFile: async (path, contents) => {\n await writeFile(path, contents, { flag: \"w\" });\n },\n mkdir: async (path, options) => {\n await mkdir(path, options);\n },\n readdir: async (path) => await readdir(path),\n },\n `${__dirname}/generated/`,\n );\n });\n\n describe(\"$ontologyRid\", () => {\n it(\"does not exist when an ontology api name is provided\", async () => {\n const BASE_PATH = \"/foo\";\n\n await expect(\n generateClientSdkVersionTwoPointZero(\n fooBarTodoWireOntology,\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n new Map(),\n ),\n ).resolves.toMatchInlineSnapshot(`undefined`);\n\n // expect(helper.getFiles()[\"/foo/index.ts\"]).not.toContain(\n // \"$ontologyRid\",\n // );\n });\n\n it(\"does exist when an ontology api name is not provided\", async () => {\n const BASE_PATH = \"/foo\";\n\n await expect(\n generateClientSdkVersionTwoPointZero(\n TodoWireOntology,\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n undefined,\n new Map(),\n ),\n ).resolves.toMatchInlineSnapshot(`undefined`);\n\n expect(helper.getFiles()[\"/foo/index.ts\"]).toContain(\n \"$ontologyRid\",\n );\n });\n });\n\n describe(\"query depends on foreign object\", () => {\n it(\"generates the correct code\", async () => {\n await expect(\n generateClientSdkVersionTwoPointZero(\n referencingOntology,\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n new Map([[\"com.example.dep.Task\", \"@com.example.dep/osdk\"]]),\n new Map([[\"com.example.dep.SomeInterface\", \"@com.example.dep/osdk\"]]),\n new Map([[\"com.example.dep.spt\", \"@com.example.dep/osdk\"]]),\n true,\n ),\n ).resolves.toMatchInlineSnapshot(`undefined`);\n\n expect(helper.getFiles()[\"/foo/ontology/queries/getTask.ts\"])\n .toMatchInlineSnapshot(`\n \"import type { ObjectSpecifier, QueryDefinition, QueryParam, QueryResult, VersionBound } from '@osdk/api';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Task as $Imported$com$example$dep$Task } from '@com.example.dep/osdk';\n\n export namespace getTask {\n export interface Signature {\n (query: getTask.Parameters): Promise<getTask.ReturnType>;\n }\n\n export interface Parameters {\n /**\n * (no ontology metadata)\n */\n readonly a: QueryParam.ObjectType<$Imported$com$example$dep$Task>;\n }\n\n export type ReturnType = QueryResult.ObjectType<$Imported$com$example$dep$Task>;\n }\n\n export interface getTask extends QueryDefinition<getTask.Signature>, VersionBound<$ExpectedClientVersion> {\n __DefinitionMetadata?: {\n apiName: 'getTask';\n rid: 'ri.a.b.c';\n type: 'query';\n version: '0';\n isFixedVersion: false;\n parameters: {\n /**\n * (no ontology metadata)\n */\n a: {\n nullable: false;\n object: 'com.example.dep.Task';\n type: 'object';\n __OsdkTargetType?: $Imported$com$example$dep$Task;\n };\n };\n output: {\n nullable: false;\n object: 'com.example.dep.Task';\n type: 'object';\n __OsdkTargetType?: $Imported$com$example$dep$Task;\n };\n signature: getTask.Signature;\n };\n apiName: 'getTask';\n type: 'query';\n version: '0';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const getTask: getTask = {\n apiName: 'getTask',\n type: 'query',\n version: '0',\n isFixedVersion: false,\n osdkMetadata: $osdkMetadata,\n };\n \"\n `);\n });\n });\n\n describe(\"object uses on foreign spt\", () => {\n it(\"stuff\", async () => {\n await expect(\n generateClientSdkVersionTwoPointZero(\n referencingOntology,\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n new Map([[\"com.example.dep.Task\", \"@com.example.dep/osdk\"]]),\n new Map([[\"com.example.dep.SomeInterface\", \"@com.example.dep/osdk\"]]),\n new Map([[\"com.example.dep.spt\", \"@com.example.dep/osdk\"]]),\n true,\n ),\n ).resolves.toMatchInlineSnapshot(`undefined`);\n\n expect(helper.getFiles()[\"/foo/ontology/objects/UsesForeignSpt.ts\"])\n .toMatchInlineSnapshot(`\n \"import type { PropertyDef as $PropertyDef } from '@osdk/api';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import type {\n PropertyKeys as $PropertyKeys,\n ObjectTypeDefinition as $ObjectTypeDefinition,\n ObjectMetadata as $ObjectMetadata,\n } from '@osdk/api';\n import type {\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n OsdkObject as $OsdkObject,\n PropertyValueWireToClient as $PropType,\n SingleLinkAccessor as $SingleLinkAccessor,\n } from '@osdk/api';\n\n export namespace UsesForeignSpt {\n export type PropertyKeys = 'id' | 'body';\n\n export type Links = {};\n\n export interface Props {\n /**\n * (no ontology metadata)\n */\n readonly body: $PropType['string'] | undefined;\n /**\n * (no ontology metadata)\n */\n readonly id: $PropType['integer'];\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<UsesForeignSpt, UsesForeignSpt.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof UsesForeignSpt.Props = keyof UsesForeignSpt.Props,\n > = $Osdk.Instance<UsesForeignSpt, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof UsesForeignSpt.Props = keyof UsesForeignSpt.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface UsesForeignSpt extends $ObjectTypeDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'object';\n apiName: 'UsesForeignSpt';\n __DefinitionMetadata?: {\n objectSet: UsesForeignSpt.ObjectSet;\n props: UsesForeignSpt.Props;\n linksType: UsesForeignSpt.Links;\n strictProps: UsesForeignSpt.StrictProps;\n apiName: 'UsesForeignSpt';\n description: undefined;\n displayName: 'Uses Foreign Spt';\n icon: {\n type: 'blueprint';\n color: 'blue';\n name: 'document';\n };\n implements: [];\n interfaceMap: {};\n inverseInterfaceMap: {};\n links: {};\n pluralDisplayName: 'Uses Foreign Spts';\n primaryKeyApiName: 'id';\n primaryKeyType: 'integer';\n properties: {\n /**\n * (no ontology metadata)\n */\n body: $PropertyDef<'string', 'nullable', 'single'>;\n /**\n * (no ontology metadata)\n */\n id: $PropertyDef<'integer', 'non-nullable', 'single'>;\n };\n rid: 'theRid';\n status: 'ACTIVE';\n titleProperty: 'id';\n type: 'object';\n visibility: undefined;\n };\n }\n\n export const UsesForeignSpt = {\n type: 'object',\n apiName: 'UsesForeignSpt',\n osdkMetadata: $osdkMetadata,\n internalDoNotUseMetadata: {\n rid: 'theRid',\n },\n } satisfies UsesForeignSpt & { internalDoNotUseMetadata: { rid: string } } as UsesForeignSpt;\n \"\n `);\n });\n });\n\n describe(\"action depends on foreign object\", () => {\n it(\"can generate the action\", async () => {\n await expect(\n generateClientSdkVersionTwoPointZero(\n referencingOntology,\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n new Map([[\"com.example.dep.Task\", \"@com.example.dep/osdk\"]]),\n new Map([[\"com.example.dep.SomeInterface\", \"@com.example.dep/osdk\"]]),\n new Map([[\"com.example.dep.spt\", \"@com.example.dep/osdk\"]]),\n true,\n ),\n ).resolves.toMatchInlineSnapshot(`undefined`);\n\n expect(helper.getFiles()[\"/foo/ontology/actions/setTaskBody.ts\"])\n .toMatchInlineSnapshot(`\n \"import type {\n ActionDefinition,\n ActionMetadata,\n ActionParam,\n ActionReturnTypeForOptions,\n ApplyActionOptions,\n ApplyBatchActionOptions,\n } from '@osdk/api';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Task as $Imported$com$example$dep$Task } from '@com.example.dep/osdk';\n\n export namespace setTaskBody {\n // Represents the definition of the parameters for the action\n export type ParamsDefinition = {\n body: {\n description: undefined;\n multiplicity: false;\n nullable: false;\n type: 'string';\n };\n task: {\n description: undefined;\n multiplicity: false;\n nullable: false;\n type: ActionMetadata.DataType.Object<$Imported$com$example$dep$Task>;\n };\n };\n\n export interface Params {\n readonly body: ActionParam.PrimitiveType<'string'>;\n\n readonly task: ActionParam.ObjectType<$Imported$com$example$dep$Task>;\n }\n\n // Represents a fqn of the action\n export interface Signatures {\n applyAction<OP extends ApplyActionOptions>(\n args: setTaskBody.Params,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n\n batchApplyAction<OP extends ApplyBatchActionOptions>(\n args: ReadonlyArray<setTaskBody.Params>,\n options?: OP,\n ): Promise<ActionReturnTypeForOptions<OP>>;\n }\n }\n\n /**\n * @param {ActionParam.PrimitiveType<\"string\">} body\n * @param {ActionParam.ObjectType<$Imported$com$example$dep$Task>} task\n */\n export interface setTaskBody extends ActionDefinition<setTaskBody.Signatures> {\n __DefinitionMetadata?: {\n apiName: 'setTaskBody';\n modifiedEntities: {\n 'com.example.dep.Task': {\n created: false;\n modified: true;\n };\n };\n parameters: setTaskBody.ParamsDefinition;\n rid: 'ri.a.b.c.d';\n status: 'ACTIVE';\n type: 'action';\n\n signatures: setTaskBody.Signatures;\n };\n apiName: 'setTaskBody';\n type: 'action';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const setTaskBody: setTaskBody = {\n apiName: 'setTaskBody',\n type: 'action',\n osdkMetadata: $osdkMetadata,\n };\n \"\n `);\n });\n });\n\n describe(\"queries with versions\", () => {\n it(\"can generate properly when queries have versions and optionally have fixed versions\", async () => {\n await generateClientSdkVersionTwoPointZero(\n {\n ontology: TodoWireOntology.ontology,\n actionTypes: {},\n interfaceTypes: {},\n objectTypes: TodoWireOntology.objectTypes,\n queryTypes: {\n \"getCount:1.1.0\": {\n ...TodoWireOntology.queryTypes.getCount,\n },\n \"returnsTodo:3.2.0\": {\n ...TodoWireOntology.queryTypes.returnsTodo,\n version: \"0\",\n },\n },\n sharedPropertyTypes: {},\n valueTypes: {},\n },\n \"typescript-sdk/0.0.0 osdk-cli/0.0.0\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n new Map(),\n new Map(),\n new Map(),\n false,\n [\"getCount\"],\n );\n\n expect(\n tweakedFilesForSnapshotConsistency(helper.getFiles()),\n ).toMatchInlineSnapshot(`\n {\n \"/foo/OntologyMetadata.ts\": \"export type $ExpectedClientVersion = 'PLACEHOLDER';\n export const $osdkMetadata = { extraUserAgent: 'typescript-sdk/0.0.0 osdk-cli/0.0.0' };\n\n export const $ontologyRid = 'ridHere';\n \",\n \"/foo/index.ts\": \"export {} from './ontology/actions.js';\n export * as $Actions from './ontology/actions.js';\n export {} from './ontology/interfaces.js';\n export * as $Interfaces from './ontology/interfaces.js';\n export { Person, Todo } from './ontology/objects.js';\n export * as $Objects from './ontology/objects.js';\n export { getCount, returnsTodo } from './ontology/queries.js';\n export * as $Queries from './ontology/queries.js';\n export { $osdkMetadata } from './OntologyMetadata.js';\n export { $ontologyRid } from './OntologyMetadata.js';\n \",\n \"/foo/ontology/actions.ts\": \"export {};\n \",\n \"/foo/ontology/interfaces.ts\": \"export {};\n \",\n \"/foo/ontology/objects.ts\": \"export { Person } from './objects/Person.js';\n export { Todo } from './objects/Todo.js';\n \",\n \"/foo/ontology/objects/Person.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import type { Todo } from './Todo.js';\n import type {\n PropertyKeys as $PropertyKeys,\n ObjectTypeDefinition as $ObjectTypeDefinition,\n ObjectMetadata as $ObjectMetadata,\n } from '@osdk/client';\n import type {\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n OsdkObject as $OsdkObject,\n PropertyValueWireToClient as $PropType,\n SingleLinkAccessor as $SingleLinkAccessor,\n } from '@osdk/client';\n\n export namespace Person {\n export type PropertyKeys = 'email';\n\n export interface Links {\n readonly Todos: Todo.ObjectSet;\n }\n\n export interface Props {\n /**\n * (no ontology metadata)\n */\n readonly email: $PropType['string'];\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<Person, Person.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Person.Props = keyof Person.Props,\n > = $Osdk.Instance<Person, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Person.Props = keyof Person.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface Person extends $ObjectTypeDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'object';\n apiName: 'Person';\n __DefinitionMetadata?: {\n objectSet: Person.ObjectSet;\n props: Person.Props;\n linksType: Person.Links;\n strictProps: Person.StrictProps;\n apiName: 'Person';\n description: 'A person';\n displayName: 'Person';\n icon: {\n type: 'blueprint';\n name: 'document';\n color: 'blue';\n };\n implements: [];\n interfaceMap: {};\n inverseInterfaceMap: {};\n links: {\n Todos: $ObjectMetadata.Link<Todo, true>;\n };\n pluralDisplayName: 'Persons';\n primaryKeyApiName: 'email';\n primaryKeyType: 'string';\n properties: {\n /**\n * (no ontology metadata)\n */\n email: $PropertyDef<'string', 'non-nullable', 'single'>;\n };\n rid: 'ridForPerson';\n status: 'ACTIVE';\n titleProperty: 'email';\n type: 'object';\n visibility: undefined;\n };\n }\n\n export const Person = {\n type: 'object',\n apiName: 'Person',\n osdkMetadata: $osdkMetadata,\n internalDoNotUseMetadata: {\n rid: 'ridForPerson',\n },\n } satisfies Person & { internalDoNotUseMetadata: { rid: string } } as Person;\n \",\n \"/foo/ontology/objects/Todo.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import type { Person } from './Person.js';\n import type {\n PropertyKeys as $PropertyKeys,\n ObjectTypeDefinition as $ObjectTypeDefinition,\n ObjectMetadata as $ObjectMetadata,\n } from '@osdk/client';\n import type {\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n OsdkObject as $OsdkObject,\n PropertyValueWireToClient as $PropType,\n SingleLinkAccessor as $SingleLinkAccessor,\n } from '@osdk/client';\n\n export namespace Todo {\n export type PropertyKeys = 'id' | 'body' | 'complete' | 'array';\n\n export interface Links {\n readonly Assignee: $SingleLinkAccessor<Person>;\n }\n\n export interface Props {\n /**\n * (no ontology metadata)\n */\n readonly array: $PropType['string'][] | undefined;\n /**\n * display name: 'Body',\n *\n * description: The text of the todo\n */\n readonly body: $PropType['string'] | undefined;\n /**\n * (no ontology metadata)\n */\n readonly complete: $PropType['boolean'] | undefined;\n /**\n * (no ontology metadata)\n */\n readonly id: $PropType['integer'];\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<Todo, Todo.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Todo.Props = keyof Todo.Props,\n > = $Osdk.Instance<Todo, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Todo.Props = keyof Todo.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface Todo extends $ObjectTypeDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'object';\n apiName: 'Todo';\n __DefinitionMetadata?: {\n objectSet: Todo.ObjectSet;\n props: Todo.Props;\n linksType: Todo.Links;\n strictProps: Todo.StrictProps;\n apiName: 'Todo';\n description: 'Its a todo item.';\n displayName: 'AwesomeTodoDisplayname';\n icon: {\n type: 'blueprint';\n name: 'document';\n color: 'blue';\n };\n implements: ['SomeInterface'];\n interfaceMap: {\n SomeInterface: {\n SomeProperty: 'body';\n };\n };\n inverseInterfaceMap: {\n SomeInterface: {\n body: 'SomeProperty';\n };\n };\n links: {\n Assignee: $ObjectMetadata.Link<Person, false>;\n };\n pluralDisplayName: 'AwesomeTodoDisplayNames';\n primaryKeyApiName: 'id';\n primaryKeyType: 'integer';\n properties: {\n /**\n * (no ontology metadata)\n */\n array: $PropertyDef<'string', 'nullable', 'array'>;\n /**\n * display name: 'Body',\n *\n * description: The text of the todo\n */\n body: $PropertyDef<'string', 'nullable', 'single'>;\n /**\n * (no ontology metadata)\n */\n complete: $PropertyDef<'boolean', 'nullable', 'single'>;\n /**\n * (no ontology metadata)\n */\n id: $PropertyDef<'integer', 'non-nullable', 'single'>;\n };\n rid: 'ridForTodo';\n status: 'ACTIVE';\n titleProperty: 'body';\n type: 'object';\n visibility: undefined;\n };\n }\n\n export const Todo = {\n type: 'object',\n apiName: 'Todo',\n osdkMetadata: $osdkMetadata,\n internalDoNotUseMetadata: {\n rid: 'ridForTodo',\n },\n } satisfies Todo & { internalDoNotUseMetadata: { rid: string } } as Todo;\n \",\n \"/foo/ontology/queries.ts\": \"export { getCount } from './queries/getCount.js';\n export { returnsTodo } from './queries/returnsTodo.js';\n \",\n \"/foo/ontology/queries/getCount.ts\": \"import type { ObjectSpecifier, QueryDefinition, QueryParam, QueryResult, VersionBound } from '@osdk/client';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n\n export namespace getCount {\n export interface Signature {\n (query: getCount.Parameters): Promise<getCount.ReturnType>;\n }\n\n export interface Parameters {\n /**\n * (no ontology metadata)\n */\n readonly completed: QueryParam.PrimitiveType<'boolean'>;\n }\n\n export type ReturnType = QueryResult.PrimitiveType<'integer'>;\n }\n\n export interface getCount extends QueryDefinition<getCount.Signature>, VersionBound<$ExpectedClientVersion> {\n __DefinitionMetadata?: {\n apiName: 'getCount';\n rid: 'rid.query.1';\n type: 'query';\n version: '1.1.0';\n isFixedVersion: true;\n parameters: {\n /**\n * (no ontology metadata)\n */\n completed: {\n nullable: false;\n type: 'boolean';\n };\n };\n output: {\n nullable: false;\n type: 'integer';\n };\n signature: getCount.Signature;\n };\n apiName: 'getCount';\n type: 'query';\n version: '1.1.0';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const getCount: getCount = {\n apiName: 'getCount',\n type: 'query',\n version: '1.1.0',\n isFixedVersion: true,\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/queries/returnsTodo.ts\": \"import type { ObjectSpecifier, QueryDefinition, QueryParam, QueryResult, VersionBound } from '@osdk/client';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { Todo } from '../objects/Todo.js';\n\n export namespace returnsTodo {\n export interface Signature {\n (query: returnsTodo.Parameters): Promise<returnsTodo.ReturnType>;\n }\n\n export interface Parameters {\n /**\n * description: Random desc so we test jsdoc\n */\n readonly someTodo: QueryParam.ObjectType<Todo>;\n }\n\n export type ReturnType = QueryResult.ObjectType<Todo>;\n }\n\n export interface returnsTodo extends QueryDefinition<returnsTodo.Signature>, VersionBound<$ExpectedClientVersion> {\n __DefinitionMetadata?: {\n apiName: 'returnsTodo';\n rid: 'rid.query.2';\n type: 'query';\n version: '0';\n isFixedVersion: false;\n parameters: {\n /**\n * description: Random desc so we test jsdoc\n */\n someTodo: {\n description: 'Random desc so we test jsdoc';\n nullable: false;\n object: 'Todo';\n type: 'object';\n __OsdkTargetType?: Todo;\n };\n };\n output: {\n nullable: false;\n object: 'Todo';\n type: 'object';\n __OsdkTargetType?: Todo;\n };\n signature: returnsTodo.Signature;\n };\n apiName: 'returnsTodo';\n type: 'query';\n version: '0';\n osdkMetadata: typeof $osdkMetadata;\n }\n\n export const returnsTodo: returnsTodo = {\n apiName: 'returnsTodo',\n type: 'query',\n version: '0',\n isFixedVersion: false,\n osdkMetadata: $osdkMetadata,\n };\n \",\n }\n `);\n });\n });\n\n it(\"can generate an sdk package that is entirely a library\", async () => {\n const mockConsola = vi.spyOn(consola, \"info\");\n\n await expect(\n generateClientSdkVersionTwoPointZero(\n referencedOntology,\n \"\",\n helper.minimalFiles,\n BASE_PATH,\n \"module\",\n ),\n ).resolves.toMatchInlineSnapshot(`undefined`);\n expect(mockConsola).toHaveBeenCalledWith(\n `{\"type\":\"futureUnknownType\"} is not a supported propertyType`,\n );\n\n expect(tweakedFilesForSnapshotConsistency(helper.getFiles()))\n .toMatchInlineSnapshot(`\n {\n \"/foo/OntologyMetadata.ts\": \"export type $ExpectedClientVersion = 'PLACEHOLDER';\n export const $osdkMetadata = { extraUserAgent: '' };\n\n export const $ontologyRid = 'ri.ontology.main.ontology.dep';\n\n export const $branch = 'someRidHere';\n \",\n \"/foo/index.ts\": \"export {} from './ontology/actions.js';\n export * as $Actions from './ontology/actions.js';\n export { SomeInterface } from './ontology/interfaces.js';\n export * as $Interfaces from './ontology/interfaces.js';\n export { Task } from './ontology/objects.js';\n export * as $Objects from './ontology/objects.js';\n export {} from './ontology/queries.js';\n export * as $Queries from './ontology/queries.js';\n export { $osdkMetadata } from './OntologyMetadata.js';\n export { $ontologyRid } from './OntologyMetadata.js';\n \",\n \"/foo/ontology/actions.ts\": \"export {};\n \",\n \"/foo/ontology/interfaces.ts\": \"export { SomeInterface } from './interfaces/SomeInterface.js';\n \",\n \"/foo/ontology/interfaces/SomeInterface.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n\n import type {\n InterfaceDefinition as $InterfaceDefinition,\n InterfaceMetadata as $InterfaceMetadata,\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n PropertyValueWireToClient as $PropType,\n } from '@osdk/client';\n\n export type OsdkObjectLinks$SomeInterface = {};\n\n export namespace SomeInterface {\n export type PropertyKeys = 'spt' | 'spt2';\n\n export interface Props {\n /**\n * display name: 'Some Property'\n */\n readonly spt: $PropType['string'] | undefined;\n /**\n * display name: 'Some Property 2'\n */\n readonly spt2: $PropType['string'] | undefined;\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<SomeInterface, SomeInterface.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof SomeInterface.Props = keyof SomeInterface.Props,\n > = $Osdk.Instance<SomeInterface, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof SomeInterface.Props = keyof SomeInterface.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface SomeInterface extends $InterfaceDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'interface';\n apiName: 'com.example.dep.SomeInterface';\n __DefinitionMetadata?: {\n objectSet: SomeInterface.ObjectSet;\n props: SomeInterface.Props;\n linksType: OsdkObjectLinks$SomeInterface;\n strictProps: SomeInterface.StrictProps;\n apiName: 'com.example.dep.SomeInterface';\n description: undefined;\n displayName: 'Sum Interface';\n implementedBy: [];\n implements: [];\n links: {};\n properties: {\n /**\n * display name: 'Some Property'\n */\n spt: $PropertyDef<'string', 'nullable', 'single'>;\n /**\n * display name: 'Some Property 2'\n */\n spt2: $PropertyDef<'string', 'nullable', 'single'>;\n };\n rid: 'idk2';\n type: 'interface';\n };\n }\n\n export const SomeInterface: SomeInterface = {\n type: 'interface',\n apiName: 'com.example.dep.SomeInterface',\n osdkMetadata: $osdkMetadata,\n };\n \",\n \"/foo/ontology/objects.ts\": \"export { Task } from './objects/Task.js';\n \",\n \"/foo/ontology/objects/Task.ts\": \"import type { PropertyDef as $PropertyDef } from '@osdk/client';\n import { $osdkMetadata } from '../../OntologyMetadata.js';\n import type { $ExpectedClientVersion } from '../../OntologyMetadata.js';\n import type {\n PropertyKeys as $PropertyKeys,\n ObjectTypeDefinition as $ObjectTypeDefinition,\n ObjectMetadata as $ObjectMetadata,\n } from '@osdk/client';\n import type {\n ObjectSet as $ObjectSet,\n Osdk as $Osdk,\n OsdkObject as $OsdkObject,\n PropertyValueWireToClient as $PropType,\n SingleLinkAccessor as $SingleLinkAccessor,\n } from '@osdk/client';\n\n export namespace Task {\n export type PropertyKeys = 'taskId' | 'body';\n\n export type Links = {};\n\n export interface Props {\n /**\n * (no ontology metadata)\n */\n readonly body: $PropType['string'] | undefined;\n /**\n * (no ontology metadata)\n */\n readonly taskId: $PropType['string'];\n }\n export type StrictProps = Props;\n\n export interface ObjectSet extends $ObjectSet<Task, Task.ObjectSet> {}\n\n export type OsdkInstance<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Task.Props = keyof Task.Props,\n > = $Osdk.Instance<Task, OPTIONS, K>;\n\n /** @deprecated use OsdkInstance */\n export type OsdkObject<\n OPTIONS extends never | '$rid' = never,\n K extends keyof Task.Props = keyof Task.Props,\n > = OsdkInstance<OPTIONS, K>;\n }\n\n export interface Task extends $ObjectTypeDefinition {\n osdkMetadata: typeof $osdkMetadata;\n type: 'object';\n apiName: 'com.example.dep.Task';\n __DefinitionMetadata?: {\n objectSet: Task.ObjectSet;\n props: Task.Props;\n linksType: Task.Links;\n strictProps: Task.StrictProps;\n apiName: 'com.example.dep.Task';\n description: undefined;\n displayName: 'Task';\n icon: {\n type: 'blueprint';\n color: 'blue';\n name: 'document';\n };\n implements: [];\n interfaceMap: {};\n inverseInterfaceMap: {};\n links: {};\n pluralDisplayName: 'Tasks';\n primaryKeyApiName: 'taskId';\n primaryKeyType: 'string';\n properties: {\n /**\n * (no ontology metadata)\n */\n body: $PropertyDef<'string', 'nullable', 'single'>;\n /**\n * (no ontology metadata)\n */\n taskId: $PropertyDef<'string', 'non-nullable', 'single'>;\n };\n rid: 'ridForTask';\n status: 'ACTIVE';\n titleProperty: 'taskId';\n type: 'object';\n visibility: undefined;\n };\n }\n\n export const Task = {\n type: 'object',\n apiName: 'com.example.dep.Task',\n osdkMetadata: $osdkMetadata,\n internalDoNotUseMetadata: {\n rid: 'ridForTask',\n },\n } satisfies Task & { internalDoNotUseMetadata: { rid: string } } as Task;\n \",\n \"/foo/ontology/queries.ts\": \"export {};\n \",\n }\n `);\n });\n});\n\nfunction tweakedFilesForSnapshotConsistency(\n files: {\n [k: string]: string;\n },\n) {\n const ret = { ...files };\n\n ret[\"/foo/OntologyMetadata.ts\"] = ret[\"/foo/OntologyMetadata.ts\"].replace(\n /export type \\$ExpectedClientVersion = '.*?';/,\n `export type $ExpectedClientVersion = 'PLACEHOLDER';`,\n );\n\n return ret;\n}\n"],"mappings":"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CAAC;MACvD,CAAC,GAAGP,SAAS,2BAA2B,GAAGzG,MAAM,CAACgH,QAAQ,CAAC;IAC7D,CAAC,CAAC;IAEF,MAAMC,WAAW,GAAG7G,WAAW,CAACsG,MAAM,CAACI,QAAQ,CAAC,CAAC,EAAEL,SAAS,CAAC;IAC7D,KAAK,MAAMS,CAAC,IAAID,WAAW,EAAE;MAC3BE,OAAO,CAACC,KAAK,CACX,GAAGF,CAAC,CAACG,IAAI,EAAEC,QAAQ,IAAIJ,CAAC,CAACG,IAAI,EAAEE,aAAa,CAAC,CAAC,EAAE,EAChDL,CAAC,CAACM,WACJ,CAAC;IACH;;IAEA;IACA,MAAMC,MAAM,GAAGR,WAAW,CAACS,MAAM,CAACR,CAAC,IAAIA,CAAC,CAACS,IAAI,KAAK,IAAI,CAAC;IACvD3H,MAAM,CAACyH,MAAM,CAAC,CAACG,YAAY,CAAC,CAAC,CAAC;IAE9B5H,MAAM,CACJ6H,kCAAkC,CAACnB,MAAM,CAACI,QAAQ,CAAC,CAAC,CACtD,CAAC,CAACgB,qBAAqB,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;EACJ,CACF,CAAC;EAED5H,IAAI,CAAC,sDAAsD,EAAE,YAAY;IACvEwG,MAAM,CAACE,YAAY,CAAClH,OAAO,GAAGS,EAAE,CAAC4H,EAAE,CAAC,YAAyB,CAAC,MAAM,CAAC,CAAC;IAEtE,MAAM/H,MAAM,CAAC,YAAY;MACvB,MAAMA,MAAM,CAACO,oCAAoC,CAC/CD,gBAAgB,EAChB,qCAAqC,EACrCoG,MAAM,CAACE,YAAY,EACnBH,SACF,CAAC,CAAC,CAACuB,OAAO,CAACC,OAAO,CAAC,CAAC;IACtB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFhI,EAAE,CAAC,2EAA2E,EAAE,YAAY;IAC1F,MAAMD,MAAM,CACVO,oCAAoC,CAClC;MAAE,GAAGD;IAAiB,CAAC,EACvB,EAAE,EACFoG,MAAM,CAACE,YAAY,EACnBH,SAAS,EACT,QAAQ,EACRyB,SAAS,EACTA,SAAS,EACTA,SAAS,EACT,IACF,CACF,CAAC;;IAED;IACA;IACA;IACA;EACF,CAAC,CAAC;EAEFjI,EAAE,CAAC,4EAA4E,EAAE,YAAY;IAC3F,MAAMD,MAAM,CACVO,oCAAoC,CAClC+F,sBAAsB,EACtB,EAAE,EACFI,MAAM,CAACE,YAAY,EACnBH,SAAS,EACT,QAAQ,EACRyB,SAAS,EACTA,SAAS,EACTA,SAAS,EACT,IACF,CACF,CAAC,CAACC,QAAQ,CAACL,qBAAqB,CAAC,WAAW,CAAC;IAE7C9H,MAAM,CAAC0G,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAC/DsB,aAAa,CAAC,CAAC;IAElBpI,MAAM,CAAC0G,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CACvDuB,GAAG,CAACD,aAAa,CAAC,CAAC;IAEtBpI,MAAM,CAAC6H,kCAAkC,CAACnB,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC1DgB,qBAAqB,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;EACN,CAAC,CAAC;EAEF7H,EAAE,CAAC,8BAA8B,EAAE,YAAY;IAC7C,MAAMM,oCAAoC,CACxC;MACEkC,QAAQ,EAAEnC,gBAAgB,CAACmC,QAAQ;MACnCY,WAAW,EAAE,CAAC,CAAC;MACfE,cAAc,EAAE,CAAC,CAAC;MAClBW,WAAW,EAAE,CAAC,CAAC;MACflB,UAAU,EAAE,CAAC,CAAC;MACdJ,mBAAmB,EAAE,CAAC,CAAC;MACvBoD,UAAU,EAAE,CAAC;IACf,CAAC,EACD,EAAE,EACFU,MAAM,CAACE,YAAY,EACnBH,SACF,CAAC;IAEDzG,MAAM,CAAC0G,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,GAAGL,SAAS,sBAAsB,CAAC,CAAC,CAAC6B,OAAO,CACnE,cACF,CAAC;EACH,CAAC,CAAC;EAEFpI,IAAI,CAACqI,IAAI,CAAC,wBAAwB,EAAE,YAAY;IAC9C,IAAI;MACF,MAAM5I,KAAK,CAAC,GAAG6I,SAAS,YAAY,EAAE;QAAEC,SAAS,EAAE;MAAK,CAAC,CAAC;IAC5D,CAAC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C,WAAW,CAAC;MAE7C9H,MAAM,CAAC0G,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CACjEgB,qBAAqB,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC;IACN,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/H,QAAQ,CAAC,kCAAkC,EAAE,MAAM;IACjDE,EAAE,CAAC,yBAAyB,EAAE,YAAY;MACxC,MAAMD,MAAM,CACVO,oCAAoC,CAClC0F,mBAAmB,EACnB,EAAE,EACFS,MAAM,CAACE,YAAY,EACnBH,SAAS,EACT,QAAQ,EACR,IAAIsC,GAAG,CAAC,CAAC,CAAC,sBAAsB,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAC5D,IAAIA,GAAG,CAAC,CAAC,CAAC,+BAA+B,EAAE,uBAAuB,CAAC,CAAC,CAAC,EACrE,IAAIA,GAAG,CAAC,CAAC,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAC3D,IACF,CACF,CAAC,CAACZ,QAAQ,CAACL,qBAAqB,CAAC,WAAW,CAAC;MAE7C9H,MAAM,CAAC0G,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAC9DgB,qBAAqB,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC;IACN,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/H,QAAQ,CAAC,uBAAuB,EAAE,MAAM;IACtCE,EAAE,CAAC,qFAAqF,EAAE,YAAY;MACpG,MAAMM,oCAAoC,CACxC;QACEkC,QAAQ,EAAEnC,gBAAgB,CAACmC,QAAQ;QACnCY,WAAW,EAAE,CAAC,CAAC;QACfE,cAAc,EAAE,CAAC,CAAC;QAClBW,WAAW,EAAE5D,gBAAgB,CAAC4D,WAAW;QACzClB,UAAU,EAAE;UACV,gBAAgB,EAAE;YAChB,GAAG1C,gBAAgB,CAAC0C,UAAU,CAACiG;UACjC,CAAC;UACD,mBAAmB,EAAE;YACnB,GAAG3I,gBAAgB,CAAC0C,UAAU,CAACkG,WAAW;YAC1C7C,OAAO,EAAE;UACX;QACF,CAAC;QACDzD,mBAAmB,EAAE,CAAC,CAAC;QACvBoD,UAAU,EAAE,CAAC;MACf,CAAC,EACD,qCAAqC,EACrCU,MAAM,CAACE,YAAY,EACnBH,SAAS,EACT,QAAQ,EACR,IAAIsC,GAAG,CAAC,CAAC,EACT,IAAIA,GAAG,CAAC,CAAC,EACT,IAAIA,GAAG,CAAC,CAAC,EACT,KAAK,EACL,CAAC,UAAU,CACb,CAAC;MAED/I,MAAM,CACJ6H,kCAAkC,CAACnB,MAAM,CAACI,QAAQ,CAAC,CAAC,CACtD,CAAC,CAACgB,qBAAqB,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF7H,EAAE,CAAC,wDAAwD,EAAE,YAAY;IACvE,MAAMkJ,WAAW,GAAGhJ,EAAE,CAACiJ,KAAK,CAAC5J,OAAO,EAAE,MAAM,CAAC;IAE7C,MAAMQ,MAAM,CACVO,oCAAoC,CAClCyE,kBAAkB,EAClB,EAAE,EACF0B,MAAM,CAACE,YAAY,EACnBH,SAAS,EACT,QACF,CACF,CAAC,CAAC0B,QAAQ,CAACL,qBAAqB,CAAC,WAAW,CAAC;IAC7C9H,MAAM,CAACmJ,WAAW,CAAC,CAACE,oBAAoB,CACtC,8DACF,CAAC;IAEDrJ,MAAM,CAAC6H,kCAAkC,CAACnB,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC1DgB,qBAAqB,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;EACN,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,SAASD,kCAAkCA,CACzChB,KAEC,EACD;EACA,MAAMyC,GAAG,GAAG;IAAE,GAAGzC;EAAM,CAAC;EAExByC,GAAG,CAAC,0BAA0B,CAAC,GAAGA,GAAG,CAAC,0BAA0B,CAAC,CAACC,OAAO,CACvE,8CAA8C,EAC9C,qDACF,CAAC;EAED,OAAOD,GAAG;AACZ","ignoreList":[]}
|