Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
flatten(schema: JsonObject): Observable {
this._ajv.removeSchema(schema);
// Supports both synchronous and asynchronous compilation, by trying the synchronous
// version first, then if refs are missing this will fails.
// We also add any refs from external fetched schemas so that those will also be used
// in synchronous (if available).
let validator: Observable;
try {
this._currentCompilationSchemaInfo = undefined;
validator = of(this._ajv.compile(schema)).pipe(
tap(() => this._currentCompilationSchemaInfo = undefined),
);
} catch (e) {
// Propagate the error.
if (!(e instanceof (ajv.MissingRefError as {} as Function))) {
return throwError(e);
}
this._currentCompilationSchemaInfo = undefined;
validator = from(this._ajv.compileAsync(schema)).pipe(
tap(() => this._currentCompilationSchemaInfo = undefined),
);
}
return validator.pipe(
switchMap(validate => {
const self = this;
function visitor(
current: JsonObject | JsonArray,
pointer: JsonPointer,
smartDefaultRecord: new Map(),
promptDefinitions: [],
};
this._ajv.removeSchema(schema);
// Supports both synchronous and asynchronous compilation, by trying the synchronous
// version first, then if refs are missing this will fails.
// We also add any refs from external fetched schemas so that those will also be used
// in synchronous (if available).
let validator;
try {
this._currentCompilationSchemaInfo = schemaInfo;
validator = rxjs_1.of(this._ajv.compile(schema));
}
catch (e) {
// Propagate the error.
if (!(e instanceof ajv.MissingRefError)) {
return rxjs_1.throwError(e);
}
try {
validator = rxjs_1.from(this._ajv.compileAsync(schema));
}
catch (e) {
return rxjs_1.throwError(e);
}
}
return validator
.pipe(operators_1.map(validate => (data, options) => {
const validationOptions = Object.assign({ withPrompts: true, applyPostTransforms: true, applyPreTransforms: true }, options);
const validationContext = {
promptFieldsWithValue: new Set(),
};
let result = rxjs_1.of(data);
compile(schema) {
// Supports both synchronous and asynchronous compilation, by trying the synchronous
// version first, then if refs are missing this will fails.
// We also add any refs from external fetched schemas so that those will also be used
// in synchronous (if available).
let validator;
try {
const maybeFnValidate = this._ajv.compile(Object.assign({ $async: this._smartDefaultKeyword ? true : undefined }, schema));
validator = rxjs_1.of(maybeFnValidate);
}
catch (e) {
// Propagate the error.
if (!(e instanceof ajv.MissingRefError)) {
throw e;
}
validator = new rxjs_1.Observable(obs => {
this._ajv.compileAsync(schema)
.then(validate => {
obs.next(validate);
obs.complete();
}, err => {
obs.error(err);
});
});
}
return validator
.pipe(operators_1.map(validate => (data) => {
return rxjs_1.of(data).pipe(...[...this._pre].map(visitor => operators_1.concatMap((data) => {
return visitor_1.visitJson(data, visitor, schema, this._resolver, validate);
smartDefaultRecord: new Map(),
promptDefinitions: [],
};
this._ajv.removeSchema(schema);
// Supports both synchronous and asynchronous compilation, by trying the synchronous
// version first, then if refs are missing this will fails.
// We also add any refs from external fetched schemas so that those will also be used
// in synchronous (if available).
let validator;
try {
this._currentCompilationSchemaInfo = schemaInfo;
validator = rxjs_1.of(this._ajv.compile(schema));
}
catch (e) {
// Propagate the error.
if (!(e instanceof ajv.MissingRefError)) {
return rxjs_1.throwError(e);
}
try {
validator = rxjs_1.from(this._ajv.compileAsync(schema));
}
catch (e) {
return rxjs_1.throwError(e);
}
}
return validator
.pipe(operators_1.map(validate => (data, options) => {
const validationOptions = Object.assign({ withPrompts: true, applyPostTransforms: true, applyPreTransforms: true }, options);
const validationContext = {
promptFieldsWithValue: new Set(),
};
let result = rxjs_1.of(data);
results.push(
...validator.errors.map(({ message, dataPath }) => ({
message: message ? cleanAJVErrorMessage(message, dataPath, void 0) : '',
path: [
...path,
...dataPath
.split('/')
.slice(1)
.map(decodePointerFragment),
],
})),
);
}
}
} catch (ex) {
if (ex instanceof AJV.MissingRefError) {
results.push({
message: ex.message,
path,
});
} else {
throw ex;
}
}
return results;
};