@better-giving/endowment 1.0.25 → 1.0.26
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 +8 -5
- package/dist/db.d.mts +32 -25
- package/dist/index.d.mts +10 -11
- package/dist/schema.d.mts +38 -18
- package/dist/schema.mjs +10 -1
- package/package.json +1 -1
- package/src/cloudsearch.mts +8 -5
- package/src/db.mts +25 -31
- package/src/index.mts +11 -39
- package/src/schema.mts +27 -16
package/dist/cloudsearch.d.mts
CHANGED
|
@@ -35,13 +35,16 @@ export declare const endowsQueryParams: import("valibot").ObjectSchema<{
|
|
|
35
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
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
37
|
}, undefined>;
|
|
38
|
-
export
|
|
39
|
-
|
|
38
|
+
export interface CloudsearchEndowsQueryParams extends InferInput<typeof endowsQueryParams> {
|
|
39
|
+
}
|
|
40
|
+
export interface CloudsearchEndow extends InferOutput<typeof cloudsearchEndow> {
|
|
41
|
+
}
|
|
40
42
|
type DocId = `${Environment}-${number}`;
|
|
41
|
-
|
|
43
|
+
interface Doc extends ToDoc<CloudsearchEndow> {
|
|
42
44
|
documentId: DocId;
|
|
43
45
|
_score: number;
|
|
44
|
-
}
|
|
45
|
-
export
|
|
46
|
+
}
|
|
47
|
+
export interface HitFields extends ToHitFields<Omit<Doc, "documentId" | "_score">> {
|
|
48
|
+
}
|
|
46
49
|
export type Update = ToUpdate<DocId, CloudsearchEndow>;
|
|
47
50
|
export {};
|
package/dist/db.d.mts
CHANGED
|
@@ -19,7 +19,6 @@ export declare namespace Endow {
|
|
|
19
19
|
SK: Environment;
|
|
20
20
|
};
|
|
21
21
|
type NonKeyAttributes = EndowmentShape & {
|
|
22
|
-
fiscal_sponsored: boolean;
|
|
23
22
|
/** in USD @deprecated */
|
|
24
23
|
payout_minimum?: number;
|
|
25
24
|
/** @deprecated */
|
|
@@ -29,62 +28,70 @@ export declare namespace Endow {
|
|
|
29
28
|
/** @deprecated */
|
|
30
29
|
sfCompounded?: boolean;
|
|
31
30
|
};
|
|
32
|
-
|
|
31
|
+
interface DbRecord extends Keys, NonKeyAttributes {
|
|
32
|
+
}
|
|
33
33
|
}
|
|
34
34
|
export declare namespace RegNumEnvGsi {
|
|
35
35
|
type Name = typeof endowGsi.regnumEnv;
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
interface Keys extends Pick<Endow.NonKeyAttributes, "registration_number" | "env"> {
|
|
37
|
+
}
|
|
38
|
+
interface DbRecord extends Keys, Endow.Keys, Pick<Endow.NonKeyAttributes, "claimed" | "name" | "hq_country" | "id"> {
|
|
39
|
+
}
|
|
38
40
|
}
|
|
39
41
|
export declare namespace SlugEnvGsi {
|
|
40
42
|
type Name = typeof endowGsi.slugEnv;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
interface Keys extends Pick<Endow.NonKeyAttributes, "slug" | "env"> {
|
|
44
|
+
}
|
|
45
|
+
interface DbRecord extends Endow.DbRecord {
|
|
46
|
+
}
|
|
43
47
|
}
|
|
44
48
|
export declare namespace Program {
|
|
45
|
-
|
|
49
|
+
interface Keys {
|
|
46
50
|
PK: `Endow#${number}#${Environment}`;
|
|
47
51
|
SK: `Prog#${ProgramId}`;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
type DbRecord = Keys & NonKeyAttributes;
|
|
52
|
+
}
|
|
53
|
+
interface NonKeyAttributes extends ProgramShape {
|
|
54
|
+
}
|
|
55
|
+
interface DbRecord extends Keys, NonKeyAttributes {
|
|
56
|
+
}
|
|
54
57
|
}
|
|
55
58
|
export declare namespace Milestone {
|
|
56
|
-
|
|
59
|
+
interface Keys {
|
|
57
60
|
PK: `Prog#${string}#${Environment}`;
|
|
58
61
|
SK: `Mile#${MilestoneId}`;
|
|
59
|
-
}
|
|
60
|
-
|
|
62
|
+
}
|
|
63
|
+
interface DbRecord extends Keys, MilestoneShape {
|
|
64
|
+
}
|
|
61
65
|
}
|
|
62
66
|
export declare const mediaGsi: {
|
|
63
67
|
readonly 1: "gsi1";
|
|
64
68
|
};
|
|
65
69
|
export declare namespace Media {
|
|
66
|
-
|
|
70
|
+
interface Keys {
|
|
67
71
|
PK: `Endow#${EndowId}#${Environment}`;
|
|
68
72
|
SK: `Media#${MediaId}`;
|
|
69
|
-
}
|
|
73
|
+
}
|
|
70
74
|
/** "0" - featured (goes before 1), "1" - not-featured */
|
|
71
75
|
type FeaturedFlag = "0" | "1";
|
|
72
|
-
|
|
76
|
+
interface NonKeyAttributes {
|
|
73
77
|
id: MediaId;
|
|
74
78
|
gsi1PK: Keys["PK"];
|
|
75
79
|
gsi1SK: `MediaList#${FeaturedFlag}#${MediaId}#${MediaType}`;
|
|
76
80
|
/** iso string */
|
|
77
81
|
dateCreated: string;
|
|
78
|
-
}
|
|
79
|
-
|
|
82
|
+
}
|
|
83
|
+
interface VideoAttributes extends NonKeyAttributes {
|
|
80
84
|
type: Extract<MediaType, "video">;
|
|
81
85
|
url: string;
|
|
82
|
-
}
|
|
83
|
-
|
|
86
|
+
}
|
|
87
|
+
interface VideoDbRecord extends Keys, VideoAttributes {
|
|
88
|
+
}
|
|
84
89
|
type DbRecord = VideoDbRecord;
|
|
85
90
|
namespace Gsi1 {
|
|
86
91
|
type Name = (typeof mediaGsi)[1];
|
|
87
|
-
|
|
88
|
-
|
|
92
|
+
interface Keys extends Pick<NonKeyAttributes, "gsi1PK" | "gsi1SK"> {
|
|
93
|
+
}
|
|
94
|
+
interface DbRecord extends Keys, NonKeyAttributes {
|
|
95
|
+
}
|
|
89
96
|
}
|
|
90
97
|
}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { Milestone } from "./schema.mjs";
|
|
3
|
-
export type { Allocation, DonateMethodId, EndowDesignation, EndowFields, EndowQueryParams, EndowUpdate, Environment, Increment, MediaQueryParams, MediaQueryParamsObj, MediaType, MediaUpdate, Milestone, MilestoneUpdate, NewMilestone, NewProgram, ProgramUpdate, SocialMediaURLs, UnSdgNum, } from "./schema.mjs";
|
|
1
|
+
import type { Media } from "./db.mjs";
|
|
2
|
+
import type { Milestone, Program as ProgramShape } from "./schema.mjs";
|
|
3
|
+
export type { Allocation, DonateMethodId, EndowDesignation, Endowment as Endow, EndowFields, EndowQueryParams, EndowUpdate, Environment, Increment, MediaQueryParams, MediaQueryParamsObj, MediaType, MediaUpdate, Milestone, MilestoneUpdate, NewMilestone, NewProgram, ProgramUpdate, SocialMediaURLs, UnSdgNum, } from "./schema.mjs";
|
|
4
4
|
export type { CloudsearchEndow as EndowItem, CloudsearchEndowsQueryParams as EndowsQueryParams, } from "./cloudsearch.mjs";
|
|
5
|
-
export
|
|
6
|
-
export type Program = Omit<NProgram.DbRecord, "PK" | "SK"> & {
|
|
5
|
+
export interface Program extends ProgramShape {
|
|
7
6
|
milestones: Milestone[];
|
|
8
|
-
}
|
|
7
|
+
}
|
|
9
8
|
/** web-app format */
|
|
10
|
-
export
|
|
9
|
+
export interface IMedia extends Omit<Media.DbRecord, "PK" | "SK" | "gsi1PK" | "gsi1SK"> {
|
|
11
10
|
featured: boolean;
|
|
12
|
-
}
|
|
13
|
-
export
|
|
14
|
-
items:
|
|
11
|
+
}
|
|
12
|
+
export interface MediaPage {
|
|
13
|
+
items: IMedia[];
|
|
15
14
|
nextPageKey?: string;
|
|
16
|
-
}
|
|
15
|
+
}
|
package/dist/schema.d.mts
CHANGED
|
@@ -14,7 +14,8 @@ export declare const allocation: import("valibot").SchemaWithPipe<[import("valib
|
|
|
14
14
|
liq: number;
|
|
15
15
|
lock: number;
|
|
16
16
|
}, "must total to 100">]>;
|
|
17
|
-
export
|
|
17
|
+
export interface Allocation extends InferOutput<typeof allocation> {
|
|
18
|
+
}
|
|
18
19
|
export declare const endowId: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
|
|
19
20
|
export type EndowId = InferOutput<typeof endowId>;
|
|
20
21
|
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>]>]>;
|
|
@@ -37,7 +38,8 @@ export declare const social_media_urls: import("valibot").ObjectSchema<{
|
|
|
37
38
|
readonly youtube: 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>;
|
|
38
39
|
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>;
|
|
39
40
|
}, undefined>;
|
|
40
|
-
export
|
|
41
|
+
export interface SocialMediaURLs extends InferOutput<typeof social_media_urls> {
|
|
42
|
+
}
|
|
41
43
|
export declare const MAX_RECEIPT_MSG_CHAR = 500;
|
|
42
44
|
export declare const incrementVal: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">, import("valibot").TransformAction<string, number>, import("valibot").NumberSchema<"must be a number">, import("valibot").MinValueAction<number, 0, "must be greater than 0">, import("valibot").TransformAction<number, string>]>;
|
|
43
45
|
export declare const MAX_NUM_INCREMENTS = 4;
|
|
@@ -48,7 +50,8 @@ export declare const increment: import("valibot").ObjectSchema<{
|
|
|
48
50
|
readonly value: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">, import("valibot").TransformAction<string, number>, import("valibot").NumberSchema<"must be a number">, import("valibot").MinValueAction<number, 0, "must be greater than 0">, import("valibot").TransformAction<number, string>]>;
|
|
49
51
|
readonly label: 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>]>;
|
|
50
52
|
}, undefined>;
|
|
51
|
-
export
|
|
53
|
+
export interface Increment extends InferOutput<typeof increment> {
|
|
54
|
+
}
|
|
52
55
|
export declare const endowment: import("valibot").ObjectSchema<{
|
|
53
56
|
readonly id: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
|
|
54
57
|
readonly env: import("valibot").PicklistSchema<readonly ["staging", "production"], undefined>;
|
|
@@ -102,6 +105,7 @@ export declare const endowment: import("valibot").ObjectSchema<{
|
|
|
102
105
|
/** endowment is not claimed if `false` only */
|
|
103
106
|
readonly claimed: import("valibot").BooleanSchema<undefined>;
|
|
104
107
|
readonly kyc_donors_only: import("valibot").BooleanSchema<undefined>;
|
|
108
|
+
readonly fiscal_sponsored: import("valibot").BooleanSchema<undefined>;
|
|
105
109
|
}, undefined>;
|
|
106
110
|
export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
107
111
|
readonly id: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
|
|
@@ -156,6 +160,7 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
156
160
|
/** endowment is not claimed if `false` only */
|
|
157
161
|
readonly claimed: import("valibot").BooleanSchema<undefined>;
|
|
158
162
|
readonly kyc_donors_only: import("valibot").BooleanSchema<undefined>;
|
|
163
|
+
readonly fiscal_sponsored: import("valibot").BooleanSchema<undefined>;
|
|
159
164
|
}, undefined>, "_types" | "_run" | "entries"> & {
|
|
160
165
|
readonly entries: Omit<{
|
|
161
166
|
readonly id: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
|
|
@@ -210,7 +215,8 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
210
215
|
/** endowment is not claimed if `false` only */
|
|
211
216
|
readonly claimed: import("valibot").BooleanSchema<undefined>;
|
|
212
217
|
readonly kyc_donors_only: import("valibot").BooleanSchema<undefined>;
|
|
213
|
-
|
|
218
|
+
readonly fiscal_sponsored: import("valibot").BooleanSchema<undefined>;
|
|
219
|
+
}, "id" | "env" | "claimed" | "kyc_donors_only" | "fiscal_sponsored">;
|
|
214
220
|
_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<{
|
|
215
221
|
cash: number;
|
|
216
222
|
liq: number;
|
|
@@ -548,15 +554,18 @@ export declare const endowUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
548
554
|
}[], 4>;
|
|
549
555
|
} | undefined;
|
|
550
556
|
};
|
|
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>;
|
|
552
|
-
export
|
|
553
|
-
|
|
557
|
+
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", "fiscal_sponsored"], undefined>;
|
|
558
|
+
export interface Endowment extends InferOutput<typeof endowment> {
|
|
559
|
+
}
|
|
560
|
+
export interface EndowUpdate extends InferOutput<typeof endowUpdate> {
|
|
561
|
+
}
|
|
554
562
|
export type EndowFields = InferOutput<typeof endowFields>;
|
|
555
563
|
/** for ein path, only fields in reg-num/env gsi is available */
|
|
556
564
|
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>;
|
|
565
|
+
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", "fiscal_sponsored"], undefined>, undefined>]>, never>;
|
|
558
566
|
}, undefined>;
|
|
559
|
-
export
|
|
567
|
+
export interface EndowQueryParams extends InferInput<typeof endowQueryParams> {
|
|
568
|
+
}
|
|
560
569
|
export declare const programId: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").UuidAction<string, undefined>]>;
|
|
561
570
|
export type ProgramId = InferOutput<typeof programId>;
|
|
562
571
|
export declare const milestoneId: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").UuidAction<string, undefined>]>;
|
|
@@ -601,8 +610,10 @@ export declare const milestoneUpdate: Omit<import("valibot").ObjectSchema<{
|
|
|
601
610
|
readonly issue: import("valibot").StringIssue | import("valibot").ObjectIssue | import("valibot").UrlIssue<string> | import("valibot").IsoTimestampIssue<string>;
|
|
602
611
|
} | undefined;
|
|
603
612
|
};
|
|
604
|
-
export
|
|
605
|
-
|
|
613
|
+
export interface MilestoneUpdate extends InferOutput<typeof milestoneUpdate> {
|
|
614
|
+
}
|
|
615
|
+
export interface NewMilestone extends InferOutput<typeof newMilestone> {
|
|
616
|
+
}
|
|
606
617
|
export declare const milestone: import("valibot").ObjectSchema<{
|
|
607
618
|
readonly id: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").UuidAction<string, undefined>]>;
|
|
608
619
|
readonly date: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").IsoTimestampAction<string, undefined>]>;
|
|
@@ -610,7 +621,8 @@ export declare const milestone: import("valibot").ObjectSchema<{
|
|
|
610
621
|
readonly description: import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>;
|
|
611
622
|
readonly media: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").UrlAction<string, undefined>]>, never>;
|
|
612
623
|
}, undefined>;
|
|
613
|
-
export
|
|
624
|
+
export interface Milestone extends InferOutput<typeof milestone> {
|
|
625
|
+
}
|
|
614
626
|
export declare const newProgram: import("valibot").ObjectSchema<{
|
|
615
627
|
readonly title: import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>;
|
|
616
628
|
readonly description: import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>;
|
|
@@ -630,6 +642,8 @@ export declare const newProgram: import("valibot").ObjectSchema<{
|
|
|
630
642
|
}[], 24, undefined>]>;
|
|
631
643
|
}, undefined>;
|
|
632
644
|
export declare const program: import("valibot").ObjectSchema<{
|
|
645
|
+
/** in USD */
|
|
646
|
+
readonly totalDonations: import("valibot").OptionalSchema<import("valibot").NumberSchema<undefined>, never>;
|
|
633
647
|
readonly id: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").UuidAction<string, undefined>]>;
|
|
634
648
|
readonly title: import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>;
|
|
635
649
|
readonly description: import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>;
|
|
@@ -722,9 +736,12 @@ export declare const programUpdate: Omit<Omit<import("valibot").ObjectSchema<{
|
|
|
722
736
|
readonly issue: import("valibot").StringIssue | import("valibot").NumberIssue | import("valibot").MinValueIssue<number, 0> | import("valibot").ObjectIssue | import("valibot").UrlIssue<string>;
|
|
723
737
|
} | undefined;
|
|
724
738
|
};
|
|
725
|
-
export
|
|
726
|
-
|
|
727
|
-
export
|
|
739
|
+
export interface NewProgram extends InferOutput<typeof newProgram> {
|
|
740
|
+
}
|
|
741
|
+
export interface Program extends InferOutput<typeof program> {
|
|
742
|
+
}
|
|
743
|
+
export interface ProgramUpdate extends InferOutput<typeof programUpdate> {
|
|
744
|
+
}
|
|
728
745
|
export declare const mediaUrl: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").UrlAction<string, undefined>]>;
|
|
729
746
|
/**
|
|
730
747
|
* so that media is automatically sorted by date
|
|
@@ -738,7 +755,8 @@ export declare const mediaUpdate: import("valibot").ObjectSchema<{
|
|
|
738
755
|
readonly url: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").UrlAction<string, undefined>]>, never>;
|
|
739
756
|
readonly featured: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
|
|
740
757
|
}, undefined>;
|
|
741
|
-
export
|
|
758
|
+
export interface MediaUpdate extends InferOutput<typeof mediaUpdate> {
|
|
759
|
+
}
|
|
742
760
|
export type MediaId = InferOutput<typeof mediaKsuid>;
|
|
743
761
|
export declare const mediaQueryParams: import("valibot").ObjectSchema<{
|
|
744
762
|
readonly type: import("valibot").OptionalSchema<import("valibot").PicklistSchema<readonly ["album", "article", "video"], undefined>, never>;
|
|
@@ -746,5 +764,7 @@ export declare const mediaQueryParams: import("valibot").ObjectSchema<{
|
|
|
746
764
|
readonly featured: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TrimAction]>, import("valibot").TransformAction<string, boolean>, import("valibot").BooleanSchema<undefined>]>, never>;
|
|
747
765
|
readonly limit: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TransformAction<string, number>, import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>, never>;
|
|
748
766
|
}, undefined>;
|
|
749
|
-
export
|
|
750
|
-
|
|
767
|
+
export interface MediaQueryParams extends InferInput<typeof mediaQueryParams> {
|
|
768
|
+
}
|
|
769
|
+
export interface MediaQueryParamsObj extends InferOutput<typeof mediaQueryParams> {
|
|
770
|
+
}
|
package/dist/schema.mjs
CHANGED
|
@@ -86,8 +86,15 @@ export const endowment = object({
|
|
|
86
86
|
/** endowment is not claimed if `false` only */
|
|
87
87
|
claimed: boolean(),
|
|
88
88
|
kyc_donors_only: boolean(),
|
|
89
|
+
fiscal_sponsored: boolean(),
|
|
89
90
|
});
|
|
90
|
-
export const endowUpdate = partial(omit(endowment, [
|
|
91
|
+
export const endowUpdate = partial(omit(endowment, [
|
|
92
|
+
"id",
|
|
93
|
+
"claimed",
|
|
94
|
+
"kyc_donors_only",
|
|
95
|
+
"env",
|
|
96
|
+
"fiscal_sponsored",
|
|
97
|
+
]));
|
|
91
98
|
export const endowFields = keyof(endowment);
|
|
92
99
|
/** for ein path, only fields in reg-num/env gsi is available */
|
|
93
100
|
export const endowQueryParams = object({
|
|
@@ -114,6 +121,8 @@ export const newProgram = object({
|
|
|
114
121
|
});
|
|
115
122
|
export const program = object({
|
|
116
123
|
...omit(newProgram, ["milestones"]).entries,
|
|
124
|
+
/** in USD */
|
|
125
|
+
totalDonations: optional(number()),
|
|
117
126
|
id: programId,
|
|
118
127
|
});
|
|
119
128
|
export const programUpdate = partial(omit(newProgram, ["milestones"]));
|
package/package.json
CHANGED
package/src/cloudsearch.mts
CHANGED
|
@@ -80,17 +80,20 @@ export const endowsQueryParams = object({
|
|
|
80
80
|
fields: optional(pipe(csvStrs, array(cloudSearchEndowFields))),
|
|
81
81
|
});
|
|
82
82
|
|
|
83
|
-
export
|
|
83
|
+
export interface CloudsearchEndowsQueryParams
|
|
84
|
+
extends InferInput<typeof endowsQueryParams> {}
|
|
84
85
|
|
|
85
|
-
export
|
|
86
|
+
export interface CloudsearchEndow
|
|
87
|
+
extends InferOutput<typeof cloudsearchEndow> {}
|
|
86
88
|
|
|
87
89
|
type DocId = `${Environment}-${number}`;
|
|
88
90
|
|
|
89
|
-
|
|
91
|
+
interface Doc extends ToDoc<CloudsearchEndow> {
|
|
90
92
|
documentId: DocId;
|
|
91
93
|
_score: number;
|
|
92
|
-
}
|
|
94
|
+
}
|
|
93
95
|
|
|
94
|
-
export
|
|
96
|
+
export interface HitFields
|
|
97
|
+
extends ToHitFields<Omit<Doc, "documentId" | "_score">> {}
|
|
95
98
|
|
|
96
99
|
export type Update = ToUpdate<DocId, CloudsearchEndow>;
|
package/src/db.mts
CHANGED
|
@@ -41,8 +41,6 @@ export namespace Endow {
|
|
|
41
41
|
};
|
|
42
42
|
|
|
43
43
|
export type NonKeyAttributes = EndowmentShape & {
|
|
44
|
-
fiscal_sponsored: boolean;
|
|
45
|
-
|
|
46
44
|
/** in USD @deprecated */
|
|
47
45
|
payout_minimum?: number;
|
|
48
46
|
/** @deprecated */
|
|
@@ -53,77 +51,73 @@ export namespace Endow {
|
|
|
53
51
|
sfCompounded?: boolean;
|
|
54
52
|
};
|
|
55
53
|
|
|
56
|
-
export
|
|
54
|
+
export interface DbRecord extends Keys, NonKeyAttributes {}
|
|
57
55
|
}
|
|
58
56
|
|
|
59
57
|
export namespace RegNumEnvGsi {
|
|
60
58
|
export type Name = typeof endowGsi.regnumEnv;
|
|
61
|
-
export
|
|
62
|
-
Endow.NonKeyAttributes,
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
Pick<Endow.NonKeyAttributes, "claimed" | "name" | "hq_country" | "id">;
|
|
59
|
+
export interface Keys
|
|
60
|
+
extends Pick<Endow.NonKeyAttributes, "registration_number" | "env"> {}
|
|
61
|
+
export interface DbRecord
|
|
62
|
+
extends Keys,
|
|
63
|
+
Endow.Keys,
|
|
64
|
+
Pick<Endow.NonKeyAttributes, "claimed" | "name" | "hq_country" | "id"> {}
|
|
68
65
|
}
|
|
69
66
|
|
|
70
67
|
export namespace SlugEnvGsi {
|
|
71
68
|
export type Name = typeof endowGsi.slugEnv;
|
|
72
|
-
export
|
|
73
|
-
export
|
|
69
|
+
export interface Keys extends Pick<Endow.NonKeyAttributes, "slug" | "env"> {}
|
|
70
|
+
export interface DbRecord extends Endow.DbRecord {} //all attributes are copied to this index
|
|
74
71
|
}
|
|
75
72
|
|
|
76
73
|
export namespace Program {
|
|
77
|
-
export
|
|
74
|
+
export interface Keys {
|
|
78
75
|
PK: `Endow#${number}#${Environment}`;
|
|
79
76
|
SK: `Prog#${ProgramId}`;
|
|
80
|
-
}
|
|
77
|
+
}
|
|
81
78
|
|
|
82
|
-
export
|
|
83
|
-
|
|
84
|
-
totalDonations?: number;
|
|
85
|
-
};
|
|
86
|
-
export type DbRecord = Keys & NonKeyAttributes;
|
|
79
|
+
export interface NonKeyAttributes extends ProgramShape {}
|
|
80
|
+
export interface DbRecord extends Keys, NonKeyAttributes {}
|
|
87
81
|
}
|
|
88
82
|
|
|
89
83
|
export namespace Milestone {
|
|
90
|
-
export
|
|
84
|
+
export interface Keys {
|
|
91
85
|
PK: `Prog#${string}#${Environment}`;
|
|
92
86
|
SK: `Mile#${MilestoneId}`;
|
|
93
|
-
}
|
|
94
|
-
export
|
|
87
|
+
}
|
|
88
|
+
export interface DbRecord extends Keys, MilestoneShape {}
|
|
95
89
|
}
|
|
96
90
|
|
|
97
91
|
export const mediaGsi = {
|
|
98
92
|
1: "gsi1",
|
|
99
93
|
} as const;
|
|
100
94
|
export namespace Media {
|
|
101
|
-
export
|
|
95
|
+
export interface Keys {
|
|
102
96
|
PK: `Endow#${EndowId}#${Environment}`;
|
|
103
97
|
SK: `Media#${MediaId}`;
|
|
104
|
-
}
|
|
98
|
+
}
|
|
105
99
|
|
|
106
100
|
/** "0" - featured (goes before 1), "1" - not-featured */
|
|
107
101
|
export type FeaturedFlag = "0" | "1";
|
|
108
|
-
export
|
|
102
|
+
export interface NonKeyAttributes {
|
|
109
103
|
id: MediaId;
|
|
110
104
|
gsi1PK: Keys["PK"];
|
|
111
105
|
gsi1SK: `MediaList#${FeaturedFlag}#${MediaId}#${MediaType}`;
|
|
112
106
|
/** iso string */
|
|
113
107
|
dateCreated: string;
|
|
114
|
-
}
|
|
108
|
+
}
|
|
115
109
|
|
|
116
|
-
export
|
|
110
|
+
export interface VideoAttributes extends NonKeyAttributes {
|
|
117
111
|
type: Extract<MediaType, "video">;
|
|
118
112
|
url: string;
|
|
119
|
-
}
|
|
113
|
+
}
|
|
120
114
|
|
|
121
|
-
export
|
|
115
|
+
export interface VideoDbRecord extends Keys, VideoAttributes {}
|
|
122
116
|
export type DbRecord = VideoDbRecord; // | album | article
|
|
123
117
|
|
|
124
118
|
export namespace Gsi1 {
|
|
125
119
|
export type Name = (typeof mediaGsi)[1];
|
|
126
|
-
export
|
|
127
|
-
export
|
|
120
|
+
export interface Keys extends Pick<NonKeyAttributes, "gsi1PK" | "gsi1SK"> {}
|
|
121
|
+
export interface DbRecord extends Keys, NonKeyAttributes {}
|
|
128
122
|
}
|
|
129
123
|
}
|
package/src/index.mts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { Milestone } from "./schema.mjs";
|
|
1
|
+
import type { Media } from "./db.mjs";
|
|
2
|
+
import type { Milestone, Program as ProgramShape } from "./schema.mjs";
|
|
3
3
|
export type {
|
|
4
4
|
Allocation,
|
|
5
5
|
DonateMethodId,
|
|
6
6
|
EndowDesignation,
|
|
7
|
+
Endowment as Endow,
|
|
7
8
|
EndowFields,
|
|
8
9
|
EndowQueryParams,
|
|
9
10
|
EndowUpdate,
|
|
@@ -26,46 +27,17 @@ export type {
|
|
|
26
27
|
CloudsearchEndowsQueryParams as EndowsQueryParams,
|
|
27
28
|
} from "./cloudsearch.mjs";
|
|
28
29
|
|
|
29
|
-
export
|
|
30
|
-
NEndow.DbRecord,
|
|
31
|
-
| "id"
|
|
32
|
-
| "slug"
|
|
33
|
-
| "active_in_countries"
|
|
34
|
-
| "endow_designation"
|
|
35
|
-
| "fiscal_sponsored"
|
|
36
|
-
| "hide_bg_tip"
|
|
37
|
-
| "hq_country"
|
|
38
|
-
| "image"
|
|
39
|
-
| "card_img"
|
|
40
|
-
| "kyc_donors_only"
|
|
41
|
-
| "logo"
|
|
42
|
-
| "name"
|
|
43
|
-
| "overview"
|
|
44
|
-
| "published"
|
|
45
|
-
| "registration_number"
|
|
46
|
-
| "sdgs"
|
|
47
|
-
| "social_media_urls"
|
|
48
|
-
| "street_address"
|
|
49
|
-
| "tagline"
|
|
50
|
-
| "url"
|
|
51
|
-
| "claimed"
|
|
52
|
-
| "progDonationsAllowed"
|
|
53
|
-
| "donateMethods"
|
|
54
|
-
| "allocation"
|
|
55
|
-
| "increments"
|
|
56
|
-
| "receiptMsg"
|
|
57
|
-
>;
|
|
58
|
-
|
|
59
|
-
export type Program = Omit<NProgram.DbRecord, "PK" | "SK"> & {
|
|
30
|
+
export interface Program extends ProgramShape {
|
|
60
31
|
milestones: Milestone[];
|
|
61
|
-
}
|
|
32
|
+
}
|
|
62
33
|
|
|
63
34
|
/** web-app format */
|
|
64
|
-
export
|
|
35
|
+
export interface IMedia
|
|
36
|
+
extends Omit<Media.DbRecord, "PK" | "SK" | "gsi1PK" | "gsi1SK"> {
|
|
65
37
|
featured: boolean;
|
|
66
|
-
}
|
|
38
|
+
}
|
|
67
39
|
|
|
68
|
-
export
|
|
69
|
-
items:
|
|
40
|
+
export interface MediaPage {
|
|
41
|
+
items: IMedia[];
|
|
70
42
|
nextPageKey?: string;
|
|
71
|
-
}
|
|
43
|
+
}
|
package/src/schema.mts
CHANGED
|
@@ -62,7 +62,7 @@ export const allocation = pipe(
|
|
|
62
62
|
check((x) => x.cash + x.liq + x.lock === 100, "must total to 100")
|
|
63
63
|
);
|
|
64
64
|
|
|
65
|
-
export
|
|
65
|
+
export interface Allocation extends InferOutput<typeof allocation> {}
|
|
66
66
|
|
|
67
67
|
export const endowId = pipe(number(), integer(), minValue(1));
|
|
68
68
|
export type EndowId = InferOutput<typeof endowId>;
|
|
@@ -124,7 +124,8 @@ export const social_media_urls = object({
|
|
|
124
124
|
tiktok: optional(maybeEmptyHttpsUrl),
|
|
125
125
|
});
|
|
126
126
|
|
|
127
|
-
export
|
|
127
|
+
export interface SocialMediaURLs
|
|
128
|
+
extends InferOutput<typeof social_media_urls> {}
|
|
128
129
|
|
|
129
130
|
export const MAX_RECEIPT_MSG_CHAR = 500;
|
|
130
131
|
|
|
@@ -155,7 +156,7 @@ export const increment = object({
|
|
|
155
156
|
label: incrementLabel,
|
|
156
157
|
});
|
|
157
158
|
|
|
158
|
-
export
|
|
159
|
+
export interface Increment extends InferOutput<typeof increment> {}
|
|
159
160
|
|
|
160
161
|
export const endowment = object({
|
|
161
162
|
id: endowId,
|
|
@@ -191,15 +192,22 @@ export const endowment = object({
|
|
|
191
192
|
/** endowment is not claimed if `false` only */
|
|
192
193
|
claimed: boolean(),
|
|
193
194
|
kyc_donors_only: boolean(),
|
|
195
|
+
fiscal_sponsored: boolean(),
|
|
194
196
|
});
|
|
195
197
|
|
|
196
198
|
export const endowUpdate = partial(
|
|
197
|
-
omit(endowment, [
|
|
199
|
+
omit(endowment, [
|
|
200
|
+
"id",
|
|
201
|
+
"claimed",
|
|
202
|
+
"kyc_donors_only",
|
|
203
|
+
"env",
|
|
204
|
+
"fiscal_sponsored",
|
|
205
|
+
])
|
|
198
206
|
);
|
|
199
207
|
|
|
200
208
|
export const endowFields = keyof(endowment);
|
|
201
|
-
export
|
|
202
|
-
export
|
|
209
|
+
export interface Endowment extends InferOutput<typeof endowment> {}
|
|
210
|
+
export interface EndowUpdate extends InferOutput<typeof endowUpdate> {}
|
|
203
211
|
export type EndowFields = InferOutput<typeof endowFields>;
|
|
204
212
|
|
|
205
213
|
/** for ein path, only fields in reg-num/env gsi is available */
|
|
@@ -207,7 +215,7 @@ export const endowQueryParams = object({
|
|
|
207
215
|
fields: optional(pipe(csvStrs, array(endowFields))),
|
|
208
216
|
});
|
|
209
217
|
|
|
210
|
-
export
|
|
218
|
+
export interface EndowQueryParams extends InferInput<typeof endowQueryParams> {}
|
|
211
219
|
|
|
212
220
|
const amnt = pipe(number(), minValue(0));
|
|
213
221
|
export const programId = pipe(str, uuid());
|
|
@@ -223,11 +231,11 @@ export const newMilestone = object({
|
|
|
223
231
|
});
|
|
224
232
|
|
|
225
233
|
export const milestoneUpdate = partial(newMilestone, ["date"]);
|
|
226
|
-
export
|
|
234
|
+
export interface MilestoneUpdate extends InferOutput<typeof milestoneUpdate> {}
|
|
227
235
|
|
|
228
|
-
export
|
|
236
|
+
export interface NewMilestone extends InferOutput<typeof newMilestone> {}
|
|
229
237
|
export const milestone = object({ ...newMilestone.entries, id: milestoneId });
|
|
230
|
-
export
|
|
238
|
+
export interface Milestone extends InferOutput<typeof milestone> {}
|
|
231
239
|
|
|
232
240
|
export const newProgram = object({
|
|
233
241
|
title: str,
|
|
@@ -240,14 +248,16 @@ export const newProgram = object({
|
|
|
240
248
|
|
|
241
249
|
export const program = object({
|
|
242
250
|
...omit(newProgram, ["milestones"]).entries,
|
|
251
|
+
/** in USD */
|
|
252
|
+
totalDonations: optional(number()),
|
|
243
253
|
id: programId,
|
|
244
254
|
});
|
|
245
255
|
|
|
246
256
|
export const programUpdate = partial(omit(newProgram, ["milestones"]));
|
|
247
257
|
|
|
248
|
-
export
|
|
249
|
-
export
|
|
250
|
-
export
|
|
258
|
+
export interface NewProgram extends InferOutput<typeof newProgram> {}
|
|
259
|
+
export interface Program extends InferOutput<typeof program> {}
|
|
260
|
+
export interface ProgramUpdate extends InferOutput<typeof programUpdate> {}
|
|
251
261
|
|
|
252
262
|
export const mediaUrl = pipe(str, url());
|
|
253
263
|
/**
|
|
@@ -263,7 +273,7 @@ export const mediaUpdate = object({
|
|
|
263
273
|
url: optional(mediaUrl),
|
|
264
274
|
featured: optional(boolean()),
|
|
265
275
|
});
|
|
266
|
-
export
|
|
276
|
+
export interface MediaUpdate extends InferOutput<typeof mediaUpdate> {}
|
|
267
277
|
|
|
268
278
|
export type MediaId = InferOutput<typeof mediaKsuid>;
|
|
269
279
|
|
|
@@ -287,5 +297,6 @@ export const mediaQueryParams = object({
|
|
|
287
297
|
)
|
|
288
298
|
),
|
|
289
299
|
});
|
|
290
|
-
export
|
|
291
|
-
export
|
|
300
|
+
export interface MediaQueryParams extends InferInput<typeof mediaQueryParams> {}
|
|
301
|
+
export interface MediaQueryParamsObj
|
|
302
|
+
extends InferOutput<typeof mediaQueryParams> {}
|