@soft-artel/ci 2.3.86 → 2.3.87

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.
Files changed (80) hide show
  1. package/.env +21 -0
  2. package/.eslintcache +1 -0
  3. package/.eslintignore +4 -0
  4. package/.eslintrc +246 -0
  5. package/.gitlab-ci.yml +12 -0
  6. package/README.md +33 -0
  7. package/_publish.sh +11 -0
  8. package/package.json +2 -2
  9. package/src/Project.ts +286 -0
  10. package/src/commands/incrementBuild.ts +46 -0
  11. package/src/commands/k8s-build.ts +441 -0
  12. package/src/commands/k8s-deploy.ts +215 -0
  13. package/src/commands/xcode.ts +192 -0
  14. package/src/services/Git.ts +203 -0
  15. package/src/services/Gitlab.ts +129 -0
  16. package/src/services/Jira.ts +228 -0
  17. package/src/services/Reporter.ts +230 -0
  18. package/src/utils/Exception.ts +19 -0
  19. package/src/utils/Logger.ts +85 -0
  20. package/src/utils/Shell.ts +120 -0
  21. package/src/utils/helpers.ts +126 -0
  22. package/src/utils/prototype.ts +313 -0
  23. package/test.ts +0 -0
  24. package/tsconfig.json +25 -0
  25. package/Project.d.ts +0 -57
  26. package/Project.d.ts.map +0 -1
  27. package/Project.js +0 -173
  28. package/Project.js.map +0 -1
  29. package/commands/incrementBuild.d.ts +0 -3
  30. package/commands/incrementBuild.d.ts.map +0 -1
  31. package/commands/incrementBuild.js +0 -34
  32. package/commands/incrementBuild.js.map +0 -1
  33. package/commands/k8s-build.d.ts +0 -30
  34. package/commands/k8s-build.d.ts.map +0 -1
  35. package/commands/k8s-build.js +0 -291
  36. package/commands/k8s-build.js.map +0 -1
  37. package/commands/k8s-deploy.d.ts +0 -11
  38. package/commands/k8s-deploy.d.ts.map +0 -1
  39. package/commands/k8s-deploy.js +0 -145
  40. package/commands/k8s-deploy.js.map +0 -1
  41. package/commands/xcode.d.ts +0 -3
  42. package/commands/xcode.d.ts.map +0 -1
  43. package/commands/xcode.js +0 -128
  44. package/commands/xcode.js.map +0 -1
  45. package/services/Git.d.ts +0 -46
  46. package/services/Git.d.ts.map +0 -1
  47. package/services/Git.js +0 -138
  48. package/services/Git.js.map +0 -1
  49. package/services/Gitlab.d.ts +0 -14
  50. package/services/Gitlab.d.ts.map +0 -1
  51. package/services/Gitlab.js +0 -101
  52. package/services/Gitlab.js.map +0 -1
  53. package/services/Jira.d.ts +0 -32
  54. package/services/Jira.d.ts.map +0 -1
  55. package/services/Jira.js +0 -136
  56. package/services/Jira.js.map +0 -1
  57. package/services/Reporter.d.ts +0 -43
  58. package/services/Reporter.d.ts.map +0 -1
  59. package/services/Reporter.js +0 -134
  60. package/services/Reporter.js.map +0 -1
  61. package/utils/Exception.d.ts +0 -5
  62. package/utils/Exception.d.ts.map +0 -1
  63. package/utils/Exception.js +0 -14
  64. package/utils/Exception.js.map +0 -1
  65. package/utils/Logger.d.ts +0 -11
  66. package/utils/Logger.d.ts.map +0 -1
  67. package/utils/Logger.js +0 -62
  68. package/utils/Logger.js.map +0 -1
  69. package/utils/Shell.d.ts +0 -39
  70. package/utils/Shell.d.ts.map +0 -1
  71. package/utils/Shell.js +0 -89
  72. package/utils/Shell.js.map +0 -1
  73. package/utils/helpers.d.ts +0 -16
  74. package/utils/helpers.d.ts.map +0 -1
  75. package/utils/helpers.js +0 -109
  76. package/utils/helpers.js.map +0 -1
  77. package/utils/prototype.d.ts +0 -9
  78. package/utils/prototype.d.ts.map +0 -1
  79. package/utils/prototype.js +0 -186
  80. package/utils/prototype.js.map +0 -1
