tabletcommand-backend-models 7.4.127 → 7.4.128
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/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/models/country.js +85 -0
- package/build/models/country.js.map +1 -0
- package/build/test/0index.js +1 -0
- package/build/test/0index.js.map +1 -1
- package/build/test/country.js +161 -0
- package/build/test/country.js.map +1 -0
- package/build/types/country.js +3 -0
- package/build/types/country.js.map +1 -0
- package/definitions/index.d.ts +6 -0
- package/definitions/index.d.ts.map +1 -1
- package/definitions/models/country.d.ts +13 -0
- package/definitions/models/country.d.ts.map +1 -0
- package/definitions/test/country.d.ts +2 -0
- package/definitions/test/country.d.ts.map +1 -0
- package/definitions/types/country.d.ts +17 -0
- package/definitions/types/country.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +2 -0
- package/src/models/country.ts +97 -0
- package/src/test/0index.ts +1 -0
- package/src/test/country.ts +163 -0
- package/src/types/country.ts +18 -0
package/build/index.js
CHANGED
|
@@ -59,6 +59,7 @@ async function wireModels(mongoose) {
|
|
|
59
59
|
ChartUser: await getModel(Promise.resolve().then(() => require("./models/chart-user"))),
|
|
60
60
|
Checklist: await getModel(Promise.resolve().then(() => require("./models/checklist"))),
|
|
61
61
|
ChecklistItem: await getModel(Promise.resolve().then(() => require("./models/checklist-item"))),
|
|
62
|
+
Country: await getModel(Promise.resolve().then(() => require("./models/country"))),
|
|
62
63
|
CSVImport: await getModel(Promise.resolve().then(() => require("./models/csv-import"))),
|
|
63
64
|
AudioStreamAuthentication: await getModel(Promise.resolve().then(() => require("./models/audio-stream-authentication"))),
|
|
64
65
|
DataSharingAgreement: await getModel(Promise.resolve().then(() => require("./models/data-sharing-agreement"))),
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = CountryModule;
|
|
4
|
+
const helpers_1 = require("../helpers");
|
|
5
|
+
async function CountryModule(mongoose) {
|
|
6
|
+
const { Schema } = mongoose;
|
|
7
|
+
const CountryState = new Schema({
|
|
8
|
+
code: {
|
|
9
|
+
type: String,
|
|
10
|
+
required: true,
|
|
11
|
+
trim: true,
|
|
12
|
+
},
|
|
13
|
+
name: {
|
|
14
|
+
type: String,
|
|
15
|
+
required: true,
|
|
16
|
+
},
|
|
17
|
+
}, {
|
|
18
|
+
_id: false,
|
|
19
|
+
id: false,
|
|
20
|
+
});
|
|
21
|
+
const modelSchema = new Schema({
|
|
22
|
+
isoCode: {
|
|
23
|
+
type: String,
|
|
24
|
+
required: true,
|
|
25
|
+
trim: true,
|
|
26
|
+
uppercase: true,
|
|
27
|
+
match: /^[A-Z]{2}$/,
|
|
28
|
+
},
|
|
29
|
+
isoAlpha3: {
|
|
30
|
+
type: String,
|
|
31
|
+
required: true,
|
|
32
|
+
trim: true,
|
|
33
|
+
uppercase: true,
|
|
34
|
+
match: /^[A-Z]{3}$/,
|
|
35
|
+
},
|
|
36
|
+
isoNumeric: {
|
|
37
|
+
type: String,
|
|
38
|
+
required: true,
|
|
39
|
+
trim: true,
|
|
40
|
+
match: /^\d{3}$/,
|
|
41
|
+
},
|
|
42
|
+
name: {
|
|
43
|
+
type: String,
|
|
44
|
+
required: true,
|
|
45
|
+
},
|
|
46
|
+
currencyCode: {
|
|
47
|
+
type: String,
|
|
48
|
+
default: "",
|
|
49
|
+
},
|
|
50
|
+
preferredLanguage: {
|
|
51
|
+
type: String,
|
|
52
|
+
default: "",
|
|
53
|
+
},
|
|
54
|
+
states: {
|
|
55
|
+
type: [CountryState],
|
|
56
|
+
default: [],
|
|
57
|
+
},
|
|
58
|
+
modified: {
|
|
59
|
+
type: Date,
|
|
60
|
+
default: helpers_1.currentDate,
|
|
61
|
+
},
|
|
62
|
+
}, {
|
|
63
|
+
autoIndex: false,
|
|
64
|
+
});
|
|
65
|
+
modelSchema.index({
|
|
66
|
+
isoCode: 1,
|
|
67
|
+
}, {
|
|
68
|
+
name: "isoCode_1_unique",
|
|
69
|
+
unique: true,
|
|
70
|
+
});
|
|
71
|
+
modelSchema.index({
|
|
72
|
+
isoAlpha3: 1,
|
|
73
|
+
}, {
|
|
74
|
+
name: "isoAlpha3_1_unique",
|
|
75
|
+
unique: true,
|
|
76
|
+
});
|
|
77
|
+
modelSchema.index({
|
|
78
|
+
isoNumeric: 1,
|
|
79
|
+
}, {
|
|
80
|
+
name: "isoNumeric_1_unique",
|
|
81
|
+
unique: true,
|
|
82
|
+
});
|
|
83
|
+
return mongoose.model("Country", modelSchema, "massive_country", { overwriteModels: true });
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=country.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"country.js","sourceRoot":"","sources":["../../src/models/country.ts"],"names":[],"mappings":";;AASA,gCAqFC;AA9FD,wCAGoB;AAML,KAAK,UAAU,aAAa,CAAC,QAAwB;IAClE,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAE5B,MAAM,YAAY,GAAG,IAAI,MAAM,CAAmB;QAChD,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,IAAI;SACX;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;SACf;KACF,EAAE;QACD,GAAG,EAAE,KAAK;QACV,EAAE,EAAE,KAAK;KACV,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,IAAI,MAAM,CAAU;QACtC,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,YAAY;SACpB;QACD,SAAS,EAAE;YACT,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,YAAY;SACpB;QACD,UAAU,EAAE;YACV,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,SAAS;SACjB;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;SACf;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;SACZ;QACD,iBAAiB,EAAE;YACjB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;SACZ;QACD,MAAM,EAAE;YACN,IAAI,EAAE,CAAC,YAAY,CAAC;YACpB,OAAO,EAAE,EAAE;SACZ;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,qBAAW;SACrB;KACF,EAAE;QACD,SAAS,EAAE,KAAK;KACjB,CAAC,CAAC;IAEH,WAAW,CAAC,KAAK,CAAC;QAChB,OAAO,EAAE,CAAC;KACX,EAAE;QACD,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;IAEH,WAAW,CAAC,KAAK,CAAC;QAChB,SAAS,EAAE,CAAC;KACb,EAAE;QACD,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;IAEH,WAAW,CAAC,KAAK,CAAC;QAChB,UAAU,EAAE,CAAC;KACd,EAAE;QACD,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,KAAK,CAAU,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;AACvG,CAAC"}
|
package/build/test/0index.js
CHANGED
|
@@ -38,6 +38,7 @@ const config = require("./config");
|
|
|
38
38
|
chai_1.assert.isFunction(models.ChartUser, "Missing ChartUser");
|
|
39
39
|
chai_1.assert.isFunction(models.Checklist, "Missing Checklist");
|
|
40
40
|
chai_1.assert.isFunction(models.ChecklistItem, "Missing ChecklistItem");
|
|
41
|
+
chai_1.assert.isFunction(models.Country, "Missing Country");
|
|
41
42
|
chai_1.assert.isFunction(models.CSVImport, "Missing CSVImport");
|
|
42
43
|
chai_1.assert.isFunction(models.DataSharingAgreement, "Missing DataSharingAgreement");
|
|
43
44
|
chai_1.assert.isFunction(models.Department, "Missing Department");
|
package/build/test/0index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"0index.js","sourceRoot":"","sources":["../../src/test/0index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"0index.js","sourceRoot":"","sources":["../../src/test/0index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const node_test_1 = require("node:test");
|
|
5
|
+
const m = require("../index");
|
|
6
|
+
const config = require("./config");
|
|
7
|
+
(0, node_test_1.describe)("Country", function () {
|
|
8
|
+
let models, mongoose;
|
|
9
|
+
(0, node_test_1.beforeEach)(async function () {
|
|
10
|
+
const c = await m.connect(config.url);
|
|
11
|
+
models = c.models;
|
|
12
|
+
mongoose = c.mongoose;
|
|
13
|
+
await models.Country.syncIndexes();
|
|
14
|
+
});
|
|
15
|
+
(0, node_test_1.afterEach)(async function () {
|
|
16
|
+
await models.Country.deleteMany({});
|
|
17
|
+
await mongoose.disconnect();
|
|
18
|
+
});
|
|
19
|
+
const unitedStates = {
|
|
20
|
+
isoCode: "US",
|
|
21
|
+
isoAlpha3: "USA",
|
|
22
|
+
isoNumeric: "840",
|
|
23
|
+
name: "United States",
|
|
24
|
+
currencyCode: "USD",
|
|
25
|
+
preferredLanguage: "en",
|
|
26
|
+
};
|
|
27
|
+
(0, node_test_1.it)("is saved", async function () {
|
|
28
|
+
const sut = await new models.Country(unitedStates).save();
|
|
29
|
+
chai_1.assert.equal(sut.isoCode, "US");
|
|
30
|
+
chai_1.assert.equal(sut.isoAlpha3, "USA");
|
|
31
|
+
chai_1.assert.equal(sut.isoNumeric, "840");
|
|
32
|
+
chai_1.assert.equal(sut.name, "United States");
|
|
33
|
+
chai_1.assert.equal(sut.currencyCode, "USD");
|
|
34
|
+
chai_1.assert.equal(sut.preferredLanguage, "en");
|
|
35
|
+
chai_1.assert.deepEqual(sut.toObject().states, []);
|
|
36
|
+
chai_1.assert.instanceOf(sut.modified, Date);
|
|
37
|
+
});
|
|
38
|
+
(0, node_test_1.it)("saves states", async function () {
|
|
39
|
+
const sut = await new models.Country({
|
|
40
|
+
...unitedStates,
|
|
41
|
+
states: [{ code: " CA ", name: "California" }, { code: "FM", name: "Federated States Of Micronesia" }],
|
|
42
|
+
}).save();
|
|
43
|
+
chai_1.assert.deepEqual(sut.toObject().states, [
|
|
44
|
+
{ code: "CA", name: "California" },
|
|
45
|
+
{ code: "FM", name: "Federated States Of Micronesia" },
|
|
46
|
+
]);
|
|
47
|
+
});
|
|
48
|
+
for (const field of ["code", "name"]) {
|
|
49
|
+
(0, node_test_1.it)(`requires a state ${field}`, async function () {
|
|
50
|
+
const state = { code: "CA", name: "California" };
|
|
51
|
+
delete state[field];
|
|
52
|
+
let err = null;
|
|
53
|
+
try {
|
|
54
|
+
await new models.Country({ ...unitedStates, states: [state] }).save();
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
err = e;
|
|
58
|
+
}
|
|
59
|
+
chai_1.assert.isNotNull(err, `expected a state without ${field} to be rejected`);
|
|
60
|
+
chai_1.assert.include(String(err.message), `states.0.${field}`);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
(0, node_test_1.it)("enforces a unique isoCode index", async function () {
|
|
64
|
+
await new models.Country(unitedStates).save();
|
|
65
|
+
let err = null;
|
|
66
|
+
try {
|
|
67
|
+
await new models.Country({ ...unitedStates, preferredLanguage: "es" }).save();
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
err = e;
|
|
71
|
+
}
|
|
72
|
+
chai_1.assert.isNotNull(err, "expected a duplicate isoCode to be rejected");
|
|
73
|
+
chai_1.assert.include(String(err.message), "duplicate key");
|
|
74
|
+
});
|
|
75
|
+
(0, node_test_1.it)("requires an isoCode", async function () {
|
|
76
|
+
let err = null;
|
|
77
|
+
try {
|
|
78
|
+
await new models.Country({ ...unitedStates, isoCode: undefined }).save();
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
err = e;
|
|
82
|
+
}
|
|
83
|
+
chai_1.assert.isNotNull(err, "expected a missing isoCode to be rejected");
|
|
84
|
+
chai_1.assert.include(String(err.message), "isoCode");
|
|
85
|
+
});
|
|
86
|
+
for (const field of ["isoAlpha3", "isoNumeric", "name"]) {
|
|
87
|
+
(0, node_test_1.it)(`requires ${field}`, async function () {
|
|
88
|
+
let err = null;
|
|
89
|
+
try {
|
|
90
|
+
await new models.Country({ ...unitedStates, [field]: undefined }).save();
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
err = e;
|
|
94
|
+
}
|
|
95
|
+
chai_1.assert.isNotNull(err, `expected a missing ${field} to be rejected`);
|
|
96
|
+
chai_1.assert.include(String(err.message), field);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
(0, node_test_1.it)("normalizes ISO codes", async function () {
|
|
100
|
+
const sut = await new models.Country({
|
|
101
|
+
...unitedStates,
|
|
102
|
+
isoCode: " us ",
|
|
103
|
+
isoAlpha3: "usa ",
|
|
104
|
+
isoNumeric: " 840",
|
|
105
|
+
}).save();
|
|
106
|
+
chai_1.assert.equal(sut.isoCode, "US");
|
|
107
|
+
chai_1.assert.equal(sut.isoAlpha3, "USA");
|
|
108
|
+
chai_1.assert.equal(sut.isoNumeric, "840");
|
|
109
|
+
});
|
|
110
|
+
const invalidCodes = [
|
|
111
|
+
["isoCode", "USA"],
|
|
112
|
+
["isoAlpha3", "US"],
|
|
113
|
+
["isoNumeric", "4"],
|
|
114
|
+
["isoNumeric", "84a"],
|
|
115
|
+
];
|
|
116
|
+
for (const [field, value] of invalidCodes) {
|
|
117
|
+
(0, node_test_1.it)(`rejects ${field} "${value}"`, async function () {
|
|
118
|
+
let err = null;
|
|
119
|
+
try {
|
|
120
|
+
await new models.Country({ ...unitedStates, [field]: value }).save();
|
|
121
|
+
}
|
|
122
|
+
catch (e) {
|
|
123
|
+
err = e;
|
|
124
|
+
}
|
|
125
|
+
chai_1.assert.isNotNull(err, `expected ${field} "${value}" to be rejected`);
|
|
126
|
+
chai_1.assert.include(String(err.message), field);
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
for (const field of ["isoAlpha3", "isoNumeric"]) {
|
|
130
|
+
(0, node_test_1.it)(`enforces a unique ${field} index`, async function () {
|
|
131
|
+
await new models.Country(unitedStates).save();
|
|
132
|
+
let err = null;
|
|
133
|
+
try {
|
|
134
|
+
await new models.Country({
|
|
135
|
+
...unitedStates,
|
|
136
|
+
isoCode: "CA",
|
|
137
|
+
isoAlpha3: "CAN",
|
|
138
|
+
isoNumeric: "124",
|
|
139
|
+
[field]: unitedStates[field],
|
|
140
|
+
}).save();
|
|
141
|
+
}
|
|
142
|
+
catch (e) {
|
|
143
|
+
err = e;
|
|
144
|
+
}
|
|
145
|
+
chai_1.assert.isNotNull(err, `expected a duplicate ${field} to be rejected`);
|
|
146
|
+
chai_1.assert.include(String(err.message), "duplicate key");
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
(0, node_test_1.it)("allows a country without currency or language", async function () {
|
|
150
|
+
const sut = await new models.Country({
|
|
151
|
+
isoCode: "AQ",
|
|
152
|
+
isoAlpha3: "ATA",
|
|
153
|
+
isoNumeric: "010",
|
|
154
|
+
name: "Antarctica",
|
|
155
|
+
}).save();
|
|
156
|
+
chai_1.assert.equal(sut.currencyCode, "");
|
|
157
|
+
chai_1.assert.equal(sut.preferredLanguage, "");
|
|
158
|
+
chai_1.assert.instanceOf(sut.modified, Date);
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
//# sourceMappingURL=country.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"country.js","sourceRoot":"","sources":["../../src/test/country.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,yCAAgE;AAChE,8BAA8B;AAC9B,mCAAmC;AAEnC,IAAA,oBAAQ,EAAC,SAAS,EAAE;IAClB,IAAI,MAAuB,EAAE,QAA0B,CAAC;IACxD,IAAA,sBAAU,EAAC,KAAK;QACd,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QACzC,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,IAAA,qBAAS,EAAC,KAAK;QACb,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG;QACnB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,eAAe;QACrB,YAAY,EAAE,KAAK;QACnB,iBAAiB,EAAE,IAAI;KACxB,CAAC;IAEF,IAAA,cAAE,EAAC,UAAU,EAAE,KAAK;QAClB,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1D,aAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChC,aAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACnC,aAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACpC,aAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACxC,aAAM,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACtC,aAAM,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAC1C,aAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5C,aAAM,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,cAAc,EAAE,KAAK;QACtB,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC;YACnC,GAAG,YAAY;YACf,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC;SACvG,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,aAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE;YACtC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE;YAClC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,gCAAgC,EAAE;SACvD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QACrC,IAAA,cAAE,EAAC,oBAAoB,KAAK,EAAE,EAAE,KAAK;YACnC,MAAM,KAAK,GAA2B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;YACzE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,GAAG,GAAY,IAAI,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACxE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,GAAG,GAAG,CAAC,CAAC;YACV,CAAC;YACD,aAAM,CAAC,SAAS,CAAC,GAAG,EAAE,4BAA4B,KAAK,iBAAiB,CAAC,CAAC;YAC1E,aAAM,CAAC,OAAO,CAAC,MAAM,CAAE,GAAa,CAAC,OAAO,CAAC,EAAE,YAAY,KAAK,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAA,cAAE,EAAC,iCAAiC,EAAE,KAAK;QACzC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,GAAG,GAAY,IAAI,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAChF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,GAAG,CAAC,CAAC;QACV,CAAC;QACD,aAAM,CAAC,SAAS,CAAC,GAAG,EAAE,6CAA6C,CAAC,CAAC;QACrE,aAAM,CAAC,OAAO,CAAC,MAAM,CAAE,GAAa,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,qBAAqB,EAAE,KAAK;QAC7B,IAAI,GAAG,GAAY,IAAI,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,GAAG,CAAC,CAAC;QACV,CAAC;QACD,aAAM,CAAC,SAAS,CAAC,GAAG,EAAE,2CAA2C,CAAC,CAAC;QACnE,aAAM,CAAC,OAAO,CAAC,MAAM,CAAE,GAAa,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC;QACxD,IAAA,cAAE,EAAC,YAAY,KAAK,EAAE,EAAE,KAAK;YAC3B,IAAI,GAAG,GAAY,IAAI,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3E,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,GAAG,GAAG,CAAC,CAAC;YACV,CAAC;YACD,aAAM,CAAC,SAAS,CAAC,GAAG,EAAE,sBAAsB,KAAK,iBAAiB,CAAC,CAAC;YACpE,aAAM,CAAC,OAAO,CAAC,MAAM,CAAE,GAAa,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAA,cAAE,EAAC,sBAAsB,EAAE,KAAK;QAC9B,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC;YACnC,GAAG,YAAY;YACf,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,MAAM;YACjB,UAAU,EAAE,MAAM;SACnB,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,aAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChC,aAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACnC,aAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAuB;QACvC,CAAC,SAAS,EAAE,KAAK,CAAC;QAClB,CAAC,WAAW,EAAE,IAAI,CAAC;QACnB,CAAC,YAAY,EAAE,GAAG,CAAC;QACnB,CAAC,YAAY,EAAE,KAAK,CAAC;KACtB,CAAC;IACF,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;QAC1C,IAAA,cAAE,EAAC,WAAW,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK;YACrC,IAAI,GAAG,GAAY,IAAI,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,GAAG,GAAG,CAAC,CAAC;YACV,CAAC;YACD,aAAM,CAAC,SAAS,CAAC,GAAG,EAAE,YAAY,KAAK,KAAK,KAAK,kBAAkB,CAAC,CAAC;YACrE,aAAM,CAAC,OAAO,CAAC,MAAM,CAAE,GAAa,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC;QAChD,IAAA,cAAE,EAAC,qBAAqB,KAAK,QAAQ,EAAE,KAAK;YAC1C,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,GAAG,GAAY,IAAI,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC;oBACvB,GAAG,YAAY;oBACf,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,KAAK;oBAChB,UAAU,EAAE,KAAK;oBACjB,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,KAAkC,CAAC;iBAC1D,CAAC,CAAC,IAAI,EAAE,CAAC;YACZ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,GAAG,GAAG,CAAC,CAAC;YACV,CAAC;YACD,aAAM,CAAC,SAAS,CAAC,GAAG,EAAE,wBAAwB,KAAK,iBAAiB,CAAC,CAAC;YACtE,aAAM,CAAC,OAAO,CAAC,MAAM,CAAE,GAAa,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAA,cAAE,EAAC,+CAA+C,EAAE,KAAK;QACvD,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC;YACnC,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,KAAK;YACjB,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,aAAM,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACnC,aAAM,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACxC,aAAM,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"country.js","sourceRoot":"","sources":["../../src/types/country.ts"],"names":[],"mappings":""}
|
package/definitions/index.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export { ChartManagedIncident, ChartManagedIncidentModel } from "./models/chart-
|
|
|
24
24
|
export { ChartUser, ChartUserModel } from "./models/chart-user";
|
|
25
25
|
export { Checklist, ChecklistModel } from "./models/checklist";
|
|
26
26
|
export { ChecklistItem, ChecklistItemModel } from "./models/checklist-item";
|
|
27
|
+
export { Country, CountryModel } from "./models/country";
|
|
27
28
|
export { CSVImport, CSVImportModel } from "./models/csv-import";
|
|
28
29
|
export { AudioStreamAuthentication, AudioStreamAuthenticationModel } from "./models/audio-stream-authentication";
|
|
29
30
|
export { DataSharingAgreement, DataSharingAgreementModel } from "./models/data-sharing-agreement";
|
|
@@ -197,6 +198,11 @@ export declare function connect(url: string, overwriteOpts?: ConnectOptions, ena
|
|
|
197
198
|
}> & {
|
|
198
199
|
__v: number;
|
|
199
200
|
}, any>;
|
|
201
|
+
Country: import("mongoose").Model<import("./models/country").Country, {}, {}, {}, import("mongoose").Document<unknown, {}, import("./models/country").Country, {}, {}> & import("./models/country").Country & Required<{
|
|
202
|
+
_id: import("mongoose").Types.ObjectId;
|
|
203
|
+
}> & {
|
|
204
|
+
__v: number;
|
|
205
|
+
}, any>;
|
|
200
206
|
CSVImport: import("mongoose").Model<import("./models/csv-import").CSVImport, {}, {}, {}, import("mongoose").Document<unknown, {}, import("./models/csv-import").CSVImport, {}, {}> & import("./models/csv-import").CSVImport & Required<{
|
|
201
207
|
_id: import("mongoose").Types.ObjectId;
|
|
202
208
|
}> & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAmFrB,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAC5G,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACjH,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAClG,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/F,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AACxG,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAErF,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAE7E,cAAc,gCAAgC,CAAC;AAG/C,YAAY,EACV,uBAAuB,EACvB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,6BAA6B,GAC9B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,0BAA0B,EAC1B,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC;AAE7B,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,cAAc,EAAE,WAAW,UAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiB7F;AAED,KAAK,YAAY,CAAC,CAAC,SAAS,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACvF,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC;AAC3C,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { MongooseModule } from "../helpers";
|
|
2
|
+
import { Model } from "mongoose";
|
|
3
|
+
import { CountryType } from "../types/country";
|
|
4
|
+
export interface Country extends CountryType {
|
|
5
|
+
}
|
|
6
|
+
export default function CountryModule(mongoose: MongooseModule): Promise<Model<Country, {}, {}, {}, import("mongoose").Document<unknown, {}, Country, {}, {}> & Country & Required<{
|
|
7
|
+
_id: import("mongoose").Types.ObjectId;
|
|
8
|
+
}> & {
|
|
9
|
+
__v: number;
|
|
10
|
+
}, any>>;
|
|
11
|
+
export interface CountryModel extends Model<Country> {
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=country.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"country.d.ts","sourceRoot":"","sources":["../../src/models/country.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAoB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEjE,MAAM,WAAW,OAAQ,SAAQ,WAAW;CAAI;AAEhD,wBAA8B,aAAa,CAAC,QAAQ,EAAE,cAAc;;;;SAqFnE;AAED,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,OAAO,CAAC;CAAI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"country.d.ts","sourceRoot":"","sources":["../../src/test/country.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Types } from "mongoose";
|
|
2
|
+
export interface CountryStateType {
|
|
3
|
+
code: string;
|
|
4
|
+
name: string;
|
|
5
|
+
}
|
|
6
|
+
export interface CountryType extends Record<string, unknown> {
|
|
7
|
+
_id: Types.ObjectId;
|
|
8
|
+
isoCode: string;
|
|
9
|
+
isoAlpha3: string;
|
|
10
|
+
isoNumeric: string;
|
|
11
|
+
name: string;
|
|
12
|
+
currencyCode: string;
|
|
13
|
+
preferredLanguage: string;
|
|
14
|
+
states: CountryStateType[];
|
|
15
|
+
modified: Date;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=country.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"country.d.ts","sourceRoot":"","sources":["../../src/types/country.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAY,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1D,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,QAAQ,EAAE,IAAI,CAAC;CAChB"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -49,6 +49,7 @@ async function wireModels(mongoose: MongooseModule) {
|
|
|
49
49
|
ChartUser: await getModel(import("./models/chart-user")),
|
|
50
50
|
Checklist: await getModel(import("./models/checklist")),
|
|
51
51
|
ChecklistItem: await getModel(import("./models/checklist-item")),
|
|
52
|
+
Country: await getModel(import("./models/country")),
|
|
52
53
|
CSVImport: await getModel(import("./models/csv-import")),
|
|
53
54
|
AudioStreamAuthentication: await getModel(import("./models/audio-stream-authentication")),
|
|
54
55
|
DataSharingAgreement: await getModel(import("./models/data-sharing-agreement")),
|
|
@@ -120,6 +121,7 @@ export { ChartManagedIncident, ChartManagedIncidentModel } from "./models/chart-
|
|
|
120
121
|
export { ChartUser, ChartUserModel } from "./models/chart-user";
|
|
121
122
|
export { Checklist, ChecklistModel } from "./models/checklist";
|
|
122
123
|
export { ChecklistItem, ChecklistItemModel } from "./models/checklist-item";
|
|
124
|
+
export { Country, CountryModel } from "./models/country";
|
|
123
125
|
export { CSVImport, CSVImportModel } from "./models/csv-import";
|
|
124
126
|
export { AudioStreamAuthentication, AudioStreamAuthenticationModel } from "./models/audio-stream-authentication";
|
|
125
127
|
export { DataSharingAgreement, DataSharingAgreementModel } from "./models/data-sharing-agreement";
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import {
|
|
2
|
+
currentDate,
|
|
3
|
+
MongooseModule,
|
|
4
|
+
} from "../helpers";
|
|
5
|
+
import { Model } from "mongoose";
|
|
6
|
+
import { CountryStateType, CountryType } from "../types/country";
|
|
7
|
+
|
|
8
|
+
export interface Country extends CountryType { }
|
|
9
|
+
|
|
10
|
+
export default async function CountryModule(mongoose: MongooseModule) {
|
|
11
|
+
const { Schema } = mongoose;
|
|
12
|
+
|
|
13
|
+
const CountryState = new Schema<CountryStateType>({
|
|
14
|
+
code: {
|
|
15
|
+
type: String,
|
|
16
|
+
required: true,
|
|
17
|
+
trim: true,
|
|
18
|
+
},
|
|
19
|
+
name: {
|
|
20
|
+
type: String,
|
|
21
|
+
required: true,
|
|
22
|
+
},
|
|
23
|
+
}, {
|
|
24
|
+
_id: false,
|
|
25
|
+
id: false,
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
const modelSchema = new Schema<Country>({
|
|
29
|
+
isoCode: {
|
|
30
|
+
type: String,
|
|
31
|
+
required: true,
|
|
32
|
+
trim: true,
|
|
33
|
+
uppercase: true,
|
|
34
|
+
match: /^[A-Z]{2}$/,
|
|
35
|
+
},
|
|
36
|
+
isoAlpha3: {
|
|
37
|
+
type: String,
|
|
38
|
+
required: true,
|
|
39
|
+
trim: true,
|
|
40
|
+
uppercase: true,
|
|
41
|
+
match: /^[A-Z]{3}$/,
|
|
42
|
+
},
|
|
43
|
+
isoNumeric: {
|
|
44
|
+
type: String,
|
|
45
|
+
required: true,
|
|
46
|
+
trim: true,
|
|
47
|
+
match: /^\d{3}$/,
|
|
48
|
+
},
|
|
49
|
+
name: {
|
|
50
|
+
type: String,
|
|
51
|
+
required: true,
|
|
52
|
+
},
|
|
53
|
+
currencyCode: {
|
|
54
|
+
type: String,
|
|
55
|
+
default: "",
|
|
56
|
+
},
|
|
57
|
+
preferredLanguage: {
|
|
58
|
+
type: String,
|
|
59
|
+
default: "",
|
|
60
|
+
},
|
|
61
|
+
states: {
|
|
62
|
+
type: [CountryState],
|
|
63
|
+
default: [],
|
|
64
|
+
},
|
|
65
|
+
modified: {
|
|
66
|
+
type: Date,
|
|
67
|
+
default: currentDate,
|
|
68
|
+
},
|
|
69
|
+
}, {
|
|
70
|
+
autoIndex: false,
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
modelSchema.index({
|
|
74
|
+
isoCode: 1,
|
|
75
|
+
}, {
|
|
76
|
+
name: "isoCode_1_unique",
|
|
77
|
+
unique: true,
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
modelSchema.index({
|
|
81
|
+
isoAlpha3: 1,
|
|
82
|
+
}, {
|
|
83
|
+
name: "isoAlpha3_1_unique",
|
|
84
|
+
unique: true,
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
modelSchema.index({
|
|
88
|
+
isoNumeric: 1,
|
|
89
|
+
}, {
|
|
90
|
+
name: "isoNumeric_1_unique",
|
|
91
|
+
unique: true,
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
return mongoose.model<Country>("Country", modelSchema, "massive_country", { overwriteModels: true });
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export interface CountryModel extends Model<Country> { }
|
package/src/test/0index.ts
CHANGED
|
@@ -38,6 +38,7 @@ describe(" Models", function() {
|
|
|
38
38
|
assert.isFunction(models.ChartUser, "Missing ChartUser");
|
|
39
39
|
assert.isFunction(models.Checklist, "Missing Checklist");
|
|
40
40
|
assert.isFunction(models.ChecklistItem, "Missing ChecklistItem");
|
|
41
|
+
assert.isFunction(models.Country, "Missing Country");
|
|
41
42
|
assert.isFunction(models.CSVImport, "Missing CSVImport");
|
|
42
43
|
assert.isFunction(models.DataSharingAgreement, "Missing DataSharingAgreement");
|
|
43
44
|
assert.isFunction(models.Department, "Missing Department");
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { assert } from "chai";
|
|
2
|
+
import { describe, it, beforeEach, afterEach } from "node:test";
|
|
3
|
+
import * as m from "../index";
|
|
4
|
+
import * as config from "./config";
|
|
5
|
+
|
|
6
|
+
describe("Country", function() {
|
|
7
|
+
let models: m.BackendModels, mongoose: m.MongooseModule;
|
|
8
|
+
beforeEach(async function() {
|
|
9
|
+
const c = await m.connect(config.url);
|
|
10
|
+
models = c.models; mongoose = c.mongoose;
|
|
11
|
+
await models.Country.syncIndexes();
|
|
12
|
+
});
|
|
13
|
+
afterEach(async function() {
|
|
14
|
+
await models.Country.deleteMany({});
|
|
15
|
+
await mongoose.disconnect();
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
const unitedStates = {
|
|
19
|
+
isoCode: "US",
|
|
20
|
+
isoAlpha3: "USA",
|
|
21
|
+
isoNumeric: "840",
|
|
22
|
+
name: "United States",
|
|
23
|
+
currencyCode: "USD",
|
|
24
|
+
preferredLanguage: "en",
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
it("is saved", async function() {
|
|
28
|
+
const sut = await new models.Country(unitedStates).save();
|
|
29
|
+
assert.equal(sut.isoCode, "US");
|
|
30
|
+
assert.equal(sut.isoAlpha3, "USA");
|
|
31
|
+
assert.equal(sut.isoNumeric, "840");
|
|
32
|
+
assert.equal(sut.name, "United States");
|
|
33
|
+
assert.equal(sut.currencyCode, "USD");
|
|
34
|
+
assert.equal(sut.preferredLanguage, "en");
|
|
35
|
+
assert.deepEqual(sut.toObject().states, []);
|
|
36
|
+
assert.instanceOf(sut.modified, Date);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it("saves states", async function() {
|
|
40
|
+
const sut = await new models.Country({
|
|
41
|
+
...unitedStates,
|
|
42
|
+
states: [{ code: " CA ", name: "California" }, { code: "FM", name: "Federated States Of Micronesia" }],
|
|
43
|
+
}).save();
|
|
44
|
+
assert.deepEqual(sut.toObject().states, [
|
|
45
|
+
{ code: "CA", name: "California" },
|
|
46
|
+
{ code: "FM", name: "Federated States Of Micronesia" },
|
|
47
|
+
]);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
for (const field of ["code", "name"]) {
|
|
51
|
+
it(`requires a state ${field}`, async function() {
|
|
52
|
+
const state: Record<string, string> = { code: "CA", name: "California" };
|
|
53
|
+
delete state[field];
|
|
54
|
+
let err: unknown = null;
|
|
55
|
+
try {
|
|
56
|
+
await new models.Country({ ...unitedStates, states: [state] }).save();
|
|
57
|
+
} catch (e) {
|
|
58
|
+
err = e;
|
|
59
|
+
}
|
|
60
|
+
assert.isNotNull(err, `expected a state without ${field} to be rejected`);
|
|
61
|
+
assert.include(String((err as Error).message), `states.0.${field}`);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
it("enforces a unique isoCode index", async function() {
|
|
66
|
+
await new models.Country(unitedStates).save();
|
|
67
|
+
let err: unknown = null;
|
|
68
|
+
try {
|
|
69
|
+
await new models.Country({ ...unitedStates, preferredLanguage: "es" }).save();
|
|
70
|
+
} catch (e) {
|
|
71
|
+
err = e;
|
|
72
|
+
}
|
|
73
|
+
assert.isNotNull(err, "expected a duplicate isoCode to be rejected");
|
|
74
|
+
assert.include(String((err as Error).message), "duplicate key");
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it("requires an isoCode", async function() {
|
|
78
|
+
let err: unknown = null;
|
|
79
|
+
try {
|
|
80
|
+
await new models.Country({ ...unitedStates, isoCode: undefined }).save();
|
|
81
|
+
} catch (e) {
|
|
82
|
+
err = e;
|
|
83
|
+
}
|
|
84
|
+
assert.isNotNull(err, "expected a missing isoCode to be rejected");
|
|
85
|
+
assert.include(String((err as Error).message), "isoCode");
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
for (const field of ["isoAlpha3", "isoNumeric", "name"]) {
|
|
89
|
+
it(`requires ${field}`, async function() {
|
|
90
|
+
let err: unknown = null;
|
|
91
|
+
try {
|
|
92
|
+
await new models.Country({ ...unitedStates, [field]: undefined }).save();
|
|
93
|
+
} catch (e) {
|
|
94
|
+
err = e;
|
|
95
|
+
}
|
|
96
|
+
assert.isNotNull(err, `expected a missing ${field} to be rejected`);
|
|
97
|
+
assert.include(String((err as Error).message), field);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
it("normalizes ISO codes", async function() {
|
|
102
|
+
const sut = await new models.Country({
|
|
103
|
+
...unitedStates,
|
|
104
|
+
isoCode: " us ",
|
|
105
|
+
isoAlpha3: "usa ",
|
|
106
|
+
isoNumeric: " 840",
|
|
107
|
+
}).save();
|
|
108
|
+
assert.equal(sut.isoCode, "US");
|
|
109
|
+
assert.equal(sut.isoAlpha3, "USA");
|
|
110
|
+
assert.equal(sut.isoNumeric, "840");
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
const invalidCodes: [string, string][] = [
|
|
114
|
+
["isoCode", "USA"],
|
|
115
|
+
["isoAlpha3", "US"],
|
|
116
|
+
["isoNumeric", "4"],
|
|
117
|
+
["isoNumeric", "84a"],
|
|
118
|
+
];
|
|
119
|
+
for (const [field, value] of invalidCodes) {
|
|
120
|
+
it(`rejects ${field} "${value}"`, async function() {
|
|
121
|
+
let err: unknown = null;
|
|
122
|
+
try {
|
|
123
|
+
await new models.Country({ ...unitedStates, [field]: value }).save();
|
|
124
|
+
} catch (e) {
|
|
125
|
+
err = e;
|
|
126
|
+
}
|
|
127
|
+
assert.isNotNull(err, `expected ${field} "${value}" to be rejected`);
|
|
128
|
+
assert.include(String((err as Error).message), field);
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
for (const field of ["isoAlpha3", "isoNumeric"]) {
|
|
133
|
+
it(`enforces a unique ${field} index`, async function() {
|
|
134
|
+
await new models.Country(unitedStates).save();
|
|
135
|
+
let err: unknown = null;
|
|
136
|
+
try {
|
|
137
|
+
await new models.Country({
|
|
138
|
+
...unitedStates,
|
|
139
|
+
isoCode: "CA",
|
|
140
|
+
isoAlpha3: "CAN",
|
|
141
|
+
isoNumeric: "124",
|
|
142
|
+
[field]: unitedStates[field as keyof typeof unitedStates],
|
|
143
|
+
}).save();
|
|
144
|
+
} catch (e) {
|
|
145
|
+
err = e;
|
|
146
|
+
}
|
|
147
|
+
assert.isNotNull(err, `expected a duplicate ${field} to be rejected`);
|
|
148
|
+
assert.include(String((err as Error).message), "duplicate key");
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
it("allows a country without currency or language", async function() {
|
|
153
|
+
const sut = await new models.Country({
|
|
154
|
+
isoCode: "AQ",
|
|
155
|
+
isoAlpha3: "ATA",
|
|
156
|
+
isoNumeric: "010",
|
|
157
|
+
name: "Antarctica",
|
|
158
|
+
}).save();
|
|
159
|
+
assert.equal(sut.currencyCode, "");
|
|
160
|
+
assert.equal(sut.preferredLanguage, "");
|
|
161
|
+
assert.instanceOf(sut.modified, Date);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Types } from "mongoose";
|
|
2
|
+
|
|
3
|
+
export interface CountryStateType {
|
|
4
|
+
code: string,
|
|
5
|
+
name: string,
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface CountryType extends Record<string, unknown> {
|
|
9
|
+
_id: Types.ObjectId,
|
|
10
|
+
isoCode: string,
|
|
11
|
+
isoAlpha3: string,
|
|
12
|
+
isoNumeric: string,
|
|
13
|
+
name: string,
|
|
14
|
+
currencyCode: string,
|
|
15
|
+
preferredLanguage: string,
|
|
16
|
+
states: CountryStateType[],
|
|
17
|
+
modified: Date,
|
|
18
|
+
}
|