@rshval/back-kit 1.1.1
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 +538 -0
- package/dist/api.d.ts +17 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +51 -0
- package/dist/api.js.map +1 -0
- package/dist/audit-log.d.ts +36 -0
- package/dist/audit-log.d.ts.map +1 -0
- package/dist/audit-log.js +45 -0
- package/dist/audit-log.js.map +1 -0
- package/dist/cache-middleware.d.ts +27 -0
- package/dist/cache-middleware.d.ts.map +1 -0
- package/dist/cache-middleware.js +72 -0
- package/dist/cache-middleware.js.map +1 -0
- package/dist/cache.d.ts +24 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +76 -0
- package/dist/cache.js.map +1 -0
- package/dist/database.d.ts +24 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +90 -0
- package/dist/database.js.map +1 -0
- package/dist/email.d.ts +34 -0
- package/dist/email.d.ts.map +1 -0
- package/dist/email.js +26 -0
- package/dist/email.js.map +1 -0
- package/dist/global.d.ts +24 -0
- package/dist/global.d.ts.map +1 -0
- package/dist/global.js +20 -0
- package/dist/global.js.map +1 -0
- package/dist/helpers.d.ts +16 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +19 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +6 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +17 -0
- package/dist/logger.js.map +1 -0
- package/dist/mail-template.d.ts +41 -0
- package/dist/mail-template.d.ts.map +1 -0
- package/dist/mail-template.js +51 -0
- package/dist/mail-template.js.map +1 -0
- package/dist/paymaster.d.ts +51 -0
- package/dist/paymaster.d.ts.map +1 -0
- package/dist/paymaster.js +127 -0
- package/dist/paymaster.js.map +1 -0
- package/dist/seed.d.ts +15 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +57 -0
- package/dist/seed.js.map +1 -0
- package/dist/site-helpers.d.ts +15 -0
- package/dist/site-helpers.d.ts.map +1 -0
- package/dist/site-helpers.js +21 -0
- package/dist/site-helpers.js.map +1 -0
- package/dist/socket-client.d.ts +19 -0
- package/dist/socket-client.d.ts.map +1 -0
- package/dist/socket-client.js +66 -0
- package/dist/socket-client.js.map +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +6 -0
- package/dist/utils.js.map +1 -0
- package/dist/validation.d.ts +7 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +26 -0
- package/dist/validation.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../src/audit-log.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,cAAc,GAAG,CAAC,KAAc,EAAW,EAAE;IACjD,IAAI,KAAK,YAAY,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,KAAqC,CAAC;QAElD,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YACvC,OAAO,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,IAAa,EAAE,KAAc,EAAW,EAAE;IAChE,OAAO,CACL,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CACtC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,UAAU,EACV,SAAS,EACT,aAAa,EACb,eAAe,GAAG,EAAE,GAMrB,EAAE,EAAE;IACH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;IAE9C,OAAO,aAAa;SACjB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC3C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;SACvE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,KAAK;QACL,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KACxC,CAAC,CAAC,CAAC;AACR,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,EACnC,UAAU,EACV,QAAQ,EACR,MAAM,EACN,SAAS,EACT,OAAO,EACP,IAAI,EACJ,IAAI,GAgBL,EAAE,EAAE;IACH,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;QACV,UAAU;QACV,QAAQ;QACR,MAAM;QACN,SAAS;QACT,OAAO;QACP,IAAI;KACL,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
interface CacheLike {
|
|
2
|
+
getId: (val: object | string) => string;
|
|
3
|
+
get: (key: string) => Promise<any>;
|
|
4
|
+
set: (key: string, data: object | null, compareKey?: string, compareValue?: string, ttlMs?: number) => Promise<any>;
|
|
5
|
+
delete: (key: string) => Promise<boolean>;
|
|
6
|
+
entries?: () => IterableIterator<[string, any]>;
|
|
7
|
+
keys: () => IterableIterator<string>;
|
|
8
|
+
values?: () => IterableIterator<any>;
|
|
9
|
+
size: number;
|
|
10
|
+
}
|
|
11
|
+
interface CreateCacheMiddlewareOptions {
|
|
12
|
+
cache: CacheLike;
|
|
13
|
+
passTtlToCacheSet?: boolean;
|
|
14
|
+
includeDelByPrefix?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare const createCacheMiddleware: ({ cache, passTtlToCacheSet, includeDelByPrefix, }: CreateCacheMiddlewareOptions) => {
|
|
17
|
+
get: (id: string) => Promise<any>;
|
|
18
|
+
set: (id: string, data: any, expDataTime: number) => Promise<any>;
|
|
19
|
+
del: (id: string) => Promise<boolean>;
|
|
20
|
+
delByPrefix?: (prefix: string) => Promise<number>;
|
|
21
|
+
entries?: CacheLike["entries"];
|
|
22
|
+
keys: CacheLike["keys"];
|
|
23
|
+
values?: CacheLike["values"];
|
|
24
|
+
size: number;
|
|
25
|
+
};
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=cache-middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-middleware.d.ts","sourceRoot":"","sources":["../src/cache-middleware.ts"],"names":[],"mappings":"AAAA,UAAU,SAAS;IACjB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;IACxC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,GAAG,EAAE,CACH,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,KACX,OAAO,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,gBAAgB,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAChD,IAAI,EAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,4BAA4B;IACpC,KAAK,EAAE,SAAS,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,qBAAqB,GAAI,mDAInC,4BAA4B;cACN,MAAM;cA2BN,MAAM,QAAQ,GAAG,eAAe,MAAM;cActC,MAAM;kBAiBb,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;cACvC,SAAS,CAAC,SAAS,CAAC;UACxB,SAAS,CAAC,MAAM,CAAC;aACd,SAAS,CAAC,QAAQ,CAAC;UACtB,MAAM;CA2Bf,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export const createCacheMiddleware = ({ cache, passTtlToCacheSet = false, includeDelByPrefix = false, }) => {
|
|
2
|
+
const get = async (id) => {
|
|
3
|
+
const cacheId = cache.getId(id);
|
|
4
|
+
try {
|
|
5
|
+
let cachedData;
|
|
6
|
+
if (cacheId) {
|
|
7
|
+
cachedData = await cache.get(cacheId);
|
|
8
|
+
}
|
|
9
|
+
if (cachedData?.length) {
|
|
10
|
+
if (cachedData[0].expires?.getTime() > new Date().getTime()) {
|
|
11
|
+
return cachedData;
|
|
12
|
+
}
|
|
13
|
+
await cache.delete(cacheId);
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
console.log('error', error);
|
|
20
|
+
await cache.delete(cacheId);
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const set = async (id, data, expDataTime) => {
|
|
25
|
+
const cacheId = cache.getId(id);
|
|
26
|
+
const expiresDateTime = new Date(Date.now() + expDataTime);
|
|
27
|
+
const payload = { data, expires: expiresDateTime };
|
|
28
|
+
if (passTtlToCacheSet) {
|
|
29
|
+
await cache.set(cacheId, payload, undefined, undefined, expDataTime);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
await cache.set(cacheId, payload);
|
|
33
|
+
}
|
|
34
|
+
return cache.get(cacheId);
|
|
35
|
+
};
|
|
36
|
+
const del = async (id) => {
|
|
37
|
+
const cacheId = cache.getId(id);
|
|
38
|
+
return cache.delete(cacheId);
|
|
39
|
+
};
|
|
40
|
+
const result = {
|
|
41
|
+
get,
|
|
42
|
+
set,
|
|
43
|
+
del,
|
|
44
|
+
entries: cache.entries,
|
|
45
|
+
keys: cache.keys,
|
|
46
|
+
values: cache.values,
|
|
47
|
+
size: cache.size,
|
|
48
|
+
};
|
|
49
|
+
if (includeDelByPrefix) {
|
|
50
|
+
result.delByPrefix = async (prefix) => {
|
|
51
|
+
try {
|
|
52
|
+
const p = prefix.toLowerCase();
|
|
53
|
+
let count = 0;
|
|
54
|
+
const iterator = cache.keys();
|
|
55
|
+
for (let item = iterator.next(); !item.done; item = iterator.next()) {
|
|
56
|
+
const key = item.value;
|
|
57
|
+
if (typeof key === 'string' && key.startsWith(p)) {
|
|
58
|
+
await cache.delete(key);
|
|
59
|
+
count++;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return count;
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
console.log('delByPrefix error:', error);
|
|
66
|
+
return 0;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=cache-middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-middleware.js","sourceRoot":"","sources":["../src/cache-middleware.ts"],"names":[],"mappings":"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"}
|
package/dist/cache.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
type CacheRecord = Record<string, unknown>;
|
|
2
|
+
type CompareValue = '<';
|
|
3
|
+
interface CreateCacheServiceOptions {
|
|
4
|
+
max?: number;
|
|
5
|
+
maxSize?: number;
|
|
6
|
+
ttl?: number;
|
|
7
|
+
supportTtlInSet?: boolean;
|
|
8
|
+
exposeEntries?: boolean;
|
|
9
|
+
exposeValues?: boolean;
|
|
10
|
+
}
|
|
11
|
+
interface CacheService {
|
|
12
|
+
get: (key: string) => Promise<any>;
|
|
13
|
+
delete: (key: string) => Promise<boolean>;
|
|
14
|
+
set: (key: string, data: CacheRecord | CacheRecord[] | null, compareKey?: string, compareValue?: CompareValue, ttlMs?: number) => Promise<any>;
|
|
15
|
+
getId: (val: object | string) => string;
|
|
16
|
+
keys: () => IterableIterator<string>;
|
|
17
|
+
clear: () => void;
|
|
18
|
+
entries?: () => IterableIterator<[string, any]>;
|
|
19
|
+
values?: () => IterableIterator<any>;
|
|
20
|
+
readonly size: number;
|
|
21
|
+
}
|
|
22
|
+
export declare const createCacheService: ({ max, maxSize, ttl, supportTtlInSet, exposeEntries, exposeValues, }?: CreateCacheServiceOptions) => CacheService;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAEA,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3C,KAAK,YAAY,GAAG,GAAG,CAAC;AAExB,UAAU,yBAAyB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,YAAY;IACpB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,GAAG,EAAE,CACH,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,IAAI,EACxC,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,YAAY,EAC3B,KAAK,CAAC,EAAE,MAAM,KACX,OAAO,CAAC,GAAG,CAAC,CAAC;IAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;IACxC,IAAI,EAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACrC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,gBAAgB,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,EAAE,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,GAAI,uEAOhC,yBAA8B,KAAG,YA2FnC,CAAC"}
|
package/dist/cache.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { LRUCache } from 'lru-cache';
|
|
2
|
+
export const createCacheService = ({ max = 500 * 15, maxSize = 5000 * 15, ttl = 1000 * 60 * 60 * 24 * 7, supportTtlInSet = false, exposeEntries = false, exposeValues = false, } = {}) => {
|
|
3
|
+
const lruCache = new LRUCache({
|
|
4
|
+
max,
|
|
5
|
+
maxSize,
|
|
6
|
+
sizeCalculation: () => 1,
|
|
7
|
+
ttl,
|
|
8
|
+
allowStale: false,
|
|
9
|
+
updateAgeOnGet: false,
|
|
10
|
+
updateAgeOnHas: false,
|
|
11
|
+
});
|
|
12
|
+
const cache = {
|
|
13
|
+
get: async (key) => {
|
|
14
|
+
return lruCache.get(key);
|
|
15
|
+
},
|
|
16
|
+
delete: async (key) => {
|
|
17
|
+
return lruCache.delete(key);
|
|
18
|
+
},
|
|
19
|
+
set: async (key, data, compareKey, compareValue, ttlMs) => {
|
|
20
|
+
let cacheData = lruCache.get(key) || [];
|
|
21
|
+
let incorrectObj = false;
|
|
22
|
+
const ttlOptions = supportTtlInSet && ttlMs && ttlMs > 0 ? { ttl: ttlMs } : undefined;
|
|
23
|
+
if (data === null) {
|
|
24
|
+
lruCache.set(key, data, ttlOptions);
|
|
25
|
+
return lruCache.get(key);
|
|
26
|
+
}
|
|
27
|
+
if (Array.isArray(data)) {
|
|
28
|
+
cacheData = [...data];
|
|
29
|
+
}
|
|
30
|
+
else if (typeof data === 'object') {
|
|
31
|
+
let dataIsCached = false;
|
|
32
|
+
cacheData.forEach((element, index) => {
|
|
33
|
+
if (element.s === data.s) {
|
|
34
|
+
if (compareKey && compareValue === '<') {
|
|
35
|
+
incorrectObj =
|
|
36
|
+
element[compareKey] < data[compareKey];
|
|
37
|
+
}
|
|
38
|
+
cacheData[index] = data;
|
|
39
|
+
dataIsCached = true;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
if (!dataIsCached) {
|
|
43
|
+
cacheData = [...cacheData, data];
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (!incorrectObj && cacheData) {
|
|
47
|
+
lruCache.set(key, cacheData, ttlOptions);
|
|
48
|
+
}
|
|
49
|
+
return lruCache.get(key);
|
|
50
|
+
},
|
|
51
|
+
getId: (val) => {
|
|
52
|
+
if (typeof val === 'object') {
|
|
53
|
+
return Object.entries(val)
|
|
54
|
+
.map(([cacheKey, value]) => {
|
|
55
|
+
return cacheKey + '_' + value + ';';
|
|
56
|
+
})
|
|
57
|
+
.join('')
|
|
58
|
+
.toLowerCase();
|
|
59
|
+
}
|
|
60
|
+
return val.toLowerCase();
|
|
61
|
+
},
|
|
62
|
+
keys: () => lruCache.keys(),
|
|
63
|
+
clear: () => lruCache.clear(),
|
|
64
|
+
get size() {
|
|
65
|
+
return lruCache.size;
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
if (exposeEntries) {
|
|
69
|
+
cache.entries = () => lruCache.entries();
|
|
70
|
+
}
|
|
71
|
+
if (exposeValues) {
|
|
72
|
+
cache.values = () => lruCache.values();
|
|
73
|
+
}
|
|
74
|
+
return cache;
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import mongoose from 'mongoose';
|
|
2
|
+
type CacheStatus = 'error' | 'connected';
|
|
3
|
+
interface LoggerLike {
|
|
4
|
+
debug: (...args: unknown[]) => void;
|
|
5
|
+
error: (...args: unknown[]) => void;
|
|
6
|
+
warn?: (...args: unknown[]) => void;
|
|
7
|
+
}
|
|
8
|
+
interface DatabaseConfig {
|
|
9
|
+
name: string;
|
|
10
|
+
connect?: string;
|
|
11
|
+
params?: mongoose.ConnectOptions;
|
|
12
|
+
platform?: string;
|
|
13
|
+
}
|
|
14
|
+
interface StartMongoDatabaseOptions {
|
|
15
|
+
config: DatabaseConfig;
|
|
16
|
+
logger: LoggerLike;
|
|
17
|
+
setCacheStatus?: (status: CacheStatus) => void | Promise<void>;
|
|
18
|
+
retryDelayMs?: number;
|
|
19
|
+
startupDelayMs?: number;
|
|
20
|
+
connectionLabel?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare const startMongoDatabase: ({ config, logger, setCacheStatus, retryDelayMs, startupDelayMs, connectionLabel, }: StartMongoDatabaseOptions) => Promise<void>;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,KAAK,WAAW,GAAG,OAAO,GAAG,WAAW,CAAC;AAEzC,UAAU,UAAU;IAClB,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,yBAAyB;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA4BD,eAAO,MAAM,kBAAkB,GAAU,oFAOtC,yBAAyB,kBAiG3B,CAAC"}
|
package/dist/database.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import delay from 'delay';
|
|
3
|
+
import mongoose from 'mongoose';
|
|
4
|
+
import ora, {} from 'ora';
|
|
5
|
+
let isStarted = false;
|
|
6
|
+
const buildConnectionSuffix = (config, connectionLabel) => {
|
|
7
|
+
if (connectionLabel) {
|
|
8
|
+
return ` [database ${connectionLabel}]`;
|
|
9
|
+
}
|
|
10
|
+
if (config.platform) {
|
|
11
|
+
return ` [database ${config.platform}]`;
|
|
12
|
+
}
|
|
13
|
+
return ' [database]';
|
|
14
|
+
};
|
|
15
|
+
const createLogMessage = (suffix, message) => `[${new Date().toISOString()}]${suffix} ${message}`;
|
|
16
|
+
const createSpinnerMessage = (config, suffix, message) => `${config.name}${suffix} ${message}`;
|
|
17
|
+
export const startMongoDatabase = async ({ config, logger, setCacheStatus, retryDelayMs = 1000, startupDelayMs = 100, connectionLabel, }) => {
|
|
18
|
+
const connectString = config.connect?.trim();
|
|
19
|
+
if (!connectString) {
|
|
20
|
+
throw new Error('Database connection string is not configured');
|
|
21
|
+
}
|
|
22
|
+
if (isStarted) {
|
|
23
|
+
logger.warn?.(`[${new Date().toISOString()}] [database] already started, skip duplicate init`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
isStarted = true;
|
|
27
|
+
await delay(startupDelayMs);
|
|
28
|
+
let spinnerVisible = false;
|
|
29
|
+
let spinner;
|
|
30
|
+
const suffix = buildConnectionSuffix(config, connectionLabel);
|
|
31
|
+
const log = {
|
|
32
|
+
debug: (message) => logger.debug(createLogMessage(suffix, message)),
|
|
33
|
+
error: (message, err) => logger.error(createLogMessage(suffix, `${message}:`), err),
|
|
34
|
+
};
|
|
35
|
+
const updateSpinner = (color, message, method = 'succeed') => {
|
|
36
|
+
const spinnerMessage = createSpinnerMessage(config, suffix, message);
|
|
37
|
+
spinner.start(chalk[color](spinnerMessage));
|
|
38
|
+
if (method === 'succeed') {
|
|
39
|
+
spinner.succeed();
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (method === 'fail') {
|
|
43
|
+
spinner.fail();
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
mongoose.Promise = global.Promise;
|
|
48
|
+
mongoose.set('strictQuery', false);
|
|
49
|
+
const connectDb = () => {
|
|
50
|
+
spinner = ora(chalk.gray(`Connect to database ${config.name}`)).start();
|
|
51
|
+
mongoose.connect(connectString, config.params).catch((err) => {
|
|
52
|
+
log.error('connection error', err);
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
const db = mongoose.connection;
|
|
56
|
+
db.removeAllListeners('error');
|
|
57
|
+
db.removeAllListeners('connected');
|
|
58
|
+
db.removeAllListeners('open');
|
|
59
|
+
db.removeAllListeners('reconnected');
|
|
60
|
+
connectDb();
|
|
61
|
+
db.on('error', async (err) => {
|
|
62
|
+
updateSpinner('red', 'connection error', 'fail');
|
|
63
|
+
log.error('connection error', err);
|
|
64
|
+
await setCacheStatus?.('error');
|
|
65
|
+
await delay(retryDelayMs);
|
|
66
|
+
connectDb();
|
|
67
|
+
});
|
|
68
|
+
db.on('connected', async () => {
|
|
69
|
+
await delay(startupDelayMs);
|
|
70
|
+
await setCacheStatus?.('connected');
|
|
71
|
+
log.debug('connected');
|
|
72
|
+
spinnerVisible = false;
|
|
73
|
+
updateSpinner('cyan', 'connected');
|
|
74
|
+
});
|
|
75
|
+
db.once('open', async () => {
|
|
76
|
+
await delay(startupDelayMs);
|
|
77
|
+
spinnerVisible = false;
|
|
78
|
+
updateSpinner('green', 'connection opened');
|
|
79
|
+
log.debug('connection opened');
|
|
80
|
+
});
|
|
81
|
+
db.on('reconnected', async () => {
|
|
82
|
+
log.debug('reconnected');
|
|
83
|
+
if (!spinnerVisible) {
|
|
84
|
+
spinnerVisible = true;
|
|
85
|
+
await delay(startupDelayMs);
|
|
86
|
+
updateSpinner('cyan', 'reconnected');
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
package/dist/email.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface MailOptionsBody {
|
|
2
|
+
subject: {
|
|
3
|
+
title: string;
|
|
4
|
+
};
|
|
5
|
+
name: string;
|
|
6
|
+
email: string;
|
|
7
|
+
comment: string;
|
|
8
|
+
mail: string;
|
|
9
|
+
}
|
|
10
|
+
interface NodemailerConfig {
|
|
11
|
+
auth: {
|
|
12
|
+
user: string;
|
|
13
|
+
};
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
}
|
|
16
|
+
export declare function createMailOptions({ from, to, subject, text, }: {
|
|
17
|
+
from: string;
|
|
18
|
+
to: MailOptionsBody | string;
|
|
19
|
+
subject: string;
|
|
20
|
+
text: string;
|
|
21
|
+
}): {
|
|
22
|
+
from: string;
|
|
23
|
+
to: string | MailOptionsBody;
|
|
24
|
+
subject: string;
|
|
25
|
+
html: string;
|
|
26
|
+
};
|
|
27
|
+
export declare const sendEmailWithConfig: ({ nodemailerConfig, to, subject, text, }: {
|
|
28
|
+
nodemailerConfig: NodemailerConfig;
|
|
29
|
+
to: MailOptionsBody | string;
|
|
30
|
+
subject: string;
|
|
31
|
+
text: string;
|
|
32
|
+
}) => Promise<string>;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=email.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../src/email.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,EAAE,EACF,OAAO,EACP,IAAI,GACL,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,eAAe,GAAG,MAAM,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;;;;;EAaA;AAED,eAAO,MAAM,mBAAmB,GAAU,0CAKvC;IACD,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,EAAE,EAAE,eAAe,GAAG,MAAM,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,oBAWA,CAAC"}
|
package/dist/email.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import nodemailer from 'nodemailer';
|
|
2
|
+
export function createMailOptions({ from, to, subject, text, }) {
|
|
3
|
+
const body = typeof to === 'object' ? to : null;
|
|
4
|
+
return {
|
|
5
|
+
from,
|
|
6
|
+
to,
|
|
7
|
+
subject: body
|
|
8
|
+
? `${body.subject.title}: ${body.name}, ${body.mail}`
|
|
9
|
+
: subject,
|
|
10
|
+
html: body
|
|
11
|
+
? `Отправитель: ${body.name}, ${body.mail}<br/>${body.comment}`
|
|
12
|
+
: text,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export const sendEmailWithConfig = async ({ nodemailerConfig, to, subject, text, }) => {
|
|
16
|
+
const transporter = await nodemailer.createTransport(nodemailerConfig);
|
|
17
|
+
const mailOptions = createMailOptions({
|
|
18
|
+
from: nodemailerConfig.auth.user,
|
|
19
|
+
to,
|
|
20
|
+
subject,
|
|
21
|
+
text,
|
|
22
|
+
});
|
|
23
|
+
const info = await transporter.sendMail(mailOptions);
|
|
24
|
+
return `Email sent: ${info.response}`;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../src/email.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAiBpC,MAAM,UAAU,iBAAiB,CAAC,EAChC,IAAI,EACJ,EAAE,EACF,OAAO,EACP,IAAI,GAML;IACC,MAAM,IAAI,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAEhD,OAAO;QACL,IAAI;QACJ,EAAE;QACF,OAAO,EAAE,IAAI;YACX,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;YACrD,CAAC,CAAC,OAAO;QACX,IAAI,EAAE,IAAI;YACR,CAAC,CAAC,gBAAgB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE;YAC/D,CAAC,CAAC,IAAI;KACT,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,EACxC,gBAAgB,EAChB,EAAE,EACF,OAAO,EACP,IAAI,GAML,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,iBAAiB,CAAC;QACpC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI;QAChC,EAAE;QACF,OAAO;QACP,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrD,OAAO,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxC,CAAC,CAAC"}
|
package/dist/global.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import jwt from 'jsonwebtoken';
|
|
2
|
+
interface ServerConfig {
|
|
3
|
+
domain: string;
|
|
4
|
+
port?: string | number;
|
|
5
|
+
}
|
|
6
|
+
interface JwtConfig {
|
|
7
|
+
JWT_KEY?: string;
|
|
8
|
+
JWT_KEY_NO_ENV?: string;
|
|
9
|
+
}
|
|
10
|
+
interface AppConfig {
|
|
11
|
+
NODE_ENV?: string;
|
|
12
|
+
server: ServerConfig;
|
|
13
|
+
jwt: JwtConfig;
|
|
14
|
+
}
|
|
15
|
+
export declare const getBaseUrlByConfig: (config: AppConfig, baseUrl?: string) => string;
|
|
16
|
+
export declare const createTokenByConfig: ({ config, user, expiresIn, }: {
|
|
17
|
+
config: AppConfig;
|
|
18
|
+
user: {
|
|
19
|
+
_id: string;
|
|
20
|
+
};
|
|
21
|
+
expiresIn: jwt.SignOptions["expiresIn"];
|
|
22
|
+
}) => string;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=global.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,cAAc,CAAC;AAE/B,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED,UAAU,SAAS;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,SAAS;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,SAAS,CAAC;CAChB;AAED,eAAO,MAAM,kBAAkB,GAAI,QAAQ,SAAS,EAAE,UAAU,MAAM,WAWrE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,8BAIjC;IACD,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACtB,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;CACzC,WAUA,CAAC"}
|
package/dist/global.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import jwt from 'jsonwebtoken';
|
|
2
|
+
export const getBaseUrlByConfig = (config, baseUrl) => {
|
|
3
|
+
let url = '//' +
|
|
4
|
+
config.server.domain +
|
|
5
|
+
(config.NODE_ENV === 'development' ? ':' + config.server.port : '');
|
|
6
|
+
if (baseUrl) {
|
|
7
|
+
url = url + baseUrl;
|
|
8
|
+
}
|
|
9
|
+
return url;
|
|
10
|
+
};
|
|
11
|
+
export const createTokenByConfig = ({ config, user, expiresIn, }) => {
|
|
12
|
+
const jwtKey = config.jwt.JWT_KEY || config.jwt.JWT_KEY_NO_ENV;
|
|
13
|
+
if (!jwtKey) {
|
|
14
|
+
throw new Error('JWT key not configured');
|
|
15
|
+
}
|
|
16
|
+
return jwt.sign(user, jwtKey, {
|
|
17
|
+
expiresIn,
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=global.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.js","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,cAAc,CAAC;AAkB/B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAiB,EAAE,OAAgB,EAAE,EAAE;IACxE,IAAI,GAAG,GACL,IAAI;QACJ,MAAM,CAAC,MAAM,CAAC,MAAM;QACpB,CAAC,MAAM,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEtE,IAAI,OAAO,EAAE,CAAC;QACZ,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC;IACtB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,MAAM,EACN,IAAI,EACJ,SAAS,GAKV,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;IAE/D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;QAC5B,SAAS;KACV,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const createPinCode: (min?: number, max?: number) => number;
|
|
2
|
+
export declare const getIp: (req: {
|
|
3
|
+
ip?: string;
|
|
4
|
+
connection?: {
|
|
5
|
+
remoteAddress?: string;
|
|
6
|
+
socket?: {
|
|
7
|
+
remoteAddress?: string;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
socket?: {
|
|
11
|
+
remoteAddress?: string;
|
|
12
|
+
};
|
|
13
|
+
headers?: Record<string, string | string[] | undefined>;
|
|
14
|
+
}) => Promise<string | string[] | undefined>;
|
|
15
|
+
export declare const translitUrl: (str: string | null | undefined) => string;
|
|
16
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,GAAI,YAAW,EAAE,YAAW,WAErD,CAAC;AAEF,eAAO,MAAM,KAAK,GAAU,KAAK;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE;YAAE,aAAa,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAC7E,MAAM,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;CACzD,2CAQA,CAAC;AAIF,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,WAMzD,CAAC"}
|
package/dist/helpers.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import CyrillicToTranslit from 'cyrillic-to-translit-js';
|
|
2
|
+
export const createPinCode = (min = 10000, max = 99990) => {
|
|
3
|
+
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
4
|
+
};
|
|
5
|
+
export const getIp = async (req) => {
|
|
6
|
+
return (req.ip ||
|
|
7
|
+
req.connection?.remoteAddress ||
|
|
8
|
+
req.socket?.remoteAddress ||
|
|
9
|
+
req.connection?.socket?.remoteAddress ||
|
|
10
|
+
req.headers?.['x-forwarded-for']);
|
|
11
|
+
};
|
|
12
|
+
const cyrillicToTranslit = CyrillicToTranslit();
|
|
13
|
+
export const translitUrl = (str) => {
|
|
14
|
+
if (str) {
|
|
15
|
+
return cyrillicToTranslit.transform(str, '-').toLowerCase();
|
|
16
|
+
}
|
|
17
|
+
return 'str';
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,EAAE,EAAE;IACxD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,GAK3B,EAAE,EAAE;IACH,OAAO,CACL,GAAG,CAAC,EAAE;QACN,GAAG,CAAC,UAAU,EAAE,aAAa;QAC7B,GAAG,CAAC,MAAM,EAAE,aAAa;QACzB,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa;QACrC,GAAG,CAAC,OAAO,EAAE,CAAC,iBAAiB,CAAC,CACjC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,kBAAkB,EAAE,CAAC;AAEhD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAA8B,EAAE,EAAE;IAC5D,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,kBAAkB,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9D,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export { createMailOptions, sendEmailWithConfig } from './email.js';
|
|
2
|
+
export type { MailOptionsBody } from './email.js';
|
|
3
|
+
export { createTokenByConfig, getBaseUrlByConfig } from './global.js';
|
|
4
|
+
export { createPinCode, getIp, translitUrl } from './helpers.js';
|
|
5
|
+
export { isEmpty, isValidCode, isValidEmail, isValidPhoneNumber, patternEmail, patternPassword, } from './validation.js';
|
|
6
|
+
export { add, test2 } from './utils.js';
|
|
7
|
+
export { buildCreateToken, buildGetBaseUrl, buildSendEmail, } from './site-helpers.js';
|
|
8
|
+
export { startMongoDatabase } from './database.js';
|
|
9
|
+
export { createCacheService } from './cache.js';
|
|
10
|
+
export { createCacheMiddleware } from './cache-middleware.js';
|
|
11
|
+
export { createLoggerService } from './logger.js';
|
|
12
|
+
export { createSocketClientService } from './socket-client.js';
|
|
13
|
+
export { createPaymasterService } from './paymaster.js';
|
|
14
|
+
export { createMailTemplateService } from './mail-template.js';
|
|
15
|
+
export { buildAuditChanges, createAuditLog } from './audit-log.js';
|
|
16
|
+
export { createSeedFunctions } from './seed.js';
|
|
17
|
+
export { createApiService } from './api.js';
|
|
18
|
+
export type { Token } from './api.js';
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACpE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EACL,OAAO,EACP,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { createMailOptions, sendEmailWithConfig } from './email.js';
|
|
2
|
+
export { createTokenByConfig, getBaseUrlByConfig } from './global.js';
|
|
3
|
+
export { createPinCode, getIp, translitUrl } from './helpers.js';
|
|
4
|
+
export { isEmpty, isValidCode, isValidEmail, isValidPhoneNumber, patternEmail, patternPassword, } from './validation.js';
|
|
5
|
+
export { add, test2 } from './utils.js';
|
|
6
|
+
export { buildCreateToken, buildGetBaseUrl, buildSendEmail, } from './site-helpers.js';
|
|
7
|
+
export { startMongoDatabase } from './database.js';
|
|
8
|
+
export { createCacheService } from './cache.js';
|
|
9
|
+
export { createCacheMiddleware } from './cache-middleware.js';
|
|
10
|
+
export { createLoggerService } from './logger.js';
|
|
11
|
+
export { createSocketClientService } from './socket-client.js';
|
|
12
|
+
export { createPaymasterService } from './paymaster.js';
|
|
13
|
+
export { createMailTemplateService } from './mail-template.js';
|
|
14
|
+
export { buildAuditChanges, createAuditLog } from './audit-log.js';
|
|
15
|
+
export { createSeedFunctions } from './seed.js';
|
|
16
|
+
export { createApiService } from './api.js';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEpE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EACL,OAAO,EACP,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAIA,UAAU,0BAA0B;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAOD,eAAO,MAAM,mBAAmB,GAAI,eAEjC,0BAA+B,MACxB,KAAK,MAAM,mCAUpB,CAAC"}
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Console } from 'console';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
const getRootdir = () => {
|
|
5
|
+
const entrypoint = process.argv[1] || process.cwd();
|
|
6
|
+
return path.dirname(entrypoint).replace('src', '');
|
|
7
|
+
};
|
|
8
|
+
export const createLoggerService = ({ rootdir = getRootdir(), } = {}) => {
|
|
9
|
+
return (std) => {
|
|
10
|
+
const logsDir = path.join(rootdir, 'logs', std);
|
|
11
|
+
fs.mkdirSync(logsDir, { recursive: true });
|
|
12
|
+
const output = fs.createWriteStream(path.join(logsDir, 'stdout.log'));
|
|
13
|
+
const errorOutput = fs.createWriteStream(path.join(logsDir, 'stderr.log'));
|
|
14
|
+
return new Console({ stdout: output, stderr: errorOutput });
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAMxB,MAAM,UAAU,GAAG,GAAG,EAAE;IACtB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACpD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,OAAO,GAAG,UAAU,EAAE,MACQ,EAAE,EAAE,EAAE;IACpC,OAAO,CAAC,GAAW,EAAE,EAAE;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAEhD,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3C,MAAM,MAAM,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QACtE,MAAM,WAAW,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QAE3E,OAAO,IAAI,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC;AACJ,CAAC,CAAC"}
|