@grantbii/ui-core 1.0.0
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/README.md +33 -0
- package/index.d.ts +0 -0
- package/index.js +1 -0
- package/package.json +43 -0
- package/src/filter/defaults.d.ts +2 -0
- package/src/filter/defaults.js +7 -0
- package/src/filter/enums.d.ts +13 -0
- package/src/filter/enums.js +14 -0
- package/src/filter/mappings.d.ts +2 -0
- package/src/filter/mappings.js +15 -0
- package/src/filter/models.d.ts +8 -0
- package/src/filter/models.js +1 -0
- package/src/filter/validations.d.ts +2 -0
- package/src/filter/validations.js +10 -0
- package/src/grant/defaults.d.ts +9 -0
- package/src/grant/defaults.js +15 -0
- package/src/grant/dtos.d.ts +92 -0
- package/src/grant/dtos.js +1 -0
- package/src/grant/enums.d.ts +207 -0
- package/src/grant/enums.js +220 -0
- package/src/grant/mappings.d.ts +20 -0
- package/src/grant/mappings.js +118 -0
- package/src/grant/models.d.ts +90 -0
- package/src/grant/models.js +1 -0
- package/src/match/dtos.d.ts +4 -0
- package/src/match/dtos.js +1 -0
- package/src/match/mappings.d.ts +4 -0
- package/src/match/mappings.js +12 -0
- package/src/match/models.d.ts +7 -0
- package/src/match/models.js +1 -0
- package/src/match/validations.d.ts +2 -0
- package/src/match/validations.js +1 -0
- package/src/shared/enums.d.ts +8 -0
- package/src/shared/enums.js +5 -0
- package/tsconfig.tsbuildinfo +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# UI Core
|
|
2
|
+
|
|
3
|
+
Core frontend components for Grantbii's user interfaces
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
Node 22
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
node -v # expected output: v22.xx.xx
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Set-up
|
|
14
|
+
|
|
15
|
+
Install dependencies
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm i
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Develop
|
|
22
|
+
|
|
23
|
+
Bump version number in `package.json`
|
|
24
|
+
|
|
25
|
+
## Publish
|
|
26
|
+
|
|
27
|
+
Bump version in `package.json`
|
|
28
|
+
|
|
29
|
+
Check which files would be published with `npm publish --dry-run`
|
|
30
|
+
|
|
31
|
+
The package is published to npm automatically with [GitHub Actions](.github/workflows/continuous-delivery.yaml).
|
|
32
|
+
|
|
33
|
+
Once a commit has been made on the `prod` branch, a build would be triggered.
|
package/index.d.ts
ADDED
|
File without changes
|
package/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@grantbii/ui-core",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Core frontend components for Grantbii's user interfaces",
|
|
5
|
+
"homepage": "https://github.com/grantbii/ui-core",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/grantbii/ui-core.git"
|
|
9
|
+
},
|
|
10
|
+
"author": "Grantbii",
|
|
11
|
+
"license": "UNLICENSED",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": "./index.js",
|
|
14
|
+
"./filter/*": "./src/filter/*.js",
|
|
15
|
+
"./grant/*": "./src/grant/*.js",
|
|
16
|
+
"./match/*": "./src/match/*.js",
|
|
17
|
+
"./shared/*": "./src/shared/*.js"
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
21
|
+
"build": "npx tsc && cp ./package.json ./dist && cp ./README.md ./dist",
|
|
22
|
+
"postpublish": "rm -rf dist/",
|
|
23
|
+
"prepare": "husky"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@eslint/js": "^9.34.0",
|
|
27
|
+
"eslint": "^9.34.0",
|
|
28
|
+
"husky": "^9.1.7",
|
|
29
|
+
"lint-staged": "^16.1.6",
|
|
30
|
+
"prettier": "^3.6.2",
|
|
31
|
+
"typescript": "^5.9.2",
|
|
32
|
+
"typescript-eslint": "^8.42.0"
|
|
33
|
+
},
|
|
34
|
+
"lint-staged": {
|
|
35
|
+
"**/*.{html,css,json,md,yaml}": [
|
|
36
|
+
"prettier --write"
|
|
37
|
+
],
|
|
38
|
+
"**/*.{ts,tsx}": [
|
|
39
|
+
"eslint --fix",
|
|
40
|
+
"prettier --write"
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare enum Need {
|
|
2
|
+
RND_COMMERCIALISATION = "R&D Commercialization",
|
|
3
|
+
IMPROVE_OPPERATIONAL_PROCESS = "Improve Operational Process",
|
|
4
|
+
BRANDING_N_MARKETING = "Branding & Marketing",
|
|
5
|
+
IMPROVE_CUSTOMER_EXPERIENCE = "Improve Customer Experience",
|
|
6
|
+
HUMAN_CAPITAL_DEVELOPMENT = "Human Capital Development",
|
|
7
|
+
SUSTAINABILITY_N_ESG = "Sustainability & ESG",
|
|
8
|
+
MARKET_EXPANSION_OVERSEAS = "Market Expansion (Overseas)",
|
|
9
|
+
MARKET_DEVELOPMENT_LOCAL = "Market Development (Local)",
|
|
10
|
+
FINANCIAL_MANAGEMENT = "Financial Management",
|
|
11
|
+
OTHERS = "Others",
|
|
12
|
+
UNKNOWN = "-"
|
|
13
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export var Need;
|
|
2
|
+
(function (Need) {
|
|
3
|
+
Need["RND_COMMERCIALISATION"] = "R&D Commercialization";
|
|
4
|
+
Need["IMPROVE_OPPERATIONAL_PROCESS"] = "Improve Operational Process";
|
|
5
|
+
Need["BRANDING_N_MARKETING"] = "Branding & Marketing";
|
|
6
|
+
Need["IMPROVE_CUSTOMER_EXPERIENCE"] = "Improve Customer Experience";
|
|
7
|
+
Need["HUMAN_CAPITAL_DEVELOPMENT"] = "Human Capital Development";
|
|
8
|
+
Need["SUSTAINABILITY_N_ESG"] = "Sustainability & ESG";
|
|
9
|
+
Need["MARKET_EXPANSION_OVERSEAS"] = "Market Expansion (Overseas)";
|
|
10
|
+
Need["MARKET_DEVELOPMENT_LOCAL"] = "Market Development (Local)";
|
|
11
|
+
Need["FINANCIAL_MANAGEMENT"] = "Financial Management";
|
|
12
|
+
Need["OTHERS"] = "Others";
|
|
13
|
+
Need["UNKNOWN"] = "-";
|
|
14
|
+
})(Need || (Need = {}));
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Location, LogicValue, QualifyingCondition } from "../grant/enums";
|
|
2
|
+
import { Need } from "./enums";
|
|
3
|
+
export const mapFiltersToUrlQueryParams = ({ need, location, qualifiers, }) => [
|
|
4
|
+
constructNeedParam(need),
|
|
5
|
+
constructLocationParam(location),
|
|
6
|
+
...contructQualifierParams(qualifiers),
|
|
7
|
+
].join("&");
|
|
8
|
+
const constructNeedParam = (need) => need === Need.UNKNOWN ? "" : `need=${encodeURIComponent(need)}`;
|
|
9
|
+
const constructLocationParam = (location) => location === Location.UNKNOWN
|
|
10
|
+
? ""
|
|
11
|
+
: `location=${encodeURIComponent(location)}`;
|
|
12
|
+
const contructQualifierParams = (qualifiers) => qualifiers
|
|
13
|
+
.filter(({ condition }) => condition !== QualifyingCondition.UNKNOWN)
|
|
14
|
+
.filter(({ value }) => value !== LogicValue.UNKNOWN)
|
|
15
|
+
.map(({ condition, value }) => `qualifier=${condition}:${value}`);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Location, LogicValue, QualifyingCondition } from "../grant/enums";
|
|
2
|
+
import { Need } from "./enums";
|
|
3
|
+
export const checkGrantFiltersActive = ({ need, location, qualifiers, }) => checkGrantNeedValid(need) ||
|
|
4
|
+
checkGrantLocationValid(location) ||
|
|
5
|
+
checkGrantQualifiersValid(qualifiers);
|
|
6
|
+
const checkGrantNeedValid = (need) => need !== Need.UNKNOWN;
|
|
7
|
+
const checkGrantLocationValid = (location) => location !== Location.UNKNOWN;
|
|
8
|
+
const checkGrantQualifiersValid = (qualifiers) => qualifiers.reduce((hasQualifier, qualifier) => hasQualifier || checkGrantQualifierValid(qualifier), false);
|
|
9
|
+
const checkGrantQualifierValid = (qualifier) => qualifier.condition !== QualifyingCondition.UNKNOWN &&
|
|
10
|
+
qualifier.value !== LogicValue.UNKNOWN;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { GrantObjectives, GrantQualifiers } from "./models";
|
|
2
|
+
export declare const NO_DATA_MESSAGES: {
|
|
3
|
+
grantSupportPercentage: string;
|
|
4
|
+
grantAmountCap: string;
|
|
5
|
+
emailUs: string;
|
|
6
|
+
caseByCase: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const getBlankGrantObjectives: () => GrantObjectives;
|
|
9
|
+
export declare const getBlankGrantQualifiers: () => GrantQualifiers;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { LogicValue, Objective, ObjectiveLevel, QualifyingCondition, } from "./enums";
|
|
2
|
+
export const NO_DATA_MESSAGES = {
|
|
3
|
+
grantSupportPercentage: "Variable",
|
|
4
|
+
grantAmountCap: "No explicit cap",
|
|
5
|
+
emailUs: "Not officially disclosed - email us to enquire",
|
|
6
|
+
caseByCase: "Not officially disclosed - determined case-by-case via direct agency engagement",
|
|
7
|
+
};
|
|
8
|
+
export const getBlankGrantObjectives = () => Object.values(Objective).reduce((grantObjectives, objective) => ({
|
|
9
|
+
...grantObjectives,
|
|
10
|
+
[objective]: ObjectiveLevel.UNKNOWN,
|
|
11
|
+
}), {});
|
|
12
|
+
export const getBlankGrantQualifiers = () => Object.values(QualifyingCondition).reduce((grantQualifiers, condition) => ({
|
|
13
|
+
...grantQualifiers,
|
|
14
|
+
[condition]: LogicValue.UNKNOWN,
|
|
15
|
+
}), {});
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
export type GrantUuidDto = {
|
|
2
|
+
grant_uuid: string;
|
|
3
|
+
};
|
|
4
|
+
export type LifecycleDto = {
|
|
5
|
+
lifecycle_stage: string;
|
|
6
|
+
};
|
|
7
|
+
export type GrantSummaryDto = {
|
|
8
|
+
grant_uuid: string;
|
|
9
|
+
lifecycle_stage: string;
|
|
10
|
+
grant_location: string;
|
|
11
|
+
grant_name: string;
|
|
12
|
+
grant_url: string;
|
|
13
|
+
grant_description: string;
|
|
14
|
+
grant_difficulty: string;
|
|
15
|
+
grant_tier: string;
|
|
16
|
+
grant_objectives: GrantObjectiveDto[];
|
|
17
|
+
grant_support_percentage: number;
|
|
18
|
+
grant_amount_cap: number;
|
|
19
|
+
reimbursement_type: string;
|
|
20
|
+
grant_qualifiers: GrantQualifierDto[];
|
|
21
|
+
serviced_by_ric: boolean;
|
|
22
|
+
is_top_grant: boolean;
|
|
23
|
+
};
|
|
24
|
+
export type GrantDto = {
|
|
25
|
+
grant_uuid: string;
|
|
26
|
+
updated_on: string;
|
|
27
|
+
lifecycle_stage: string;
|
|
28
|
+
is_matchable: boolean;
|
|
29
|
+
} & GrantOriginDto & GrantDetailsDto;
|
|
30
|
+
export type GrantOriginDto = {
|
|
31
|
+
grant_location: string;
|
|
32
|
+
grant_name: string;
|
|
33
|
+
grant_url: string;
|
|
34
|
+
additional_information: string;
|
|
35
|
+
};
|
|
36
|
+
export type GrantDetailsDto = {
|
|
37
|
+
grant_agency: string;
|
|
38
|
+
grant_description: string;
|
|
39
|
+
grant_difficulty: string;
|
|
40
|
+
grant_tier: string;
|
|
41
|
+
target_industries: string[];
|
|
42
|
+
grant_objectives: GrantObjectiveDto[];
|
|
43
|
+
grant_support_percentage: number;
|
|
44
|
+
grant_amount_cap: number;
|
|
45
|
+
reimbursement_type: string;
|
|
46
|
+
max_project_months: number;
|
|
47
|
+
application_period: string;
|
|
48
|
+
eligibility_criteria: EligibilityCriterionDto[];
|
|
49
|
+
supportable_costs: SupportableCostDto[];
|
|
50
|
+
assessment_rubrics: AssessmentRubricDto[];
|
|
51
|
+
grant_stages: GrantStageDto[];
|
|
52
|
+
required_documents: RequiredDocumentDto[];
|
|
53
|
+
other_considerations: OtherConsiderationDto[];
|
|
54
|
+
grant_qualifiers: GrantQualifierDto[];
|
|
55
|
+
serviced_by_ric: boolean;
|
|
56
|
+
is_top_grant: boolean;
|
|
57
|
+
};
|
|
58
|
+
export type TargetIndustryDto = {
|
|
59
|
+
industry: string;
|
|
60
|
+
};
|
|
61
|
+
export type GrantObjectiveDto = {
|
|
62
|
+
objective: string;
|
|
63
|
+
objective_level: string;
|
|
64
|
+
};
|
|
65
|
+
export type RequiredDocumentDto = {
|
|
66
|
+
document: string;
|
|
67
|
+
document_description: string[];
|
|
68
|
+
};
|
|
69
|
+
export type EligibilityCriterionDto = {
|
|
70
|
+
criterion: string;
|
|
71
|
+
criterion_description: string[];
|
|
72
|
+
};
|
|
73
|
+
export type AssessmentRubricDto = {
|
|
74
|
+
rubric: string;
|
|
75
|
+
rubric_description: string[];
|
|
76
|
+
};
|
|
77
|
+
export type SupportableCostDto = {
|
|
78
|
+
cost_item: string;
|
|
79
|
+
cost_description: string[];
|
|
80
|
+
};
|
|
81
|
+
export type GrantStageDto = {
|
|
82
|
+
stage: string;
|
|
83
|
+
stage_description: string[];
|
|
84
|
+
};
|
|
85
|
+
export type OtherConsiderationDto = {
|
|
86
|
+
note_title: string;
|
|
87
|
+
note_content: string[];
|
|
88
|
+
};
|
|
89
|
+
export type GrantQualifierDto = {
|
|
90
|
+
condition: string;
|
|
91
|
+
value: string;
|
|
92
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
export declare enum LifecycleStage {
|
|
2
|
+
/**
|
|
3
|
+
* Transitions (next stage):
|
|
4
|
+
* - Draft
|
|
5
|
+
*/
|
|
6
|
+
ANALYSING = "Analysing",
|
|
7
|
+
/**
|
|
8
|
+
* Transitions (next stage):
|
|
9
|
+
* - Draft
|
|
10
|
+
* - Indexing
|
|
11
|
+
* - Deleted
|
|
12
|
+
*/
|
|
13
|
+
DRAFT = "Draft",
|
|
14
|
+
/**
|
|
15
|
+
* Transitions (next stage):
|
|
16
|
+
* - Published
|
|
17
|
+
*/
|
|
18
|
+
INDEXING = "Indexing",
|
|
19
|
+
/**
|
|
20
|
+
* Transitions (next stage):
|
|
21
|
+
* - Draft
|
|
22
|
+
*/
|
|
23
|
+
PUBLISHED = "Published",
|
|
24
|
+
/**
|
|
25
|
+
* No transitions
|
|
26
|
+
*/
|
|
27
|
+
DELETED = "Deleted",
|
|
28
|
+
UNKNOWN = "-"
|
|
29
|
+
}
|
|
30
|
+
export declare enum Location {
|
|
31
|
+
HONG_KONG = "Hong Kong",
|
|
32
|
+
MALAYSIA = "Malaysia",
|
|
33
|
+
SINGAPORE = "Singapore",
|
|
34
|
+
UNKNOWN = "-"
|
|
35
|
+
}
|
|
36
|
+
export declare enum Currency {
|
|
37
|
+
HKD = "HKD",
|
|
38
|
+
MYR = "MYR",
|
|
39
|
+
SGD = "SGD",
|
|
40
|
+
UNKNOWN = "-"
|
|
41
|
+
}
|
|
42
|
+
export declare enum Difficulty {
|
|
43
|
+
LOW = "Low",
|
|
44
|
+
MEDIUM = "Medium",
|
|
45
|
+
HIGH = "High",
|
|
46
|
+
UNKNOWN = "-"
|
|
47
|
+
}
|
|
48
|
+
export declare enum Tier {
|
|
49
|
+
/**
|
|
50
|
+
* Standard grants for typical companies.
|
|
51
|
+
* Everyone knows, agrees they are eligible and many have experience applying for.
|
|
52
|
+
* Eg. EDG, MRA, TVP, BUD and EMF
|
|
53
|
+
*/
|
|
54
|
+
ONE = "1",
|
|
55
|
+
/**
|
|
56
|
+
* Many enterprises know, but don't think they are eligible
|
|
57
|
+
* and thus have limited experience applying for.
|
|
58
|
+
* Eg. HK's ESS, PAG, RTH, CRS
|
|
59
|
+
*/
|
|
60
|
+
TWO = "2",
|
|
61
|
+
/**
|
|
62
|
+
* Industry-specific funds, which most enterprises have not heard of,
|
|
63
|
+
* so they don't even have chance to think if they are eligible.
|
|
64
|
+
* They are not 100% related to just the enterprises alone.
|
|
65
|
+
*/
|
|
66
|
+
THREE = "3",
|
|
67
|
+
UNKNOWN = "-"
|
|
68
|
+
}
|
|
69
|
+
export declare enum ReimbursementType {
|
|
70
|
+
/**
|
|
71
|
+
* This covers cases where specific stages or deliverables trigger payments;
|
|
72
|
+
* documentation-based disbursement where cases are tied to submission & approval of documentation,
|
|
73
|
+
* and Advance Payments falls under this category.
|
|
74
|
+
*/
|
|
75
|
+
MILESTONE_BASED_DISBURSEMENT = "Milestone/Tranche-based Disbursements",
|
|
76
|
+
/**
|
|
77
|
+
* This covers cases where payment release is tied to regular intervals
|
|
78
|
+
* (e.g. quarterly basis) rather than specific project milestones.
|
|
79
|
+
*/
|
|
80
|
+
PERIODIC_REIMBURSEMENTS = "Time-based/Periodic Reimbursements",
|
|
81
|
+
/**
|
|
82
|
+
* This covers single-payment cases that are tied to project completion.
|
|
83
|
+
*/
|
|
84
|
+
ONE_TIME_REIMBURSEMENTS = "Final Claims/One-time Reimbursement",
|
|
85
|
+
/**
|
|
86
|
+
* This covers cases where the schedule isn't predefined,
|
|
87
|
+
* is defined in a very loose fashion or
|
|
88
|
+
* follows a specific schedule that does not conform to any of the above-mentioned case
|
|
89
|
+
*/
|
|
90
|
+
NON_STANDARD_SCHEDULES = "Flexible or Non-standard Schedules",
|
|
91
|
+
UNKNOWN = "-"
|
|
92
|
+
}
|
|
93
|
+
export declare enum Objective {
|
|
94
|
+
IDEATION = "Early-stage Research & Ideation",
|
|
95
|
+
PROTOTYPE = "Prototype/Product Development",
|
|
96
|
+
PROCESS_REDESIGN = "Process Redesign",
|
|
97
|
+
SOFTWARE_AUTOMATION = "Software Automation",
|
|
98
|
+
HARDWARE_AUTOMATION = "Hardware Automation",
|
|
99
|
+
MARKET_STRATEGY_CONCEPTUALIZATION = "Marketing Strategy Conceptualization",
|
|
100
|
+
MARKETING_EXECUTION = "Marketing Execution",
|
|
101
|
+
SERVICE_EXCELLENCE = "Service Excellence",
|
|
102
|
+
HIRING = "Hiring",
|
|
103
|
+
RESKILLING = "Reskilling/Upskilling",
|
|
104
|
+
SUSTAINABILITY = "Sustainability & ESG",
|
|
105
|
+
BUSINESS_STRATEGY_DEVELOPMENT_OVERSEAS = "Business Strategy Development (Overseas)",
|
|
106
|
+
MARKET_RESEARCH_OVERSEAS = "Market Research (Overseas)",
|
|
107
|
+
EXECUTE_OVERSEAS_EXPANSION_ACTIVITIES = "Execute Overseas Expansion Activities",
|
|
108
|
+
BUSINESS_STRATEGY_DEVELOPMENT_LOCAL = "Business Strategy Development (Local)",
|
|
109
|
+
MARKET_RESEARCH_LOCAL = "Market Research (Local)",
|
|
110
|
+
FINANCIAL_STRATEGY_DEVELOPMENT = "Financial Strategy Development",
|
|
111
|
+
CERTIFICATION = "Standard Adoption/Certification",
|
|
112
|
+
TEST_BEDDING = "Pilot & Test Bedding",
|
|
113
|
+
STARTUP_INCUBATION = "Startup Incubation",
|
|
114
|
+
OTHERS = "Others",
|
|
115
|
+
UNKNOWN = "-"
|
|
116
|
+
}
|
|
117
|
+
export declare enum ObjectiveLevel {
|
|
118
|
+
PRIMARY = "Primary",
|
|
119
|
+
SECONDARY = "Secondary",
|
|
120
|
+
UNKNOWN = "-"
|
|
121
|
+
}
|
|
122
|
+
export declare enum Industry {
|
|
123
|
+
ALL_INDUSTRIES = "All Industries",
|
|
124
|
+
AGRICULTURE = "Agriculture",
|
|
125
|
+
BIOTECH = "Biotech/Biomed",
|
|
126
|
+
CONSTRUCTION = "Building & Construction",
|
|
127
|
+
NON_PROFITS = "Charities/Non-Profits",
|
|
128
|
+
EDUCATION = "Education",
|
|
129
|
+
ENGINEERING_MARINE = "Engineering - Marine and Offshore",
|
|
130
|
+
ENGINEERING_PRECISION = "Engineering - Precison Engineering",
|
|
131
|
+
ENGINEERING_RENEWABLE_ENERGY = "Engineering - Renewable Energy",
|
|
132
|
+
ENVIRONMENTAL_SERVICES = "Environmental Services",
|
|
133
|
+
FNB_FOOD_PRODUCTION = "F&B - Food Production",
|
|
134
|
+
FNB_SERVICES = "F&B - Services",
|
|
135
|
+
FINANCE_GENERAL = "Finance (General)",
|
|
136
|
+
HEALTHCARE = "Healthcare",
|
|
137
|
+
TOURISM = "Hospitality & Tourism",
|
|
138
|
+
IT_ARTIFICIAL_INTELLIGENCE = "IT - Artificial Intelligence",
|
|
139
|
+
IT_FINTECH = "IT - Fintech",
|
|
140
|
+
IT_SUSTAINABILITY_TECH = "IT - Sustainability Tech",
|
|
141
|
+
IT_CYBERSECURITY = "IT - Cybersecurity",
|
|
142
|
+
IT_GENERAL = "IT - General",
|
|
143
|
+
LAND_TRANSPORT = "Land Transport",
|
|
144
|
+
LOGISTICS = "Logistics",
|
|
145
|
+
MANUFACTURING_ADVANCED = "Manufacturing - Advanced Manufacturing",
|
|
146
|
+
MANUFACTURING_OTHERS = "Manufacturing - Others",
|
|
147
|
+
MARITIME = "Maritime",
|
|
148
|
+
MEDIA = "Media",
|
|
149
|
+
OTHERS = "Others",
|
|
150
|
+
PROFESSIONAL_SERVICES_LEGAL = "Professional services - Legal",
|
|
151
|
+
PROFESSIONAL_SERVICES_OTHERS = "Professional services - Others",
|
|
152
|
+
REAL_ESTATE = "Real Estate",
|
|
153
|
+
RETAIL = "Retail",
|
|
154
|
+
SECURITY = "Security",
|
|
155
|
+
SERVICES = "Services",
|
|
156
|
+
SOCIAL_ENTERPRISES = "Social Enterprises",
|
|
157
|
+
WHOLESALE_TRADE = "Wholesale Trade",
|
|
158
|
+
UNKNOWN = "-"
|
|
159
|
+
}
|
|
160
|
+
export declare enum SupportableCost {
|
|
161
|
+
MANPOWER = "Manpower & Staffing",
|
|
162
|
+
TRAINING = "Training & Development",
|
|
163
|
+
INFRASTRUCTURE = "Physical Systems & Infrastructure",
|
|
164
|
+
PREAPPROVED_EQUIPMENT = "Hardware & Equipment (pre-approved)",
|
|
165
|
+
CUSTOMISED_EQUIPMENT = "Hardware & Equipment (customized)",
|
|
166
|
+
PREAPPROVED_SOFTWARE = "Software & Cloud Infrastructure (pre-approved)",
|
|
167
|
+
CUSTOMISED_SOFTWARE = "Software & Cloud Infrastructure (customized)",
|
|
168
|
+
PROFESSIONAL_SERVICES = "Professional Services",
|
|
169
|
+
MATERIALS = "Materials, Consumables & Utilities",
|
|
170
|
+
MARKET_VALIDATION = "Market Assessment & Validation",
|
|
171
|
+
MARKETING = "Marketing & Promotion",
|
|
172
|
+
TRAVEL = "Travel & Accommodation",
|
|
173
|
+
BUSINESS_SETUP = "Business Setup",
|
|
174
|
+
CERTIFICATION = "Testing & Certification",
|
|
175
|
+
RESEARCH = "Research & Development",
|
|
176
|
+
COMMERCIALISATION = "R&D Commercialization",
|
|
177
|
+
LICENSING = "Intellectual Property & Licensing",
|
|
178
|
+
SUSTAINABILITY = "Sustainability & Resource Optimization",
|
|
179
|
+
PARTNERSHIPS = "Partnerships & Business Development",
|
|
180
|
+
AUDIT = "Grant Audit & Program Fees",
|
|
181
|
+
OTHERS = "Miscellaneous & Others",
|
|
182
|
+
UNKNOWN = "-"
|
|
183
|
+
}
|
|
184
|
+
export declare enum QualifyingCondition {
|
|
185
|
+
LOCAL = "local",
|
|
186
|
+
PUBLIC = "public",
|
|
187
|
+
SUBVENTED = "subvented",
|
|
188
|
+
SHAREHOLDING = "shareholding",
|
|
189
|
+
SME = "sme",
|
|
190
|
+
UNKNOWN = "-"
|
|
191
|
+
}
|
|
192
|
+
export declare enum LogicValue {
|
|
193
|
+
YES = "Yes",
|
|
194
|
+
NO = "No",
|
|
195
|
+
/**
|
|
196
|
+
* In the context of Grantbii App, unsure is chosen by the grant seeker
|
|
197
|
+
* when they are unsure of how to answer the qualifying questions.
|
|
198
|
+
*
|
|
199
|
+
* In the context of Admin Console, unsure is not available as an option.
|
|
200
|
+
* Grant researchers must select Yes or No to publish a grant.
|
|
201
|
+
*
|
|
202
|
+
* In the context of the Grant Analyser, unsure is returned by Perplexity
|
|
203
|
+
* when it is sure of which value it should provide for the grant.
|
|
204
|
+
*/
|
|
205
|
+
UNSURE = "Unsure",
|
|
206
|
+
UNKNOWN = "-"
|
|
207
|
+
}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
// TODO: rename to grant listing lifecycle stage?
|
|
2
|
+
export var LifecycleStage;
|
|
3
|
+
(function (LifecycleStage) {
|
|
4
|
+
/**
|
|
5
|
+
* Transitions (next stage):
|
|
6
|
+
* - Draft
|
|
7
|
+
*/
|
|
8
|
+
LifecycleStage["ANALYSING"] = "Analysing";
|
|
9
|
+
/**
|
|
10
|
+
* Transitions (next stage):
|
|
11
|
+
* - Draft
|
|
12
|
+
* - Indexing
|
|
13
|
+
* - Deleted
|
|
14
|
+
*/
|
|
15
|
+
LifecycleStage["DRAFT"] = "Draft";
|
|
16
|
+
/**
|
|
17
|
+
* Transitions (next stage):
|
|
18
|
+
* - Published
|
|
19
|
+
*/
|
|
20
|
+
LifecycleStage["INDEXING"] = "Indexing";
|
|
21
|
+
/**
|
|
22
|
+
* Transitions (next stage):
|
|
23
|
+
* - Draft
|
|
24
|
+
*/
|
|
25
|
+
LifecycleStage["PUBLISHED"] = "Published";
|
|
26
|
+
/**
|
|
27
|
+
* No transitions
|
|
28
|
+
*/
|
|
29
|
+
LifecycleStage["DELETED"] = "Deleted";
|
|
30
|
+
LifecycleStage["UNKNOWN"] = "-";
|
|
31
|
+
})(LifecycleStage || (LifecycleStage = {}));
|
|
32
|
+
export var Location;
|
|
33
|
+
(function (Location) {
|
|
34
|
+
Location["HONG_KONG"] = "Hong Kong";
|
|
35
|
+
Location["MALAYSIA"] = "Malaysia";
|
|
36
|
+
Location["SINGAPORE"] = "Singapore";
|
|
37
|
+
Location["UNKNOWN"] = "-";
|
|
38
|
+
})(Location || (Location = {}));
|
|
39
|
+
export var Currency;
|
|
40
|
+
(function (Currency) {
|
|
41
|
+
Currency["HKD"] = "HKD";
|
|
42
|
+
Currency["MYR"] = "MYR";
|
|
43
|
+
Currency["SGD"] = "SGD";
|
|
44
|
+
Currency["UNKNOWN"] = "-";
|
|
45
|
+
})(Currency || (Currency = {}));
|
|
46
|
+
export var Difficulty;
|
|
47
|
+
(function (Difficulty) {
|
|
48
|
+
Difficulty["LOW"] = "Low";
|
|
49
|
+
Difficulty["MEDIUM"] = "Medium";
|
|
50
|
+
Difficulty["HIGH"] = "High";
|
|
51
|
+
Difficulty["UNKNOWN"] = "-";
|
|
52
|
+
})(Difficulty || (Difficulty = {}));
|
|
53
|
+
export var Tier;
|
|
54
|
+
(function (Tier) {
|
|
55
|
+
/**
|
|
56
|
+
* Standard grants for typical companies.
|
|
57
|
+
* Everyone knows, agrees they are eligible and many have experience applying for.
|
|
58
|
+
* Eg. EDG, MRA, TVP, BUD and EMF
|
|
59
|
+
*/
|
|
60
|
+
Tier["ONE"] = "1";
|
|
61
|
+
/**
|
|
62
|
+
* Many enterprises know, but don't think they are eligible
|
|
63
|
+
* and thus have limited experience applying for.
|
|
64
|
+
* Eg. HK's ESS, PAG, RTH, CRS
|
|
65
|
+
*/
|
|
66
|
+
Tier["TWO"] = "2";
|
|
67
|
+
/**
|
|
68
|
+
* Industry-specific funds, which most enterprises have not heard of,
|
|
69
|
+
* so they don't even have chance to think if they are eligible.
|
|
70
|
+
* They are not 100% related to just the enterprises alone.
|
|
71
|
+
*/
|
|
72
|
+
Tier["THREE"] = "3";
|
|
73
|
+
Tier["UNKNOWN"] = "-";
|
|
74
|
+
})(Tier || (Tier = {}));
|
|
75
|
+
export var ReimbursementType;
|
|
76
|
+
(function (ReimbursementType) {
|
|
77
|
+
/**
|
|
78
|
+
* This covers cases where specific stages or deliverables trigger payments;
|
|
79
|
+
* documentation-based disbursement where cases are tied to submission & approval of documentation,
|
|
80
|
+
* and Advance Payments falls under this category.
|
|
81
|
+
*/
|
|
82
|
+
ReimbursementType["MILESTONE_BASED_DISBURSEMENT"] = "Milestone/Tranche-based Disbursements";
|
|
83
|
+
/**
|
|
84
|
+
* This covers cases where payment release is tied to regular intervals
|
|
85
|
+
* (e.g. quarterly basis) rather than specific project milestones.
|
|
86
|
+
*/
|
|
87
|
+
ReimbursementType["PERIODIC_REIMBURSEMENTS"] = "Time-based/Periodic Reimbursements";
|
|
88
|
+
/**
|
|
89
|
+
* This covers single-payment cases that are tied to project completion.
|
|
90
|
+
*/
|
|
91
|
+
ReimbursementType["ONE_TIME_REIMBURSEMENTS"] = "Final Claims/One-time Reimbursement";
|
|
92
|
+
/**
|
|
93
|
+
* This covers cases where the schedule isn't predefined,
|
|
94
|
+
* is defined in a very loose fashion or
|
|
95
|
+
* follows a specific schedule that does not conform to any of the above-mentioned case
|
|
96
|
+
*/
|
|
97
|
+
ReimbursementType["NON_STANDARD_SCHEDULES"] = "Flexible or Non-standard Schedules";
|
|
98
|
+
ReimbursementType["UNKNOWN"] = "-";
|
|
99
|
+
})(ReimbursementType || (ReimbursementType = {}));
|
|
100
|
+
export var Objective;
|
|
101
|
+
(function (Objective) {
|
|
102
|
+
Objective["IDEATION"] = "Early-stage Research & Ideation";
|
|
103
|
+
Objective["PROTOTYPE"] = "Prototype/Product Development";
|
|
104
|
+
Objective["PROCESS_REDESIGN"] = "Process Redesign";
|
|
105
|
+
Objective["SOFTWARE_AUTOMATION"] = "Software Automation";
|
|
106
|
+
Objective["HARDWARE_AUTOMATION"] = "Hardware Automation";
|
|
107
|
+
Objective["MARKET_STRATEGY_CONCEPTUALIZATION"] = "Marketing Strategy Conceptualization";
|
|
108
|
+
Objective["MARKETING_EXECUTION"] = "Marketing Execution";
|
|
109
|
+
Objective["SERVICE_EXCELLENCE"] = "Service Excellence";
|
|
110
|
+
Objective["HIRING"] = "Hiring";
|
|
111
|
+
Objective["RESKILLING"] = "Reskilling/Upskilling";
|
|
112
|
+
Objective["SUSTAINABILITY"] = "Sustainability & ESG";
|
|
113
|
+
Objective["BUSINESS_STRATEGY_DEVELOPMENT_OVERSEAS"] = "Business Strategy Development (Overseas)";
|
|
114
|
+
Objective["MARKET_RESEARCH_OVERSEAS"] = "Market Research (Overseas)";
|
|
115
|
+
Objective["EXECUTE_OVERSEAS_EXPANSION_ACTIVITIES"] = "Execute Overseas Expansion Activities";
|
|
116
|
+
Objective["BUSINESS_STRATEGY_DEVELOPMENT_LOCAL"] = "Business Strategy Development (Local)";
|
|
117
|
+
Objective["MARKET_RESEARCH_LOCAL"] = "Market Research (Local)";
|
|
118
|
+
Objective["FINANCIAL_STRATEGY_DEVELOPMENT"] = "Financial Strategy Development";
|
|
119
|
+
Objective["CERTIFICATION"] = "Standard Adoption/Certification";
|
|
120
|
+
Objective["TEST_BEDDING"] = "Pilot & Test Bedding";
|
|
121
|
+
Objective["STARTUP_INCUBATION"] = "Startup Incubation";
|
|
122
|
+
Objective["OTHERS"] = "Others";
|
|
123
|
+
Objective["UNKNOWN"] = "-";
|
|
124
|
+
})(Objective || (Objective = {}));
|
|
125
|
+
export var ObjectiveLevel;
|
|
126
|
+
(function (ObjectiveLevel) {
|
|
127
|
+
ObjectiveLevel["PRIMARY"] = "Primary";
|
|
128
|
+
ObjectiveLevel["SECONDARY"] = "Secondary";
|
|
129
|
+
ObjectiveLevel["UNKNOWN"] = "-";
|
|
130
|
+
})(ObjectiveLevel || (ObjectiveLevel = {}));
|
|
131
|
+
export var Industry;
|
|
132
|
+
(function (Industry) {
|
|
133
|
+
Industry["ALL_INDUSTRIES"] = "All Industries";
|
|
134
|
+
Industry["AGRICULTURE"] = "Agriculture";
|
|
135
|
+
Industry["BIOTECH"] = "Biotech/Biomed";
|
|
136
|
+
Industry["CONSTRUCTION"] = "Building & Construction";
|
|
137
|
+
Industry["NON_PROFITS"] = "Charities/Non-Profits";
|
|
138
|
+
Industry["EDUCATION"] = "Education";
|
|
139
|
+
Industry["ENGINEERING_MARINE"] = "Engineering - Marine and Offshore";
|
|
140
|
+
Industry["ENGINEERING_PRECISION"] = "Engineering - Precison Engineering";
|
|
141
|
+
Industry["ENGINEERING_RENEWABLE_ENERGY"] = "Engineering - Renewable Energy";
|
|
142
|
+
Industry["ENVIRONMENTAL_SERVICES"] = "Environmental Services";
|
|
143
|
+
Industry["FNB_FOOD_PRODUCTION"] = "F&B - Food Production";
|
|
144
|
+
Industry["FNB_SERVICES"] = "F&B - Services";
|
|
145
|
+
Industry["FINANCE_GENERAL"] = "Finance (General)";
|
|
146
|
+
Industry["HEALTHCARE"] = "Healthcare";
|
|
147
|
+
Industry["TOURISM"] = "Hospitality & Tourism";
|
|
148
|
+
Industry["IT_ARTIFICIAL_INTELLIGENCE"] = "IT - Artificial Intelligence";
|
|
149
|
+
Industry["IT_FINTECH"] = "IT - Fintech";
|
|
150
|
+
Industry["IT_SUSTAINABILITY_TECH"] = "IT - Sustainability Tech";
|
|
151
|
+
Industry["IT_CYBERSECURITY"] = "IT - Cybersecurity";
|
|
152
|
+
Industry["IT_GENERAL"] = "IT - General";
|
|
153
|
+
Industry["LAND_TRANSPORT"] = "Land Transport";
|
|
154
|
+
Industry["LOGISTICS"] = "Logistics";
|
|
155
|
+
Industry["MANUFACTURING_ADVANCED"] = "Manufacturing - Advanced Manufacturing";
|
|
156
|
+
Industry["MANUFACTURING_OTHERS"] = "Manufacturing - Others";
|
|
157
|
+
Industry["MARITIME"] = "Maritime";
|
|
158
|
+
Industry["MEDIA"] = "Media";
|
|
159
|
+
Industry["OTHERS"] = "Others";
|
|
160
|
+
Industry["PROFESSIONAL_SERVICES_LEGAL"] = "Professional services - Legal";
|
|
161
|
+
Industry["PROFESSIONAL_SERVICES_OTHERS"] = "Professional services - Others";
|
|
162
|
+
Industry["REAL_ESTATE"] = "Real Estate";
|
|
163
|
+
Industry["RETAIL"] = "Retail";
|
|
164
|
+
Industry["SECURITY"] = "Security";
|
|
165
|
+
Industry["SERVICES"] = "Services";
|
|
166
|
+
Industry["SOCIAL_ENTERPRISES"] = "Social Enterprises";
|
|
167
|
+
Industry["WHOLESALE_TRADE"] = "Wholesale Trade";
|
|
168
|
+
Industry["UNKNOWN"] = "-";
|
|
169
|
+
})(Industry || (Industry = {}));
|
|
170
|
+
export var SupportableCost;
|
|
171
|
+
(function (SupportableCost) {
|
|
172
|
+
SupportableCost["MANPOWER"] = "Manpower & Staffing";
|
|
173
|
+
SupportableCost["TRAINING"] = "Training & Development";
|
|
174
|
+
SupportableCost["INFRASTRUCTURE"] = "Physical Systems & Infrastructure";
|
|
175
|
+
SupportableCost["PREAPPROVED_EQUIPMENT"] = "Hardware & Equipment (pre-approved)";
|
|
176
|
+
SupportableCost["CUSTOMISED_EQUIPMENT"] = "Hardware & Equipment (customized)";
|
|
177
|
+
SupportableCost["PREAPPROVED_SOFTWARE"] = "Software & Cloud Infrastructure (pre-approved)";
|
|
178
|
+
SupportableCost["CUSTOMISED_SOFTWARE"] = "Software & Cloud Infrastructure (customized)";
|
|
179
|
+
SupportableCost["PROFESSIONAL_SERVICES"] = "Professional Services";
|
|
180
|
+
SupportableCost["MATERIALS"] = "Materials, Consumables & Utilities";
|
|
181
|
+
SupportableCost["MARKET_VALIDATION"] = "Market Assessment & Validation";
|
|
182
|
+
SupportableCost["MARKETING"] = "Marketing & Promotion";
|
|
183
|
+
SupportableCost["TRAVEL"] = "Travel & Accommodation";
|
|
184
|
+
SupportableCost["BUSINESS_SETUP"] = "Business Setup";
|
|
185
|
+
SupportableCost["CERTIFICATION"] = "Testing & Certification";
|
|
186
|
+
SupportableCost["RESEARCH"] = "Research & Development";
|
|
187
|
+
SupportableCost["COMMERCIALISATION"] = "R&D Commercialization";
|
|
188
|
+
SupportableCost["LICENSING"] = "Intellectual Property & Licensing";
|
|
189
|
+
SupportableCost["SUSTAINABILITY"] = "Sustainability & Resource Optimization";
|
|
190
|
+
SupportableCost["PARTNERSHIPS"] = "Partnerships & Business Development";
|
|
191
|
+
SupportableCost["AUDIT"] = "Grant Audit & Program Fees";
|
|
192
|
+
SupportableCost["OTHERS"] = "Miscellaneous & Others";
|
|
193
|
+
SupportableCost["UNKNOWN"] = "-";
|
|
194
|
+
})(SupportableCost || (SupportableCost = {}));
|
|
195
|
+
export var QualifyingCondition;
|
|
196
|
+
(function (QualifyingCondition) {
|
|
197
|
+
QualifyingCondition["LOCAL"] = "local";
|
|
198
|
+
QualifyingCondition["PUBLIC"] = "public";
|
|
199
|
+
QualifyingCondition["SUBVENTED"] = "subvented";
|
|
200
|
+
QualifyingCondition["SHAREHOLDING"] = "shareholding";
|
|
201
|
+
QualifyingCondition["SME"] = "sme";
|
|
202
|
+
QualifyingCondition["UNKNOWN"] = "-";
|
|
203
|
+
})(QualifyingCondition || (QualifyingCondition = {}));
|
|
204
|
+
export var LogicValue;
|
|
205
|
+
(function (LogicValue) {
|
|
206
|
+
LogicValue["YES"] = "Yes";
|
|
207
|
+
LogicValue["NO"] = "No";
|
|
208
|
+
/**
|
|
209
|
+
* In the context of Grantbii App, unsure is chosen by the grant seeker
|
|
210
|
+
* when they are unsure of how to answer the qualifying questions.
|
|
211
|
+
*
|
|
212
|
+
* In the context of Admin Console, unsure is not available as an option.
|
|
213
|
+
* Grant researchers must select Yes or No to publish a grant.
|
|
214
|
+
*
|
|
215
|
+
* In the context of the Grant Analyser, unsure is returned by Perplexity
|
|
216
|
+
* when it is sure of which value it should provide for the grant.
|
|
217
|
+
*/
|
|
218
|
+
LogicValue["UNSURE"] = "Unsure";
|
|
219
|
+
LogicValue["UNKNOWN"] = "-";
|
|
220
|
+
})(LogicValue || (LogicValue = {}));
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AssessmentRubricDto, EligibilityCriterionDto, GrantDto, GrantObjectiveDto, GrantQualifierDto, GrantStageDto, GrantSummaryDto, RequiredDocumentDto, SupportableCostDto } from "./dtos";
|
|
2
|
+
import { Currency, Location, QualifyingCondition } from "./enums";
|
|
3
|
+
import type { AssessmentRubric, EligibilityCriterion, Grant, GrantObjectives, GrantQualifier, GrantQualifiers, GrantStage, GrantSummary, RequiredDocument, SupportableCost } from "./models";
|
|
4
|
+
export declare const mapDtosToGrantSummaries: (dtos: GrantSummaryDto[]) => GrantSummary[];
|
|
5
|
+
export declare const mapDtoToGrant: (dto: GrantDto) => Grant;
|
|
6
|
+
export declare const mapDtosToGrantObjectives: (dtos: GrantObjectiveDto[]) => GrantObjectives;
|
|
7
|
+
export declare const mapDtoToEligibilityCriterion: (dto: EligibilityCriterionDto) => EligibilityCriterion;
|
|
8
|
+
export declare const mapDtoToSupportableCost: (dto: SupportableCostDto) => SupportableCost;
|
|
9
|
+
export declare const mapDtoToAssessmentRubric: (dto: AssessmentRubricDto) => AssessmentRubric;
|
|
10
|
+
export declare const mapDtoToGrantStage: (dto: GrantStageDto) => GrantStage;
|
|
11
|
+
export declare const mapDtoToRequiredDocument: (dto: RequiredDocumentDto) => RequiredDocument;
|
|
12
|
+
export declare const mapDtosToGrantQualifiers: (dtos: GrantQualifierDto[]) => GrantQualifiers;
|
|
13
|
+
export declare const mapDtoToGrantQualifier: ({ condition, value, }: GrantQualifierDto) => GrantQualifier;
|
|
14
|
+
export declare const mapGrantAmountCapToText: (grantAmountCap: number) => string;
|
|
15
|
+
export declare const LOCATION_CURRENCY_MAP: {
|
|
16
|
+
[location in Location]: Currency;
|
|
17
|
+
};
|
|
18
|
+
export declare const LOCATION_CONDITIONS_MAP: {
|
|
19
|
+
[location in Location]: QualifyingCondition[];
|
|
20
|
+
};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { parseEnum } from "../shared/enums";
|
|
2
|
+
import { getBlankGrantObjectives, getBlankGrantQualifiers } from "./defaults";
|
|
3
|
+
import { Currency, Difficulty, Industry, LifecycleStage, Location, LogicValue, Objective, ObjectiveLevel, QualifyingCondition, ReimbursementType, Tier, } from "./enums";
|
|
4
|
+
export const mapDtosToGrantSummaries = (dtos) => dtos.map(mapDtoToGrantSummary);
|
|
5
|
+
const mapDtoToGrantSummary = (dto) => ({
|
|
6
|
+
grantUuid: dto.grant_uuid,
|
|
7
|
+
lifecycleStage: parseEnum(dto.lifecycle_stage, LifecycleStage),
|
|
8
|
+
grantLocation: parseEnum(dto.grant_location, Location),
|
|
9
|
+
grantName: dto.grant_name,
|
|
10
|
+
grantDescription: dto.grant_description,
|
|
11
|
+
grantUrl: dto.grant_url,
|
|
12
|
+
grantDifficulty: parseEnum(dto.grant_difficulty, Difficulty),
|
|
13
|
+
grantTier: parseEnum(dto.grant_tier, Tier),
|
|
14
|
+
grantSupportPercentage: dto.grant_support_percentage,
|
|
15
|
+
grantAmountCap: dto.grant_amount_cap,
|
|
16
|
+
grantObjectives: mapDtosToGrantObjectives(dto.grant_objectives),
|
|
17
|
+
reimbursementType: parseEnum(dto.reimbursement_type, ReimbursementType),
|
|
18
|
+
grantQualifiers: dto.grant_qualifiers.map(mapDtoToGrantQualifier),
|
|
19
|
+
servicedByRic: dto.serviced_by_ric,
|
|
20
|
+
isTopGrant: dto.is_top_grant,
|
|
21
|
+
});
|
|
22
|
+
export const mapDtoToGrant = (dto) => ({
|
|
23
|
+
grantUuid: dto.grant_uuid,
|
|
24
|
+
updatedOn: dto.updated_on,
|
|
25
|
+
lifecycleStage: parseEnum(dto.lifecycle_stage, LifecycleStage),
|
|
26
|
+
isMatchable: dto.is_matchable,
|
|
27
|
+
...extractGrantOriginFromGrantDto(dto),
|
|
28
|
+
...extractGrantDetailsFromGrantDto(dto),
|
|
29
|
+
});
|
|
30
|
+
const extractGrantOriginFromGrantDto = (dto) => ({
|
|
31
|
+
grantLocation: parseEnum(dto.grant_location, Location),
|
|
32
|
+
grantName: dto.grant_name,
|
|
33
|
+
grantUrl: dto.grant_url,
|
|
34
|
+
additionalInformation: dto.additional_information,
|
|
35
|
+
});
|
|
36
|
+
const extractGrantDetailsFromGrantDto = (dto) => ({
|
|
37
|
+
grantAgency: dto.grant_agency,
|
|
38
|
+
grantDescription: dto.grant_description,
|
|
39
|
+
grantDifficulty: parseEnum(dto.grant_difficulty, Difficulty),
|
|
40
|
+
grantTier: parseEnum(dto.grant_tier, Tier),
|
|
41
|
+
grantObjectives: mapDtosToGrantObjectives(dto.grant_objectives),
|
|
42
|
+
targetIndustries: dto.target_industries.map((industry) => parseEnum(industry, Industry)),
|
|
43
|
+
grantSupportPercentage: dto.grant_support_percentage,
|
|
44
|
+
grantAmountCap: dto.grant_amount_cap,
|
|
45
|
+
reimbursementType: parseEnum(dto.reimbursement_type, ReimbursementType),
|
|
46
|
+
maxProjectMonths: dto.max_project_months,
|
|
47
|
+
applicationPeriod: dto.application_period,
|
|
48
|
+
eligibilityCriteria: dto.eligibility_criteria.map(mapDtoToEligibilityCriterion),
|
|
49
|
+
supportableCosts: dto.supportable_costs.map(mapDtoToSupportableCost),
|
|
50
|
+
assessmentRubrics: dto.assessment_rubrics.map(mapDtoToAssessmentRubric),
|
|
51
|
+
grantStages: dto.grant_stages.map(mapDtoToGrantStage),
|
|
52
|
+
requiredDocuments: dto.required_documents.map(mapDtoToRequiredDocument),
|
|
53
|
+
otherConsiderations: dto.other_considerations.map(mapDtoToOtherConsideration),
|
|
54
|
+
grantQualifiers: mapDtosToGrantQualifiers(dto.grant_qualifiers),
|
|
55
|
+
servicedByRic: dto.serviced_by_ric,
|
|
56
|
+
isTopGrant: dto.is_top_grant,
|
|
57
|
+
});
|
|
58
|
+
export const mapDtosToGrantObjectives = (dtos) => dtos.reduce((grantObjectives, { objective, objective_level }) => ({
|
|
59
|
+
...grantObjectives,
|
|
60
|
+
[parseEnum(objective, Objective)]: parseEnum(objective_level, ObjectiveLevel),
|
|
61
|
+
}), getBlankGrantObjectives());
|
|
62
|
+
export const mapDtoToEligibilityCriterion = (dto) => ({
|
|
63
|
+
criterion: dto.criterion,
|
|
64
|
+
criterionDescription: dto.criterion_description,
|
|
65
|
+
});
|
|
66
|
+
export const mapDtoToSupportableCost = (dto) => ({
|
|
67
|
+
costItem: dto.cost_item,
|
|
68
|
+
costDescription: dto.cost_description,
|
|
69
|
+
});
|
|
70
|
+
export const mapDtoToAssessmentRubric = (dto) => ({
|
|
71
|
+
rubric: dto.rubric,
|
|
72
|
+
rubricDescription: dto.rubric_description,
|
|
73
|
+
});
|
|
74
|
+
export const mapDtoToGrantStage = (dto) => ({
|
|
75
|
+
stage: dto.stage,
|
|
76
|
+
stageDescription: dto.stage_description,
|
|
77
|
+
});
|
|
78
|
+
export const mapDtoToRequiredDocument = (dto) => ({
|
|
79
|
+
document: dto.document,
|
|
80
|
+
documentDescription: dto.document_description,
|
|
81
|
+
});
|
|
82
|
+
const mapDtoToOtherConsideration = (dto) => ({
|
|
83
|
+
noteTitle: dto.note_title,
|
|
84
|
+
noteContent: dto.note_content,
|
|
85
|
+
});
|
|
86
|
+
export const mapDtosToGrantQualifiers = (dtos) => dtos.reduce((grantQualifiers, { condition, value }) => ({
|
|
87
|
+
...grantQualifiers,
|
|
88
|
+
[parseEnum(condition, QualifyingCondition)]: parseEnum(value, LogicValue),
|
|
89
|
+
}), getBlankGrantQualifiers());
|
|
90
|
+
export const mapDtoToGrantQualifier = ({ condition, value, }) => ({
|
|
91
|
+
condition: parseEnum(condition, QualifyingCondition),
|
|
92
|
+
value: parseEnum(value, LogicValue),
|
|
93
|
+
});
|
|
94
|
+
export const mapGrantAmountCapToText = (grantAmountCap) => grantAmountCap >= 1_000_000
|
|
95
|
+
? `${grantAmountCap / 1_000_000}M`
|
|
96
|
+
: grantAmountCap >= 1_000
|
|
97
|
+
? `${grantAmountCap / 1_000}K`
|
|
98
|
+
: grantAmountCap.toLocaleString();
|
|
99
|
+
export const LOCATION_CURRENCY_MAP = {
|
|
100
|
+
"Hong Kong": Currency.HKD,
|
|
101
|
+
Malaysia: Currency.MYR,
|
|
102
|
+
Singapore: Currency.SGD,
|
|
103
|
+
"-": Currency.UNKNOWN,
|
|
104
|
+
};
|
|
105
|
+
export const LOCATION_CONDITIONS_MAP = {
|
|
106
|
+
[Location.HONG_KONG]: [
|
|
107
|
+
QualifyingCondition.LOCAL,
|
|
108
|
+
QualifyingCondition.PUBLIC,
|
|
109
|
+
QualifyingCondition.SUBVENTED,
|
|
110
|
+
],
|
|
111
|
+
[Location.MALAYSIA]: [QualifyingCondition.LOCAL],
|
|
112
|
+
[Location.SINGAPORE]: [
|
|
113
|
+
QualifyingCondition.LOCAL,
|
|
114
|
+
QualifyingCondition.SHAREHOLDING,
|
|
115
|
+
QualifyingCondition.SME,
|
|
116
|
+
],
|
|
117
|
+
[Location.UNKNOWN]: [],
|
|
118
|
+
};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { Difficulty, Industry, LifecycleStage, Location, QualifyingCondition, LogicValue, Objective, ObjectiveLevel, ReimbursementType, Tier } from "./enums";
|
|
2
|
+
export type GrantSummary = {
|
|
3
|
+
grantUuid: string;
|
|
4
|
+
lifecycleStage: LifecycleStage;
|
|
5
|
+
grantLocation: Location;
|
|
6
|
+
grantName: string;
|
|
7
|
+
grantUrl: string;
|
|
8
|
+
grantDescription: string;
|
|
9
|
+
grantDifficulty: Difficulty;
|
|
10
|
+
grantTier: Tier;
|
|
11
|
+
grantSupportPercentage: number;
|
|
12
|
+
grantAmountCap: number;
|
|
13
|
+
grantObjectives: GrantObjectives;
|
|
14
|
+
reimbursementType: ReimbursementType;
|
|
15
|
+
grantQualifiers: GrantQualifier[];
|
|
16
|
+
servicedByRic: boolean;
|
|
17
|
+
isTopGrant: boolean;
|
|
18
|
+
};
|
|
19
|
+
export type Grant = {
|
|
20
|
+
grantUuid: string;
|
|
21
|
+
lifecycleStage: LifecycleStage;
|
|
22
|
+
updatedOn: string;
|
|
23
|
+
isMatchable: boolean;
|
|
24
|
+
} & GrantOrigin & GrantDetails;
|
|
25
|
+
export type GrantOrigin = {
|
|
26
|
+
grantLocation: Location;
|
|
27
|
+
grantName: string;
|
|
28
|
+
grantUrl: string;
|
|
29
|
+
additionalInformation: string;
|
|
30
|
+
};
|
|
31
|
+
export type GrantDetails = {
|
|
32
|
+
grantAgency: string;
|
|
33
|
+
grantDescription: string;
|
|
34
|
+
grantDifficulty: Difficulty;
|
|
35
|
+
grantTier: Tier;
|
|
36
|
+
targetIndustries: Industry[];
|
|
37
|
+
grantObjectives: GrantObjectives;
|
|
38
|
+
grantSupportPercentage: number;
|
|
39
|
+
grantAmountCap: number;
|
|
40
|
+
reimbursementType: ReimbursementType;
|
|
41
|
+
maxProjectMonths: number;
|
|
42
|
+
applicationPeriod: string;
|
|
43
|
+
eligibilityCriteria: EligibilityCriterion[];
|
|
44
|
+
supportableCosts: SupportableCost[];
|
|
45
|
+
assessmentRubrics: AssessmentRubric[];
|
|
46
|
+
grantStages: GrantStage[];
|
|
47
|
+
requiredDocuments: RequiredDocument[];
|
|
48
|
+
otherConsiderations: OtherConsideration[];
|
|
49
|
+
grantQualifiers: GrantQualifiers;
|
|
50
|
+
servicedByRic: boolean;
|
|
51
|
+
isTopGrant: boolean;
|
|
52
|
+
};
|
|
53
|
+
export type GrantObjectives = {
|
|
54
|
+
[objective in Objective]: ObjectiveLevel;
|
|
55
|
+
};
|
|
56
|
+
export type GrantObjective = {
|
|
57
|
+
objective: Objective;
|
|
58
|
+
objectiveLevel: ObjectiveLevel;
|
|
59
|
+
};
|
|
60
|
+
export type EligibilityCriterion = {
|
|
61
|
+
criterion: string;
|
|
62
|
+
criterionDescription: string[];
|
|
63
|
+
};
|
|
64
|
+
export type SupportableCost = {
|
|
65
|
+
costItem: string;
|
|
66
|
+
costDescription: string[];
|
|
67
|
+
};
|
|
68
|
+
export type AssessmentRubric = {
|
|
69
|
+
rubric: string;
|
|
70
|
+
rubricDescription: string[];
|
|
71
|
+
};
|
|
72
|
+
export type GrantStage = {
|
|
73
|
+
stage: string;
|
|
74
|
+
stageDescription: string[];
|
|
75
|
+
};
|
|
76
|
+
export type RequiredDocument = {
|
|
77
|
+
document: string;
|
|
78
|
+
documentDescription: string[];
|
|
79
|
+
};
|
|
80
|
+
export type OtherConsideration = {
|
|
81
|
+
noteTitle: string;
|
|
82
|
+
noteContent: string[];
|
|
83
|
+
};
|
|
84
|
+
export type GrantQualifiers = {
|
|
85
|
+
[condition in QualifyingCondition]: LogicValue;
|
|
86
|
+
};
|
|
87
|
+
export type GrantQualifier = {
|
|
88
|
+
condition: QualifyingCondition;
|
|
89
|
+
value: LogicValue;
|
|
90
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { MatchedGrantDto } from "./dtos";
|
|
2
|
+
import type { GrantMatchQuery, GrantMatchResult } from "./models";
|
|
3
|
+
export declare const mapQueryToFormData: (query: GrantMatchQuery) => FormData;
|
|
4
|
+
export declare const mapDtosToGrantMatchResult: (dtos: MatchedGrantDto[]) => GrantMatchResult;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const mapQueryToFormData = (query) => {
|
|
2
|
+
const formData = new FormData();
|
|
3
|
+
for (const file of query.files) {
|
|
4
|
+
formData.append("files", file, file.name);
|
|
5
|
+
}
|
|
6
|
+
formData.append("text", query.text);
|
|
7
|
+
return formData;
|
|
8
|
+
};
|
|
9
|
+
export const mapDtosToGrantMatchResult = (dtos) => dtos.reduce((result, dto) => ({
|
|
10
|
+
...result,
|
|
11
|
+
[dto.grant_uuid]: dto.relevance_score,
|
|
12
|
+
}), {});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const checkGrantMatchActive = (query) => query.files.length !== 0 || query.text.trim() !== "";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.es2024.d.ts","../node_modules/typescript/lib/lib.esnext.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.es2023.collection.d.ts","../node_modules/typescript/lib/lib.es2023.intl.d.ts","../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2024.collection.d.ts","../node_modules/typescript/lib/lib.es2024.object.d.ts","../node_modules/typescript/lib/lib.es2024.promise.d.ts","../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2024.string.d.ts","../node_modules/typescript/lib/lib.esnext.array.d.ts","../node_modules/typescript/lib/lib.esnext.collection.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/typescript/lib/lib.esnext.promise.d.ts","../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../node_modules/typescript/lib/lib.esnext.iterator.d.ts","../node_modules/typescript/lib/lib.esnext.float16.d.ts","../node_modules/typescript/lib/lib.esnext.error.d.ts","../node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../index.ts","../src/grant/enums.ts","../src/filter/enums.ts","../src/grant/models.ts","../src/filter/models.ts","../src/filter/defaults.ts","../src/filter/mappings.ts","../src/filter/validations.ts","../src/grant/defaults.ts","../src/grant/dtos.ts","../src/shared/enums.ts","../src/grant/mappings.ts","../src/match/dtos.ts","../src/match/models.ts","../src/match/mappings.ts","../src/match/validations.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts"],"fileIdsList":[[84,85,87],[84,85,86,87],[84,85,86],[84,86],[84,86,91,92,93],[84],[95,96],[96]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",{"version":"941b6edaa210cb14957f0a4d742c3433167796d83080acbf358cdf2a24f583f0","signature":"cd316ffb5f757070ff8090e81a867d26a2179102e43f3d963645aa382c5f3096"},{"version":"8292a794ad01570b7b5641562d5b761e93294aa48a47f4e2d993a79fe6b61a48","signature":"6ff4596a766184806e8bc478e83eddc267d6ad0dd9c0a9fdbb1c48a893e8c2bd"},{"version":"9a0a141a2e664833abc05a3973cd473986c2de4d8491c872c08aa61b015ecbcd","signature":"555a7c8332325740c80e1c8c325d9cfd6d6335756f2893f60542fa095d39bdd3"},{"version":"d4e57ac109613aa95ec41c277b3a2fb046c1c33e2124ef9bcdfeea461a17669a","signature":"36d31b00dd51ea184aeac1976c92ff82e8d13f81a20bb6581f0c5e7788b36290"},{"version":"a74a8c0c241baf177d4aa67c7dee5ad5f3af79d52e4a97f1361ad448c8706a9b","signature":"e7ace589f8295cdfd011daa0b8ae6586a2a25c47a5b1b9f5077870fcd42802e1"},{"version":"127541a34d5eeea53cdd22ad7833d891d59511d0fa93c7d2070cece2d14abdce","signature":"7d7a665cb43cf32fa7ec4bae0c765293329768e1b8a0c96448f9f881daa92458"},{"version":"88021059a30880d9628999027a949c7bdc966392af626d09b41b11ac40c1b960","signature":"5ed383196af786641fd7272dd767efb603ffac2253c301151dbe92d848c59b83"},{"version":"fd59da10413430475e4b91785cd4c05856542e692f4588cc241925a82a027b45","signature":"be0d819cd3a7c3a666161d13c6af4aef68cef782e8becfa9bfd26c0c72e9c41f"},{"version":"eaf22d768b56019eb1d468e4f044720364ad8ac4109a7007ce789b83a6eec3f9","signature":"50e5d509c4b2619c85b9f895ac2881333739a78f81aa0e41f4ccbb7c0718914d"},{"version":"ad6743e5f66247c1c23d4c509a9574c43a1f884a39ac7ae94e2a982e7874bf22","signature":"90399c0786d939cbf991786afb0277c977f6e022873e1761a4d38bea7e5bbc6e"},{"version":"fcf7519ad43f462be17dd399503aee5c0bb59103fa3b80a474310e0025727a3b","signature":"c467fa182779ca1414f9a66a22cb40f5ed4ce3cd44a6ca8a3ebec57a243dc33b"},{"version":"2134d0925fbcf7aab8f5985d47a897be18f6df6ff09472cc8aa0f4a0e7042210","signature":"b6ee3c885e136822db65fb692e16cb4b6e77df99d51952c085b52b655a11701a"},{"version":"6cfad87edbe2707e1f9e54f86fd505c51ce27de47250d5c6ffa2cdf607cef4b1","signature":"856e496bc5bc6adb3303526588d5c7221ba6a28fa762c52a2036cea26ebec6d5"},{"version":"bd2c1ce65d6824df6d937fca9ac0413635442cdb7c38316a19bd861e5f77fa4e","signature":"d10f08922acaac253e38599c2f0f7cc7a6d5719e0bf539f1ee55b54c5b9b9771"},{"version":"9e0fc698a07a2cb1821f6bfcbdad31d113cf664da76ab2bc31c8bed778983cb6","signature":"092fedad67012e19f5c0a4c09b1686dfcbc97423c65f83b0e0d33b71a278d86d"},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1}],"root":[[83,98]],"options":{"allowJs":false,"declaration":true,"esModuleInterop":true,"jsx":4,"module":99,"outDir":"./","skipLibCheck":true,"strict":true,"target":11},"referencedMap":[[88,1],[89,2],[87,3],[90,2],[91,4],[94,5],[86,6],[97,7],[98,8]],"version":"5.9.2"}
|