@better-giving/endowment 1.0.20 → 1.0.23
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/cloudsearch.d.mts +40 -7
- package/dist/cloudsearch.mjs +40 -1
- package/dist/db.d.mts +0 -3
- package/dist/index.d.mts +2 -3
- package/dist/schema.d.mts +44 -47
- package/dist/schema.mjs +22 -37
- package/package.json +1 -1
- package/src/cloudsearch.mts +82 -25
- package/src/db.mts +0 -3
- package/src/index.mts +4 -4
- package/src/schema.mts +41 -87
package/dist/cloudsearch.d.mts
CHANGED
|
@@ -1,14 +1,47 @@
|
|
|
1
1
|
import type { ToDoc, ToHitFields, ToUpdate } from "@better-giving/types/cloudsearch";
|
|
2
|
-
import type
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { type InferInput, type InferOutput } from "valibot";
|
|
3
|
+
import { type Environment } from "./schema.mjs";
|
|
4
|
+
export declare const cloudsearchEndowFields: import("valibot").ObjectSchema<{
|
|
5
|
+
readonly contributions_total: import("valibot").NumberSchema<undefined>;
|
|
6
|
+
readonly contributions_count: import("valibot").NumberSchema<undefined>;
|
|
7
|
+
}, undefined>;
|
|
8
|
+
export declare const cloudsearchEndow: import("valibot").ObjectSchema<{
|
|
9
|
+
readonly contributions_total: import("valibot").NumberSchema<undefined>;
|
|
10
|
+
readonly contributions_count: import("valibot").NumberSchema<undefined>;
|
|
11
|
+
readonly name: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>;
|
|
12
|
+
readonly tagline: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").MaxLengthAction<string, 140, undefined>]>, never>;
|
|
13
|
+
readonly card_img: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").UrlAction<string, undefined>]>, never>;
|
|
14
|
+
readonly hq_country: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>;
|
|
15
|
+
readonly active_in_countries: import("valibot").SchemaWithPipe<[import("valibot").ArraySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, undefined>, import("valibot").NonEmptyAction<string[], "required">]>;
|
|
16
|
+
readonly sdgs: import("valibot").SchemaWithPipe<[import("valibot").ArraySchema<import("valibot").PicklistSchema<readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], undefined>, undefined>, import("valibot").MinLengthAction<(2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[], 1, undefined>]>;
|
|
17
|
+
readonly published: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
|
|
18
|
+
readonly fund_opt_in: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
|
|
19
|
+
readonly id: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
|
|
20
|
+
readonly env: import("valibot").PicklistSchema<readonly ["staging", "production"], undefined>;
|
|
21
|
+
readonly registration_number: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">, import("valibot").RegexAction<string, "must only contain letters and numbers">]>;
|
|
22
|
+
readonly endow_designation: import("valibot").PicklistSchema<readonly ["Charity", "Religious Organization", "University", "Hospital", "Other"], undefined>;
|
|
23
|
+
readonly claimed: import("valibot").BooleanSchema<undefined>;
|
|
24
|
+
readonly kyc_donors_only: import("valibot").BooleanSchema<undefined>;
|
|
25
|
+
}, undefined>;
|
|
26
|
+
export declare const cloudSearchEndowFields: import("valibot").PicklistSchema<["name", "tagline", "card_img", "hq_country", "active_in_countries", "sdgs", "published", "fund_opt_in", "id", "env", "registration_number", "endow_designation", "claimed", "kyc_donors_only", "contributions_total", "contributions_count"], undefined>;
|
|
27
|
+
export declare const endowsQueryParams: import("valibot").ObjectSchema<{
|
|
28
|
+
readonly query: import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>;
|
|
29
|
+
readonly page: import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TransformAction<string, number>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
|
|
30
|
+
readonly endow_designation: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, string[]>, import("valibot").FilterItemsAction<string[]>]>, import("valibot").ArraySchema<import("valibot").PicklistSchema<readonly ["Charity", "Religious Organization", "University", "Hospital", "Other"], undefined>, undefined>]>, never>;
|
|
31
|
+
readonly sdgs: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, string[]>, import("valibot").FilterItemsAction<string[]>]>, import("valibot").MapItemsAction<string[], number>, import("valibot").ArraySchema<import("valibot").PicklistSchema<readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], undefined>, undefined>]>, never>;
|
|
32
|
+
readonly kyc_only: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, string[]>, import("valibot").FilterItemsAction<string[]>]>, import("valibot").MapItemsAction<string[], boolean>, import("valibot").ArraySchema<import("valibot").BooleanSchema<undefined>, undefined>]>, never>;
|
|
33
|
+
readonly fund_opt_in: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, string[]>, import("valibot").FilterItemsAction<string[]>]>, import("valibot").MapItemsAction<string[], boolean>, import("valibot").ArraySchema<import("valibot").BooleanSchema<undefined>, undefined>]>, never>;
|
|
34
|
+
readonly claimed: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, string[]>, import("valibot").FilterItemsAction<string[]>]>, import("valibot").MapItemsAction<string[], boolean>, import("valibot").ArraySchema<import("valibot").BooleanSchema<undefined>, undefined>]>, never>;
|
|
35
|
+
readonly countries: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, string[]>, import("valibot").FilterItemsAction<string[]>]>, import("valibot").ArraySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, undefined>]>, never>;
|
|
36
|
+
readonly fields: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, string[]>, import("valibot").FilterItemsAction<string[]>]>, import("valibot").ArraySchema<import("valibot").PicklistSchema<["name", "tagline", "card_img", "hq_country", "active_in_countries", "sdgs", "published", "fund_opt_in", "id", "env", "registration_number", "endow_designation", "claimed", "kyc_donors_only", "contributions_total", "contributions_count"], undefined>, undefined>]>, never>;
|
|
37
|
+
}, undefined>;
|
|
38
|
+
export type CloudsearchEndowsQueryParams = InferInput<typeof endowsQueryParams>;
|
|
39
|
+
export type CloudsearchEndow = InferOutput<typeof cloudsearchEndow>;
|
|
7
40
|
type DocId = `${Environment}-${number}`;
|
|
8
41
|
type Doc = {
|
|
9
42
|
documentId: DocId;
|
|
10
43
|
_score: number;
|
|
11
|
-
} & ToDoc<
|
|
44
|
+
} & ToDoc<CloudsearchEndow>;
|
|
12
45
|
export type HitFields = ToHitFields<Omit<Doc, "documentId" | "_score">>;
|
|
13
|
-
export type Update = ToUpdate<DocId,
|
|
46
|
+
export type Update = ToUpdate<DocId, CloudsearchEndow>;
|
|
14
47
|
export {};
|
package/dist/cloudsearch.mjs
CHANGED
|
@@ -1 +1,40 @@
|
|
|
1
|
-
|
|
1
|
+
import { orgDesignation, unSdgNum } from "@better-giving/schemas";
|
|
2
|
+
import { array, boolean, integer, keyof, mapItems, minValue, number, object, optional, pick, pipe, string, transform, } from "valibot";
|
|
3
|
+
import { csvStrs, endowment, str } from "./schema.mjs";
|
|
4
|
+
const boolCsv = pipe(csvStrs, mapItems((x) => x === "true"), array(boolean()));
|
|
5
|
+
export const cloudsearchEndowFields = object({
|
|
6
|
+
contributions_total: number(),
|
|
7
|
+
contributions_count: number(),
|
|
8
|
+
});
|
|
9
|
+
export const cloudsearchEndow = object({
|
|
10
|
+
...pick(endowment, [
|
|
11
|
+
"card_img",
|
|
12
|
+
"name",
|
|
13
|
+
"tagline",
|
|
14
|
+
"hq_country",
|
|
15
|
+
"sdgs",
|
|
16
|
+
"active_in_countries",
|
|
17
|
+
"endow_designation",
|
|
18
|
+
"registration_number",
|
|
19
|
+
"kyc_donors_only",
|
|
20
|
+
"claimed",
|
|
21
|
+
//filters
|
|
22
|
+
"env",
|
|
23
|
+
"id",
|
|
24
|
+
"published",
|
|
25
|
+
"fund_opt_in",
|
|
26
|
+
]).entries,
|
|
27
|
+
...cloudsearchEndowFields.entries,
|
|
28
|
+
});
|
|
29
|
+
export const cloudSearchEndowFields = keyof(cloudsearchEndow);
|
|
30
|
+
export const endowsQueryParams = object({
|
|
31
|
+
query: str,
|
|
32
|
+
page: pipe(string(), transform((x) => +x), integer(), minValue(1)),
|
|
33
|
+
endow_designation: optional(pipe(csvStrs, array(orgDesignation))),
|
|
34
|
+
sdgs: optional(pipe(csvStrs, mapItems((x) => +x), array(unSdgNum))),
|
|
35
|
+
kyc_only: optional(boolCsv),
|
|
36
|
+
fund_opt_in: optional(boolCsv),
|
|
37
|
+
claimed: optional(boolCsv),
|
|
38
|
+
countries: optional(pipe(csvStrs, array(str))),
|
|
39
|
+
fields: optional(pipe(csvStrs, array(cloudSearchEndowFields))),
|
|
40
|
+
});
|
package/dist/db.d.mts
CHANGED
|
@@ -19,10 +19,7 @@ export declare namespace Endow {
|
|
|
19
19
|
SK: Environment;
|
|
20
20
|
};
|
|
21
21
|
type NonKeyAttributes = EndowmentShape & {
|
|
22
|
-
env: Environment;
|
|
23
|
-
kyc_donors_only: boolean;
|
|
24
22
|
fiscal_sponsored: boolean;
|
|
25
|
-
claimed: boolean;
|
|
26
23
|
/** in USD @deprecated */
|
|
27
24
|
payout_minimum?: number;
|
|
28
25
|
/** @deprecated */
|
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { Fields as FundItem } from "./cloudsearch.mjs";
|
|
2
1
|
import type { Endow as NEndow, Media, Program as NProgram } from "./db.mjs";
|
|
3
2
|
import type { Milestone } from "./schema.mjs";
|
|
4
|
-
export type { Allocation, DonateMethodId,
|
|
5
|
-
export type {
|
|
3
|
+
export type { Allocation, DonateMethodId, EndowDesignation, EndowQueryParam, EndowUpdate, Environment, Increment, Milestone, MilestoneUpdate, NewMilestone, NewProgram, ProgramUpdate, SocialMediaURLs, UnSdgNum, MediaQueryParams, MediaQueryParamsObj, MediaType, MediaUpdate, } from "./schema.mjs";
|
|
4
|
+
export type { CloudsearchEndow as EndowItem, CloudsearchEndowsQueryParams as EndowsQueryParams, } from "./cloudsearch.mjs";
|
|
6
5
|
export type Endow = Pick<NEndow.DbRecord, "id" | "slug" | "active_in_countries" | "endow_designation" | "fiscal_sponsored" | "hide_bg_tip" | "hq_country" | "image" | "card_img" | "kyc_donors_only" | "logo" | "name" | "overview" | "published" | "registration_number" | "sdgs" | "social_media_urls" | "street_address" | "tagline" | "url" | "claimed" | "progDonationsAllowed" | "donateMethods" | "allocation" | "increments" | "receiptMsg">;
|
|
7
6
|
export type Program = Omit<NProgram.DbRecord, "PK" | "SK"> & {
|
|
8
7
|
milestones: Milestone[];
|
package/dist/schema.d.mts
CHANGED
|
@@ -3,6 +3,8 @@ export type { OrgDesignation as EndowDesignation, Environment, UnSdgNum, } from
|
|
|
3
3
|
export { orgDesignation as endowDesignation, env, unSdgNum };
|
|
4
4
|
import { type InferInput, type InferOutput } from "valibot";
|
|
5
5
|
export declare const str: import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>;
|
|
6
|
+
export declare const csv: import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>;
|
|
7
|
+
export declare const csvStrs: import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, string[]>, import("valibot").FilterItemsAction<string[]>]>;
|
|
6
8
|
export declare const allocation: import("valibot").SchemaWithPipe<[import("valibot").ObjectSchema<{
|
|
7
9
|
readonly cash: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 0, undefined>, import("valibot").MaxValueAction<number, 100, undefined>]>;
|
|
8
10
|
readonly liq: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 0, undefined>, import("valibot").MaxValueAction<number, 100, undefined>]>;
|
|
@@ -17,7 +19,8 @@ export declare const endowId: import("valibot").SchemaWithPipe<[import("valibot"
|
|
|
17
19
|
export type EndowId = InferOutput<typeof endowId>;
|
|
18
20
|
export declare const endowIdParam: import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TransformAction<string, number>, import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>]>;
|
|
19
21
|
export declare const segmentMaxChars = 30;
|
|
20
|
-
export declare const segment: import("valibot").
|
|
22
|
+
export declare const segment: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, 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">]>;
|
|
23
|
+
export declare const slug: import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, 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">]>>;
|
|
21
24
|
export declare const reg_number: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">, import("valibot").RegexAction<string, "must only contain letters and numbers">]>;
|
|
22
25
|
export declare const donateMethodIds: readonly ["stripe", "crypto", "daf", "stocks"];
|
|
23
26
|
export declare const donateMethodId: import("valibot").PicklistSchema<readonly ["stripe", "crypto", "daf", "stocks"], undefined>;
|
|
@@ -48,6 +51,7 @@ export declare const increment: import("valibot").ObjectSchema<{
|
|
|
48
51
|
export type Increment = InferOutput<typeof increment>;
|
|
49
52
|
export declare const endowment: import("valibot").ObjectSchema<{
|
|
50
53
|
readonly id: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
|
|
54
|
+
readonly env: import("valibot").PicklistSchema<readonly ["staging", "production"], undefined>;
|
|
51
55
|
readonly slug: import("valibot").OptionalSchema<import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, 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">]>>, never>;
|
|
52
56
|
readonly registration_number: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">, import("valibot").RegexAction<string, "must only contain letters and numbers">]>;
|
|
53
57
|
readonly name: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>;
|
|
@@ -71,7 +75,7 @@ export declare const endowment: import("valibot").ObjectSchema<{
|
|
|
71
75
|
}, undefined>;
|
|
72
76
|
/** website */
|
|
73
77
|
readonly url: import("valibot").OptionalSchema<import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").StartsWithAction<string, "https://", "should start with https://">, import("valibot").CustomSchema<string, "incomplete url">, import("valibot").UrlAction<string, "invalid url">]>>, never>;
|
|
74
|
-
readonly sdgs: import("valibot").SchemaWithPipe<[import("valibot").ArraySchema<import("valibot").PicklistSchema<readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], undefined>, undefined>, import("valibot").MinLengthAction<(2 | 1 |
|
|
78
|
+
readonly sdgs: import("valibot").SchemaWithPipe<[import("valibot").ArraySchema<import("valibot").PicklistSchema<readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], undefined>, undefined>, import("valibot").MinLengthAction<(2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[], 1, undefined>]>;
|
|
75
79
|
readonly receiptMsg: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").MaxLengthAction<string, 500, undefined>]>, never>;
|
|
76
80
|
readonly hide_bg_tip: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
|
|
77
81
|
readonly published: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
|
|
@@ -95,9 +99,13 @@ export declare const endowment: import("valibot").ObjectSchema<{
|
|
|
95
99
|
label: string;
|
|
96
100
|
}[], 4, undefined>]>, never>;
|
|
97
101
|
readonly fund_opt_in: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
|
|
102
|
+
/** endowment is not claimed if `false` only */
|
|
103
|
+
readonly claimed: import("valibot").BooleanSchema<undefined>;
|
|
104
|
+
readonly kyc_donors_only: import("valibot").BooleanSchema<undefined>;
|
|
98
105
|
}, undefined>;
|
|
99
106
|
export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
100
107
|
readonly id: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
|
|
108
|
+
readonly env: import("valibot").PicklistSchema<readonly ["staging", "production"], undefined>;
|
|
101
109
|
readonly slug: import("valibot").OptionalSchema<import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, 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">]>>, never>;
|
|
102
110
|
readonly registration_number: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">, import("valibot").RegexAction<string, "must only contain letters and numbers">]>;
|
|
103
111
|
readonly name: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>;
|
|
@@ -121,7 +129,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
121
129
|
}, undefined>;
|
|
122
130
|
/** website */
|
|
123
131
|
readonly url: import("valibot").OptionalSchema<import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").StartsWithAction<string, "https://", "should start with https://">, import("valibot").CustomSchema<string, "incomplete url">, import("valibot").UrlAction<string, "invalid url">]>>, never>;
|
|
124
|
-
readonly sdgs: import("valibot").SchemaWithPipe<[import("valibot").ArraySchema<import("valibot").PicklistSchema<readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], undefined>, undefined>, import("valibot").MinLengthAction<(2 | 1 |
|
|
132
|
+
readonly sdgs: import("valibot").SchemaWithPipe<[import("valibot").ArraySchema<import("valibot").PicklistSchema<readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], undefined>, undefined>, import("valibot").MinLengthAction<(2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[], 1, undefined>]>;
|
|
125
133
|
readonly receiptMsg: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").MaxLengthAction<string, 500, undefined>]>, never>;
|
|
126
134
|
readonly hide_bg_tip: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
|
|
127
135
|
readonly published: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
|
|
@@ -145,9 +153,13 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
145
153
|
label: string;
|
|
146
154
|
}[], 4, undefined>]>, never>;
|
|
147
155
|
readonly fund_opt_in: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
|
|
156
|
+
/** endowment is not claimed if `false` only */
|
|
157
|
+
readonly claimed: import("valibot").BooleanSchema<undefined>;
|
|
158
|
+
readonly kyc_donors_only: import("valibot").BooleanSchema<undefined>;
|
|
148
159
|
}, undefined>, "_types" | "_run" | "entries"> & {
|
|
149
160
|
readonly entries: Omit<{
|
|
150
161
|
readonly id: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
|
|
162
|
+
readonly env: import("valibot").PicklistSchema<readonly ["staging", "production"], undefined>;
|
|
151
163
|
readonly slug: import("valibot").OptionalSchema<import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, 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">]>>, never>;
|
|
152
164
|
readonly registration_number: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">, import("valibot").RegexAction<string, "must only contain letters and numbers">]>;
|
|
153
165
|
readonly name: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>;
|
|
@@ -171,7 +183,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
171
183
|
}, undefined>;
|
|
172
184
|
/** website */
|
|
173
185
|
readonly url: import("valibot").OptionalSchema<import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").StartsWithAction<string, "https://", "should start with https://">, import("valibot").CustomSchema<string, "incomplete url">, import("valibot").UrlAction<string, "invalid url">]>>, never>;
|
|
174
|
-
readonly sdgs: import("valibot").SchemaWithPipe<[import("valibot").ArraySchema<import("valibot").PicklistSchema<readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], undefined>, undefined>, import("valibot").MinLengthAction<(2 | 1 |
|
|
186
|
+
readonly sdgs: import("valibot").SchemaWithPipe<[import("valibot").ArraySchema<import("valibot").PicklistSchema<readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], undefined>, undefined>, import("valibot").MinLengthAction<(2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[], 1, undefined>]>;
|
|
175
187
|
readonly receiptMsg: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").MaxLengthAction<string, 500, undefined>]>, never>;
|
|
176
188
|
readonly hide_bg_tip: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
|
|
177
189
|
readonly published: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
|
|
@@ -195,19 +207,22 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
195
207
|
label: string;
|
|
196
208
|
}[], 4, undefined>]>, never>;
|
|
197
209
|
readonly fund_opt_in: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
|
|
198
|
-
|
|
199
|
-
|
|
210
|
+
/** endowment is not claimed if `false` only */
|
|
211
|
+
readonly claimed: import("valibot").BooleanSchema<undefined>;
|
|
212
|
+
readonly kyc_donors_only: import("valibot").BooleanSchema<undefined>;
|
|
213
|
+
}, "id" | "env" | "claimed" | "kyc_donors_only">;
|
|
214
|
+
_run(dataset: import("valibot").Dataset<unknown, never>, config: import("valibot").Config<import("valibot").StringIssue | import("valibot").RegexIssue<string> | import("valibot").NumberIssue | import("valibot").IntegerIssue<number> | import("valibot").MinValueIssue<number, 0> | import("valibot").MaxValueIssue<number, 100> | import("valibot").ObjectIssue | import("valibot").CheckIssue<{
|
|
200
215
|
cash: number;
|
|
201
216
|
liq: number;
|
|
202
217
|
lock: number;
|
|
203
|
-
}> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").
|
|
218
|
+
}> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").ExcludesIssue<string, ".."> | import("valibot").CustomIssue | import("valibot").NonEmptyIssue<string> | import("valibot").PicklistIssue | import("valibot").UrlIssue<string> | import("valibot").StartsWithIssue<string, "https://"> | import("valibot").MaxLengthIssue<string, 140> | import("valibot").ArrayIssue | import("valibot").NonEmptyIssue<string[]> | import("valibot").MinLengthIssue<(2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[], 1> | import("valibot").MaxLengthIssue<string, 500> | import("valibot").BooleanIssue | import("valibot").MaxLengthIssue<{
|
|
204
219
|
value: string;
|
|
205
220
|
label: string;
|
|
206
221
|
}[], 4>>): import("valibot").Dataset<{
|
|
207
222
|
name: string;
|
|
208
223
|
hq_country: string;
|
|
209
224
|
active_in_countries: string[];
|
|
210
|
-
sdgs: (2 | 1 |
|
|
225
|
+
sdgs: (2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[];
|
|
211
226
|
registration_number: string;
|
|
212
227
|
endow_designation: "Charity" | "Religious Organization" | "University" | "Hospital" | "Other";
|
|
213
228
|
social_media_urls: {
|
|
@@ -242,11 +257,11 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
242
257
|
label: string;
|
|
243
258
|
}[] | undefined;
|
|
244
259
|
fund_opt_in?: boolean | undefined;
|
|
245
|
-
}, import("valibot").StringIssue | import("valibot").NumberIssue | import("valibot").IntegerIssue<number> | import("valibot").MinValueIssue<number, 0> | import("valibot").MaxValueIssue<number, 100> | import("valibot").ObjectIssue | import("valibot").CheckIssue<{
|
|
260
|
+
}, import("valibot").StringIssue | import("valibot").RegexIssue<string> | import("valibot").NumberIssue | import("valibot").IntegerIssue<number> | import("valibot").MinValueIssue<number, 0> | import("valibot").MaxValueIssue<number, 100> | import("valibot").ObjectIssue | import("valibot").CheckIssue<{
|
|
246
261
|
cash: number;
|
|
247
262
|
liq: number;
|
|
248
263
|
lock: number;
|
|
249
|
-
}> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").
|
|
264
|
+
}> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").ExcludesIssue<string, ".."> | import("valibot").CustomIssue | import("valibot").NonEmptyIssue<string> | import("valibot").PicklistIssue | import("valibot").UrlIssue<string> | import("valibot").StartsWithIssue<string, "https://"> | import("valibot").MaxLengthIssue<string, 140> | import("valibot").ArrayIssue | import("valibot").NonEmptyIssue<string[]> | import("valibot").MinLengthIssue<(2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[], 1> | import("valibot").MaxLengthIssue<string, 500> | import("valibot").BooleanIssue | import("valibot").MaxLengthIssue<{
|
|
250
265
|
value: string;
|
|
251
266
|
label: string;
|
|
252
267
|
}[], 4>>;
|
|
@@ -255,7 +270,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
255
270
|
name: string;
|
|
256
271
|
hq_country: string;
|
|
257
272
|
active_in_countries: string[];
|
|
258
|
-
sdgs: (2 | 1 |
|
|
273
|
+
sdgs: (2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[];
|
|
259
274
|
registration_number: string;
|
|
260
275
|
endow_designation: "Charity" | "Religious Organization" | "University" | "Hospital" | "Other";
|
|
261
276
|
social_media_urls: {
|
|
@@ -295,7 +310,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
295
310
|
name: string;
|
|
296
311
|
hq_country: string;
|
|
297
312
|
active_in_countries: string[];
|
|
298
|
-
sdgs: (2 | 1 |
|
|
313
|
+
sdgs: (2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[];
|
|
299
314
|
registration_number: string;
|
|
300
315
|
endow_designation: "Charity" | "Religious Organization" | "University" | "Hospital" | "Other";
|
|
301
316
|
social_media_urls: {
|
|
@@ -331,11 +346,11 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
331
346
|
}[] | undefined;
|
|
332
347
|
fund_opt_in?: boolean | undefined;
|
|
333
348
|
};
|
|
334
|
-
readonly issue: import("valibot").StringIssue | import("valibot").NumberIssue | import("valibot").IntegerIssue<number> | import("valibot").MinValueIssue<number, 0> | import("valibot").MaxValueIssue<number, 100> | import("valibot").ObjectIssue | import("valibot").CheckIssue<{
|
|
349
|
+
readonly issue: import("valibot").StringIssue | import("valibot").RegexIssue<string> | import("valibot").NumberIssue | import("valibot").IntegerIssue<number> | import("valibot").MinValueIssue<number, 0> | import("valibot").MaxValueIssue<number, 100> | import("valibot").ObjectIssue | import("valibot").CheckIssue<{
|
|
335
350
|
cash: number;
|
|
336
351
|
liq: number;
|
|
337
352
|
lock: number;
|
|
338
|
-
}> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").
|
|
353
|
+
}> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").ExcludesIssue<string, ".."> | import("valibot").CustomIssue | import("valibot").NonEmptyIssue<string> | import("valibot").PicklistIssue | import("valibot").UrlIssue<string> | import("valibot").StartsWithIssue<string, "https://"> | import("valibot").MaxLengthIssue<string, 140> | import("valibot").ArrayIssue | import("valibot").NonEmptyIssue<string[]> | import("valibot").MinLengthIssue<(2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[], 1> | import("valibot").MaxLengthIssue<string, 500> | import("valibot").BooleanIssue | import("valibot").MaxLengthIssue<{
|
|
339
354
|
value: string;
|
|
340
355
|
label: string;
|
|
341
356
|
}[], 4>;
|
|
@@ -353,7 +368,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
353
368
|
readonly hq_country: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>, never>;
|
|
354
369
|
readonly active_in_countries: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").ArraySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, undefined>, import("valibot").NonEmptyAction<string[], "required">]>, never>;
|
|
355
370
|
readonly street_address: import("valibot").OptionalSchema<import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, never>, never>;
|
|
356
|
-
readonly sdgs: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").ArraySchema<import("valibot").PicklistSchema<readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], undefined>, undefined>, import("valibot").MinLengthAction<(2 | 1 |
|
|
371
|
+
readonly sdgs: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").ArraySchema<import("valibot").PicklistSchema<readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], undefined>, undefined>, import("valibot").MinLengthAction<(2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[], 1, undefined>]>, never>;
|
|
357
372
|
readonly receiptMsg: import("valibot").OptionalSchema<import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").MaxLengthAction<string, 500, undefined>]>, never>, never>;
|
|
358
373
|
readonly hide_bg_tip: import("valibot").OptionalSchema<import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>, never>;
|
|
359
374
|
readonly published: import("valibot").OptionalSchema<import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>, never>;
|
|
@@ -388,11 +403,11 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
388
403
|
readonly tiktok: import("valibot").OptionalSchema<import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").StartsWithAction<string, "https://", "should start with https://">, import("valibot").CustomSchema<string, "incomplete url">, import("valibot").UrlAction<string, "invalid url">]>>, never>;
|
|
389
404
|
}, undefined>, never>;
|
|
390
405
|
};
|
|
391
|
-
_run(dataset: import("valibot").Dataset<unknown, never>, config: import("valibot").Config<import("valibot").StringIssue | import("valibot").NumberIssue | import("valibot").IntegerIssue<number> | import("valibot").MinValueIssue<number, 0> | import("valibot").MaxValueIssue<number, 100> | import("valibot").ObjectIssue | import("valibot").CheckIssue<{
|
|
406
|
+
_run(dataset: import("valibot").Dataset<unknown, never>, config: import("valibot").Config<import("valibot").StringIssue | import("valibot").RegexIssue<string> | import("valibot").NumberIssue | import("valibot").IntegerIssue<number> | import("valibot").MinValueIssue<number, 0> | import("valibot").MaxValueIssue<number, 100> | import("valibot").ObjectIssue | import("valibot").CheckIssue<{
|
|
392
407
|
cash: number;
|
|
393
408
|
liq: number;
|
|
394
409
|
lock: number;
|
|
395
|
-
}> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").
|
|
410
|
+
}> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").ExcludesIssue<string, ".."> | import("valibot").CustomIssue | import("valibot").NonEmptyIssue<string> | import("valibot").PicklistIssue | import("valibot").UrlIssue<string> | import("valibot").StartsWithIssue<string, "https://"> | import("valibot").MaxLengthIssue<string, 140> | import("valibot").ArrayIssue | import("valibot").NonEmptyIssue<string[]> | import("valibot").MinLengthIssue<(2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[], 1> | import("valibot").MaxLengthIssue<string, 500> | import("valibot").BooleanIssue | import("valibot").MaxLengthIssue<{
|
|
396
411
|
value: string;
|
|
397
412
|
label: string;
|
|
398
413
|
}[], 4>>): import("valibot").Dataset<{
|
|
@@ -407,7 +422,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
407
422
|
hq_country?: string | undefined;
|
|
408
423
|
active_in_countries?: string[] | undefined;
|
|
409
424
|
street_address?: string | undefined;
|
|
410
|
-
sdgs?: (2 | 1 |
|
|
425
|
+
sdgs?: (2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[] | undefined;
|
|
411
426
|
receiptMsg?: string | undefined;
|
|
412
427
|
hide_bg_tip?: boolean | undefined;
|
|
413
428
|
published?: boolean | undefined;
|
|
@@ -434,11 +449,11 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
434
449
|
youtube?: string | undefined;
|
|
435
450
|
tiktok?: string | undefined;
|
|
436
451
|
} | undefined;
|
|
437
|
-
}, import("valibot").StringIssue | import("valibot").NumberIssue | import("valibot").IntegerIssue<number> | import("valibot").MinValueIssue<number, 0> | import("valibot").MaxValueIssue<number, 100> | import("valibot").ObjectIssue | import("valibot").CheckIssue<{
|
|
452
|
+
}, import("valibot").StringIssue | import("valibot").RegexIssue<string> | import("valibot").NumberIssue | import("valibot").IntegerIssue<number> | import("valibot").MinValueIssue<number, 0> | import("valibot").MaxValueIssue<number, 100> | import("valibot").ObjectIssue | import("valibot").CheckIssue<{
|
|
438
453
|
cash: number;
|
|
439
454
|
liq: number;
|
|
440
455
|
lock: number;
|
|
441
|
-
}> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").
|
|
456
|
+
}> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").ExcludesIssue<string, ".."> | import("valibot").CustomIssue | import("valibot").NonEmptyIssue<string> | import("valibot").PicklistIssue | import("valibot").UrlIssue<string> | import("valibot").StartsWithIssue<string, "https://"> | import("valibot").MaxLengthIssue<string, 140> | import("valibot").ArrayIssue | import("valibot").NonEmptyIssue<string[]> | import("valibot").MinLengthIssue<(2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[], 1> | import("valibot").MaxLengthIssue<string, 500> | import("valibot").BooleanIssue | import("valibot").MaxLengthIssue<{
|
|
442
457
|
value: string;
|
|
443
458
|
label: string;
|
|
444
459
|
}[], 4>>;
|
|
@@ -455,7 +470,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
455
470
|
hq_country?: string | undefined;
|
|
456
471
|
active_in_countries?: string[] | undefined;
|
|
457
472
|
street_address?: string | undefined;
|
|
458
|
-
sdgs?: (2 | 1 |
|
|
473
|
+
sdgs?: (2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[] | undefined;
|
|
459
474
|
receiptMsg?: string | undefined;
|
|
460
475
|
hide_bg_tip?: boolean | undefined;
|
|
461
476
|
published?: boolean | undefined;
|
|
@@ -495,7 +510,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
495
510
|
hq_country?: string | undefined;
|
|
496
511
|
active_in_countries?: string[] | undefined;
|
|
497
512
|
street_address?: string | undefined;
|
|
498
|
-
sdgs?: (2 | 1 |
|
|
513
|
+
sdgs?: (2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[] | undefined;
|
|
499
514
|
receiptMsg?: string | undefined;
|
|
500
515
|
hide_bg_tip?: boolean | undefined;
|
|
501
516
|
published?: boolean | undefined;
|
|
@@ -523,43 +538,25 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
523
538
|
tiktok?: string | undefined;
|
|
524
539
|
} | undefined;
|
|
525
540
|
};
|
|
526
|
-
readonly issue: import("valibot").StringIssue | import("valibot").NumberIssue | import("valibot").IntegerIssue<number> | import("valibot").MinValueIssue<number, 0> | import("valibot").MaxValueIssue<number, 100> | import("valibot").ObjectIssue | import("valibot").CheckIssue<{
|
|
541
|
+
readonly issue: import("valibot").StringIssue | import("valibot").RegexIssue<string> | import("valibot").NumberIssue | import("valibot").IntegerIssue<number> | import("valibot").MinValueIssue<number, 0> | import("valibot").MaxValueIssue<number, 100> | import("valibot").ObjectIssue | import("valibot").CheckIssue<{
|
|
527
542
|
cash: number;
|
|
528
543
|
liq: number;
|
|
529
544
|
lock: number;
|
|
530
|
-
}> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").
|
|
545
|
+
}> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").ExcludesIssue<string, ".."> | import("valibot").CustomIssue | import("valibot").NonEmptyIssue<string> | import("valibot").PicklistIssue | import("valibot").UrlIssue<string> | import("valibot").StartsWithIssue<string, "https://"> | import("valibot").MaxLengthIssue<string, 140> | import("valibot").ArrayIssue | import("valibot").NonEmptyIssue<string[]> | import("valibot").MinLengthIssue<(2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[], 1> | import("valibot").MaxLengthIssue<string, 500> | import("valibot").BooleanIssue | import("valibot").MaxLengthIssue<{
|
|
531
546
|
value: string;
|
|
532
547
|
label: string;
|
|
533
548
|
}[], 4>;
|
|
534
549
|
} | undefined;
|
|
535
550
|
};
|
|
536
|
-
export declare const endowFields: import("valibot").PicklistSchema<["url", "slug", "name", "overview", "tagline", "image", "logo", "card_img", "hq_country", "active_in_countries", "street_address", "sdgs", "receiptMsg", "hide_bg_tip", "published", "progDonationsAllowed", "allocation", "donateMethods", "increments", "fund_opt_in", "id", "registration_number", "endow_designation", "social_media_urls"], undefined>;
|
|
551
|
+
export declare const endowFields: import("valibot").PicklistSchema<["url", "slug", "name", "overview", "tagline", "image", "logo", "card_img", "hq_country", "active_in_countries", "street_address", "sdgs", "receiptMsg", "hide_bg_tip", "published", "progDonationsAllowed", "allocation", "donateMethods", "increments", "fund_opt_in", "id", "env", "registration_number", "endow_designation", "social_media_urls", "claimed", "kyc_donors_only"], undefined>;
|
|
537
552
|
export type Endowment = InferOutput<typeof endowment>;
|
|
538
553
|
export type EndowUpdate = InferOutput<typeof endowUpdate>;
|
|
539
554
|
export type EndowmentFields = InferOutput<typeof endowFields>;
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
readonly
|
|
543
|
-
readonly endow_designation: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, string[]>, import("valibot").ArraySchema<import("valibot").PicklistSchema<readonly ["Charity", "Religious Organization", "University", "Hospital", "Other"], undefined>, undefined>]>, never>;
|
|
544
|
-
readonly sdgs: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, number[]>, import("valibot").ArraySchema<import("valibot").PicklistSchema<readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], undefined>, undefined>]>, never>;
|
|
545
|
-
readonly kyc_only: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, boolean[]>, import("valibot").ArraySchema<import("valibot").BooleanSchema<undefined>, undefined>]>, never>;
|
|
546
|
-
readonly fund_opt_in: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, boolean[]>, import("valibot").ArraySchema<import("valibot").BooleanSchema<undefined>, undefined>]>, never>;
|
|
547
|
-
readonly claimed: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, boolean[]>, import("valibot").ArraySchema<import("valibot").BooleanSchema<undefined>, undefined>]>, never>;
|
|
548
|
-
readonly countries: import("valibot").OptionalSchema<import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, never>;
|
|
549
|
-
readonly fields: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, string[]>, import("valibot").ArraySchema<import("valibot").PicklistSchema<["url", "slug", "name", "overview", "tagline", "image", "logo", "card_img", "hq_country", "active_in_countries", "street_address", "sdgs", "receiptMsg", "hide_bg_tip", "published", "progDonationsAllowed", "allocation", "donateMethods", "increments", "fund_opt_in", "id", "registration_number", "endow_designation", "social_media_urls"], undefined>, undefined>]>, never>;
|
|
550
|
-
}, undefined>;
|
|
551
|
-
export type EndowsQueryParams = InferInput<typeof endowsQueryParams>;
|
|
552
|
-
export declare const endowQueryParam: import("valibot").ObjectSchema<{
|
|
553
|
-
readonly fields: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, string[]>, import("valibot").ArraySchema<import("valibot").PicklistSchema<["url", "slug", "name", "overview", "tagline", "image", "logo", "card_img", "hq_country", "active_in_countries", "street_address", "sdgs", "receiptMsg", "hide_bg_tip", "published", "progDonationsAllowed", "allocation", "donateMethods", "increments", "fund_opt_in", "id", "registration_number", "endow_designation", "social_media_urls"], undefined>, undefined>]>, never>;
|
|
554
|
-
readonly slug: import("valibot").OptionalSchema<import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, 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">]>>, never>;
|
|
555
|
-
readonly env: import("valibot").PicklistSchema<readonly ["staging", "production"], undefined>;
|
|
556
|
-
}, undefined>;
|
|
557
|
-
export type EndowQueryParam = InferInput<typeof endowQueryParam>;
|
|
558
|
-
export declare const endowByEinParams: import("valibot").ObjectSchema<{
|
|
559
|
-
readonly env: import("valibot").PicklistSchema<readonly ["staging", "production"], undefined>;
|
|
560
|
-
readonly ein: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">, import("valibot").RegexAction<string, "must only contain letters and numbers">]>;
|
|
555
|
+
/** for ein path, only fields in reg-num/env gsi is available */
|
|
556
|
+
export declare const endowQueryParams: import("valibot").ObjectSchema<{
|
|
557
|
+
readonly fields: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, string[]>, import("valibot").FilterItemsAction<string[]>]>, import("valibot").ArraySchema<import("valibot").PicklistSchema<["url", "slug", "name", "overview", "tagline", "image", "logo", "card_img", "hq_country", "active_in_countries", "street_address", "sdgs", "receiptMsg", "hide_bg_tip", "published", "progDonationsAllowed", "allocation", "donateMethods", "increments", "fund_opt_in", "id", "env", "registration_number", "endow_designation", "social_media_urls", "claimed", "kyc_donors_only"], undefined>, undefined>]>, never>;
|
|
561
558
|
}, undefined>;
|
|
562
|
-
export type
|
|
559
|
+
export type EndowQueryParam = InferInput<typeof endowQueryParams>;
|
|
563
560
|
export declare const programId: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").UuidAction<string, undefined>]>;
|
|
564
561
|
export type ProgramId = InferOutput<typeof programId>;
|
|
565
562
|
export declare const milestoneId: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").UuidAction<string, undefined>]>;
|
package/dist/schema.mjs
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { env, orgDesignation, unSdgNum } from "@better-giving/schemas";
|
|
2
2
|
export { orgDesignation as endowDesignation, env, unSdgNum };
|
|
3
|
-
import { url, array, base64, boolean, check, custom, excludes, integer, keyof, lazy, maxLength, maxValue, minLength, minValue, nonEmpty, nullish, number, object, omit, optional, partial, picklist, pipe, regex, startsWith, string, transform, trim, uuid,
|
|
3
|
+
import { url, array, base64, boolean, check, custom, excludes, filterItems, integer, isoTimestamp, keyof, lazy, maxLength, maxValue, minLength, minValue, nonEmpty, nullish, number, object, omit, optional, partial, picklist, pipe, regex, startsWith, string, transform, trim, uuid, } from "valibot";
|
|
4
4
|
export const str = pipe(string(), trim());
|
|
5
|
+
export const csv = lazy((x) => {
|
|
6
|
+
if (!x)
|
|
7
|
+
return str;
|
|
8
|
+
return pipe(str, regex(/^[^,]+(?:,[^,]+)*$/, "invalid csv"));
|
|
9
|
+
});
|
|
10
|
+
export const csvStrs = pipe(csv, transform((x) => x.split(",")), filterItems((x) => x.length > 0));
|
|
5
11
|
const pct = pipe(number(), integer(), minValue(0), maxValue(100));
|
|
6
12
|
export const allocation = pipe(object({
|
|
7
13
|
cash: pct,
|
|
@@ -11,15 +17,12 @@ export const allocation = pipe(object({
|
|
|
11
17
|
export const endowId = pipe(number(), integer(), minValue(1));
|
|
12
18
|
export const endowIdParam = pipe(string(), transform((x) => +x), endowId);
|
|
13
19
|
export const segmentMaxChars = 30;
|
|
14
|
-
export const segment =
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
//valid characters
|
|
21
|
-
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"));
|
|
22
|
-
});
|
|
20
|
+
export const segment = pipe(str, maxLength(segmentMaxChars, ({ requirement: r }) => `cannot exceed ${r} chars`),
|
|
21
|
+
//must not be id-like
|
|
22
|
+
regex(/^(?!^\d+$)/, "should not be an id"),
|
|
23
|
+
//valid characters
|
|
24
|
+
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"));
|
|
25
|
+
export const slug = lazy((x) => (x ? segment : str));
|
|
23
26
|
export const reg_number = pipe(str, nonEmpty("required"), regex(/^[a-zA-Z0-9]+$/, "must only contain letters and numbers"));
|
|
24
27
|
export const donateMethodIds = ["stripe", "crypto", "daf", "stocks"];
|
|
25
28
|
export const donateMethodId = picklist(donateMethodIds);
|
|
@@ -53,7 +56,8 @@ export const increment = object({
|
|
|
53
56
|
});
|
|
54
57
|
export const endowment = object({
|
|
55
58
|
id: endowId,
|
|
56
|
-
|
|
59
|
+
env,
|
|
60
|
+
slug: optional(slug),
|
|
57
61
|
registration_number: reg_number,
|
|
58
62
|
name: pipe(str, nonEmpty("required")),
|
|
59
63
|
endow_designation: orgDesignation,
|
|
@@ -79,34 +83,15 @@ export const endowment = object({
|
|
|
79
83
|
donateMethods: optional(array(donateMethodId)),
|
|
80
84
|
increments: optional(pipe(array(increment), maxLength(MAX_NUM_INCREMENTS))),
|
|
81
85
|
fund_opt_in: optional(boolean()),
|
|
86
|
+
/** endowment is not claimed if `false` only */
|
|
87
|
+
claimed: boolean(),
|
|
88
|
+
kyc_donors_only: boolean(),
|
|
82
89
|
});
|
|
83
|
-
export const endowUpdate = partial(omit(endowment, ["id"]));
|
|
90
|
+
export const endowUpdate = partial(omit(endowment, ["id", "claimed", "kyc_donors_only", "env"]));
|
|
84
91
|
export const endowFields = keyof(endowment);
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
return pipe(str, regex(/^[^,]+(?:,[^,]+)*$/, "invalid csv"));
|
|
89
|
-
});
|
|
90
|
-
const boolCsv = pipe(csv, transform((x) => x.split(",").map(Boolean)), array(boolean()));
|
|
91
|
-
export const endowsQueryParams = object({
|
|
92
|
-
query: str,
|
|
93
|
-
page: pipe(string(), transform((x) => +x), integer(), minValue(1)),
|
|
94
|
-
endow_designation: optional(pipe(csv, transform((x) => x.split(",")), array(orgDesignation))),
|
|
95
|
-
sdgs: optional(pipe(csv, transform((x) => x.split(",").map((s) => +s)), array(unSdgNum))),
|
|
96
|
-
kyc_only: optional(boolCsv),
|
|
97
|
-
fund_opt_in: optional(boolCsv),
|
|
98
|
-
claimed: optional(boolCsv),
|
|
99
|
-
countries: optional(csv),
|
|
100
|
-
fields: optional(pipe(csv, transform((x) => x.split(",")), array(endowFields))),
|
|
101
|
-
});
|
|
102
|
-
export const endowQueryParam = object({
|
|
103
|
-
fields: optional(pipe(csv, transform((x) => x.split(",")), array(endowFields))),
|
|
104
|
-
slug: optional(segment),
|
|
105
|
-
env,
|
|
106
|
-
});
|
|
107
|
-
export const endowByEinParams = object({
|
|
108
|
-
env,
|
|
109
|
-
ein: reg_number,
|
|
92
|
+
/** for ein path, only fields in reg-num/env gsi is available */
|
|
93
|
+
export const endowQueryParams = object({
|
|
94
|
+
fields: optional(pipe(csvStrs, array(endowFields))),
|
|
110
95
|
});
|
|
111
96
|
const amnt = pipe(number(), minValue(0));
|
|
112
97
|
export const programId = pipe(str, uuid());
|
package/package.json
CHANGED
package/src/cloudsearch.mts
CHANGED
|
@@ -1,39 +1,96 @@
|
|
|
1
|
+
import { orgDesignation, unSdgNum } from "@better-giving/schemas";
|
|
1
2
|
import type {
|
|
2
3
|
ToDoc,
|
|
3
4
|
ToHitFields,
|
|
4
5
|
ToUpdate,
|
|
5
6
|
} from "@better-giving/types/cloudsearch";
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
7
|
+
import {
|
|
8
|
+
type InferInput,
|
|
9
|
+
type InferOutput,
|
|
10
|
+
array,
|
|
11
|
+
boolean,
|
|
12
|
+
integer,
|
|
13
|
+
keyof,
|
|
14
|
+
mapItems,
|
|
15
|
+
minValue,
|
|
16
|
+
number,
|
|
17
|
+
object,
|
|
18
|
+
optional,
|
|
19
|
+
pick,
|
|
20
|
+
pipe,
|
|
21
|
+
string,
|
|
22
|
+
transform,
|
|
23
|
+
} from "valibot";
|
|
24
|
+
import { type Environment, csvStrs, endowment, str } from "./schema.mjs";
|
|
25
|
+
|
|
26
|
+
const boolCsv = pipe(
|
|
27
|
+
csvStrs,
|
|
28
|
+
mapItems((x) => x === "true"),
|
|
29
|
+
array(boolean())
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
export const cloudsearchEndowFields = object({
|
|
33
|
+
contributions_total: number(),
|
|
34
|
+
contributions_count: number(),
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
export const cloudsearchEndow = object({
|
|
38
|
+
...pick(endowment, [
|
|
39
|
+
"card_img",
|
|
40
|
+
"name",
|
|
41
|
+
"tagline",
|
|
42
|
+
"hq_country",
|
|
43
|
+
"sdgs",
|
|
44
|
+
"active_in_countries",
|
|
45
|
+
"endow_designation",
|
|
46
|
+
"registration_number",
|
|
47
|
+
"kyc_donors_only",
|
|
48
|
+
"claimed",
|
|
49
|
+
//filters
|
|
50
|
+
"env",
|
|
51
|
+
"id",
|
|
52
|
+
"published",
|
|
53
|
+
"fund_opt_in",
|
|
54
|
+
]).entries,
|
|
55
|
+
...cloudsearchEndowFields.entries,
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
export const cloudSearchEndowFields = keyof(cloudsearchEndow);
|
|
59
|
+
|
|
60
|
+
export const endowsQueryParams = object({
|
|
61
|
+
query: str,
|
|
62
|
+
page: pipe(
|
|
63
|
+
string(),
|
|
64
|
+
transform((x) => +x),
|
|
65
|
+
integer(),
|
|
66
|
+
minValue(1)
|
|
67
|
+
),
|
|
68
|
+
endow_designation: optional(pipe(csvStrs, array(orgDesignation))),
|
|
69
|
+
sdgs: optional(
|
|
70
|
+
pipe(
|
|
71
|
+
csvStrs,
|
|
72
|
+
mapItems((x) => +x),
|
|
73
|
+
array(unSdgNum)
|
|
74
|
+
)
|
|
75
|
+
),
|
|
76
|
+
kyc_only: optional(boolCsv),
|
|
77
|
+
fund_opt_in: optional(boolCsv),
|
|
78
|
+
claimed: optional(boolCsv),
|
|
79
|
+
countries: optional(pipe(csvStrs, array(str))),
|
|
80
|
+
fields: optional(pipe(csvStrs, array(cloudSearchEndowFields))),
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
export type CloudsearchEndowsQueryParams = InferInput<typeof endowsQueryParams>;
|
|
84
|
+
|
|
85
|
+
export type CloudsearchEndow = InferOutput<typeof cloudsearchEndow>;
|
|
29
86
|
|
|
30
87
|
type DocId = `${Environment}-${number}`;
|
|
31
88
|
|
|
32
89
|
type Doc = {
|
|
33
90
|
documentId: DocId;
|
|
34
91
|
_score: number;
|
|
35
|
-
} & ToDoc<
|
|
92
|
+
} & ToDoc<CloudsearchEndow>;
|
|
36
93
|
|
|
37
94
|
export type HitFields = ToHitFields<Omit<Doc, "documentId" | "_score">>;
|
|
38
95
|
|
|
39
|
-
export type Update = ToUpdate<DocId,
|
|
96
|
+
export type Update = ToUpdate<DocId, CloudsearchEndow>;
|
package/src/db.mts
CHANGED
package/src/index.mts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import type { Fields as FundItem } from "./cloudsearch.mjs";
|
|
2
1
|
import type { Endow as NEndow, Media, Program as NProgram } from "./db.mjs";
|
|
3
2
|
import type { Milestone } from "./schema.mjs";
|
|
4
3
|
export type {
|
|
5
4
|
Allocation,
|
|
6
5
|
DonateMethodId,
|
|
7
|
-
EndowByEinParams,
|
|
8
6
|
EndowDesignation,
|
|
9
7
|
EndowQueryParam,
|
|
10
|
-
EndowsQueryParams,
|
|
11
8
|
EndowUpdate,
|
|
12
9
|
Environment,
|
|
13
10
|
Increment,
|
|
@@ -23,7 +20,10 @@ export type {
|
|
|
23
20
|
MediaType,
|
|
24
21
|
MediaUpdate,
|
|
25
22
|
} from "./schema.mjs";
|
|
26
|
-
export type {
|
|
23
|
+
export type {
|
|
24
|
+
CloudsearchEndow as EndowItem,
|
|
25
|
+
CloudsearchEndowsQueryParams as EndowsQueryParams,
|
|
26
|
+
} from "./cloudsearch.mjs";
|
|
27
27
|
|
|
28
28
|
export type Endow = Pick<
|
|
29
29
|
NEndow.DbRecord,
|
package/src/schema.mts
CHANGED
|
@@ -15,7 +15,9 @@ import {
|
|
|
15
15
|
check,
|
|
16
16
|
custom,
|
|
17
17
|
excludes,
|
|
18
|
+
filterItems,
|
|
18
19
|
integer,
|
|
20
|
+
isoTimestamp,
|
|
19
21
|
keyof,
|
|
20
22
|
lazy,
|
|
21
23
|
maxLength,
|
|
@@ -37,10 +39,18 @@ import {
|
|
|
37
39
|
transform,
|
|
38
40
|
trim,
|
|
39
41
|
uuid,
|
|
40
|
-
isoTimestamp,
|
|
41
42
|
} from "valibot";
|
|
42
43
|
|
|
43
44
|
export const str = pipe(string(), trim());
|
|
45
|
+
export const csv = lazy((x) => {
|
|
46
|
+
if (!x) return str;
|
|
47
|
+
return pipe(str, regex(/^[^,]+(?:,[^,]+)*$/, "invalid csv"));
|
|
48
|
+
});
|
|
49
|
+
export const csvStrs = pipe(
|
|
50
|
+
csv,
|
|
51
|
+
transform((x) => x.split(",")),
|
|
52
|
+
filterItems((x) => x.length > 0)
|
|
53
|
+
);
|
|
44
54
|
|
|
45
55
|
const pct = pipe(number(), integer(), minValue(0), maxValue(100));
|
|
46
56
|
export const allocation = pipe(
|
|
@@ -63,23 +73,22 @@ export const endowIdParam = pipe(
|
|
|
63
73
|
);
|
|
64
74
|
|
|
65
75
|
export const segmentMaxChars = 30;
|
|
66
|
-
export const segment =
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
});
|
|
76
|
+
export const segment = pipe(
|
|
77
|
+
str,
|
|
78
|
+
maxLength(
|
|
79
|
+
segmentMaxChars,
|
|
80
|
+
({ requirement: r }) => `cannot exceed ${r} chars`
|
|
81
|
+
),
|
|
82
|
+
//must not be id-like
|
|
83
|
+
regex(/^(?!^\d+$)/, "should not be an id"),
|
|
84
|
+
//valid characters
|
|
85
|
+
regex(/^[a-zA-Z0-9-._~]+$/, "allowed: numbers | letters | - | . | _ | ~"),
|
|
86
|
+
excludes("..", "should not contain double periods"),
|
|
87
|
+
custom((x) => !(x as string).startsWith("."), "should not start with dot"),
|
|
88
|
+
custom((x) => !(x as string).endsWith("."), "should not end with dot")
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
export const slug = lazy((x) => (x ? segment : str));
|
|
83
92
|
|
|
84
93
|
export const reg_number = pipe(
|
|
85
94
|
str,
|
|
@@ -150,7 +159,8 @@ export type Increment = InferOutput<typeof increment>;
|
|
|
150
159
|
|
|
151
160
|
export const endowment = object({
|
|
152
161
|
id: endowId,
|
|
153
|
-
|
|
162
|
+
env,
|
|
163
|
+
slug: optional(slug),
|
|
154
164
|
registration_number: reg_number,
|
|
155
165
|
name: pipe(str, nonEmpty("required")),
|
|
156
166
|
endow_designation: orgDesignation,
|
|
@@ -177,83 +187,27 @@ export const endowment = object({
|
|
|
177
187
|
donateMethods: optional(array(donateMethodId)),
|
|
178
188
|
increments: optional(pipe(array(increment), maxLength(MAX_NUM_INCREMENTS))),
|
|
179
189
|
fund_opt_in: optional(boolean()),
|
|
190
|
+
|
|
191
|
+
/** endowment is not claimed if `false` only */
|
|
192
|
+
claimed: boolean(),
|
|
193
|
+
kyc_donors_only: boolean(),
|
|
180
194
|
});
|
|
181
195
|
|
|
182
|
-
export const endowUpdate = partial(
|
|
183
|
-
|
|
196
|
+
export const endowUpdate = partial(
|
|
197
|
+
omit(endowment, ["id", "claimed", "kyc_donors_only", "env"])
|
|
198
|
+
);
|
|
184
199
|
|
|
200
|
+
export const endowFields = keyof(endowment);
|
|
185
201
|
export type Endowment = InferOutput<typeof endowment>;
|
|
186
202
|
export type EndowUpdate = InferOutput<typeof endowUpdate>;
|
|
187
203
|
export type EndowmentFields = InferOutput<typeof endowFields>;
|
|
188
204
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
const boolCsv = pipe(
|
|
195
|
-
csv,
|
|
196
|
-
transform((x) => x.split(",").map(Boolean)),
|
|
197
|
-
array(boolean())
|
|
198
|
-
);
|
|
199
|
-
|
|
200
|
-
export const endowsQueryParams = object({
|
|
201
|
-
query: str,
|
|
202
|
-
page: pipe(
|
|
203
|
-
string(),
|
|
204
|
-
transform((x) => +x),
|
|
205
|
-
integer(),
|
|
206
|
-
minValue(1)
|
|
207
|
-
),
|
|
208
|
-
endow_designation: optional(
|
|
209
|
-
pipe(
|
|
210
|
-
csv,
|
|
211
|
-
transform((x) => x.split(",")),
|
|
212
|
-
array(orgDesignation)
|
|
213
|
-
)
|
|
214
|
-
),
|
|
215
|
-
sdgs: optional(
|
|
216
|
-
pipe(
|
|
217
|
-
csv,
|
|
218
|
-
transform((x) => x.split(",").map((s) => +s)),
|
|
219
|
-
array(unSdgNum)
|
|
220
|
-
)
|
|
221
|
-
),
|
|
222
|
-
kyc_only: optional(boolCsv),
|
|
223
|
-
fund_opt_in: optional(boolCsv),
|
|
224
|
-
claimed: optional(boolCsv),
|
|
225
|
-
countries: optional(csv),
|
|
226
|
-
fields: optional(
|
|
227
|
-
pipe(
|
|
228
|
-
csv,
|
|
229
|
-
transform((x) => x.split(",")),
|
|
230
|
-
array(endowFields)
|
|
231
|
-
)
|
|
232
|
-
),
|
|
233
|
-
});
|
|
234
|
-
|
|
235
|
-
export type EndowsQueryParams = InferInput<typeof endowsQueryParams>;
|
|
236
|
-
|
|
237
|
-
export const endowQueryParam = object({
|
|
238
|
-
fields: optional(
|
|
239
|
-
pipe(
|
|
240
|
-
csv,
|
|
241
|
-
transform((x) => x.split(",")),
|
|
242
|
-
array(endowFields)
|
|
243
|
-
)
|
|
244
|
-
),
|
|
245
|
-
slug: optional(segment),
|
|
246
|
-
env,
|
|
247
|
-
});
|
|
248
|
-
|
|
249
|
-
export type EndowQueryParam = InferInput<typeof endowQueryParam>;
|
|
250
|
-
|
|
251
|
-
export const endowByEinParams = object({
|
|
252
|
-
env,
|
|
253
|
-
ein: reg_number,
|
|
205
|
+
/** for ein path, only fields in reg-num/env gsi is available */
|
|
206
|
+
export const endowQueryParams = object({
|
|
207
|
+
fields: optional(pipe(csvStrs, array(endowFields))),
|
|
254
208
|
});
|
|
255
209
|
|
|
256
|
-
export type
|
|
210
|
+
export type EndowQueryParam = InferInput<typeof endowQueryParams>;
|
|
257
211
|
|
|
258
212
|
const amnt = pipe(number(), minValue(0));
|
|
259
213
|
export const programId = pipe(str, uuid());
|