@unchainedshop/core-languages 3.0.0-alpha1 → 3.0.0-alpha3
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/lib/db/LanguagesCollection.d.ts +2 -1
- package/lib/db/LanguagesCollection.d.ts.map +1 -0
- package/lib/languages-index.d.ts +2 -1
- package/lib/languages-index.d.ts.map +1 -0
- package/lib/languages-index.js +1 -1
- package/lib/languages-index.js.map +1 -1
- package/lib/module/configureLanguagesModule.d.ts +33 -3
- package/lib/module/configureLanguagesModule.d.ts.map +1 -0
- package/lib/module/configureLanguagesModule.js +18 -12
- package/lib/module/configureLanguagesModule.js.map +1 -1
- package/package.json +7 -9
- package/src/db/LanguagesCollection.ts +1 -1
- package/src/languages-index.ts +1 -1
- package/src/module/configureLanguagesModule.ts +65 -24
- package/lib/db/LanguagesSchema.d.ts +0 -2
- package/lib/db/LanguagesSchema.js +0 -8
- package/lib/db/LanguagesSchema.js.map +0 -1
- package/src/db/LanguagesSchema.ts +0 -11
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { mongodb } from '@unchainedshop/mongodb';
|
|
2
|
-
import { Language } from '@unchainedshop/
|
|
2
|
+
import { Language } from '@unchainedshop/core-languages';
|
|
3
3
|
export declare const LanguagesCollection: (db: mongodb.Db) => Promise<mongodb.Collection<Language>>;
|
|
4
|
+
//# sourceMappingURL=LanguagesCollection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LanguagesCollection.d.ts","sourceRoot":"","sources":["../../src/db/LanguagesCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD,eAAO,MAAM,mBAAmB,OAAc,OAAO,CAAC,EAAE,0CAuBvD,CAAC"}
|
package/lib/languages-index.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from './module/configureLanguagesModule.js';
|
|
2
|
+
//# sourceMappingURL=languages-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages-index.d.ts","sourceRoot":"","sources":["../src/languages-index.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAC"}
|
package/lib/languages-index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from './module/configureLanguagesModule.js';
|
|
2
2
|
//# sourceMappingURL=languages-index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages-index.js","sourceRoot":"","sources":["../src/languages-index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"languages-index.js","sourceRoot":"","sources":["../src/languages-index.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAC"}
|
|
@@ -1,8 +1,38 @@
|
|
|
1
|
-
import { ModuleInput } from '@unchainedshop/
|
|
2
|
-
import {
|
|
1
|
+
import { ModuleInput } from '@unchainedshop/core';
|
|
2
|
+
import { TimestampFields, mongodb } from '@unchainedshop/mongodb';
|
|
3
|
+
import { SortOption } from '@unchainedshop/utils';
|
|
4
|
+
export type Language = {
|
|
5
|
+
_id?: string;
|
|
6
|
+
isoCode: string;
|
|
7
|
+
isActive?: boolean;
|
|
8
|
+
} & TimestampFields;
|
|
9
|
+
export type LanguageQuery = {
|
|
10
|
+
includeInactive?: boolean;
|
|
11
|
+
queryString?: string;
|
|
12
|
+
};
|
|
3
13
|
export declare const buildFindSelector: ({ includeInactive, queryString }: LanguageQuery) => {
|
|
4
14
|
isActive?: true;
|
|
5
15
|
deleted?: Date;
|
|
6
16
|
$text?: any;
|
|
7
17
|
};
|
|
8
|
-
export declare const configureLanguagesModule: ({ db
|
|
18
|
+
export declare const configureLanguagesModule: ({ db }: ModuleInput<Record<string, never>>) => Promise<{
|
|
19
|
+
findLanguage: ({ languageId, isoCode, }: {
|
|
20
|
+
languageId?: string;
|
|
21
|
+
isoCode?: string;
|
|
22
|
+
}) => Promise<Language>;
|
|
23
|
+
findLanguages: ({ limit, offset, sort, ...query }: LanguageQuery & {
|
|
24
|
+
limit?: number;
|
|
25
|
+
offset?: number;
|
|
26
|
+
sort?: Array<SortOption>;
|
|
27
|
+
}, options?: mongodb.FindOptions) => Promise<Array<Language>>;
|
|
28
|
+
count: (query: LanguageQuery) => Promise<number>;
|
|
29
|
+
languageExists: ({ languageId }: {
|
|
30
|
+
languageId: string;
|
|
31
|
+
}) => Promise<boolean>;
|
|
32
|
+
isBase(language: Language): boolean;
|
|
33
|
+
create: (doc: Language) => Promise<string>;
|
|
34
|
+
update: (languageId: any, doc: any) => Promise<any>;
|
|
35
|
+
delete: (languageId: any) => Promise<number>;
|
|
36
|
+
}>;
|
|
37
|
+
export type LanguagesModule = Awaited<ReturnType<typeof configureLanguagesModule>>;
|
|
38
|
+
//# sourceMappingURL=configureLanguagesModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configureLanguagesModule.d.ts","sourceRoot":"","sources":["../../src/module/configureLanguagesModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAGL,eAAe,EACf,OAAO,EAER,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAiB,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIjE,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,eAAe,CAAC;AAEpB,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAIF,eAAO,MAAM,iBAAiB,qCAA8C,aAAa;eAC1D,IAAI;cAAY,IAAI;YAAU,GAAG;CAM/D,CAAC;AAEF,eAAO,MAAM,wBAAwB,WAAkB,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;6CASlF;QACD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,KAAG,OAAO,CAAC,QAAQ,CAAC;uDAUhB,aAAa,GAAG;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;KAC1B,YACS,OAAO,CAAC,WAAW,KAC5B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;mBAUN,aAAa,KAAG,OAAO,CAAC,MAAM,CAAC;qCAKb;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,OAAO,CAAC;qBAU/D,QAAQ,GAAG,OAAO;kBAIf,QAAQ;;;EAsC/B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
2
|
-
import {
|
|
3
|
-
import { SortDirection } from '@unchainedshop/
|
|
2
|
+
import { generateDbFilterById, buildSortOptions, generateDbObjectId, } from '@unchainedshop/mongodb';
|
|
3
|
+
import { SortDirection } from '@unchainedshop/utils';
|
|
4
4
|
import { systemLocale } from '@unchainedshop/utils';
|
|
5
5
|
import { LanguagesCollection } from '../db/LanguagesCollection.js';
|
|
6
|
-
import { LanguagesSchema } from '../db/LanguagesSchema.js';
|
|
7
6
|
const LANGUAGE_EVENTS = ['LANGUAGE_CREATE', 'LANGUAGE_UPDATE', 'LANGUAGE_REMOVE'];
|
|
8
7
|
export const buildFindSelector = ({ includeInactive = false, queryString }) => {
|
|
9
8
|
const selector = { deleted: null };
|
|
@@ -14,12 +13,11 @@ export const buildFindSelector = ({ includeInactive = false, queryString }) => {
|
|
|
14
13
|
}
|
|
15
14
|
return selector;
|
|
16
15
|
};
|
|
17
|
-
export const configureLanguagesModule = async ({ db
|
|
16
|
+
export const configureLanguagesModule = async ({ db }) => {
|
|
18
17
|
registerEvents(LANGUAGE_EVENTS);
|
|
19
18
|
const Languages = await LanguagesCollection(db);
|
|
20
|
-
const mutations = generateDbMutations(Languages, LanguagesSchema);
|
|
21
19
|
return {
|
|
22
|
-
findLanguage: async ({ languageId, isoCode }) => {
|
|
20
|
+
findLanguage: async ({ languageId, isoCode, }) => {
|
|
23
21
|
return Languages.findOne(languageId ? generateDbFilterById(languageId) : { isoCode }, {});
|
|
24
22
|
},
|
|
25
23
|
findLanguages: async ({ limit, offset, sort, ...query }, options) => {
|
|
@@ -46,7 +44,9 @@ export const configureLanguagesModule = async ({ db, }) => {
|
|
|
46
44
|
},
|
|
47
45
|
create: async (doc) => {
|
|
48
46
|
await Languages.deleteOne({ isoCode: doc.isoCode.toLowerCase(), deleted: { $ne: null } });
|
|
49
|
-
const languageId = await
|
|
47
|
+
const { insertedId: languageId } = await Languages.insertOne({
|
|
48
|
+
_id: generateDbObjectId(),
|
|
49
|
+
created: new Date(),
|
|
50
50
|
...doc,
|
|
51
51
|
isoCode: doc.isoCode.toLowerCase(),
|
|
52
52
|
isActive: true,
|
|
@@ -55,19 +55,25 @@ export const configureLanguagesModule = async ({ db, }) => {
|
|
|
55
55
|
return languageId;
|
|
56
56
|
},
|
|
57
57
|
update: async (languageId, doc) => {
|
|
58
|
-
await
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
await Languages.updateOne(generateDbFilterById(languageId), {
|
|
59
|
+
$set: {
|
|
60
|
+
updated: new Date(),
|
|
61
|
+
...doc,
|
|
62
|
+
isoCode: doc.isoCode.toLowerCase(),
|
|
63
|
+
},
|
|
61
64
|
});
|
|
62
65
|
await emit('LANGUAGE_UPDATE', { languageId });
|
|
63
66
|
return languageId;
|
|
64
67
|
},
|
|
65
68
|
delete: async (languageId) => {
|
|
66
|
-
const deletedCount = await
|
|
69
|
+
const { modifiedCount: deletedCount } = await Languages.updateOne(generateDbFilterById(languageId), {
|
|
70
|
+
$set: {
|
|
71
|
+
deleted: new Date(),
|
|
72
|
+
},
|
|
73
|
+
});
|
|
67
74
|
await emit('LANGUAGE_REMOVE', { languageId });
|
|
68
75
|
return deletedCount;
|
|
69
76
|
},
|
|
70
|
-
deletePermanently: mutations.deletePermanently,
|
|
71
77
|
};
|
|
72
78
|
};
|
|
73
79
|
//# sourceMappingURL=configureLanguagesModule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureLanguagesModule.js","sourceRoot":"","sources":["../../src/module/configureLanguagesModule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configureLanguagesModule.js","sourceRoot":"","sources":["../../src/module/configureLanguagesModule.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/core-languages",
|
|
3
|
-
"version": "3.0.0-
|
|
3
|
+
"version": "3.0.0-alpha3",
|
|
4
4
|
"main": "lib/languages-index.js",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./lib/languages-index.js",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"type": "module",
|
|
11
11
|
"scripts": {
|
|
12
12
|
"clean": "rm -rf lib",
|
|
13
|
-
"
|
|
13
|
+
"prepublishOnly": "npm run clean && tsc",
|
|
14
14
|
"watch": "tsc -w",
|
|
15
15
|
"test": "NODE_OPTIONS=--experimental-vm-modules jest --detectOpenHandles --forceExit",
|
|
16
16
|
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch --detectOpenHandles --forceExit"
|
|
@@ -31,15 +31,13 @@
|
|
|
31
31
|
},
|
|
32
32
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@unchainedshop/events": "^3.0.0-
|
|
35
|
-
"@unchainedshop/utils": "^3.0.0-
|
|
36
|
-
"simpl-schema": "^3.4.6"
|
|
34
|
+
"@unchainedshop/events": "^3.0.0-alpha3",
|
|
35
|
+
"@unchainedshop/utils": "^3.0.0-alpha3"
|
|
37
36
|
},
|
|
38
37
|
"devDependencies": {
|
|
39
|
-
"@types/node": "^
|
|
40
|
-
"@unchainedshop/types": "^3.0.0-alpha1",
|
|
38
|
+
"@types/node": "^22.5.5",
|
|
41
39
|
"jest": "^29.7.0",
|
|
42
|
-
"ts-jest": "^29.
|
|
43
|
-
"typescript": "^5.
|
|
40
|
+
"ts-jest": "^29.2.5",
|
|
41
|
+
"typescript": "^5.6.2"
|
|
44
42
|
}
|
|
45
43
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { mongodb, buildDbIndexes } from '@unchainedshop/mongodb';
|
|
2
|
-
import { Language } from '@unchainedshop/
|
|
2
|
+
import { Language } from '@unchainedshop/core-languages';
|
|
3
3
|
|
|
4
4
|
export const LanguagesCollection = async (db: mongodb.Db) => {
|
|
5
5
|
const Languages = db.collection<Language>('languages');
|
package/src/languages-index.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from './module/configureLanguagesModule.js';
|
|
@@ -1,11 +1,26 @@
|
|
|
1
|
-
import { ModuleInput
|
|
2
|
-
import { LanguagesModule, Language, LanguageQuery } from '@unchainedshop/types/languages.js';
|
|
1
|
+
import { ModuleInput } from '@unchainedshop/core';
|
|
3
2
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
4
|
-
import {
|
|
5
|
-
|
|
3
|
+
import {
|
|
4
|
+
generateDbFilterById,
|
|
5
|
+
buildSortOptions,
|
|
6
|
+
TimestampFields,
|
|
7
|
+
mongodb,
|
|
8
|
+
generateDbObjectId,
|
|
9
|
+
} from '@unchainedshop/mongodb';
|
|
10
|
+
import { SortDirection, SortOption } from '@unchainedshop/utils';
|
|
6
11
|
import { systemLocale } from '@unchainedshop/utils';
|
|
7
12
|
import { LanguagesCollection } from '../db/LanguagesCollection.js';
|
|
8
|
-
|
|
13
|
+
|
|
14
|
+
export type Language = {
|
|
15
|
+
_id?: string;
|
|
16
|
+
isoCode: string;
|
|
17
|
+
isActive?: boolean;
|
|
18
|
+
} & TimestampFields;
|
|
19
|
+
|
|
20
|
+
export type LanguageQuery = {
|
|
21
|
+
includeInactive?: boolean;
|
|
22
|
+
queryString?: string;
|
|
23
|
+
};
|
|
9
24
|
|
|
10
25
|
const LANGUAGE_EVENTS: string[] = ['LANGUAGE_CREATE', 'LANGUAGE_UPDATE', 'LANGUAGE_REMOVE'];
|
|
11
26
|
|
|
@@ -18,24 +33,35 @@ export const buildFindSelector = ({ includeInactive = false, queryString }: Lang
|
|
|
18
33
|
return selector;
|
|
19
34
|
};
|
|
20
35
|
|
|
21
|
-
export const configureLanguagesModule = async ({
|
|
22
|
-
db,
|
|
23
|
-
}: ModuleInput<Record<string, never>>): Promise<LanguagesModule> => {
|
|
36
|
+
export const configureLanguagesModule = async ({ db }: ModuleInput<Record<string, never>>) => {
|
|
24
37
|
registerEvents(LANGUAGE_EVENTS);
|
|
25
38
|
|
|
26
39
|
const Languages = await LanguagesCollection(db);
|
|
27
40
|
|
|
28
|
-
const mutations = generateDbMutations<Language>(
|
|
29
|
-
Languages,
|
|
30
|
-
LanguagesSchema,
|
|
31
|
-
) as ModuleMutations<Language>;
|
|
32
|
-
|
|
33
41
|
return {
|
|
34
|
-
findLanguage: async ({
|
|
42
|
+
findLanguage: async ({
|
|
43
|
+
languageId,
|
|
44
|
+
isoCode,
|
|
45
|
+
}: {
|
|
46
|
+
languageId?: string;
|
|
47
|
+
isoCode?: string;
|
|
48
|
+
}): Promise<Language> => {
|
|
35
49
|
return Languages.findOne(languageId ? generateDbFilterById(languageId) : { isoCode }, {});
|
|
36
50
|
},
|
|
37
51
|
|
|
38
|
-
findLanguages: async (
|
|
52
|
+
findLanguages: async (
|
|
53
|
+
{
|
|
54
|
+
limit,
|
|
55
|
+
offset,
|
|
56
|
+
sort,
|
|
57
|
+
...query
|
|
58
|
+
}: LanguageQuery & {
|
|
59
|
+
limit?: number;
|
|
60
|
+
offset?: number;
|
|
61
|
+
sort?: Array<SortOption>;
|
|
62
|
+
},
|
|
63
|
+
options?: mongodb.FindOptions,
|
|
64
|
+
): Promise<Array<Language>> => {
|
|
39
65
|
const defaultSort = [{ key: 'created', value: SortDirection.ASC }] as SortOption[];
|
|
40
66
|
return Languages.find(buildFindSelector(query), {
|
|
41
67
|
skip: offset,
|
|
@@ -45,12 +71,12 @@ export const configureLanguagesModule = async ({
|
|
|
45
71
|
}).toArray();
|
|
46
72
|
},
|
|
47
73
|
|
|
48
|
-
count: async (query) => {
|
|
74
|
+
count: async (query: LanguageQuery): Promise<number> => {
|
|
49
75
|
const count = await Languages.countDocuments(buildFindSelector(query));
|
|
50
76
|
return count;
|
|
51
77
|
},
|
|
52
78
|
|
|
53
|
-
languageExists: async ({ languageId }) => {
|
|
79
|
+
languageExists: async ({ languageId }: { languageId: string }): Promise<boolean> => {
|
|
54
80
|
const languageCount = await Languages.countDocuments(
|
|
55
81
|
generateDbFilterById(languageId, { deleted: null }),
|
|
56
82
|
{
|
|
@@ -60,13 +86,15 @@ export const configureLanguagesModule = async ({
|
|
|
60
86
|
return !!languageCount;
|
|
61
87
|
},
|
|
62
88
|
|
|
63
|
-
isBase(language) {
|
|
89
|
+
isBase(language: Language): boolean {
|
|
64
90
|
return language.isoCode === systemLocale.language;
|
|
65
91
|
},
|
|
66
92
|
|
|
67
93
|
create: async (doc: Language) => {
|
|
68
94
|
await Languages.deleteOne({ isoCode: doc.isoCode.toLowerCase(), deleted: { $ne: null } });
|
|
69
|
-
const languageId = await
|
|
95
|
+
const { insertedId: languageId } = await Languages.insertOne({
|
|
96
|
+
_id: generateDbObjectId(),
|
|
97
|
+
created: new Date(),
|
|
70
98
|
...doc,
|
|
71
99
|
isoCode: doc.isoCode.toLowerCase(),
|
|
72
100
|
isActive: true,
|
|
@@ -74,19 +102,32 @@ export const configureLanguagesModule = async ({
|
|
|
74
102
|
await emit('LANGUAGE_CREATE', { languageId });
|
|
75
103
|
return languageId;
|
|
76
104
|
},
|
|
105
|
+
|
|
77
106
|
update: async (languageId, doc) => {
|
|
78
|
-
await
|
|
79
|
-
|
|
80
|
-
|
|
107
|
+
await Languages.updateOne(generateDbFilterById(languageId), {
|
|
108
|
+
$set: {
|
|
109
|
+
updated: new Date(),
|
|
110
|
+
...doc,
|
|
111
|
+
isoCode: doc.isoCode.toLowerCase(),
|
|
112
|
+
},
|
|
81
113
|
});
|
|
82
114
|
await emit('LANGUAGE_UPDATE', { languageId });
|
|
83
115
|
return languageId;
|
|
84
116
|
},
|
|
117
|
+
|
|
85
118
|
delete: async (languageId) => {
|
|
86
|
-
const deletedCount = await
|
|
119
|
+
const { modifiedCount: deletedCount } = await Languages.updateOne(
|
|
120
|
+
generateDbFilterById(languageId),
|
|
121
|
+
{
|
|
122
|
+
$set: {
|
|
123
|
+
deleted: new Date(),
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
);
|
|
87
127
|
await emit('LANGUAGE_REMOVE', { languageId });
|
|
88
128
|
return deletedCount;
|
|
89
129
|
},
|
|
90
|
-
deletePermanently: mutations.deletePermanently,
|
|
91
130
|
};
|
|
92
131
|
};
|
|
132
|
+
|
|
133
|
+
export type LanguagesModule = Awaited<ReturnType<typeof configureLanguagesModule>>;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Schemas } from '@unchainedshop/utils';
|
|
2
|
-
import SimpleSchema from 'simpl-schema';
|
|
3
|
-
export const LanguagesSchema = new SimpleSchema({
|
|
4
|
-
isoCode: { type: String, required: true },
|
|
5
|
-
isActive: Boolean,
|
|
6
|
-
...Schemas.timestampFields,
|
|
7
|
-
}, { requiredByDefault: false });
|
|
8
|
-
//# sourceMappingURL=LanguagesSchema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LanguagesSchema.js","sourceRoot":"","sources":["../../src/db/LanguagesSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,YAAY,CAC7C;IACE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACzC,QAAQ,EAAE,OAAO;IACjB,GAAG,OAAO,CAAC,eAAe;CAC3B,EACD,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAC7B,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Schemas } from '@unchainedshop/utils';
|
|
2
|
-
import SimpleSchema from 'simpl-schema';
|
|
3
|
-
|
|
4
|
-
export const LanguagesSchema = new SimpleSchema(
|
|
5
|
-
{
|
|
6
|
-
isoCode: { type: String, required: true },
|
|
7
|
-
isActive: Boolean,
|
|
8
|
-
...Schemas.timestampFields,
|
|
9
|
-
},
|
|
10
|
-
{ requiredByDefault: false },
|
|
11
|
-
);
|