// This test tests the conversion and ordering of $defs. #noverify -- definition.json -- { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "http://cuelang.org/go/encoding/openapi/testdata/order.json", "$defs": { "address": { "type": "object", "properties": { "city": { "type": "string" } } }, "int": { "type": "integer" }, "string-int": { "type": [ "integer", "string" ] }, "person": { "type": "object", "properties": { "name": { "type": "string" }, "children": { "type": "object", "properties": { "x": { "$ref": "http://acme.com/external.json#/properties/foo" }, "a": { "$ref": "#/$defs/int" }, "b": { "$ref": "http://cuelang.org/person.json#/$defs/int" }, "c": { "$ref": "http://cuelang.org/go/encoding/openapi/testdata/order.json#/$defs/int" }, "d": { "$ref": "http://cuelang.org/go/encoding/openapi/testdata/order.json#/$defs/address" }, "e": { "$ref": "http://cuelang.org/go/encoding/openapi/testdata/order.json#/$defs/string-int" }, "f": { "$ref": "http://cuelang.org/person.json" }, "g": { "$ref": "http://acme.com/external.json#/definitions/foo" }, "h": { "$ref": "http://acme.com/external.json#/properties/foo" }, "i": { "$ref": "http://acme.com/external.json" }, "j": { "$ref": "http://acme.com/external-foo.json" }, "k": { "$ref": "http://acme.com/external-bar.json" }, "z": {} } } }, "$id": "http://cuelang.org/person.json", "$defs": { "int": { "type": "integer" } } } }, "type": "object", "properties": { "person": { "$ref": "#/$defs/person" }, "billing_address": { "$ref": "#/$defs/address" }, "shipping_address": { "$ref": "#/$defs/address" } } } -- out.cue -- import ( "acme.com/external.json:external" "acme.com/external-foo.json:schema" schema_5 "acme.com/external-bar.json:schema" ) @jsonschema(schema="http://json-schema.org/draft-07/schema#") @jsonschema(id="http://cuelang.org/go/encoding/openapi/testdata/order.json") person?: #person billing_address?: #address shipping_address?: #address #address: { city?: string ... } #int_1=#int: int #: "string-int": int | string #person: { @jsonschema(id="http://cuelang.org/person.json") name?: string children?: { x?: external.foo a?: #int b?: #int c?: #int_1 d?: #address e?: #["string-int"] f?: #person g?: external.#foo h?: external.foo i?: external j?: schema k?: schema_5 z?: _ ... } #int: int ... } ...