@better-giving/endowment 1.0.20 → 1.0.21

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.
@@ -1,14 +1,47 @@
1
1
  import type { ToDoc, ToHitFields, ToUpdate } from "@better-giving/types/cloudsearch";
2
- import type { Endow, Environment } from "./db.mjs";
3
- export type Fields = Pick<Endow.DbRecord, "card_img" | "name" | "tagline" | "hq_country" | "sdgs" | "active_in_countries" | "endow_designation" | "registration_number" | "kyc_donors_only" | "claimed" | "env" | "id" | "published" | "fund_opt_in"> & {
4
- contributions_total: number;
5
- contributions_count: number;
6
- };
2
+ import { type Environment } from "./schema.mjs";
3
+ import { type InferOutput, type InferInput } from "valibot";
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 claimed: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
20
+ readonly kyc_donors_only: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
21
+ readonly id: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
22
+ readonly env: import("valibot").PicklistSchema<readonly ["staging", "production"], undefined>;
23
+ 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">]>;
24
+ readonly endow_designation: import("valibot").PicklistSchema<readonly ["Charity", "Religious Organization", "University", "Hospital", "Other"], 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", "claimed", "kyc_donors_only", "id", "env", "registration_number", "endow_designation", "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", "claimed", "kyc_donors_only", "id", "env", "registration_number", "endow_designation", "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<Fields>;
44
+ } & ToDoc<CloudsearchEndow>;
12
45
  export type HitFields = ToHitFields<Omit<Doc, "documentId" | "_score">>;
13
- export type Update = ToUpdate<DocId, Fields>;
46
+ export type Update = ToUpdate<DocId, CloudsearchEndow>;
14
47
  export {};
@@ -1 +1,40 @@
1
- export {};
1
+ import { csvStrs, endowment, str } from "./schema.mjs";
2
+ import { object, number, pick, keyof, pipe, string, transform, integer, minValue, optional, mapItems, array, boolean, } from "valibot";
3
+ import { orgDesignation, unSdgNum } from "@better-giving/schemas";
4
+ const boolCsv = pipe(csvStrs, mapItems(Boolean), 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(Number), 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, EndowByEinParams, EndowDesignation, EndowQueryParam, EndowsQueryParams, EndowUpdate, Environment, Increment, Milestone, MilestoneUpdate, NewMilestone, NewProgram, ProgramUpdate, SocialMediaURLs, UnSdgNum, MediaQueryParams, MediaQueryParamsObj, MediaType, MediaUpdate, } from "./schema.mjs";
5
- export type { FundItem };
3
+ export type { Allocation, DonateMethodId, EndowByEinParams, 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>]>;
@@ -48,6 +50,7 @@ export declare const increment: import("valibot").ObjectSchema<{
48
50
  export type Increment = InferOutput<typeof increment>;
49
51
  export declare const endowment: import("valibot").ObjectSchema<{
50
52
  readonly id: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
53
+ readonly env: import("valibot").PicklistSchema<readonly ["staging", "production"], undefined>;
51
54
  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
55
  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
56
  readonly name: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>;
@@ -71,7 +74,7 @@ export declare const endowment: import("valibot").ObjectSchema<{
71
74
  }, undefined>;
72
75
  /** website */
73
76
  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 | 4 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[], 1, undefined>]>;
77
+ 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
78
  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
79
  readonly hide_bg_tip: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
77
80
  readonly published: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
@@ -95,9 +98,13 @@ export declare const endowment: import("valibot").ObjectSchema<{
95
98
  label: string;
96
99
  }[], 4, undefined>]>, never>;
97
100
  readonly fund_opt_in: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
101
+ /** endowment is not claimed if `false` only */
102
+ readonly claimed: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
103
+ readonly kyc_donors_only: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
98
104
  }, undefined>;
99
105
  export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
100
106
  readonly id: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
107
+ readonly env: import("valibot").PicklistSchema<readonly ["staging", "production"], undefined>;
101
108
  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
109
  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
