Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/apidom-ns-json-schema-draft-4/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"registry": "https://npm.pkg.github.com"
},
"type": "module",
"unpkg": "./dist/apidom-ns-openapi3-1.browser.min.js",
"unpkg": "./dist/apidom-ns-json-schema-draft-4.browser.min.js",
"main": "./cjs/index.cjs",
"exports": {
"types": "./types/dist.d.ts",
Expand Down
162 changes: 156 additions & 6 deletions packages/apidom-ns-json-schema-draft-4/src/elements/JSONSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
Meta,
} from '@swagger-api/apidom-core';

import JSONReferenceElement from './JSONReference';
import MediaElement from './Media';

class JSONSchema extends ObjectElement {
Expand All @@ -27,10 +28,18 @@ class JSONSchema extends ObjectElement {
return this.get('id');
}

set idProp(idProp: StringElement | undefined) {
this.set('id', idProp);
}

get $schema(): StringElement | undefined {
return this.get('$schema');
}

set $schema($schema: StringElement | undefined) {
this.set('idProp', $schema);
}

/**
* Validation vocabulary
*
Expand All @@ -45,22 +54,42 @@ class JSONSchema extends ObjectElement {
return this.get('multipleOf');
}

set multipleOf(multipleOf: NumberElement | undefined) {
this.set('multipleOf', multipleOf);
}

get maximum(): NumberElement | undefined {
return this.get('maximum');
}

get exclusiveMaximum(): NumberElement | undefined {
set maximum(maximum: NumberElement | undefined) {
this.set('maximum', maximum);
}

get exclusiveMaximum(): BooleanElement | undefined {
return this.get('exclusiveMaximum');
}

set exclusiveMaximum(exclusiveMaximum: BooleanElement | undefined) {
this.set('exclusiveMaximum', exclusiveMaximum);
}

get minimum(): NumberElement | undefined {
return this.get('minimum');
}

get exclusiveMinimum(): NumberElement | undefined {
set minimum(minimum: NumberElement | undefined) {
this.set('minimum', minimum);
}

get exclusiveMinimum(): BooleanElement | undefined {
return this.get('exclusiveMinimum');
}

set exclusiveMinimum(exclusiveMinimum: BooleanElement | undefined) {
this.set('exclusiveMinimum', exclusiveMinimum);
}

/**
* Validation keywords for strings
*/
Expand All @@ -69,38 +98,69 @@ class JSONSchema extends ObjectElement {
return this.get('maxLength');
}

set maxLength(maxLength: NumberElement | undefined) {
this.set('maxLength', maxLength);
}

get minLength(): NumberElement | undefined {
return this.get('minLength');
}

set minLength(minLength: NumberElement | undefined) {
this.set('minLength', minLength);
}

get pattern(): StringElement | undefined {
return this.get('pattern');
}

set pattern(pattern: StringElement | undefined) {
this.set('pattern', pattern);
}
/**
* Validation keywords for arrays
*/

get additionalItems(): BooleanElement | this | undefined {
get additionalItems(): this | JSONReferenceElement | BooleanElement | undefined {
return this.get('additionalItems');
}

get items(): this | ArrayElement | undefined {
set additionalItems(additionalItems: this | JSONReferenceElement | BooleanElement | undefined) {
this.set('additionalItems', additionalItems);
}

get items(): this | JSONReferenceElement | ArrayElement | undefined {
return this.get('items');
}

set items(items: this | JSONReferenceElement | ArrayElement | undefined) {
this.set('items', items);
}

get maxItems(): NumberElement | undefined {
return this.get('maxItems');
}

set maxItems(maxItems: NumberElement | undefined) {
this.set('maxItems', maxItems);
}

get minItems(): NumberElement | undefined {
return this.get('minItems');
}

set minItems(minItems: NumberElement | undefined) {
this.set('minItems', minItems);
}

get uniqueItems(): BooleanElement | undefined {
return this.get('uniqueItems');
}

set uniqueItems(uniqueItems: BooleanElement | undefined) {
this.set('uniqueItems', uniqueItems);
}

/**
* Validation keywords for objects
*/
Expand All @@ -109,30 +169,60 @@ class JSONSchema extends ObjectElement {
return this.get('maxProperties');
}

set maxProperties(maxProperties: NumberElement | undefined) {
this.set('maxProperties', maxProperties);
}

get minProperties(): NumberElement | undefined {
return this.get('minProperties');
}

set minProperties(minProperties: NumberElement | undefined) {
this.set('minProperties', minProperties);
}

get required(): ArrayElement | undefined {
return this.get('required');
}

set required(required: ArrayElement | undefined) {
this.set('required', required);
}

get properties(): ObjectElement | undefined {
return this.get('properties');
}

get additionalProperties(): BooleanElement | this | undefined {
set properties(properties: ObjectElement | undefined) {
this.set('properties', properties);
}

get additionalProperties(): this | JSONReferenceElement | BooleanElement | undefined {
return this.get('additionalProperties');
}

set additionalProperties(
additionalProperties: this | JSONReferenceElement | BooleanElement | undefined,
) {
this.set('additionalProperties', additionalProperties);
}

get patternProperties(): ObjectElement | undefined {
return this.get('patternProperties');
}

set patternProperties(patternProperties: ObjectElement | undefined) {
this.set('patternProperties', patternProperties);
}

get dependencies(): ObjectElement | undefined {
return this.get('dependencies');
}

set dependencies(dependencies: ObjectElement | undefined) {
this.set('dependencies', dependencies);
}

/**
* Validation keywords for any instance type
*/
Expand All @@ -141,30 +231,58 @@ class JSONSchema extends ObjectElement {
return this.get('enum');
}

set enum(enumValue: ArrayElement | undefined) {
this.set('enum', enumValue);
}

get type(): ArrayElement | StringElement | undefined {
return this.get('type');
}

set type(type: ArrayElement | StringElement | undefined) {
this.set('type', type);
}

get allOf(): ArrayElement | undefined {
return this.get('allOf');
}

set allOf(allOf: ArrayElement | undefined) {
this.set('allOf', allOf);
}

get anyOf(): ArrayElement | undefined {
return this.get('anyOf');
}

set anyOf(anyOf: ArrayElement | undefined) {
this.set('anyOf', anyOf);
}

get oneOf(): ArrayElement | undefined {
return this.get('oneOf');
}

get not(): this | undefined {
set oneOf(oneOf: ArrayElement | undefined) {
this.set('oneOf', oneOf);
}

get not(): this | JSONReferenceElement | undefined {
return this.get('not');
}

set not(not: this | JSONReferenceElement | undefined) {
this.set('not', not);
}

get definitions(): ObjectElement | undefined {
return this.get('definitions');
}

set definitions(definitions: ObjectElement | undefined) {
this.set('definitions', definitions);
}

/**
* Metadata keywords
*
Expand All @@ -175,14 +293,26 @@ class JSONSchema extends ObjectElement {
return this.get('title');
}

set title(title: StringElement | undefined) {
this.set('title', title);
}

get description(): StringElement | undefined {
return this.get('description');
}

set description(description: StringElement | undefined) {
this.set('description', description);
}

get default(): Element | undefined {
return this.get('default');
}

set default(defaultValue: Element | undefined) {
this.set('default', defaultValue);
}

/**
* Semantic validation with "format"
*
Expand All @@ -193,6 +323,10 @@ class JSONSchema extends ObjectElement {
return this.get('format');
}

set format(format: StringElement | undefined) {
this.set('format', format);
}

/**
* JSON Hyper-Schema
*
Expand All @@ -203,17 +337,33 @@ class JSONSchema extends ObjectElement {
return this.get('base');
}

set base(base: StringElement | undefined) {
this.set('base', base);
}

get links(): ArrayElement | undefined {
return this.get('links');
}

set links(links: ArrayElement | undefined) {
this.set('links', links);
}

get media(): MediaElement | undefined {
return this.get('media');
}

set media(media: MediaElement | undefined) {
this.set('media', media);
}

get readOnly(): BooleanElement | undefined {
return this.get('readOnly');
}

set readOnly(readOnly: BooleanElement | undefined) {
this.set('readOnly', readOnly);
}
}

export default JSONSchema;
Loading