5ade78ddb3
* Harden UTF8 length test cases * Harden tests to account for new fast path * Add fast paths that skip UTF8 encoding
546 lines
11 KiB
TypeScript
546 lines
11 KiB
TypeScript
import { LexiconDoc } from '../../src/index'
|
|
|
|
const lexicons: LexiconDoc[] = [
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.kitchenSink',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
description: 'A record',
|
|
key: 'tid',
|
|
record: {
|
|
type: 'object',
|
|
required: [
|
|
'object',
|
|
'array',
|
|
'boolean',
|
|
'integer',
|
|
'string',
|
|
'bytes',
|
|
'cidLink',
|
|
],
|
|
properties: {
|
|
object: { type: 'ref', ref: '#object' },
|
|
array: { type: 'array', items: { type: 'string' } },
|
|
boolean: { type: 'boolean' },
|
|
integer: { type: 'integer' },
|
|
string: { type: 'string' },
|
|
bytes: { type: 'bytes' },
|
|
cidLink: { type: 'cid-link' },
|
|
},
|
|
},
|
|
},
|
|
object: {
|
|
type: 'object',
|
|
required: ['object', 'array', 'boolean', 'integer', 'string'],
|
|
properties: {
|
|
object: { type: 'ref', ref: '#subobject' },
|
|
array: { type: 'array', items: { type: 'string' } },
|
|
boolean: { type: 'boolean' },
|
|
integer: { type: 'integer' },
|
|
string: { type: 'string' },
|
|
},
|
|
},
|
|
subobject: {
|
|
type: 'object',
|
|
required: ['boolean'],
|
|
properties: {
|
|
boolean: { type: 'boolean' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.query',
|
|
defs: {
|
|
main: {
|
|
type: 'query',
|
|
description: 'A query',
|
|
parameters: {
|
|
type: 'params',
|
|
required: ['boolean', 'integer'],
|
|
properties: {
|
|
boolean: { type: 'boolean' },
|
|
integer: { type: 'integer' },
|
|
string: { type: 'string' },
|
|
array: { type: 'array', items: { type: 'string' } },
|
|
def: { type: 'integer', default: 0 },
|
|
},
|
|
},
|
|
output: {
|
|
encoding: 'application/json',
|
|
schema: { type: 'ref', ref: 'com.example.kitchenSink#object' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.procedure',
|
|
defs: {
|
|
main: {
|
|
type: 'procedure',
|
|
description: 'A procedure',
|
|
parameters: {
|
|
type: 'params',
|
|
required: ['boolean', 'integer'],
|
|
properties: {
|
|
boolean: { type: 'boolean' },
|
|
integer: { type: 'integer' },
|
|
string: { type: 'string' },
|
|
array: { type: 'array', items: { type: 'string' } },
|
|
},
|
|
},
|
|
input: {
|
|
encoding: 'application/json',
|
|
schema: { type: 'ref', ref: 'com.example.kitchenSink#object' },
|
|
},
|
|
output: {
|
|
encoding: 'application/json',
|
|
schema: { type: 'ref', ref: 'com.example.kitchenSink#object' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.optional',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
object: { type: 'ref', ref: 'com.example.kitchenSink#object' },
|
|
array: { type: 'array', items: { type: 'string' } },
|
|
boolean: { type: 'boolean' },
|
|
integer: { type: 'integer' },
|
|
string: { type: 'string' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.default',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
required: ['boolean'],
|
|
properties: {
|
|
boolean: { type: 'boolean', default: false },
|
|
integer: { type: 'integer', default: 0 },
|
|
string: { type: 'string', default: '' },
|
|
object: { type: 'ref', ref: '#object' },
|
|
},
|
|
},
|
|
},
|
|
object: {
|
|
type: 'object',
|
|
properties: {
|
|
boolean: { type: 'boolean', default: true },
|
|
integer: { type: 'integer', default: 1 },
|
|
string: { type: 'string', default: 'x' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.union',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
description: 'A record',
|
|
key: 'tid',
|
|
record: {
|
|
type: 'object',
|
|
required: ['unionOpen', 'unionClosed'],
|
|
properties: {
|
|
unionOpen: {
|
|
type: 'union',
|
|
refs: [
|
|
'com.example.kitchenSink#object',
|
|
'com.example.kitchenSink#subobject',
|
|
],
|
|
},
|
|
unionClosed: {
|
|
type: 'union',
|
|
closed: true,
|
|
refs: [
|
|
'com.example.kitchenSink#object',
|
|
'com.example.kitchenSink#subobject',
|
|
],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.unknown',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
description: 'A record',
|
|
key: 'tid',
|
|
record: {
|
|
type: 'object',
|
|
required: ['unknown'],
|
|
properties: {
|
|
unknown: { type: 'unknown' },
|
|
optUnknown: { type: 'unknown' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.arrayLength',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
array: {
|
|
type: 'array',
|
|
minLength: 2,
|
|
maxLength: 4,
|
|
items: { type: 'integer' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.boolConst',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
boolean: {
|
|
type: 'boolean',
|
|
const: false,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.integerRange',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
integer: {
|
|
type: 'integer',
|
|
minimum: 2,
|
|
maximum: 4,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.integerEnum',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
integer: {
|
|
type: 'integer',
|
|
enum: [1, 2],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.integerConst',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
integer: {
|
|
type: 'integer',
|
|
const: 0,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.stringLength',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
string: {
|
|
type: 'string',
|
|
minLength: 2,
|
|
maxLength: 4,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.stringLengthNoMinLength',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
string: {
|
|
type: 'string',
|
|
maxLength: 4,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.stringLengthGrapheme',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
string: {
|
|
type: 'string',
|
|
minGraphemes: 2,
|
|
maxGraphemes: 4,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.stringEnum',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
string: {
|
|
type: 'string',
|
|
enum: ['a', 'b'],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.stringConst',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
string: {
|
|
type: 'string',
|
|
const: 'a',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.datetime',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
datetime: { type: 'string', format: 'datetime' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.uri',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
uri: { type: 'string', format: 'uri' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.atUri',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
atUri: { type: 'string', format: 'at-uri' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.did',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
did: { type: 'string', format: 'did' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.handle',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
handle: { type: 'string', format: 'handle' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.atIdentifier',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
atIdentifier: { type: 'string', format: 'at-identifier' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.nsid',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
nsid: { type: 'string', format: 'nsid' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.cid',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
cid: { type: 'string', format: 'cid' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.language',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
language: { type: 'string', format: 'language' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
lexicon: 1,
|
|
id: 'com.example.byteLength',
|
|
defs: {
|
|
main: {
|
|
type: 'record',
|
|
record: {
|
|
type: 'object',
|
|
properties: {
|
|
bytes: {
|
|
type: 'bytes',
|
|
minLength: 2,
|
|
maxLength: 4,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
]
|
|
|
|
export default lexicons
|