|
Last change
on this file since a762898 was a762898, checked in by istevanoska <ilinastevanoska@…>, 5 months ago |
|
Added visualizations
|
-
Property mode
set to
100644
|
|
File size:
1.0 KB
|
| Line | |
|---|
| 1 | import type { StandardSchemaV1 } from '@standard-schema/spec'
|
|---|
| 2 | import { SchemaError } from '@standard-schema/utils'
|
|---|
| 3 | import type { SchemaType } from './endpointDefinitions'
|
|---|
| 4 |
|
|---|
| 5 | export class NamedSchemaError extends SchemaError {
|
|---|
| 6 | constructor(
|
|---|
| 7 | issues: readonly StandardSchemaV1.Issue[],
|
|---|
| 8 | public readonly value: any,
|
|---|
| 9 | public readonly schemaName: `${SchemaType}Schema`,
|
|---|
| 10 | public readonly _bqMeta: any,
|
|---|
| 11 | ) {
|
|---|
| 12 | super(issues)
|
|---|
| 13 | }
|
|---|
| 14 | }
|
|---|
| 15 |
|
|---|
| 16 | export const shouldSkip = (
|
|---|
| 17 | skipSchemaValidation: boolean | SchemaType[] | undefined,
|
|---|
| 18 | schemaName: SchemaType,
|
|---|
| 19 | ) =>
|
|---|
| 20 | Array.isArray(skipSchemaValidation)
|
|---|
| 21 | ? skipSchemaValidation.includes(schemaName)
|
|---|
| 22 | : !!skipSchemaValidation
|
|---|
| 23 |
|
|---|
| 24 | export async function parseWithSchema<Schema extends StandardSchemaV1>(
|
|---|
| 25 | schema: Schema,
|
|---|
| 26 | data: unknown,
|
|---|
| 27 | schemaName: `${SchemaType}Schema`,
|
|---|
| 28 | bqMeta: any,
|
|---|
| 29 | ): Promise<StandardSchemaV1.InferOutput<Schema>> {
|
|---|
| 30 | const result = await schema['~standard'].validate(data)
|
|---|
| 31 | if (result.issues) {
|
|---|
| 32 | throw new NamedSchemaError(result.issues, data, schemaName, bqMeta)
|
|---|
| 33 | }
|
|---|
| 34 | return result.value
|
|---|
| 35 | }
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.