MCPcopy Create free account
hub / github.com/Effect-TS/effect / transformSchema

Function transformSchema

packages/effect/src/JsonSchema.ts:850–893  ·  view source on GitHub ↗
(
  node: unknown,
  transform: (schema: Record<string, unknown>) => Record<string, unknown>
)

Source from the content-addressed store, hash-verified

848}
849
850function transformSchema(
851 node: unknown,
852 transform: (schema: Record<string, unknown>) => Record<string, unknown>
853): unknown {
854 return walk(node)
855
856 function walk(node: unknown): unknown {
857 if (!Predicate.isObject(node)) return node
858
859 const out: Record<string, unknown> = {}
860 for (const key of Object.keys(node)) {
861 const value = node[key]
862 let transformed = value
863 switch (key) {
864 case "$defs":
865 case "properties":
866 case "patternProperties":
867 case "dependentSchemas":
868 transformed = mapObject(value, walk) ?? value
869 break
870 case "allOf":
871 case "anyOf":
872 case "oneOf":
873 case "prefixItems":
874 transformed = Array.isArray(value) ? value.map(walk) : value
875 break
876 case "not":
877 case "additionalProperties":
878 case "propertyNames":
879 case "unevaluatedProperties":
880 case "items":
881 case "contains":
882 case "unevaluatedItems":
883 case "if":
884 case "then":
885 case "else":
886 case "contentSchema":
887 transformed = walk(value)
888 }
889 InternalRecord.assignProperty(out, key, transformed)
890 }
891 return transform(out)
892 }
893}
894
895/** @internal */
896export function rewriteRefs(schema: JsonSchema, rewrite: ($ref: string) => string): JsonSchema {

Callers 2

toSchemaDraft07Function · 0.85
rewriteRefsFunction · 0.85

Calls 1

walkFunction · 0.70

Tested by

no test coverage detected