@@ -1,186 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- Object.defineProperties(String.prototype, {
4
- replaceAll: {
5
- value(search, replacement) {
6
- const escapedSearch = search.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
7
- return this.replace(new RegExp(escapedSearch, 'g'), replacement);
8
- },
9
- enumerable: false,
10
- writable: true,
11
- },
12
- });
13
- Object.defineProperties(Array.prototype, {
14
- randomElement: {
15
- value() {
16
- return this[Math.round(Math.random() * (this.length - 1))];
17
- },
18
- enumerable: false,
19
- writable: true,
20
- },
21
- delete: {
22
- value(elm) {
23
- const index = this.indexOf(elm);
24
- if (index === -1) {
25
- return this;
26
- }
27
- this.splice(index, 1);
28
- return this;
29
- },
30
- enumerable: false,
31
- writable: true,
32
- },
33
- match: {
34
- value(str) {
35
- for (const item of this) {
36
- if (typeof item === 'string' && (RegExp(item).exec(str))) {
37
- return true;
38
- }
39
- }
40
- return false;
41
- },
42
- enumerable: false,
43
- writable: true,
44
- },
45
- });
46
- function isObjectDefined(obj) {
47
- return obj !== undefined && typeof (obj) === 'object' && obj !== null && (obj instanceof Date) === false && Array.isArray(obj) === false;
48
- }
49
- Object.defineProperties(Object.prototype, {
50
- copy: {
51
- value(maxDepth, excludeKeysStart) {
52
- const maxDeep = maxDepth === undefined ? 5 : maxDepth - 1;
53
- const excludeKeys = excludeKeysStart === undefined ? ['_', '$'] : excludeKeysStart;
54
- const objCopy = {};
55
- for (const key of Object.keys(this)) {
56
- if (excludeKeys.includes(key[0])) {
57
- continue;
58
- }
59
- const value = (this)[key];
60
- if (isObjectDefined(value)) {
61
- objCopy[key] = (maxDeep >= 0) ? value.copy(maxDeep, excludeKeys) : {};
62
- }
63
- else {
64
- objCopy[key] = value;
65
- }
66
- }
67
- return objCopy;
68
- },
69
- enumerable: false,
70
- writable: true,
71
- },
72
- diff: {
73
- value(toObj, excludeKeysStart) {
74
- if (isObjectDefined(toObj) === false) {
75
- return { from: this.copy(), to: toObj };
76
- }
77
- const excludeKeys = excludeKeysStart === undefined ? ['_', '$'] : excludeKeysStart;
78
- const result = {};
79
- const fromKeys = Object.keys(this);
80
- const toKeys = Object.keys(toObj);
81
- if (fromKeys.length === toKeys.length && toKeys.length === 0) {
82
- return undefined;
83
- }
84
- for (const key of toKeys) {
85
- const i = fromKeys.indexOf(key);
86
- if (i !== -1) {
87
- fromKeys.splice(i, 1);
88
- }
89
- if (excludeKeys.includes(key[0])) {
90
- continue;
91
- }
92
- const oldVal = (this)[key];
93
- const newVal = toObj[key];
94
- if (oldVal === newVal
95
- || (isObjectDefined(oldVal) && isObjectDefined(newVal) && Object.keys(oldVal).length === 0 && Object.keys(newVal).length === 0)
96
- || (oldVal instanceof Date && newVal instanceof Date && oldVal.getTime() === newVal.getTime())) {
97
- continue;
98
- }
99
- if (oldVal === undefined || oldVal === null || oldVal === '' || isObjectDefined(oldVal) && Object.keys(oldVal).length === 0) {
100
- result[key] = { to: newVal };
101
- continue;
102
- }
103
- if (isObjectDefined(oldVal) && isObjectDefined(newVal)) {
104
- const nestedResult = oldVal.diff(newVal);
105
- if (nestedResult && Object.keys(nestedResult).length > 0) {
106
- result[key] = nestedResult;
107
- }
108
- continue;
109
- }
110
- result[key] = {
111
- from: oldVal,
112
- to: newVal,
113
- };
114
- }
115
- for (const key of fromKeys) {
116
- if (excludeKeys.includes(key[0])) {
117
- continue;
118
- }
119
- const oldVal = (this)[key];
120
- if (oldVal !== undefined || oldVal !== null) {
121
- result[key] = {
122
- from: oldVal,
123
- };
124
- }
125
- }
126
- return result;
127
- },
128
- enumerable: false,
129
- writable: true,
130
- },
131
- pickKeys: {
132
- value(keys) {
133
- if (!Array.isArray(keys) || keys.length === 0)
134
- return {};
135
- const obj = {};
136
- for (const key of keys) {
137
- obj[key] = (this)[key];
138
- }
139
- return obj;
140
- },
141
- enumerable: false,
142
- writable: true,
143
- },
144
- mergeFrom: {
145
- value(fromObj, addFromObjKeys = true) {
146
- if (!fromObj || typeof fromObj !== 'object')
147
- return this;
148
- const keys = Object.keys(this);
149
- const fromKeys = Object.keys(fromObj);
150
- keys.forEach(key => {
151
- const i = fromKeys.indexOf(key);
152
- if (i !== -1) {
153
- fromKeys.splice(i, 1);
154
- }
155
- const fromValue = fromObj[key];
156
- if (fromValue === undefined || fromValue === null) {
157
- return;
158
- }
159
- if (typeof this[key] !== 'object' ||
160
- typeof this[key] !== typeof fromValue ||
161
- Array.isArray(this[key])) {
162
- this[key] = fromValue;
163
- return;
164
- }
165
- this[key].mergeFrom(fromValue);
166
- });
167
- if (addFromObjKeys && fromKeys.length > 0) {
168
- fromKeys.forEach(key => {
169
- this[key] = fromObj[key];
170
- });
171
- }
172
- return this;
173
- },
174
- enumerable: false,
175
- writable: true,
176
- },
177
- isEqual: {
178
- value(toObj) {
179
- const diff = this.diff(toObj);
180
- return diff ? Object.keys(diff).length === 0 : true;
181
- },
182
- enumerable: false,
183
- writable: true,
184
- },
185
- });
186
- //# sourceMappingURL=prototype.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prototype.js","sourceRoot":"","sources":["../../src/utils/prototype.ts"],"names":[],"mappings":"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"}