@better-giving/schemas 2.0.3 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/date.d.mts CHANGED
@@ -1,4 +1,4 @@
1
1
  import { endOfDay } from "date-fns";
2
2
  export { startOfDay, endOfDay } from "date-fns";
3
3
  import * as v from "valibot";
4
- export declare const iso_date: (formatter: typeof endOfDay, required?: "required") => v.LazySchema<v.StringSchema<undefined> | v.SchemaWithPipe<[v.StringSchema<undefined>, v.NonEmptyAction<string, "required">]> | v.SchemaWithPipe<[v.StringSchema<undefined>, v.TransformAction<string, Date>, v.DateSchema<"invalid date">, v.MaxValueAction<Date, Date, "can't be later than today">, v.TransformAction<Date, string>]>>;
4
+ export declare const iso_date: (formatter: typeof endOfDay, required?: "required") => v.LazySchema<v.StringSchema<undefined> | v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.NonEmptyAction<string, "required">]> | v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TransformAction<string, Date>, v.DateSchema<"invalid date">, v.MaxValueAction<Date, Date, "can't be later than today">, v.TransformAction<Date, string>]>>;
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { type InferOutput } from "valibot";
2
2
  export declare const file_obj: import("valibot").ObjectSchema<{
3
3
  readonly name: import("valibot").StringSchema<undefined>;
4
- readonly publicUrl: import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").UrlAction<string, undefined>]>;
4
+ readonly publicUrl: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").UrlAction<string, undefined>]>;
5
5
  }, undefined>;
6
6
  export declare const org_designations: readonly ["Charity", "Religious Organization", "University", "Hospital", "Other"];
7
7
  export declare const org_designation: import("valibot").PicklistSchema<readonly ["Charity", "Religious Organization", "University", "Hospital", "Other"], "required">;
@@ -17,18 +17,29 @@ export type Environment = InferOutput<typeof env>;
17
17
  export declare const donate_method_ids: readonly ["stripe", "crypto", "daf", "stocks"];
18
18
  export declare const donate_method_id: import("valibot").PicklistSchema<readonly ["stripe", "crypto", "daf", "stocks"], "required">;
19
19
  export type DonateMethodId = InferOutput<typeof donate_method_id>;
20
- export declare const $: import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>;
21
- export declare const $req: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>;
22
- export declare const int_gte1: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
23
- export declare const $int_gte1: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").TransformAction<string, number>, import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>]>;
24
- export declare const num_gt0: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").MinValueAction<number, 0, "must be > 0">]>;
25
- export declare const $req_num_gt0: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>, import("valibot").TransformAction<string, number>, import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").MinValueAction<number, 0, "must be > 0">]>, import("valibot").TransformAction<number, string>]>;
20
+ export declare const $: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]>;
21
+ export declare const $req: import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>;
22
+ export declare const int_gte1: import("valibot").SchemaWithPipe<readonly [import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
23
+ export declare const $int_gte1: import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").TransformAction<string, number>, import("valibot").SchemaWithPipe<readonly [import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>]>;
24
+ export declare const num_gt0: import("valibot").SchemaWithPipe<readonly [import("valibot").NumberSchema<undefined>, import("valibot").MinValueAction<number, 0, "must be > 0">]>;
25
+ export declare const $req_num_gt0: import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>, import("valibot").TransformAction<string, number>, import("valibot").SchemaWithPipe<readonly [import("valibot").NumberSchema<undefined>, import("valibot").MinValueAction<number, 0, "must be > 0">]>, import("valibot").TransformAction<number, string>]>;
26
26
  export declare const $num_gt0_fn: ({ required, }?: {
27
27
  required?: boolean;
28
- }) => import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>, import("valibot").TransformAction<string, number>, import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").MinValueAction<number, 0, "must be > 0">]>, import("valibot").TransformAction<number, string>]>>;
28
+ }) => import("valibot").LazySchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]> | import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>, import("valibot").TransformAction<string, number>, import("valibot").SchemaWithPipe<readonly [import("valibot").NumberSchema<undefined>, import("valibot").MinValueAction<number, 0, "must be > 0">]>, import("valibot").TransformAction<number, string>]>>;
29
29
  export declare const https_url: (opts?: {
30
30
  required?: boolean;
31
- }) => import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").TransformAction<string, string>, import("valibot").UrlAction<string, "invalid url">]>>;
31
+ }) => import("valibot").LazySchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]> | import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").TransformAction<string, string>, import("valibot").UrlAction<string, "invalid url">]>>;
32
32
  export declare const segment_max_chars = 30;