110
  readonly name: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>;
@@ -121,7 +128,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
121
128
  }, undefined>;
122
129
  /** website */
123
130
  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 | 4 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[], 1, undefined>]>;
131
+ 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
132
  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
133
  readonly hide_bg_tip: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
127
134
  readonly published: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
@@ -145,9 +152,13 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
145
152
  label: string;
146
153
  }[], 4, undefined>]>, never>;
147
154
  readonly fund_opt_in: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
155
+ /** endowment is not claimed if `false` only */
156
+ readonly claimed: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
157
+ readonly kyc_donors_only: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
148
158
  }, undefined>, "_types" | "_run" | "entries"> & {
149
159
  readonly entries: Omit<{
150
160
  readonly id: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
161
+ readonly env: import("valibot").PicklistSchema<readonly ["staging", "production"], undefined>;
151
162
  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
163
  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
164
  readonly name: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>;
@@ -171,7 +182,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
171
182
  }, undefined>;
172
183
  /** website */
173
184
  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 | 4 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[], 1, undefined>]>;
185
+ 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
186
  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
187
  readonly hide_bg_tip: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
177
188
  readonly published: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
@@ -195,19 +206,22 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
195
206
  label: string;
196
207
  }[], 4, undefined>]>, never>;
197
208
  readonly fund_opt_in: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
198
- }, "id">;
199
- _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<{
209
+ /** endowment is not claimed if `false` only */
210
+ readonly claimed: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
211
+ readonly kyc_donors_only: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
212
+ }, "claimed" | "kyc_donors_only" | "id" | "env">;
213
+ _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
214
  cash: number;
201
215
  liq: number;
202
216
  lock: number;
203
- }> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").RegexIssue<string> | 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 | 4 | 3 | 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<{
217
+ }> | 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
218
  value: string;
205
219
  label: string;
206
220
  }[], 4>>): import("valibot").Dataset<{
207
221
  name: string;
208
222
  hq_country: string;
209
223
  active_in_countries: string[];
210
- sdgs: (2 | 1 | 4 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[];
224
+ sdgs: (2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[];
211
225
  registration_number: string;
212
226
  endow_designation: "Charity" | "Religious Organization" | "University" | "Hospital" | "Other";
213
227
  social_media_urls: {
@@ -242,11 +256,11 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
242
256
  label: string;
243
257
  }[] | undefined;
244
258
  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<{
259
+ }, 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
260
  cash: number;
247
261
  liq: number;
248
262
  lock: number;
249
- }> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").RegexIssue<string> | 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 | 4 | 3 | 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<{
263
+ }> | 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
264
  value: string;
251
265
  label: string;
252
266
  }[], 4>>;
@@ -255,7 +269,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
255
269
  name: string;
256
270
  hq_country: string;
257
271
  active_in_countries: string[];
258
- sdgs: (2 | 1 | 4 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[];
272
+ sdgs: (2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[];
259
273
  registration_number: string;
260
274
  endow_designation: "Charity" | "Religious Organization" | "University" | "Hospital" | "Other";
261
275
  social_media_urls: {
@@ -295,7 +309,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
295
309
  name: string;
296
310
  hq_country: string;
297
311
  active_in_countries: string[];
298
- sdgs: (2 | 1 | 4 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[];
312
+ sdgs: (2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[];
299
313
  registration_number: string;
300
314
  endow_designation: "Charity" | "Religious Organization" | "University" | "Hospital" | "Other";
301
315
  social_media_urls: {
@@ -331,11 +345,11 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
331
345
  }[] | undefined;
332
346
  fund_opt_in?: boolean | undefined;
333
347
  };
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<{
348
+ 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
349
  cash: number;
336
350
  liq: number;
337
351
  lock: number;
338
- }> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").RegexIssue<string> | 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 | 4 | 3 | 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<{
352
+ }> | 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
353
  value: string;
340
354
  label: string;
341
355
  }[], 4>;
@@ -353,7 +367,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
353
367
  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
368
  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
369
  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 | 4 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[], 1, undefined>]>, never>;
370
+ 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
371
  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
372
  readonly hide_bg_tip: import("valibot").OptionalSchema<import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>, never>;
359
373
  readonly published: import("valibot").OptionalSchema<import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>, never>;
@@ -388,11 +402,11 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
388
402
  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
403
  }, undefined>, never>;
