@better-giving/endowment 4.0.34 → 4.0.36
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/db.d.mts +3 -1
- package/dist/db.mjs +20 -2
- package/package.json +1 -1
- package/src/db.mts +26 -2
- package/dist/cloudsearch.d.mts +0 -55
- package/dist/cloudsearch.mjs +0 -41
- package/dist/db2.d.mts +0 -1
- package/dist/db2.mjs +0 -1
package/dist/db.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Db, type TxType, type UpdateComps } from "@better-giving/db";
|
|
1
|
+
import { Db, type TxItems, type TxType, type UpdateComps } from "@better-giving/db";
|
|
2
2
|
import type { IMedia, IMediaPage, INpoReferredBy, INpoWithRegNum, INpoWithRid, TBinFlag, TNpoDbKeys, TNpoDbProjectedTo } from "./interfaces.mjs";
|
|
3
3
|
import type { IMediaSearchObj, IMediaUpdate, IMilestone, IMilestoneNew, IMilestoneUpdate, INpo, INpoUpdate, IProgram, IProgramDb, IProgramNew, IProgramUpdate, TMediaType } from "./schema.mjs";
|
|
4
4
|
export declare class NpoDb extends Db {
|
|
@@ -144,6 +144,8 @@ export declare class NpoDb extends Db {
|
|
|
144
144
|
npo_program(id: string, npo_id: number): Promise<IProgram | undefined>;
|
|
145
145
|
npo_programs(id: number): Promise<IProgramDb[]>;
|
|
146
146
|
npo_program_put(npo: number, content: IProgramNew): Promise<string>;
|
|
147
|
+
npo_prog_del_txis(npo: number, prog: string): Promise<TxItems>;
|
|
148
|
+
npo_prog_contrib_update_txi(npo: number, prog: string, amount: number): TxType["Update"];
|
|
147
149
|
npo_prog_del(npo: number, prog: string): Promise<import("@aws-sdk/lib-dynamodb").TransactWriteCommandOutput>;
|
|
148
150
|
npo_prog_update(npo: number, prog: string, update: IProgramUpdate): Promise<Record<string, any> | undefined>;
|
|
149
151
|
}
|
package/dist/db.mjs
CHANGED
|
@@ -387,7 +387,7 @@ export class NpoDb extends Db {
|
|
|
387
387
|
await this.client.send(cmd);
|
|
388
388
|
return pid;
|
|
389
389
|
}
|
|
390
|
-
async
|
|
390
|
+
async npo_prog_del_txis(npo, prog) {
|
|
391
391
|
const milestones = await this.prog_milestones(prog);
|
|
392
392
|
const txs = new Txs();
|
|
393
393
|
txs.del({
|
|
@@ -400,8 +400,26 @@ export class NpoDb extends Db {
|
|
|
400
400
|
Key: this.key_prog_milestone(m.id, prog),
|
|
401
401
|
});
|
|
402
402
|
}
|
|
403
|
+
return txs.all;
|
|
404
|
+
}
|
|
405
|
+
npo_prog_contrib_update_txi(npo, prog, amount) {
|
|
406
|
+
return {
|
|
407
|
+
TableName: NpoDb.table,
|
|
408
|
+
Key: this.key_npo_program(prog, npo),
|
|
409
|
+
UpdateExpression: "SET #x = if_not_exists(#x, :zero) + :amt",
|
|
410
|
+
ExpressionAttributeValues: {
|
|
411
|
+
":amt": amount,
|
|
412
|
+
":zero": 0,
|
|
413
|
+
},
|
|
414
|
+
ExpressionAttributeNames: {
|
|
415
|
+
"#x": "totalDonations",
|
|
416
|
+
},
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
async npo_prog_del(npo, prog) {
|
|
420
|
+
const txs = await this.npo_prog_del_txis(npo, prog);
|
|
403
421
|
const cmd = new TransactWriteCommand({
|
|
404
|
-
TransactItems: txs
|
|
422
|
+
TransactItems: txs,
|
|
405
423
|
});
|
|
406
424
|
return this.client.send(cmd);
|
|
407
425
|
}
|
package/package.json
CHANGED
package/src/db.mts
CHANGED
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
} from "@aws-sdk/lib-dynamodb";
|
|
11
11
|
import {
|
|
12
12
|
Db,
|
|
13
|
+
type TxItems,
|
|
13
14
|
type TxType,
|
|
14
15
|
Txs,
|
|
15
16
|
UpdateBuilder,
|
|
@@ -496,7 +497,7 @@ export class NpoDb extends Db {
|
|
|
496
497
|
return pid;
|
|
497
498
|
}
|
|
498
499
|
|
|
499
|
-
async
|
|
500
|
+
async npo_prog_del_txis(npo: number, prog: string): Promise<TxItems> {
|
|
500
501
|
const milestones = await this.prog_milestones(prog);
|
|
501
502
|
const txs = new Txs();
|
|
502
503
|
txs.del({
|
|
@@ -510,9 +511,32 @@ export class NpoDb extends Db {
|
|
|
510
511
|
Key: this.key_prog_milestone(m.id, prog),
|
|
511
512
|
});
|
|
512
513
|
}
|
|
514
|
+
return txs.all;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
npo_prog_contrib_update_txi(
|
|
518
|
+
npo: number,
|
|
519
|
+
prog: string,
|
|
520
|
+
amount: number
|
|
521
|
+
): TxType["Update"] {
|
|
522
|
+
return {
|
|
523
|
+
TableName: NpoDb.table,
|
|
524
|
+
Key: this.key_npo_program(prog, npo),
|
|
525
|
+
UpdateExpression: "SET #x = if_not_exists(#x, :zero) + :amt",
|
|
526
|
+
ExpressionAttributeValues: {
|
|
527
|
+
":amt": amount,
|
|
528
|
+
":zero": 0,
|
|
529
|
+
},
|
|
530
|
+
ExpressionAttributeNames: {
|
|
531
|
+
"#x": "totalDonations" satisfies keyof IProgram,
|
|
532
|
+
},
|
|
533
|
+
};
|
|
534
|
+
}
|
|
513
535
|
|
|
536
|
+
async npo_prog_del(npo: number, prog: string) {
|
|
537
|
+
const txs = await this.npo_prog_del_txis(npo, prog);
|
|
514
538
|
const cmd = new TransactWriteCommand({
|
|
515
|
-
TransactItems: txs
|
|
539
|
+
TransactItems: txs,
|
|
516
540
|
});
|
|
517
541
|
return this.client.send(cmd);
|
|
518
542
|
}
|
package/dist/cloudsearch.d.mts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import type { ToDoc, ToHitFields, ToUpdate } from "@better-giving/types/cloudsearch";
|
|
2
|
-
import type { Environment } from "@better-giving/types/list";
|
|
3
|
-
import { type InferInput, type InferOutput } 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 tagline: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").MaxLengthAction<string, 140, undefined>]>, never>;
|
|
12
|
-
readonly card_img: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").UrlAction<string, undefined>]>, never>;
|
|
13
|
-
readonly active_in_countries: import("valibot").SchemaWithPipe<[import("valibot").ArraySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, undefined>, import("valibot").NonEmptyAction<string[], "required">]>;
|
|
14
|
-
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>]>;
|
|
15
|
-
readonly published: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
|
|
16
|
-
readonly fund_opt_in: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, never>;
|
|
17
|
-
readonly target: import("valibot").OptionalSchema<import("valibot").UnionSchema<[import("valibot").LiteralSchema<"smart", undefined>, import("valibot").SchemaWithPipe<[import("valibot").StringSchema<undefined>, import("valibot").TransformAction<string, number>, import("valibot").NumberSchema<undefined>, import("valibot").MinValueAction<number, 0, undefined>, import("valibot").TransformAction<number, string>]>], undefined>, never>;
|
|
18
|
-
readonly id: import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>;
|
|
19
|
-
readonly env: import("valibot").PicklistSchema<readonly ["staging", "production"], undefined>;
|
|
20
|
-
readonly registration_number: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">, import("valibot").RegexAction<string, "must only contain letters and numbers">]>;
|
|
21
|
-
readonly name: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>;
|
|
22
|
-
readonly endow_designation: import("valibot").PicklistSchema<readonly ["Charity", "Religious Organization", "University", "Hospital", "Other"], "required">;
|
|
23
|
-
readonly hq_country: import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").NonEmptyAction<string, "required">]>;
|
|
24
|
-
readonly claimed: import("valibot").BooleanSchema<undefined>;
|
|
25
|
-
readonly kyc_donors_only: import("valibot").BooleanSchema<undefined>;
|
|
26
|
-
}, undefined>;
|
|
27
|
-
export declare const cloudSearchEndowFields: import("valibot").PicklistSchema<["tagline", "card_img", "active_in_countries", "sdgs", "published", "fund_opt_in", "target", "id", "env", "registration_number", "name", "endow_designation", "hq_country", "claimed", "kyc_donors_only", "contributions_total", "contributions_count"], undefined>;
|
|
28
|
-
export declare const endowsQueryParams: import("valibot").ObjectSchema<{
|
|
29
|
-
readonly query: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, never>;
|
|
30
|
-
readonly page: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").TransformAction<string, number>, import("valibot").SchemaWithPipe<[import("valibot").NumberSchema<undefined>, import("valibot").IntegerAction<number, undefined>, import("valibot").MinValueAction<number, 1, undefined>]>]>, never>;
|
|
31
|
-
readonly endow_designation: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").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"], "required">, undefined>]>, never>;
|
|
32
|
-
readonly sdgs: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").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>;
|
|
33
|
-
readonly kyc_only: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").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 fund_opt_in: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").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 claimed: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").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>;
|
|
36
|
-
readonly countries: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, string[]>, import("valibot").FilterItemsAction<string[]>]>, import("valibot").ArraySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, undefined>]>, never>;
|
|
37
|
-
readonly fields: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").LazySchema<import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]> | import("valibot").SchemaWithPipe<[import("valibot").SchemaWithPipe<[import("valibot").StringSchema<"required">, import("valibot").TrimAction]>, import("valibot").RegexAction<string, "invalid csv">]>>, import("valibot").TransformAction<string, string[]>, import("valibot").FilterItemsAction<string[]>]>, import("valibot").ArraySchema<import("valibot").PicklistSchema<["tagline", "card_img", "active_in_countries", "sdgs", "published", "fund_opt_in", "target", "id", "env", "registration_number", "name", "endow_designation", "hq_country", "claimed", "kyc_donors_only", "contributions_total", "contributions_count"], undefined>, undefined>]>, never>;
|
|
38
|
-
}, undefined>;
|
|
39
|
-
export interface CloudsearchEndowsQueryParamsObj extends InferInput<typeof endowsQueryParams> {
|
|
40
|
-
}
|
|
41
|
-
export interface CloudsearchEndowsQueryParams extends InferInput<typeof endowsQueryParams> {
|
|
42
|
-
}
|
|
43
|
-
export interface CloudsearchEndowsQueryParamsParsed extends InferOutput<typeof endowsQueryParams> {
|
|
44
|
-
}
|
|
45
|
-
export interface CloudsearchEndow extends InferOutput<typeof cloudsearchEndow> {
|
|
46
|
-
}
|
|
47
|
-
export type DocId = `${Environment}-${number}`;
|
|
48
|
-
interface Doc extends ToDoc<CloudsearchEndow> {
|
|
49
|
-
documentId: DocId;
|
|
50
|
-
_score: number;
|
|
51
|
-
}
|
|
52
|
-
export interface HitFields extends ToHitFields<Omit<Doc, "documentId" | "_score">> {
|
|
53
|
-
}
|
|
54
|
-
export type Update = ToUpdate<DocId, CloudsearchEndow>;
|
|
55
|
-
export {};
|
package/dist/cloudsearch.mjs
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { $int_gte1, org_designation, unsdg_num } from "@better-giving/schemas";
|
|
2
|
-
import { array, boolean, keyof, mapItems, number, object, optional, pick, pipe, } from "valibot";
|
|
3
|
-
import { $, csv_strs, npo } from "./schema.mjs";
|
|
4
|
-
const boolCsv = pipe(csv_strs, mapItems((x) => x === "true"), array(boolean()));
|
|
5
|
-
export const cloudsearchEndowFields = object({
|
|
6
|
-
contributions_total: number(),
|
|
7
|
-
contributions_count: number(),
|
|
8
|
-
});
|
|
9
|
-
export const cloudsearchEndow = object({
|
|
10
|
-
...pick(npo, [
|
|
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
|
-
"target",
|
|
27
|
-
]).entries,
|
|
28
|
-
...cloudsearchEndowFields.entries,
|
|
29
|
-
});
|
|
30
|
-
export const cloudSearchEndowFields = keyof(cloudsearchEndow);
|
|
31
|
-
export const endowsQueryParams = object({
|
|
32
|
-
query: optional($),
|
|
33
|
-
page: optional($int_gte1),
|
|
34
|
-
endow_designation: optional(pipe(csv_strs, array(org_designation))),
|
|
35
|
-
sdgs: optional(pipe(csv_strs, mapItems((x) => +x), array(unsdg_num))),
|
|
36
|
-
kyc_only: optional(boolCsv),
|
|
37
|
-
fund_opt_in: optional(boolCsv),
|
|
38
|
-
claimed: optional(boolCsv),
|
|
39
|
-
countries: optional(pipe(csv_strs, array($))),
|
|
40
|
-
fields: optional(pipe(csv_strs, array(cloudSearchEndowFields))),
|
|
41
|
-
});
|
package/dist/db2.d.mts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/db2.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|