33
- export declare const segment: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").MaxLengthAction<string, 30, ({ requirement: r }: import("valibot").MaxLengthIssue<string, 30>) => string>, import("valibot").RegexAction<string, "should not be an id">, import("valibot").RegexAction<string, "allowed: numbers | letters | - | . | _ | ~">, import("valibot").ExcludesAction<string, "..", "should not contain double periods">, import("valibot").CustomSchema<string, "should not start with dot">, import("valibot").CustomSchema<string, "should not end with dot">]>;
34
- export declare const slug: import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").MaxLengthAction<string, 30, ({ requirement: r }: import("valibot").MaxLengthIssue<string, 30>) => string>, import("valibot").RegexAction<string, "should not be an id">, import("valibot").RegexAction<string, "allowed: numbers | letters | - | . | _ | ~">, import("valibot").ExcludesAction<string, "..", "should not contain double periods">, import("valibot").CustomSchema<string, "should not start with dot">, import("valibot").CustomSchema<string, "should not end with dot">]>>;
33
+ export declare const segment: import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").MaxLengthAction<string, 30, ({ requirement: r }: import("valibot").MaxLengthIssue<string, 30>) => string>, import("valibot").RegexAction<string, "should not be an id">, import("valibot").RegexAction<string, "allowed: numbers | letters | - | . | _ | ~">, import("valibot").ExcludesAction<string, "..", "should not contain double periods">, import("valibot").CustomSchema<string, "should not start with dot">, import("valibot").CustomSchema<string, "should not end with dot">]>;
34
+ export declare const slug: import("valibot").LazySchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").MaxLengthAction<string, 30, ({ requirement: r }: import("valibot").MaxLengthIssue<string, 30>) => string>, import("valibot").RegexAction<string, "should not be an id">, import("valibot").RegexAction<string, "allowed: numbers | letters | - | . | _ | ~">, import("valibot").ExcludesAction<string, "..", "should not contain double periods">, import("valibot").CustomSchema<string, "should not start with dot">, import("valibot").CustomSchema<string, "should not end with dot">]>>;
35
+ export declare const increment_label_max_chars = 60;
36
+ export declare const MAX_NUM_INCREMENTS = 4;
37
+ export declare const increment_label: import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").MaxLengthAction<string, 60, ({ requirement: r }: import("valibot").MaxLengthIssue<string, 60>) => string>]>;
38
+ export declare const increment_val: import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>, import("valibot").TransformAction<string, number>, import("valibot").SchemaWithPipe<readonly [import("valibot").NumberSchema<undefined>, import("valibot").MinValueAction<number, 0, "must be > 0">]>, import("valibot").TransformAction<number, string>]>, import("valibot").TransformAction<string, string>]>;
39
+ export declare const increment: import("valibot").ObjectSchema<{
40
+ readonly value: import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>, import("valibot").TransformAction<string, number>, import("valibot").SchemaWithPipe<readonly [import("valibot").NumberSchema<undefined>, import("valibot").MinValueAction<number, 0, "must be > 0">]>, import("valibot").TransformAction<number, string>]>, import("valibot").TransformAction<string, string>]>;
41
+ readonly label: import("valibot").SchemaWithPipe<readonly [import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").MaxLengthAction<string, 60, ({ requirement: r }: import("valibot").MaxLengthIssue<string, 60>) => string>]>;
42
+ }, undefined>;
43
+ export interface IIncrement extends InferOutput<typeof increment> {
44
+ }
45
+ export declare const target: import("valibot").UnionSchema<[import("valibot").LiteralSchema<"smart", undefined>, import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TransformAction<string, number>, import("valibot").NumberSchema<undefined>, import("valibot").MinValueAction<number, 0, undefined>, import("valibot").TransformAction<number, string>]>], undefined>;
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { url, custom, excludes, integer, lazy, maxLength, minValue, nonEmpty, number, object, picklist, pipe, regex, string, transform, trim, } from "valibot";
1
+ import { url, custom, excludes, integer, lazy, literal, maxLength, minValue, nonEmpty, number, object, picklist, pipe, regex, string, transform, trim, union, } from "valibot";
2
2
  export const file_obj = object({
3
3
  name: string(),
4
4
  publicUrl: pipe(string(), url()),
@@ -48,3 +48,18 @@ regex(/^(?!^\d+$)/, "should not be an id"),
48
48
  //valid characters
49
49
  regex(/^[a-zA-Z0-9-._~]+$/, "allowed: numbers | letters | - | . | _ | ~"), excludes("..", "should not contain double periods"), custom((x) => !x.startsWith("."), "should not start with dot"), custom((x) => !x.endsWith("."), "should not end with dot"));
50
50
  export const slug = lazy((x) => (x ? segment : $));
51
+ export const increment_label_max_chars = 60;
52
+ export const MAX_NUM_INCREMENTS = 4;
53
+ export const increment_label = pipe($, maxLength(increment_label_max_chars, ({ requirement: r }) => `cannot exceed ${r} characters`));
54
+ export const increment_val = pipe($req_num_gt0,
55
+ //parsed output
56
+ transform((x) => x.toString()));
57
+ export const increment = object({
58
+ value: increment_val,
59
+ label: increment_label,
60
+ });
61
+ export const target = union([
62
+ literal("smart"),
63
+ // "0" - none, `${number}` - fixed
64
+ pipe(string(), transform((v) => +v), number(), minValue(0), transform((v) => v.toString())),
65
+ ]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@better-giving/schemas",
3
- "version": "2.0.3",
3
+ "version": "2.1.0",
4
4
  "devDependencies": {
5
5
  "@better-giving/config": "1.1.2"
6
6
  },
@@ -9,7 +9,7 @@
9
9
  "dist"
10
10
  ],
11
11
  "peerDependencies": {
12
- "valibot": "0.42.0"
12
+ "valibot": "1.2.0"
13
13
  },
14
14
  "optionalDependencies": {
15
15
  "date-fns": "4.1.0"
package/src/index.mts CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  excludes,
6
6
  integer,
7
7
  lazy,
8
+ literal,
8
9
  maxLength,
9
10
  minValue,
10
11
  nonEmpty,
@@ -16,6 +17,7 @@ import {
16
17
  string,
17
18
  transform,
18
19
  trim,
20
+ union,
19
21
  } from "valibot";
20
22
 
21
23
  export const file_obj = object({
@@ -108,3 +110,39 @@ export const segment = pipe(
108
110
  );
109
111
 
110
112
  export const slug = lazy((x) => (x ? segment : $));
113
+
114
+ export const increment_label_max_chars = 60;
115
+ export const MAX_NUM_INCREMENTS = 4;
116
+
117
+ export const increment_label = pipe(
118
+ $,
119
+ maxLength(
120
+ increment_label_max_chars,
121
+ ({ requirement: r }) => `cannot exceed ${r} characters`
122
+ )
123
+ );
124
+
125
+ export const increment_val = pipe(
126
+ $req_num_gt0,
127
+ //parsed output
128
+ transform((x) => x.toString())
129
+ );
130
+
131
+ export const increment = object({
132
+ value: increment_val,
133
+ label: increment_label,
134
+ });
135
+
136
+ export interface IIncrement extends InferOutput<typeof increment> {}
137
+
138
+ export const target = union([
139
+ literal("smart"),
140
+ // "0" - none, `${number}` - fixed
141
+ pipe(
142
+ string(),
143
+ transform((v) => +v),
144
+ number(),
145
+ minValue(0),
146
+ transform((v) => v.toString())
147
+ ),
148
+ ]);