390
404
  };
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<{
405
+ _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
406
  cash: number;
393
407
  liq: number;
394
408
  lock: number;
395
- }> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").RegexIssue<string> | 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 | 4 | 3 | 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<{
409
+ }> | 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
410
  value: string;
397
411
  label: string;
398
412
  }[], 4>>): import("valibot").Dataset<{
@@ -407,7 +421,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
407
421
  hq_country?: string | undefined;
408
422
  active_in_countries?: string[] | undefined;
409
423
  street_address?: string | undefined;
410
- sdgs?: (2 | 1 | 4 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[] | undefined;
424
+ sdgs?: (2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[] | undefined;
411
425
  receiptMsg?: string | undefined;
412
426
  hide_bg_tip?: boolean | undefined;
413
427
  published?: boolean | undefined;
@@ -434,11 +448,11 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
434
448
  youtube?: string | undefined;
435
449
  tiktok?: string | undefined;
436
450
  } | 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<{
451
+ }, 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
452
  cash: number;
439
453
  liq: number;
440
454
  lock: number;
441
- }> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").RegexIssue<string> | 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 | 4 | 3 | 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<{
455
+ }> | 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
456
  value: string;
443
457
  label: string;
444
458
  }[], 4>>;
@@ -455,7 +469,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
455
469
  hq_country?: string | undefined;
456
470
  active_in_countries?: string[] | undefined;
457
471
  street_address?: string | undefined;
458
- sdgs?: (2 | 1 | 4 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[] | undefined;
472
+ sdgs?: (2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[] | undefined;
459
473
  receiptMsg?: string | undefined;
460
474
  hide_bg_tip?: boolean | undefined;
461
475
  published?: boolean | undefined;
@@ -495,7 +509,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
495
509
  hq_country?: string | undefined;
496
510
  active_in_countries?: string[] | undefined;
497
511
  street_address?: string | undefined;
498
- sdgs?: (2 | 1 | 4 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[] | undefined;
512
+ sdgs?: (2 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17)[] | undefined;
499
513
  receiptMsg?: string | undefined;
500
514
  hide_bg_tip?: boolean | undefined;
501
515
  published?: boolean | undefined;
@@ -523,34 +537,22 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
523
537
  tiktok?: string | undefined;
524
538
  } | undefined;
525
539
  };
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<{
540
+ 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
541
  cash: number;
528
542
  liq: number;
529
543
  lock: number;
530
- }> | import("valibot").MaxLengthIssue<string, 30> | import("valibot").RegexIssue<string> | 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 | 4 | 3 | 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<{
544
+ }> | 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
545
  value: string;
532
546
  label: string;
533
547
  }[], 4>;
534
548
  } | undefined;
535
549
  };
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>;
550
+ 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", "claimed", "kyc_donors_only", "id", "env", "registration_number", "endow_designation", "social_media_urls"], undefined>;
537
551
  export type Endowment = InferOutput<typeof endowment>;
538
552
  export type EndowUpdate = InferOutput<typeof endowUpdate>;
539
553
  export type EndowmentFields = InferOutput<typeof endowFields>;
540
- export declare const endowsQueryParams: import("valibot").ObjectSchema<{
541
- readonly query: import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>;
542
- 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>]>;
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
554
  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>;
555
+ 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", "claimed", "kyc_donors_only", "id", "env", "registration_number", "endow_designation", "social_media_urls"], undefined>, undefined>]>, never>;
554
556
  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
557
  readonly env: import("valibot").PicklistSchema<readonly ["staging", "production"], undefined>;
