@better-giving/endowment 1.0.21 → 1.0.24

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,7 +1,7 @@
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
1
  import { orgDesignation, unSdgNum } from "@better-giving/schemas";
4
- const boolCsv = pipe(csvStrs, mapItems(Boolean), array(boolean()));
2
+ import { array, boolean, integer, keyof, mapItems, minValue, number, object, optional, pick, pipe, string, transform, } from "valibot";
3
+ import { csvStrs, endowment, str } from "./schema.mjs";
4
+ const boolCsv = pipe(csvStrs, mapItems((x) => x === "true"), array(boolean()));
5
5
  export const cloudsearchEndowFields = object({
6
6
  contributions_total: number(),
7
7
  contributions_count: number(),
@@ -31,7 +31,7 @@ export const endowsQueryParams = object({
31
31
  query: str,
32
32
  page: pipe(string(), transform((x) => +x), integer(), minValue(1)),
33
33
  endow_designation: optional(pipe(csvStrs, array(orgDesignation))),
34
- sdgs: optional(pipe(csvStrs, mapItems(Number), array(unSdgNum))),
34
+ sdgs: optional(pipe(csvStrs, mapItems((x) => +x), array(unSdgNum))),
35
35
  kyc_only: optional(boolCsv),
36
36
  fund_opt_in: optional(boolCsv),
37
37
  claimed: optional(boolCsv),
package/dist/schema.mjs CHANGED
@@ -17,15 +17,12 @@ export const allocation = pipe(object({
17
17
  export const endowId = pipe(number(), integer(), minValue(1));
18
18
  export const endowIdParam = pipe(string(), transform((x) => +x), endowId);
19
19
  export const segmentMaxChars = 30;
20
- export const segment = lazy((x) => {
21
- if (!x)
22
- return str;
23
- return pipe(str, maxLength(segmentMaxChars, ({ requirement: r }) => `cannot exceed ${r} chars`),
24
- //must not be id-like
25
- regex(/^(?!^\d+$)/, "should not be an id"),
26
- //valid characters
27
- regex(/^[a-zA-Z0-9-._~]+$/, "allowed: numbers | letters | - | . | _ | ~"), excludes("..", "should not contain double periods"), custom((x) => !x.startsWith("."), "should not start with dot"), custom((x) => !x.endsWith("."), "should not end with dot"));
28
- });
20
+ export const segment = pipe(str, maxLength(segmentMaxChars, ({ requirement: r }) => `cannot exceed ${r} chars`),
21
+ //must not be id-like
22
+ regex(/^(?!^\d+$)/, "should not be an id"),
23
+ //valid characters
24
+ regex(/^[a-zA-Z0-9-._~]+$/, "allowed: numbers | letters | - | . | _ | ~"), excludes("..", "should not contain double periods"), custom((x) => !x.startsWith("."), "should not start with dot"), custom((x) => !x.endsWith("."), "should not end with dot"));
25
+ export const slug = lazy((x) => (x ? segment : str));
29
26
  export const reg_number = pipe(str, nonEmpty("required"), regex(/^[a-zA-Z0-9]+$/, "must only contain letters and numbers"));
30
27
  export const donateMethodIds = ["stripe", "crypto", "daf", "stocks"];
31
28
  export const donateMethodId = picklist(donateMethodIds);
@@ -60,7 +57,7 @@ export const increment = object({
60
57
  export const endowment = object({
61
58
  id: endowId,
62
59
  env,
63
- slug: optional(segment),
60
+ slug: optional(slug),
64
61
  registration_number: reg_number,
65
62
  name: pipe(str, nonEmpty("required")),
66
63
  endow_designation: orgDesignation,
@@ -87,19 +84,14 @@ export const endowment = object({
87
84
  increments: optional(pipe(array(increment), maxLength(MAX_NUM_INCREMENTS))),
88
85
  fund_opt_in: optional(boolean()),
89
86
  /** endowment is not claimed if `false` only */
90
- claimed: optional(boolean()),
91
- kyc_donors_only: optional(boolean()),
87
+ claimed: boolean(),
88
+ kyc_donors_only: boolean(),
92
89
  });
93
90
  export const endowUpdate = partial(omit(endowment, ["id", "claimed", "kyc_donors_only", "env"]));
94
91
  export const endowFields = keyof(endowment);
95
- export const endowQueryParam = object({
92
+ /** for ein path, only fields in reg-num/env gsi is available */
93
+ export const endowQueryParams = object({
96
94
  fields: optional(pipe(csvStrs, array(endowFields))),
97
- slug: optional(segment),
98
- env,
99
- });
100
- export const endowByEinParams = object({
101
- env,
102
- ein: reg_number,
103
95
  });
104
96
  const amnt = pipe(number(), minValue(0));
105
97
  export const programId = pipe(str, uuid());
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@better-giving/endowment",
3
- "version": "1.0.21",
3
+ "version": "1.0.24",
4
4
  "peerDependencies": {
5
5
  "@better-giving/schemas": "1.0.1",
6
- "@better-giving/types": "1.0.1"
6
+ "@better-giving/types": "1.0.1",
7
+ "valibot": "0.42.0"
7
8
  },
8
9
  "devDependencies": {
9
10
  "@better-giving/config": "workspace:*"
@@ -13,13 +14,25 @@
13
14
  "dist"
14
15
  ],
15
16
  "exports": {
16
- ".": "./dist/index.mjs",
17
- "./schema": "./dist/schema.mjs",
18
- "./db": "./dist/db.mjs",
19
- "./cloudsearch": "./dist/cloudsearch.mjs"
17
+ ".": {
18
+ "types": "./src/index.mts",
19
+ "default": "./dist/index.mjs"
20
+ },
21
+ "./schema": {
22
+ "types": "./src/schema.mts",
23
+ "default": "./dist/schema.mjs"
24
+ },
25
+ "./db": {
26
+ "types": "./src/db.mts",
27
+ "default": "./dist/db.mjs"
28
+ },
29
+ "./cloudsearch": {
30
+ "types": "./src/cloudsearch.mts",
31
+ "default": "./dist/cloudsearch.mjs"
32
+ }
20
33
  },
21
34
  "scripts": {
22
35
  "publish": "npm publish --access public",
23
- "build": "tsc --outDir dist"
36
+ "build": "tsc --outDir dist --declaration false"
24
37
  }
25
38
  }
@@ -23,7 +23,11 @@ import {
23
23
  } from "valibot";
24
24
  import { type Environment, csvStrs, endowment, str } from "./schema.mjs";
25
25
 
26
- const boolCsv = pipe(csvStrs, mapItems(Boolean), array(boolean()));
26
+ const boolCsv = pipe(
27
+ csvStrs,
28
+ mapItems((x) => x === "true"),
29
+ array(boolean())
30
+ );
27
31
 
28
32
  export const cloudsearchEndowFields = object({
29
33
  contributions_total: number(),
@@ -62,7 +66,13 @@ export const endowsQueryParams = object({
62
66
  minValue(1)
63
67
  ),
64
68
  endow_designation: optional(pipe(csvStrs, array(orgDesignation))),
65
- sdgs: optional(pipe(csvStrs, mapItems(Number), array(unSdgNum))),
69
+ sdgs: optional(
70
+ pipe(
71
+ csvStrs,
72
+ mapItems((x) => +x),
73
+ array(unSdgNum)
74
+ )
75
+ ),
66
76
  kyc_only: optional(boolCsv),
67
77
  fund_opt_in: optional(boolCsv),
68
78
  claimed: optional(boolCsv),
package/src/index.mts CHANGED
@@ -3,7 +3,6 @@ import type { Milestone } from "./schema.mjs";
3
3
  export type {
4
4
  Allocation,
5
5
  DonateMethodId,
6
- EndowByEinParams,
7
6
  EndowDesignation,
8
7
  EndowQueryParam,
9
8
  EndowUpdate,
package/src/schema.mts CHANGED
@@ -73,23 +73,22 @@ export const endowIdParam = pipe(
73
73
  );
74
74
 
75
75
  export const segmentMaxChars = 30;
76
- export const segment = lazy((x) => {
77
- if (!x) return str;
78
- return pipe(
79
- str,
80
- maxLength(
81
- segmentMaxChars,
82
- ({ requirement: r }) => `cannot exceed ${r} chars`
83
- ),
84
- //must not be id-like
85
- regex(/^(?!^\d+$)/, "should not be an id"),
86
- //valid characters
87
- regex(/^[a-zA-Z0-9-._~]+$/, "allowed: numbers | letters | - | . | _ | ~"),
88
- excludes("..", "should not contain double periods"),
89
- custom((x) => !(x as string).startsWith("."), "should not start with dot"),
90
- custom((x) => !(x as string).endsWith("."), "should not end with dot")
91
- );
92
- });
76
+ export const segment = pipe(
77
+ str,
78
+ maxLength(
79
+ segmentMaxChars,
80
+ ({ requirement: r }) => `cannot exceed ${r} chars`
81
+ ),
82
+ //must not be id-like
83
+ regex(/^(?!^\d+$)/, "should not be an id"),
84
+ //valid characters
85
+ regex(/^[a-zA-Z0-9-._~]+$/, "allowed: numbers | letters | - | . | _ | ~"),
86
+ excludes("..", "should not contain double periods"),
87
+ custom((x) => !(x as string).startsWith("."), "should not start with dot"),
88
+ custom((x) => !(x as string).endsWith("."), "should not end with dot")
89
+ );
90
+
91
+ export const slug = lazy((x) => (x ? segment : str));
93
92
 
94
93
  export const reg_number = pipe(
95
94
  str,
@@ -161,7 +160,7 @@ export type Increment = InferOutput<typeof increment>;
161
160
  export const endowment = object({
162
161
  id: endowId,
163
162
  env,
164
- slug: optional(segment),
163
+ slug: optional(slug),
165
164
  registration_number: reg_number,
166
165
  name: pipe(str, nonEmpty("required")),
167
166
  endow_designation: orgDesignation,
@@ -190,8 +189,8 @@ export const endowment = object({
190
189
  fund_opt_in: optional(boolean()),
191
190
 
192
191
  /** endowment is not claimed if `false` only */
193
- claimed: optional(boolean()),
194
- kyc_donors_only: optional(boolean()),
192
+ claimed: boolean(),
193
+ kyc_donors_only: boolean(),
195
194
  });
196
195
 
197
196
  export const endowUpdate = partial(
@@ -203,20 +202,12 @@ export type Endowment = InferOutput<typeof endowment>;
203
202
  export type EndowUpdate = InferOutput<typeof endowUpdate>;
204
203
  export type EndowmentFields = InferOutput<typeof endowFields>;
205
204
 
206
- export const endowQueryParam = object({
205
+ /** for ein path, only fields in reg-num/env gsi is available */
206
+ export const endowQueryParams = object({
207
207
  fields: optional(pipe(csvStrs, array(endowFields))),
208
- slug: optional(segment),
209
- env,
210
- });
211
-
212
- export type EndowQueryParam = InferInput<typeof endowQueryParam>;
213
-
214
- export const endowByEinParams = object({
215
- env,
216
- ein: reg_number,
217
208
  });
218
209
 
219
- export type EndowByEinParams = InferInput<typeof endowByEinParams>;
210
+ export type EndowQueryParam = InferInput<typeof endowQueryParams>;
220
211
 
221
212
  const amnt = pipe(number(), minValue(0));
222
213
  export const programId = pipe(str, uuid());
@@ -1,47 +0,0 @@
1
- import type { ToDoc, ToHitFields, ToUpdate } from "@better-giving/types/cloudsearch";
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>;
40
- type DocId = `${Environment}-${number}`;
41
- type Doc = {
42
- documentId: DocId;
43
- _score: number;
44
- } & ToDoc<CloudsearchEndow>;
45
- export type HitFields = ToHitFields<Omit<Doc, "documentId" | "_score">>;
46
- export type Update = ToUpdate<DocId, CloudsearchEndow>;
47
- export {};
package/dist/db.d.mts DELETED
@@ -1,90 +0,0 @@
1
- import type { EndowId, Endowment as EndowmentShape, Environment, MediaId, MediaType, Milestone as MilestoneShape, MilestoneId, Program as ProgramShape, ProgramId } from "./schema.mjs";
2
- export type { EndowId, SocialMediaURLs, Allocation, Increment, EndowDesignation, Environment, ProgramId, } from "./schema.mjs";
3
- export declare const endowGsi: {
4
- readonly regnumEnv: "regnum-env-gsi";
5
- readonly slugEnv: "slug-env-gsi";
6
- };
7
- export declare namespace EndowCount {
8
- interface Keys {
9
- PK: "Count";
10
- SK: Environment;
11
- }
12
- interface NonKeyAttributes {
13
- count: number;
14
- }
15
- }
16
- export declare namespace Endow {
17
- type Keys = {
18
- PK: `Endow#${EndowId}`;
19
- SK: Environment;
20
- };
21
- type NonKeyAttributes = EndowmentShape & {
22
- fiscal_sponsored: boolean;
23
- /** in USD @deprecated */
24
- payout_minimum?: number;
25
- /** @deprecated */
26
- splitLiqPct?: number;
27
- /** @deprecated */
28
- splitFixed?: boolean;
29
- /** @deprecated */
30
- sfCompounded?: boolean;
31
- };
32
- type DbRecord = Keys & NonKeyAttributes;
33
- }
34
- export declare namespace RegNumEnvGsi {
35
- type Name = typeof endowGsi.regnumEnv;
36
- type Keys = Pick<Endow.NonKeyAttributes, "registration_number" | "env">;
37
- type DbRecord = Keys & Endow.Keys & Pick<Endow.NonKeyAttributes, "claimed" | "name" | "hq_country" | "id">;
38
- }
39
- export declare namespace SlugEnvGsi {
40
- type Name = typeof endowGsi.slugEnv;
41
- type Keys = Pick<Endow.NonKeyAttributes, "slug" | "env">;
42
- type DbRecord = Endow.DbRecord;
43
- }
44
- export declare namespace Program {
45
- type Keys = {
46
- PK: `Endow#${number}#${Environment}`;
47
- SK: `Prog#${ProgramId}`;
48
- };
49
- type NonKeyAttributes = ProgramShape & {
50
- /** in USD */
51
- totalDonations?: number;
52
- };
53
- type DbRecord = Keys & NonKeyAttributes;
54
- }
55
- export declare namespace Milestone {
56
- type Keys = {
57
- PK: `Prog#${string}#${Environment}`;
58
- SK: `Mile#${MilestoneId}`;
59
- };
60
- type DbRecord = Keys & MilestoneShape;
61
- }
62
- export declare const mediaGsi: {
63
- readonly 1: "gsi1";
64
- };
65
- export declare namespace Media {
66
- type Keys = {
67
- PK: `Endow#${EndowId}#${Environment}`;
68
- SK: `Media#${MediaId}`;
69
- };
70
- /** "0" - featured (goes before 1), "1" - not-featured */
71
- type FeaturedFlag = "0" | "1";
72
- type NonKeyAttributes = {
73
- id: MediaId;
74
- gsi1PK: Keys["PK"];
75
- gsi1SK: `MediaList#${FeaturedFlag}#${MediaId}#${MediaType}`;
76
- /** iso string */
77
- dateCreated: string;
78
- };
79
- type VideoAttributes = NonKeyAttributes & {
80
- type: Extract<MediaType, "video">;
81
- url: string;
82
- };
83
- type VideoDbRecord = Keys & VideoAttributes;
84
- type DbRecord = VideoDbRecord;
85
- namespace Gsi1 {
86
- type Name = (typeof mediaGsi)[1];
87
- type Keys = Pick<NonKeyAttributes, "gsi1PK" | "gsi1SK">;
88
- type DbRecord = Keys & NonKeyAttributes;
89
- }
90
- }
package/dist/index.d.mts DELETED
@@ -1,16 +0,0 @@
1
- import type { Endow as NEndow, Media, Program as NProgram } from "./db.mjs";
2
- import type { Milestone } from "./schema.mjs";
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";
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">;
6
- export type Program = Omit<NProgram.DbRecord, "PK" | "SK"> & {
7
- milestones: Milestone[];
8
- };
9
- /** web-app format */
10
- export type TMedia = Omit<Media.DbRecord, "PK" | "SK" | "gsi1PK" | "gsi1SK"> & {
11
- featured: boolean;
12
- };
13
- export type MediaPage = {
14
- items: TMedia[];
15
- nextPageKey?: string;
16
- };