dan 5ade78ddb3
Add fast path skipping UTF8 length counting (#2819)
* Harden UTF8 length test cases

* Harden tests to account for new fast path

* Add fast paths that skip UTF8 encoding
2024-12-10 19:45:04 +00:00

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