556
558
  }, 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, isoTimestamp, } from "valibot";
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,
@@ -53,6 +59,7 @@ export const increment = object({
53
59
  });
54
60
  export const endowment = object({
55
61
  id: endowId,
62
+ env,
56
63
  slug: optional(segment),
57
64
  registration_number: reg_number,
58
65
  name: pipe(str, nonEmpty("required")),
@@ -79,28 +86,14 @@ export const endowment = object({
79
86
  donateMethods: optional(array(donateMethodId)),
80
87
  increments: optional(pipe(array(increment), maxLength(MAX_NUM_INCREMENTS))),
81
88
  fund_opt_in: optional(boolean()),
89
+ /** endowment is not claimed if `false` only */
90
+ claimed: optional(boolean()),
91
+ kyc_donors_only: optional(boolean()),
82
92
  });
83
- export const endowUpdate = partial(omit(endowment, ["id"]));
93
+ export const endowUpdate = partial(omit(endowment, ["id", "claimed", "kyc_donors_only", "env"]));
84
94
  export const endowFields = keyof(endowment);
85
- const csv = lazy((x) => {
86
- if (!x)
87
- return str;
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
95
  export const endowQueryParam = object({
103
- fields: optional(pipe(csv, transform((x) => x.split(",")), array(endowFields))),
96
+ fields: optional(pipe(csvStrs, array(endowFields))),
104
97
  slug: optional(segment),
105
98
  env,
106
99
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@better-giving/endowment",
3
- "version": "1.0.20",
3
+ "version": "1.0.21",
4
4
  "peerDependencies": {
5
5
  "@better-giving/schemas": "1.0.1",
6
6
  "@better-giving/types": "1.0.1"
@@ -1,39 +1,86 @@
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 type { Endow, Environment } from "./db.mjs";
7
-
8
- export type Fields = Pick<
9
- Endow.DbRecord,
10
- //card UI attribures
11
- | "card_img"
12
- | "name"
13
- | "tagline"
14
- | "hq_country"
15
- | "sdgs"
16
- | "active_in_countries"
17
- | "endow_designation"
18
- | "registration_number"
19
- //icons
20
- | "kyc_donors_only"
21
- | "claimed"
22
- //filters
23
- | "env"
24
- | "id"
25
- | "published"
26
- | "fund_opt_in"
27
- // balance data
28
- > & { contributions_total: number; contributions_count: number };
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(csvStrs, mapItems(Boolean), array(boolean()));
27
+
28
+ export const cloudsearchEndowFields = object({
29
+ contributions_total: number(),
30
+ contributions_count: number(),
31
+ });
32
+
33
+ export const cloudsearchEndow = object({
34
+ ...pick(endowment, [
35
+ "card_img",
36
+ "name",
37
+ "tagline",
38
+ "hq_country",
39
+ "sdgs",
40
+ "active_in_countries",
41
+ "endow_designation",
42
+ "registration_number",
43
+ "kyc_donors_only",
44
+ "claimed",
45
+ //filters
46
+ "env",
47
+ "id",
48
+ "published",
49
+ "fund_opt_in",
50
+ ]).entries,
51
+ ...cloudsearchEndowFields.entries,
52
+ });
53
+
54
+ export const cloudSearchEndowFields = keyof(cloudsearchEndow);
55
+
56
+ export const endowsQueryParams = object({
57
+ query: str,
58
+ page: pipe(
59
+ string(),
60
+ transform((x) => +x),
61
+ integer(),
62
+ minValue(1)
63
+ ),
64
+ endow_designation: optional(pipe(csvStrs, array(orgDesignation))),
65
+ sdgs: optional(pipe(csvStrs, mapItems(Number), array(unSdgNum))),
66
+ kyc_only: optional(boolCsv),
67
+ fund_opt_in: optional(boolCsv),
68
+ claimed: optional(boolCsv),
69
+ countries: optional(pipe(csvStrs, array(str))),
70
+ fields: optional(pipe(csvStrs, array(cloudSearchEndowFields))),
71
+ });
72
+
73
+ export type CloudsearchEndowsQueryParams = InferInput<typeof endowsQueryParams>;
74
+
75
+ export type CloudsearchEndow = InferOutput<typeof cloudsearchEndow>;
29
76
 
30
77
  type DocId = `${Environment}-${number}`;
31
78
 
32
79
  type Doc = {
33
80
  documentId: DocId;
34
81
  _score: number;
35
- } & ToDoc<Fields>;
82
+ } & ToDoc<CloudsearchEndow>;
36
83
 
37
84
  export type HitFields = ToHitFields<Omit<Doc, "documentId" | "_score">>;
38
85
 
39
- export type Update = ToUpdate<DocId, Fields>;
86
+ export type Update = ToUpdate<DocId, CloudsearchEndow>;
package/src/db.mts CHANGED
@@ -41,10 +41,7 @@ export namespace Endow {
41
41
  };
42
42
 
43
43
  export type NonKeyAttributes = EndowmentShape & {
44
- env: Environment;
45
- kyc_donors_only: boolean;
46
44
  fiscal_sponsored: boolean;
47
- claimed: boolean;
48
45
 
49
46
  /** in USD @deprecated */
50
47
  payout_minimum?: number;
package/src/index.mts CHANGED
@@ -1,4 +1,3 @@
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 {
@@ -7,7 +6,6 @@ export type {
7
6
  EndowByEinParams,
8
7
  EndowDesignation,
9
8
  EndowQueryParam,
10
- EndowsQueryParams,
11
9
  EndowUpdate,
12
10
  Environment,
13
11
  Increment,
@@ -23,7 +21,10 @@ export type {
23
21
  MediaType,
24
22
  MediaUpdate,
25
23
  } from "./schema.mjs";
26
- export type { FundItem };
24
+ export type {
25
+ CloudsearchEndow as EndowItem,
26
+ CloudsearchEndowsQueryParams as EndowsQueryParams,
27
+ } from "./cloudsearch.mjs";
27
28
 
28
29
  export type Endow = Pick<
29
30
  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(
@@ -150,6 +160,7 @@ export type Increment = InferOutput<typeof increment>;
150
160
 
151
161
  export const endowment = object({
152
162
  id: endowId,
163
+ env,
153
164
  slug: optional(segment),
154
165
  registration_number: reg_number,
155
166
  name: pipe(str, nonEmpty("required")),
@@ -177,71 +188,23 @@ export const endowment = object({
177
188
  donateMethods: optional(array(donateMethodId)),
178
189
  increments: optional(pipe(array(increment), maxLength(MAX_NUM_INCREMENTS))),
179
190
  fund_opt_in: optional(boolean()),
191
+
192
+ /** endowment is not claimed if `false` only */
193
+ claimed: optional(boolean()),
194
+ kyc_donors_only: optional(boolean()),
180
195
  });
181
196
 
182
- export const endowUpdate = partial(omit(endowment, ["id"]));
183
- export const endowFields = keyof(endowment);
197
+ export const endowUpdate = partial(
198
+ omit(endowment, ["id", "claimed", "kyc_donors_only", "env"])
199
+ );
184
200
 
201
+ export const endowFields = keyof(endowment);
185
202
  export type Endowment = InferOutput<typeof endowment>;
186
203
  export type EndowUpdate = InferOutput<typeof endowUpdate>;
187
204
  export type EndowmentFields = InferOutput<typeof endowFields>;
188
205
 
189
- const csv = lazy((x) => {
190
- if (!x) return str;
191
- return pipe(str, regex(/^[^,]+(?:,[^,]+)*$/, "invalid csv"));
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
206
  export const endowQueryParam = object({
238
- fields: optional(
239
- pipe(
240
- csv,
241
- transform((x) => x.split(",")),
242
- array(endowFields)
243
- )
244
- ),
207
+ fields: optional(pipe(csvStrs, array(endowFields))),
245
208
  slug: optional(segment),
246
209
  env,
247
210
  });