@byteluck-fe/model-driven-upgrade 1.3.0-beta.25 → 1.5.0-beta.2

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.
@@ -0,0 +1,117 @@
1
+ function _classCallCheck(instance, Constructor) {
2
+ if (!(instance instanceof Constructor)) {
3
+ throw new TypeError("Cannot call a class as a function");
4
+ }
5
+ }
6
+ function _defineProperties(target, props) {
7
+ for(var i = 0; i < props.length; i++){
8
+ var descriptor = props[i];
9
+ descriptor.enumerable = descriptor.enumerable || false;
10
+ descriptor.configurable = true;
11
+ if ("value" in descriptor) descriptor.writable = true;
12
+ Object.defineProperty(target, descriptor.key, descriptor);
13
+ }
14
+ }
15
+ function _createClass(Constructor, protoProps, staticProps) {
16
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
17
+ if (staticProps) _defineProperties(Constructor, staticProps);
18
+ return Constructor;
19
+ }
20
+ import { error, log } from "@byteluck-fe/model-driven-shared";
21
+ import dataCleaner from "./upgrade";
22
+ function versionReplace$v(version) {
23
+ return version.replace(/^v/, "");
24
+ }
25
+ function versionToNumber(version) {
26
+ return Number(versionReplace$v(version));
27
+ }
28
+ var versionKeys = Object.keys(dataCleaner).map(function(key) {
29
+ return versionReplace$v(key);
30
+ }).sort(function(a, b) {
31
+ return Number(a) - Number(b);
32
+ });
33
+ var nowVersion = versionKeys[versionKeys.length - 1];
34
+ export var VersionBuilder = /*#__PURE__*/ function() {
35
+ "use strict";
36
+ function VersionBuilder(schemaVersion) {
37
+ var version = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : nowVersion;
38
+ _classCallCheck(this, VersionBuilder);
39
+ this.schemaVersion = schemaVersion;
40
+ this.toVersion = version;
41
+ if (versionToNumber(version) > versionToNumber(nowVersion)) {
42
+ error("Version Builder: The specified ".concat(version, " is an undefined version, and the current latest version is ").concat(nowVersion));
43
+ } else if (!versionKeys.includes(versionReplace$v(version)) || !versionKeys.includes(versionReplace$v(schemaVersion))) {
44
+ error("Version Builder: Please give me a valid version number, The valid version is: ".concat(versionKeys.join(","), ", But give me a ").concat(schemaVersion));
45
+ }
46
+ }
47
+ var _proto = VersionBuilder.prototype;
48
+ _proto.dataCleaner = function dataCleaner1(schema, payload) {
49
+ var _this = this;
50
+ if (this._version === this._schemaVersion) {
51
+ return schema;
52
+ }
53
+ var result = this.callDataCleanerKeys.reduce(function(schema, currentVersion, index, arr) {
54
+ var ref;
55
+ var nextVersion = (ref = arr[index + 1]) !== null && ref !== void 0 ? ref : _this.toVersion;
56
+ log("Version Builder: current version: ".concat(currentVersion, ", nextVersion: ").concat(nextVersion));
57
+ var callback = dataCleaner[currentVersion];
58
+ var result = schema;
59
+ if (typeof callback === "function") {
60
+ var callResult = callback(schema, payload);
61
+ if (callResult) {
62
+ result = callResult;
63
+ }
64
+ }
65
+ return result;
66
+ }, schema);
67
+ log("Version Builder: Version conversion completed, evolving from ".concat(this.schemaVersion, " to ").concat(this.toVersion));
68
+ return result;
69
+ };
70
+ _createClass(VersionBuilder, [
71
+ {
72
+ key: "runDataCleanerKeys",
73
+ get: function get() {
74
+ var _this = this;
75
+ return versionKeys.filter(function(item) {
76
+ return Number(item) >= _this._schemaVersion && Number(item) < _this._version;
77
+ });
78
+ }
79
+ },
80
+ {
81
+ key: "callDataCleanerKeys",
82
+ get: function get() {
83
+ return this.runDataCleanerKeys.map(function(key) {
84
+ return "v" + key;
85
+ });
86
+ }
87
+ },
88
+ {
89
+ key: "_version",
90
+ get: function get() {
91
+ return versionToNumber(this.toVersion);
92
+ }
93
+ },
94
+ {
95
+ key: "_schemaVersion",
96
+ get: function get() {
97
+ return versionToNumber(this.schemaVersion);
98
+ }
99
+ },
100
+ {
101
+ key: "version",
102
+ get: /*
103
+ * 最新版本号
104
+ * */ function get() {
105
+ return nowVersion;
106
+ }
107
+ }
108
+ ], [
109
+ {
110
+ key: "version",
111
+ get: function get() {
112
+ return nowVersion;
113
+ }
114
+ }
115
+ ]);
116
+ return VersionBuilder;
117
+ }();
@@ -0,0 +1,2 @@
1
+ export * from "./VersionBuilder";
2
+ export * from "./types";
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,26 @@
1
+ import { dataCleaner as dataCleanerV1toV2 } from "./v1_0";
2
+ import { dataCleaner as dataCleanerV2toV2_1 } from "./v2_0";
3
+ import { dataCleaner as dataCleanerV2_1toV2_2 } from "./v2_1";
4
+ import { dataCleaner as dataCleanerV2_2toV2_3 } from "./v2_2";
5
+ import { dataCleaner as dataCleanerV2_3toV2_4 } from "./v2_3";
6
+ import { dataCleaner as dataCleanerV2_4toV2_5 } from "./v2_4";
7
+ import { dataCleaner as dataCleanerV2_5toV2_6 } from "./v2_5";
8
+ import { dataCleaner as dataCleanerV2_6toV2_7 } from "./v2_6";
9
+ import { dataCleaner as dataCleanerV2_7toV2_8 } from "./v2_7";
10
+ import { dataCleaner as dataCleanerV2_8toV2_9 } from "./v2_8";
11
+ // TODO 切记复制粘贴的时候改一下from后边的路径,不然会出事儿
12
+ // TODO 注意从2.5版本开始,没有进行驼峰转下划线了,写的时候要注意
13
+ export default {
14
+ "v1.0": dataCleanerV1toV2,
15
+ "v2.0": dataCleanerV2toV2_1,
16
+ "v2.1": dataCleanerV2_1toV2_2,
17
+ "v2.2": dataCleanerV2_2toV2_3,
18
+ "v2.3": dataCleanerV2_3toV2_4,
19
+ "v2.4": dataCleanerV2_4toV2_5,
20
+ "v2.5": dataCleanerV2_5toV2_6,
21
+ "v2.6": dataCleanerV2_6toV2_7,
22
+ "v2.7": dataCleanerV2_7toV2_8,
23
+ "v2.8": dataCleanerV2_8toV2_9,
24
+ // 每次都需要预留一个下一版本的转换函数,会使用到对应的key作为当前最新的schema version
25
+ "v2.9": function() {}
26
+ };