moysklad-helpers
Version:
Вспомогательные функции для работы с библиотекой moysklad
93 lines (92 loc) • 2.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getHelpers = void 0;
const types_1 = require("../types");
const getRefMetaType_1 = require("./getRefMetaType");
function getHelpers(ms) {
function href(path) {
if (path == null)
return undefined;
if ((0, types_1.isEntityRef)(path)) {
return ms.buildUrl(path.meta.href);
}
else {
return ms.buildUrl(path);
}
}
function meta(path) {
return {
type: (0, getRefMetaType_1.getRefMetaType)(path),
href: href(path)
};
}
const attr = (path, value) => {
if ((0, getRefMetaType_1.getRefMetaType)(path) !== 'attributemetadata') {
throw new Error('attr: Href не соответствует типу атрибута');
}
return {
meta: {
type: 'attributemetadata',
href: href(path)
},
value
};
};
const fileAttr = (path, file) => {
if ((0, getRefMetaType_1.getRefMetaType)(path) !== 'attributemetadata') {
throw new Error('attr: Href не соответствует типу атрибута');
}
return {
meta: {
type: 'attributemetadata',
href: href(path)
},
file
};
};
function ref(path) {
return path != null ? { meta: meta(path) } : undefined;
}
function positionRef(...args) {
const docHref = href(args[0]);
return ref(`${docHref}/positions/${args[1]}`);
}
const refEqual = (entityRef1, entityRef2) => {
return entityRef1 == null || entityRef2 == null
? false
: href(entityRef1) === href(entityRef2);
};
function copyFieldsRefs(srcEntity, fieldNames) {
return fieldNames.reduce((res, fieldName) => {
const curFieldVal = srcEntity[fieldName];
if ((0, types_1.isEntityRef)(curFieldVal)) {
res[fieldName] = ref(curFieldVal);
}
else if (curFieldVal != null) {
res[fieldName] = curFieldVal;
}
return res;
}, {});
}
function copyFields(srcEntity, fieldNames) {
return fieldNames.reduce((res, fieldName) => {
const curFieldVal = srcEntity[fieldName];
if (curFieldVal != null) {
res[fieldName] = curFieldVal;
}
return res;
}, {});
}
return {
href,
attr,
fileAttr,
meta,
ref,
positionRef,
refEqual,
copyFields,
copyFieldsRefs
};
}
exports.getHelpers = getHelpers;