1 | ;
|
2 | // -------------------------------------------------------------
|
3 | // WARNING: this file is used by both the client and the server.
|
4 | // Do not use any browser or node-specific API!
|
5 | // -------------------------------------------------------------
|
6 | Object.defineProperty(exports, "__esModule", { value: true });
|
7 | class Assignable {
|
8 | _getAssignableProperties() {
|
9 | throw new Error('Not implemented');
|
10 | }
|
11 | _assignFrom(obj, validate, initOptions = {}) {
|
12 | if (!obj)
|
13 | return;
|
14 | const props = this._getAssignableProperties();
|
15 | for (let i = 0; i < props.length; i++) {
|
16 | const { name, type, required, init, defaultValue } = props[i];
|
17 | const path = name.split('.');
|
18 | const lastIdx = path.length - 1;
|
19 | const last = path[lastIdx];
|
20 | let srcObj = obj;
|
21 | let destObj = this;
|
22 | for (let j = 0; j < lastIdx && srcObj && destObj; j++) {
|
23 | srcObj = srcObj[path[j]];
|
24 | destObj = destObj[path[j]];
|
25 | }
|
26 | if (destObj && 'defaultValue' in props[i])
|
27 | destObj[name] = defaultValue;
|
28 | if (srcObj && destObj) {
|
29 | const srcVal = srcObj[last];
|
30 | if (srcVal !== void 0 || required) {
|
31 | if (validate && type)
|
32 | type(name, srcVal);
|
33 | destObj[last] = init ? init(name, srcVal, initOptions) : srcVal;
|
34 | }
|
35 | }
|
36 | }
|
37 | }
|
38 | }
|
39 | exports.default = Assignable;
|
40 | module.exports = exports.default;
|
41 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWduYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hc3NpZ25hYmxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxnRUFBZ0U7QUFDaEUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxnRUFBZ0U7O0FBRWhFLE1BQXFCLFVBQVU7SUFDM0Isd0JBQXdCO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVyxDQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsV0FBVyxHQUFHLEVBQUU7UUFDeEMsSUFBSSxDQUFDLEdBQUc7WUFDSixPQUFPO1FBRVgsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFOUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFOUQsTUFBTSxJQUFJLEdBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNoQyxNQUFNLElBQUksR0FBTSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsSUFBSSxNQUFNLEdBQUksR0FBRyxDQUFDO1lBQ2xCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztZQUVuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ25ELE1BQU0sR0FBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUI7WUFFRCxJQUFJLE9BQU8sSUFBSSxjQUFjLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQztZQUVqQyxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQ25CLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFNUIsSUFBSSxNQUFNLEtBQUssS0FBSyxDQUFDLElBQUksUUFBUSxFQUFFO29CQUMvQixJQUFJLFFBQVEsSUFBSSxJQUFJO3dCQUNoQixJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUV2QixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2lCQUNuRTthQUNKO1NBQ0o7SUFDTCxDQUFDO0NBQ0o7QUF4Q0QsNkJBd0NDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gV0FSTklORzogdGhpcyBmaWxlIGlzIHVzZWQgYnkgYm90aCB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyLlxuLy8gRG8gbm90IHVzZSBhbnkgYnJvd3NlciBvciBub2RlLXNwZWNpZmljIEFQSSFcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXNzaWduYWJsZSB7XG4gICAgX2dldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG5cbiAgICBfYXNzaWduRnJvbSAob2JqLCB2YWxpZGF0ZSwgaW5pdE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBpZiAoIW9iailcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBwcm9wcyA9IHRoaXMuX2dldEFzc2lnbmFibGVQcm9wZXJ0aWVzKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgeyBuYW1lLCB0eXBlLCByZXF1aXJlZCwgaW5pdCwgZGVmYXVsdFZhbHVlIH0gPSBwcm9wc1tpXTtcblxuICAgICAgICAgICAgY29uc3QgcGF0aCAgICA9IG5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RJZHggPSBwYXRoLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBjb25zdCBsYXN0ICAgID0gcGF0aFtsYXN0SWR4XTtcbiAgICAgICAgICAgIGxldCBzcmNPYmogID0gb2JqO1xuICAgICAgICAgICAgbGV0IGRlc3RPYmogPSB0aGlzO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxhc3RJZHggJiYgc3JjT2JqICYmIGRlc3RPYmo7IGorKykge1xuICAgICAgICAgICAgICAgIHNyY09iaiAgPSBzcmNPYmpbcGF0aFtqXV07XG4gICAgICAgICAgICAgICAgZGVzdE9iaiA9IGRlc3RPYmpbcGF0aFtqXV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkZXN0T2JqICYmICdkZWZhdWx0VmFsdWUnIGluIHByb3BzW2ldKVxuICAgICAgICAgICAgICAgIGRlc3RPYmpbbmFtZV0gPSBkZWZhdWx0VmFsdWU7XG5cbiAgICAgICAgICAgIGlmIChzcmNPYmogJiYgZGVzdE9iaikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNyY1ZhbCA9IHNyY09ialtsYXN0XTtcblxuICAgICAgICAgICAgICAgIGlmIChzcmNWYWwgIT09IHZvaWQgMCB8fCByZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGUgJiYgdHlwZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUobmFtZSwgc3JjVmFsKTtcblxuICAgICAgICAgICAgICAgICAgICBkZXN0T2JqW2xhc3RdID0gaW5pdCA/IGluaXQobmFtZSwgc3JjVmFsLCBpbml0T3B0aW9ucykgOiBzcmNWYWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19 |
\ | No newline at end of file |