Skip to content

Commit a7ae90a

Browse files
authored
Merge pull request #52 from x0k/fix-validators-docs
Fix validators docs
2 parents a16f175 + cda85ba commit a7ae90a

File tree

16 files changed

+143
-8
lines changed

16 files changed

+143
-8
lines changed

.changeset/silly-readers-invent.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"docs": minor
3+
---
4+
5+
- Fix validators instantiation code on `Multiple forms` page
6+
- Add API section to validator pages

apps/docs/src/content/docs/advanced/_multiple-forms.svelte

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,25 @@
1414
...theme,
1515
schema,
1616
translation,
17-
validator: createValidator2(),
1817
onSubmit: (v: string) => window.alert(v),
1918
};
2019
2120
const [form1, form1Ctx] = createForm2({
2221
...common,
2322
initialValue: "foo",
2423
idPrefix: "form1",
24+
validator: createValidator2({
25+
idPrefix: "form1",
26+
}),
2527
});
2628
2729
const [form2, form2Ctx] = createForm2({
2830
...common,
2931
initialValue: "bar",
3032
idPrefix: "form2",
33+
validator: createValidator2({
34+
idPrefix: "form2",
35+
})
3136
});
3237
</script>
3338

apps/docs/src/content/docs/advanced/custom-validation.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,9 @@ function createCustomValidator(
8888
};
8989
}
9090

91-
const validator = createCustomValidator(createValidator2());
91+
const validator = createCustomValidator(createValidator2({
92+
// validator options
93+
}));
9294
```
9395

9496
<LinkCard title="Validator API reference" href="../../api-reference/validator/" />

apps/docs/src/content/docs/integrations/_sveltekit-client.svelte.invalid renamed to apps/docs/src/content/docs/integrations/_sveltekit-client.api.svelte

File renamed without changes.

apps/docs/src/content/docs/integrations/_sveltekit-server.ts.invalid renamed to apps/docs/src/content/docs/integrations/_sveltekit-server.api.ts

File renamed without changes.

apps/docs/src/content/docs/integrations/sveltekit.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import { DEFAULT_ID_SEPARATOR, DEFAULT_PSEUDO_ID_SEPARATOR } from '@sjsf/form';
99

1010
import Npm from '@/components/npm.astro';
1111

12-
import clientCode from './_sveltekit-client.svelte.invalid?raw';
13-
import serverCode from './_sveltekit-server.ts.invalid?raw';
12+
import clientCode from './_sveltekit-client.api.svelte?raw';
13+
import serverCode from './_sveltekit-server.api.ts?raw';
1414

1515
:::caution
1616

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import type { Options, Ajv, ValidateFunction, AsyncValidateFunction } from "ajv";
2+
import type { UiSchemaRoot, Schema, Config } from '@sjsf/form'
3+
import type { AsyncValidator, Validator } from '@sjsf/ajv8-validator'
4+
5+
interface AbstractValidatorOptions {
6+
ajv: Ajv;
7+
/**
8+
* Necessary for correct inference of the field title
9+
* @default {}
10+
*/
11+
uiSchema?: UiSchemaRoot;
12+
/** @default DEFAULT_ID_PREFIX */
13+
idPrefix?: string;
14+
/** @default DEFAULT_ID_SEPARATOR */
15+
idSeparator?: string;
16+
/** @default DEFAULT_PSEUDO_ID_SEPARATOR */
17+
idPseudoSeparator?: string;
18+
}
19+
20+
interface ValidatorOptions extends AbstractValidatorOptions {
21+
/** @default makeSchemaCompiler(ajv, false) */
22+
compileSchema?: (schema: Schema, rootSchema: Schema) => ValidateFunction;
23+
/** @default makeFieldSchemaCompiler(ajv, false) */
24+
compileFieldSchema?: (config: Config) => ValidateFunction;
25+
}
26+
27+
type FactoryOptions<O> = Omit<O, "ajv"> & {
28+
/** @default DEFAULT_AJV_CONFIG */
29+
ajvOptions?: Options;
30+
/** @default addFormComponents(new Ajv(ajvOptions)) */
31+
ajv?: Ajv;
32+
};
33+
34+
function createValidator2(options?: FactoryOptions<ValidatorOptions>): Validator
35+
36+
interface AsyncValidatorOptions extends AbstractValidatorOptions {
37+
/** @default makeSchemaCompiler(ajv, false) */
38+
compileSchema?: (schema: Schema, rootSchema: Schema) => ValidateFunction;
39+
/** @default makeSchemaCompiler(ajv, true) */
40+
compileAsyncSchema?: (
41+
schema: Schema,
42+
rootSchema: Schema
43+
) => AsyncValidateFunction;
44+
/** @default makeFieldSchemaCompiler(ajv, true) */
45+
compileAsyncFieldSchema?: (config: Config) => AsyncValidateFunction;
46+
}
47+
48+
function createAsyncValidator(options?: FactoryOptions<AsyncValidatorOptions>): AsyncValidator

apps/docs/src/content/docs/validators/_ajv.svelte

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
77
import { schema, uiSchema } from './_shared';
88
9-
const validator = createValidator2();
9+
const validator = createValidator2({
10+
uiSchema
11+
});
1012
1113
const form = useCustomForm({
1214
schema,
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import type { Validator as CfValidator } from "@cfworker/json-schema";
2+
import type { Schema, UiSchemaRoot, Config } from "@sjsf/form";
3+
import type { Validator } from '@sjsf/cfworker-validator'
4+
5+
type CfValidatorFactory = (schema: Schema) => CfValidator;
6+
7+
interface ValidatorOptions {
8+
factory: CfValidatorFactory;
9+
/** @default {} */
10+
uiSchema?: UiSchemaRoot;
11+
/** @default DEFAULT_ID_PREFIX */
12+
idPrefix?: string;
13+
/** @default DEFAULT_ID_SEPARATOR */
14+
idSeparator?: string;
15+
/** @default makeValidatorFactory(factory) */
16+
createValidator?: (schema: Schema, rootSchema: Schema) => CfValidator;
17+
/** @default makeFieldValidatorFactory(factory) */
18+
createFieldValidator?: (config: Config) => CfValidator;
19+
}
20+
21+
type ValidatorFactoryOptions = Omit<ValidatorOptions, "factory"> & {
22+
/** @default () => new CfValidator(schema, "7", false) */
23+
factory?: CfValidatorFactory;
24+
};
25+
26+
function createValidator(options?: ValidatorFactoryOptions): Validator

apps/docs/src/content/docs/validators/_cfworker.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
77
import { schema, uiSchema } from './_shared';
88
9-
const validator = createValidator();
9+
const validator = createValidator({ uiSchema });
1010
1111
const form = useCustomForm({
1212
schema,

0 commit comments

Comments
 (0)