MCPcopy Create free account
hub / github.com/chainjet/platform / fixObjectTypes

Function fixObjectTypes

libs/definitions/src/utils/field.utils.ts:151–197  ·  view source on GitHub ↗
(obj: Record<string, any>, schema: JSONSchema7)

Source from the content-addressed store, hash-verified

149}
150
151export function fixObjectTypes(obj: Record<string, any>, schema: JSONSchema7): Record<string, any> {
152 if (!schema?.properties) {
153 return obj
154 }
155 if (!obj || typeof obj !== 'object') {
156 return obj
157 }
158 for (const [key, value] of Object.entries(obj)) {
159 const type: JSONSchema7TypeName = schema.properties[key] && (schema.properties[key] as any).type
160 switch (type) {
161 case 'object':
162 obj[key] = fixObjectTypes(value, schema.properties![key] as JSONSchema7)
163 break
164 case 'array':
165 if (Array.isArray(value)) {
166 obj[key] = value.map((item) => {
167 if (typeof item === 'object') {
168 return fixObjectTypes(item, (schema.properties![key] as any).items as JSONSchema7)
169 } else {
170 return item
171 }
172 })
173 } else {
174 obj[key] = value
175 }
176
177 break
178 case 'boolean':
179 obj[key] = value === 'true' ? true : value === 'false' ? false : value
180 break
181 case 'number':
182 obj[key] = Number.isFinite(Number(value)) ? Number(value) : value
183 break
184 case 'integer':
185 obj[key] = Number.isInteger(Number(value)) ? Number(value) : value
186 break
187 case 'null':
188 obj[key] = value === 'null' ? null : value
189 break
190 case 'string':
191 default:
192 obj[key] = value
193 break
194 }
195 }
196 return obj
197}

Callers 2

forkMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected