@digione/node-custom-api 0.2.0-beta2 → 0.2.0-beta4
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/package.json +1 -1
- package/utils/helper.d.ts +6 -1
- package/utils/helper.js +20 -2
- package/utils/stream.js +60 -7
package/package.json
CHANGED
package/utils/helper.d.ts
CHANGED
|
@@ -27,7 +27,12 @@ export declare const getValueFunctionFile: (key: any) => (value: any, { result,
|
|
|
27
27
|
json?: {};
|
|
28
28
|
fileUtil?: any;
|
|
29
29
|
}) => Promise<void>;
|
|
30
|
-
export declare const
|
|
30
|
+
export declare const getValueFunctionArray: (key: any) => (value: any, { result }: {
|
|
31
|
+
result?: {};
|
|
32
|
+
}) => void;
|
|
33
|
+
export declare const getValueFunctionLang: (key: any, { field_type }?: {
|
|
34
|
+
field_type?: string;
|
|
35
|
+
}) => (value?: {}, { result, transform, spread, spread_all, raw, lang_code }?: {
|
|
31
36
|
result?: {};
|
|
32
37
|
transform?: boolean;
|
|
33
38
|
spread?: boolean;
|
package/utils/helper.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.convertCurrency = exports.xorMerge = exports.xorDecode = exports.xorEncode = exports.getInstanceNumber = exports.getDomain = exports.getParent = exports.replaceColon = exports.stripEmoji = exports.stripHtml = exports.slugifyField = exports.slugify = exports.convertToBigEndian = exports.expandTree = exports.buildTree = exports.treeToArray = exports.randomRef = exports.multiExecArray = exports.isBase64 = exports.isNumber = exports.removeAt = exports.removeSpace = exports.formatMobileNumber = exports.getMobileNumber = exports.removeHyphen = exports.signToken = exports.getTokenDataFromTokenBySecret = exports.getUUID32 = exports.getUUID = exports.sleep = exports.getValueByLang = exports.getValueFunctionLang = exports.getValueFunctionFile = exports.getDateTime = exports.getTimestampMysql = exports.getDateMysql = exports.getSlug = exports.getENVIndex = exports.getENV = exports.Joi_date = exports.getDaysBetweenDates = exports.getDateFromString = exports.getDateRangeFormat = void 0;
|
|
3
|
+
exports.convertCurrency = exports.xorMerge = exports.xorDecode = exports.xorEncode = exports.getInstanceNumber = exports.getDomain = exports.getParent = exports.replaceColon = exports.stripEmoji = exports.stripHtml = exports.slugifyField = exports.slugify = exports.convertToBigEndian = exports.expandTree = exports.buildTree = exports.treeToArray = exports.randomRef = exports.multiExecArray = exports.isBase64 = exports.isNumber = exports.removeAt = exports.removeSpace = exports.formatMobileNumber = exports.getMobileNumber = exports.removeHyphen = exports.signToken = exports.getTokenDataFromTokenBySecret = exports.getUUID32 = exports.getUUID = exports.sleep = exports.getValueByLang = exports.getValueFunctionLang = exports.getValueFunctionArray = exports.getValueFunctionFile = exports.getDateTime = exports.getTimestampMysql = exports.getDateMysql = exports.getSlug = exports.getENVIndex = exports.getENV = exports.Joi_date = exports.getDaysBetweenDates = exports.getDateFromString = exports.getDateRangeFormat = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const crypto = require("crypto");
|
|
6
6
|
const dotenv = require("dotenv");
|
|
@@ -101,7 +101,22 @@ const getValueFunctionFile = (key) => {
|
|
|
101
101
|
});
|
|
102
102
|
};
|
|
103
103
|
exports.getValueFunctionFile = getValueFunctionFile;
|
|
104
|
-
const
|
|
104
|
+
const getValueFunctionArray = (key) => {
|
|
105
|
+
return (value, { result = {} }) => {
|
|
106
|
+
if (value[key]) {
|
|
107
|
+
try {
|
|
108
|
+
result[key] = JSON.parse(value[key]);
|
|
109
|
+
}
|
|
110
|
+
catch (err) { }
|
|
111
|
+
;
|
|
112
|
+
}
|
|
113
|
+
if (!(result[key] instanceof Array)) {
|
|
114
|
+
result[key] = [];
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
exports.getValueFunctionArray = getValueFunctionArray;
|
|
119
|
+
const getValueFunctionLang = (key, { field_type = "" } = {}) => {
|
|
105
120
|
return (value = {}, { result = {}, transform = true, spread = false, spread_all = false, raw = false, lang_code = "" } = {}) => {
|
|
106
121
|
if (raw || typeof value[key] == "undefined")
|
|
107
122
|
return;
|
|
@@ -125,6 +140,9 @@ const getValueFunctionLang = (key) => {
|
|
|
125
140
|
return;
|
|
126
141
|
}
|
|
127
142
|
result[key] = bol ? (obj[lang_code] || obj['en']) : value[key];
|
|
143
|
+
if (field_type == "stream") {
|
|
144
|
+
(0, exports.getValueFunctionArray)(key)({ [key]: result[key] }, { result });
|
|
145
|
+
}
|
|
128
146
|
};
|
|
129
147
|
};
|
|
130
148
|
exports.getValueFunctionLang = getValueFunctionLang;
|
package/utils/stream.js
CHANGED
|
@@ -255,7 +255,7 @@ class StreamUtil {
|
|
|
255
255
|
delete attributes[field['field_slug']];
|
|
256
256
|
}
|
|
257
257
|
if (fetch) {
|
|
258
|
-
if (field['is_lang'] == "yes") {
|
|
258
|
+
if (field['is_lang'] == "yes" && field['field_type'] != "stream") {
|
|
259
259
|
label && fetchLabel.push(field);
|
|
260
260
|
fetchFn.push((0, helper_2.getValueFunctionLang)(field['field_slug']));
|
|
261
261
|
}
|
|
@@ -286,6 +286,15 @@ class StreamUtil {
|
|
|
286
286
|
}
|
|
287
287
|
}
|
|
288
288
|
break;
|
|
289
|
+
case "stream":
|
|
290
|
+
if (include[field['field_slug']] || include_all) {
|
|
291
|
+
label && fetchLabel.push(field);
|
|
292
|
+
fetchFn.push((field['is_lang'] == "yes") ? (0, helper_2.getValueFunctionLang)(field['field_slug'], { field_type: field['field_type'] }) : (0, helper_2.getValueFunctionArray)(field['field_slug']));
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
delete attributes[field['field_slug']];
|
|
296
|
+
}
|
|
297
|
+
break;
|
|
289
298
|
}
|
|
290
299
|
}
|
|
291
300
|
}
|
|
@@ -404,6 +413,15 @@ class StreamUtil {
|
|
|
404
413
|
else if (typeof default_value[item['field_slug']] !== 'undefined') {
|
|
405
414
|
item['field_value'] = default_value[item['field_slug']];
|
|
406
415
|
}
|
|
416
|
+
if (item['field_type'] == "stream" && item['field_value']) {
|
|
417
|
+
try {
|
|
418
|
+
item['field_value'] = JSON.parse(item['field_value']);
|
|
419
|
+
}
|
|
420
|
+
catch (err) { }
|
|
421
|
+
if (!(item['field_value'] instanceof Array)) {
|
|
422
|
+
item['field_value'] = [];
|
|
423
|
+
}
|
|
424
|
+
}
|
|
407
425
|
if (item['instructions']) {
|
|
408
426
|
(0, helper_2.getValueFunctionLang)('instructions')(item, { result: item, lang_code });
|
|
409
427
|
}
|
|
@@ -468,8 +486,10 @@ class StreamUtil {
|
|
|
468
486
|
}
|
|
469
487
|
return Object.assign({ field_slug: i['lang_code'], field_name: `${convert_option ? (0, i18n_1.__)({ phrase: item['field_name'], locale: lang_code }) : item['field_name']} (${i['lang_code']})`, field_type: item['field_type'], field_name_raw: item['field_name'] ? item['field_name'] : "", is_required: item['is_required'] }, include);
|
|
470
488
|
});
|
|
471
|
-
|
|
472
|
-
|
|
489
|
+
if (item['field_type'] != "stream") {
|
|
490
|
+
fields.push(Object.assign(Object.assign({}, item), { field_data }));
|
|
491
|
+
continue;
|
|
492
|
+
}
|
|
473
493
|
}
|
|
474
494
|
if (convert_option) {
|
|
475
495
|
let obj_value = {};
|
|
@@ -661,6 +681,14 @@ class StreamUtil {
|
|
|
661
681
|
field_data['range']['field_value'] = default_value[field_data['range']['field_target']];
|
|
662
682
|
}
|
|
663
683
|
}
|
|
684
|
+
else if (item['field_type'] == "stream") {
|
|
685
|
+
if (field_data['choose_stream']) {
|
|
686
|
+
let stream = yield stream_1.StreamModel.schema(this.ref, "_").findOne({ where: { id: field_data['choose_stream'] }, raw: true, attributes: ['stream_slug', 'stream_namespace'] });
|
|
687
|
+
if (stream) {
|
|
688
|
+
item['stream'] = yield this.findField(stream['stream_slug'], stream['stream_namespace'], { field_only: true, convert_option: true });
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
}
|
|
664
692
|
}
|
|
665
693
|
fields.push(Object.assign(Object.assign({}, item), { field_data }));
|
|
666
694
|
}
|
|
@@ -813,7 +841,7 @@ class StreamUtil {
|
|
|
813
841
|
stream = stream || {};
|
|
814
842
|
let id_stream = stream['id'], stream_prefix = stream['stream_prefix'];
|
|
815
843
|
if (fields && fields.length) {
|
|
816
|
-
fields = fields.filter(({ is_lang, field_type, field_data }) => field_type && (is_lang == "yes" || (field_type == "multiple" && field_data['self_table'] != "yes") || field_type == "image" || field_type == "file" || field_data['field_type'] == "encrypt"));
|
|
844
|
+
fields = fields.filter(({ is_lang, field_type, field_data }) => field_type && (is_lang == "yes" || (field_type == "multiple" && field_data['self_table'] != "yes") || field_type == "image" || field_type == "file" || field_data['field_type'] == "encrypt" || field_type == "stream"));
|
|
817
845
|
}
|
|
818
846
|
if (!Object.keys(raw_input).length) {
|
|
819
847
|
raw_input = input;
|
|
@@ -893,6 +921,9 @@ class StreamUtil {
|
|
|
893
921
|
else if (field_type == "multiple") {
|
|
894
922
|
fields_post.push(fields[index]);
|
|
895
923
|
}
|
|
924
|
+
else if (field_type == "stream" && input[field_slug]) {
|
|
925
|
+
data[field_slug] = JSON.stringify(input[field_slug]);
|
|
926
|
+
}
|
|
896
927
|
})));
|
|
897
928
|
}
|
|
898
929
|
if (id) {
|
|
@@ -1666,6 +1697,12 @@ class StreamUtil {
|
|
|
1666
1697
|
yield (0, db_1.addColumn)(`${this.ref}_${table}`, field_slug, Object.assign({ type: sequelize.STRING(20) }, opt));
|
|
1667
1698
|
}
|
|
1668
1699
|
break;
|
|
1700
|
+
case "stream":
|
|
1701
|
+
if (field_data['self_table'] == "yes") {
|
|
1702
|
+
opt['defaultValue'] = undefined;
|
|
1703
|
+
yield (0, db_1.addColumn)(`${this.ref}_${table}`, field_slug, Object.assign({ type: sequelize.TEXT('long') }, opt));
|
|
1704
|
+
}
|
|
1705
|
+
break;
|
|
1669
1706
|
}
|
|
1670
1707
|
}
|
|
1671
1708
|
}
|
|
@@ -1826,6 +1863,9 @@ class StreamUtil {
|
|
|
1826
1863
|
}
|
|
1827
1864
|
field_data = _.pick(field_data, ['range']);
|
|
1828
1865
|
break;
|
|
1866
|
+
case "stream":
|
|
1867
|
+
field_data = _.pick(field_data, ['choose_stream', 'self_table']);
|
|
1868
|
+
break;
|
|
1829
1869
|
default:
|
|
1830
1870
|
field_data = {};
|
|
1831
1871
|
break;
|
|
@@ -1836,7 +1876,8 @@ class StreamUtil {
|
|
|
1836
1876
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
1837
1877
|
let field_lang = [];
|
|
1838
1878
|
let file = req ? ((req.file ? [req.file] : [].concat(req.files || [])).reduce((total, item) => Object.assign(total, { [item['fieldname']]: item }), {})) : {};
|
|
1839
|
-
|
|
1879
|
+
for (let val of streams) {
|
|
1880
|
+
let { field_type, field_slug, is_required, is_lang, field_data, data } = val;
|
|
1840
1881
|
let field;
|
|
1841
1882
|
field_data = field_data || {};
|
|
1842
1883
|
is_required = (is_required == "yes" && (isNew || (!input[field_slug] && typeof input[field_slug] != "undefined")));
|
|
@@ -1969,6 +2010,18 @@ class StreamUtil {
|
|
|
1969
2010
|
}
|
|
1970
2011
|
field = field.regex(/^(\+|-)?(?:90(?:(?:\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\.[0-9]{1,6})?))$/).messages({ 'string.pattern.base': `${field_slug} invalid format` });
|
|
1971
2012
|
break;
|
|
2013
|
+
case "stream":
|
|
2014
|
+
if (field_data['choose_stream']) {
|
|
2015
|
+
let stream = yield stream_1.StreamModel.schema(this.ref, "_").findOne({ where: { id: field_data['choose_stream'] }, raw: true, attributes: ['stream_slug', 'stream_namespace'] });
|
|
2016
|
+
if (stream) {
|
|
2017
|
+
let streams = yield this.findField(stream['stream_slug'], stream['stream_namespace'], { field_only: true, convert_option: true });
|
|
2018
|
+
let validator = yield this.getValidator(streams, { isNew: true, required: is_required, lang, stripUnknown: true });
|
|
2019
|
+
field = Joi.array().items(validator);
|
|
2020
|
+
}
|
|
2021
|
+
}
|
|
2022
|
+
field = field || Joi.array();
|
|
2023
|
+
field = is_required ? field.required().min(1) : field.allow(null);
|
|
2024
|
+
break;
|
|
1972
2025
|
}
|
|
1973
2026
|
field = field || Joi.any();
|
|
1974
2027
|
if (is_required)
|
|
@@ -1976,12 +2029,12 @@ class StreamUtil {
|
|
|
1976
2029
|
if (is_lang == "yes") {
|
|
1977
2030
|
if (!lang.length) {
|
|
1978
2031
|
field_lang.push({ field_slug, field });
|
|
1979
|
-
|
|
2032
|
+
continue;
|
|
1980
2033
|
}
|
|
1981
2034
|
field = Joi.object().keys(lang.reduce((total, i) => Object.assign(total, { [i['lang_code']]: field }), {}));
|
|
1982
2035
|
}
|
|
1983
2036
|
schema[field_slug] = field;
|
|
1984
|
-
}
|
|
2037
|
+
}
|
|
1985
2038
|
if (field_lang.length) {
|
|
1986
2039
|
lang = yield this.languageUtil.getLangsLive();
|
|
1987
2040
|
for (let item of field_lang) {
|