gamelet-cli 0.7.12 → 0.7.13

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 (49) hide show
  1. package/assets/package.json.twig +3 -3
  2. package/assets/tsconfig.json.twig +1 -1
  3. package/build/package.json +67 -67
  4. package/build/src/gamelet/download.js +773 -737
  5. package/build/src/gamelet/merges.js +181 -179
  6. package/build/src/gamelet/prepare.js +276 -277
  7. package/build/src/gamelet/upload.js +280 -279
  8. package/build/src/index.js +86 -86
  9. package/build/src/server/Constant.js +9 -9
  10. package/build/src/server/entities/Client.js +78 -78
  11. package/build/src/server/entities/ClientOwner.js +67 -67
  12. package/build/src/server/entities/ClientProject.js +84 -84
  13. package/build/src/server/entities/Gameroom.js +89 -89
  14. package/build/src/server/entities/GameroomBase.js +276 -276
  15. package/build/src/server/entities/Gamezone.js +73 -73
  16. package/build/src/server/entities/ListFilter.js +193 -193
  17. package/build/src/server/entities/Monitor.js +94 -94
  18. package/build/src/server/entities/Player.js +140 -140
  19. package/build/src/server/managers/ApiManager.js +75 -75
  20. package/build/src/server/managers/ClientManager.js +64 -64
  21. package/build/src/server/managers/Database.js +627 -627
  22. package/build/src/server/managers/GameroomManager.js +392 -392
  23. package/build/src/server/managers/ManagerBase.js +17 -17
  24. package/build/src/server/managers/MonitorManager.js +73 -73
  25. package/build/src/server/managers/PlayerManager.js +108 -108
  26. package/build/src/server/managers/SocketManager.js +60 -60
  27. package/build/src/server/managers/UserManager.js +58 -58
  28. package/build/src/server/messages/Message.js +143 -143
  29. package/build/src/server/server.js +112 -113
  30. package/build/src/server/services/ServiceBase.js +25 -25
  31. package/build/src/server/services/clientService.js +23 -23
  32. package/build/src/server/services/gameroomService.js +121 -121
  33. package/build/src/server/services/gltserver.service.js +23 -23
  34. package/build/src/server/services/playerService.js +32 -32
  35. package/build/src/server/startServer.js +32 -33
  36. package/build/src/server/types/BadgeStatus.js +25 -25
  37. package/build/src/server/types/OrderType.js +38 -38
  38. package/build/src/server/types/SubmitType.js +24 -24
  39. package/build/src/server/types/TimeRange.js +26 -26
  40. package/build/src/server/utils/ArrayUtil.js +126 -126
  41. package/build/src/server/utils/IntUtil.js +9 -9
  42. package/build/src/server/utils/ObjectUtil.js +191 -191
  43. package/build/src/server/utils/StringUtil.js +37 -37
  44. package/build/src/utils/cli.js +53 -53
  45. package/build/src/utils/file.js +350 -337
  46. package/build/src/utils/init.js +57 -42
  47. package/build/src/utils/log.js +18 -17
  48. package/build/src/utils/net.js +43 -39
  49. package/package.json +2 -2
@@ -1,179 +1,181 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isSourceMerged = exports.sourceMerge = void 0;
4
- const file_1 = require("../utils/file");
5
- const node_diff3_1 = require("node-diff3");
6
- /**
7
- * file local base
8
- * 1. o o o diff3
9
- * 2. o o x diff2
10
- * 3. o x o use file if file != base
11
- * 4. x o o del local if local == base
12
- * 5. o x x use file
13
- * 6. x o x (do nothing)
14
- * 7. x x o (do nothing)
15
- * 8. x x x (do nothing)
16
- *
17
- */
18
- exports.sourceMerge = function (filename, remoteFile, baseFile, folder) {
19
- let localFilepath = `${folder}/${filename}`;
20
- // 4.
21
- if (remoteFile === null && file_1.fileExists(localFilepath) && baseFile !== null) {
22
- return file_1.getFileString(localFilepath)
23
- .then(content => {
24
- if (content == baseFile) {
25
- console.log(`Source deleted: ${filename}`);
26
- return file_1.unlink(localFilepath);
27
- }
28
- else {
29
- return Promise.resolve(true);
30
- }
31
- })
32
- .then(() => {
33
- return {
34
- code: 4,
35
- name: 'deleted',
36
- filename: filename,
37
- };
38
- });
39
- }
40
- // 3.
41
- if (remoteFile !== null && !file_1.fileExists(localFilepath) && baseFile !== null) {
42
- if (remoteFile != baseFile) {
43
- console.log(`Source created: ${filename}`);
44
- return file_1.saveData(localFilepath, remoteFile)
45
- .then(() => {
46
- return {
47
- code: 3,
48
- name: 'added',
49
- filename: filename,
50
- };
51
- });
52
- }
53
- else {
54
- return Promise.resolve({
55
- code: 3,
56
- name: '',
57
- filename: filename,
58
- });
59
- }
60
- }
61
- // 5.
62
- if (remoteFile !== null && !file_1.fileExists(localFilepath) && baseFile === null) {
63
- return file_1.saveData(localFilepath, remoteFile)
64
- .then(() => {
65
- return {
66
- code: 5,
67
- name: 'added',
68
- filename: filename,
69
- };
70
- });
71
- }
72
- if (remoteFile !== null && file_1.fileExists(localFilepath)) {
73
- return file_1.getFileString(localFilepath)
74
- .then(localContent => {
75
- let remote = remoteFile.split("\n");
76
- let local = localContent.split("\n");
77
- let conflictLine = local.findIndex(line => line.match(/^\s*(<<<|>>>)/));
78
- if (conflictLine != -1) {
79
- return Promise.reject(file_1.vscodeLink(`${localFilepath}:${conflictLine + 1}`, `Resolve the conflict first:`));
80
- }
81
- // 1. 2,
82
- if (baseFile == remoteFile) {
83
- return {
84
- code: 1,
85
- name: '',
86
- filename: filename,
87
- };
88
- }
89
- let base = baseFile ? baseFile.split("\n") : [];
90
- if (!isSourceMergable(filename)) {
91
- // encoded content
92
- if (baseFile == localContent) {
93
- return file_1.saveData(localFilepath, remoteFile)
94
- .then(() => {
95
- console.log(`Source overwritten with remote: ${filename}`);
96
- return {
97
- code: 1,
98
- name: 'merged',
99
- filename: filename,
100
- };
101
- });
102
- }
103
- else if (baseFile == remoteFile) {
104
- return {
105
- code: 1,
106
- name: 'merged',
107
- filename: filename,
108
- };
109
- }
110
- else {
111
- return file_1.saveData(localFilepath, remoteFile)
112
- .then(() => {
113
- console.log(`Source overwritten with remote: ${filename}`);
114
- return {
115
- code: 1,
116
- name: 'merged',
117
- filename: filename,
118
- };
119
- });
120
- }
121
- }
122
- let merge = node_diff3_1.mergeDiff3(local, base, remote, { label: { a: 'local', o: 'base', b: 'remote', }, excludeFalseConflicts: true });
123
- let content = merge.result.join("\n");
124
- return file_1.saveData(localFilepath, content)
125
- .then(() => {
126
- if (merge.conflict) {
127
- conflictLine = merge.result.findIndex(line => line.match(/^\s*(<<<|>>>)/));
128
- console.error(file_1.vscodeLink(`${localFilepath}:${conflictLine + 1}`, `Merge conflict required:`));
129
- return {
130
- code: 1,
131
- name: 'conflict',
132
- filename: filename,
133
- };
134
- }
135
- else {
136
- console.log(`Source merged: ${filename}`);
137
- return {
138
- code: 1,
139
- name: 'merged',
140
- filename: filename,
141
- };
142
- }
143
- });
144
- });
145
- }
146
- else {
147
- return Promise.resolve({
148
- code: 6,
149
- name: '',
150
- filename: filename,
151
- });
152
- }
153
- };
154
- function isSourceMergable(filename) {
155
- return !filename.match(/(\.events|\.twmap|events\.schema\.json)$/);
156
- }
157
- exports.isSourceMerged = function (filename, remoteFile, baseFile, folder) {
158
- let localFilepath = `${folder}/${filename}`;
159
- if (remoteFile != baseFile) {
160
- return Promise.resolve(false);
161
- }
162
- if (file_1.fileExists(localFilepath)) {
163
- return file_1.getFileString(localFilepath)
164
- .then(localContent => {
165
- let local = localContent.split("\n");
166
- let conflictLine = local.findIndex(line => line.match(/^\s*(<<<|>>>)/));
167
- if (conflictLine != -1) {
168
- return Promise.reject(file_1.vscodeLink(`${localFilepath}:${conflictLine + 1}`, `Resolve the conflict first:`));
169
- }
170
- else {
171
- return Promise.resolve(true);
172
- }
173
- });
174
- }
175
- else {
176
- return Promise.resolve(true);
177
- }
178
- };
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dhbWVsZXQvbWVyZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdDQUF3RjtBQUN4RiwyQ0FBd0M7QUFReEM7Ozs7Ozs7Ozs7O0dBV0c7QUFDVSxRQUFBLFdBQVcsR0FBRyxVQUFVLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU07SUFDdkUsSUFBSSxhQUFhLEdBQUcsR0FBRyxNQUFNLElBQUksUUFBUSxFQUFFLENBQUM7SUFFNUMsS0FBSztJQUNMLElBQUksVUFBVSxLQUFLLElBQUksSUFBSSxpQkFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7UUFDdkUsT0FBTyxvQkFBYSxDQUFDLGFBQWEsQ0FBQzthQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDWixJQUFJLE9BQU8sSUFBSSxRQUFRLEVBQUU7Z0JBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLFFBQVEsRUFBRSxDQUFDLENBQUE7Z0JBQzFDLE9BQU8sYUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO2FBQy9CO2lCQUFNO2dCQUNILE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNoQztRQUNMLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUCxPQUFPO2dCQUNILElBQUksRUFBRSxDQUFDO2dCQUNQLElBQUksRUFBRSxTQUFTO2dCQUNmLFFBQVEsRUFBRSxRQUFRO2FBQ3JCLENBQUE7UUFDTCxDQUFDLENBQUMsQ0FBQTtLQUNUO0lBRUQsS0FBSztJQUNMLElBQUksVUFBVSxLQUFLLElBQUksSUFBSSxDQUFDLGlCQUFVLENBQUMsYUFBYSxDQUFDLElBQUksUUFBUSxLQUFLLElBQUksRUFBRTtRQUN4RSxJQUFJLFVBQVUsSUFBSSxRQUFRLEVBQUU7WUFDeEIsT0FBTyxDQUFDLEdB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
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSourceMerged = exports.sourceMerge = void 0;
4
+ const file_1 = require("../utils/file");
5
+ const node_diff3_1 = require("node-diff3");
6
+ /**
7
+ * file local base
8
+ * 1. o o o diff3
9
+ * 2. o o x diff2
10
+ * 3. o x o use file if file != base
11
+ * 4. x o o del local if local == base
12
+ * 5. o x x use file
13
+ * 6. x o x (do nothing)
14
+ * 7. x x o (do nothing)
15
+ * 8. x x x (do nothing)
16
+ *
17
+ */
18
+ const sourceMerge = function (filename, remoteFile, baseFile, folder) {
19
+ let localFilepath = `${folder}/${filename}`;
20
+ // 4.
21
+ if (remoteFile === null && (0, file_1.fileExists)(localFilepath) && baseFile !== null) {
22
+ return (0, file_1.getFileString)(localFilepath)
23
+ .then(content => {
24
+ if (content == baseFile) {
25
+ console.log(`Source deleted: ${filename}`);
26
+ return (0, file_1.unlink)(localFilepath);
27
+ }
28
+ else {
29
+ return Promise.resolve(true);
30
+ }
31
+ })
32
+ .then(() => {
33
+ return {
34
+ code: 4,
35
+ name: 'deleted',
36
+ filename: filename,
37
+ };
38
+ });
39
+ }
40
+ // 3.
41
+ if (remoteFile !== null && !(0, file_1.fileExists)(localFilepath) && baseFile !== null) {
42
+ if (remoteFile != baseFile) {
43
+ console.log(`Source created: ${filename}`);
44
+ return (0, file_1.saveData)(localFilepath, remoteFile)
45
+ .then(() => {
46
+ return {
47
+ code: 3,
48
+ name: 'added',
49
+ filename: filename,
50
+ };
51
+ });
52
+ }
53
+ else {
54
+ return Promise.resolve({
55
+ code: 3,
56
+ name: '',
57
+ filename: filename,
58
+ });
59
+ }
60
+ }
61
+ // 5.
62
+ if (remoteFile !== null && !(0, file_1.fileExists)(localFilepath) && baseFile === null) {
63
+ return (0, file_1.saveData)(localFilepath, remoteFile)
64
+ .then(() => {
65
+ return {
66
+ code: 5,
67
+ name: 'added',
68
+ filename: filename,
69
+ };
70
+ });
71
+ }
72
+ if (remoteFile !== null && (0, file_1.fileExists)(localFilepath)) {
73
+ return (0, file_1.getFileString)(localFilepath)
74
+ .then(localContent => {
75
+ let remote = remoteFile.split("\n");
76
+ let local = localContent.split("\n");
77
+ let conflictLine = local.findIndex(line => line.match(/^\s*(<<<|>>>)/));
78
+ if (conflictLine != -1) {
79
+ return Promise.reject((0, file_1.vscodeLink)(`${localFilepath}:${conflictLine + 1}`, `Resolve the conflict first:`));
80
+ }
81
+ // 1. 2,
82
+ if (baseFile == remoteFile) {
83
+ return {
84
+ code: 1,
85
+ name: '',
86
+ filename: filename,
87
+ };
88
+ }
89
+ let base = baseFile ? baseFile.split("\n") : [];
90
+ if (!isSourceMergable(filename)) {
91
+ // encoded content
92
+ if (baseFile == localContent) {
93
+ return (0, file_1.saveData)(localFilepath, remoteFile)
94
+ .then(() => {
95
+ console.log(`Source overwritten with remote: ${filename}`);
96
+ return {
97
+ code: 1,
98
+ name: 'merged',
99
+ filename: filename,
100
+ };
101
+ });
102
+ }
103
+ else if (baseFile == remoteFile) {
104
+ return {
105
+ code: 1,
106
+ name: 'merged',
107
+ filename: filename,
108
+ };
109
+ }
110
+ else {
111
+ return (0, file_1.saveData)(localFilepath, remoteFile)
112
+ .then(() => {
113
+ console.log(`Source overwritten with remote: ${filename}`);
114
+ return {
115
+ code: 1,
116
+ name: 'merged',
117
+ filename: filename,
118
+ };
119
+ });
120
+ }
121
+ }
122
+ let merge = (0, node_diff3_1.mergeDiff3)(local, base, remote, { label: { a: 'local', o: 'base', b: 'remote', }, excludeFalseConflicts: true });
123
+ let content = merge.result.join("\n");
124
+ return (0, file_1.saveData)(localFilepath, content)
125
+ .then(() => {
126
+ if (merge.conflict) {
127
+ conflictLine = merge.result.findIndex(line => line.match(/^\s*(<<<|>>>)/));
128
+ console.error((0, file_1.vscodeLink)(`${localFilepath}:${conflictLine + 1}`, `Merge conflict required:`));
129
+ return {
130
+ code: 1,
131
+ name: 'conflict',
132
+ filename: filename,
133
+ };
134
+ }
135
+ else {
136
+ console.log(`Source merged: ${filename}`);
137
+ return {
138
+ code: 1,
139
+ name: 'merged',
140
+ filename: filename,
141
+ };
142
+ }
143
+ });
144
+ });
145
+ }
146
+ else {
147
+ return Promise.resolve({
148
+ code: 6,
149
+ name: '',
150
+ filename: filename,
151
+ });
152
+ }
153
+ };
154
+ exports.sourceMerge = sourceMerge;
155
+ function isSourceMergable(filename) {
156
+ return !filename.match(/(\.events|\.twmap|events\.schema\.json)$/);
157
+ }
158
+ const isSourceMerged = function (filename, remoteFile, baseFile, folder) {
159
+ let localFilepath = `${folder}/${filename}`;
160
+ if (remoteFile != baseFile) {
161
+ return Promise.resolve(false);
162
+ }
163
+ if ((0, file_1.fileExists)(localFilepath)) {
164
+ return (0, file_1.getFileString)(localFilepath)
165
+ .then(localContent => {
166
+ let local = localContent.split("\n");
167
+ let conflictLine = local.findIndex(line => line.match(/^\s*(<<<|>>>)/));
168
+ if (conflictLine != -1) {
169
+ return Promise.reject((0, file_1.vscodeLink)(`${localFilepath}:${conflictLine + 1}`, `Resolve the conflict first:`));
170
+ }
171
+ else {
172
+ return Promise.resolve(true);
173
+ }
174
+ });
175
+ }
176
+ else {
177
+ return Promise.resolve(true);
178
+ }
179
+ };
180
+ exports.isSourceMerged = isSourceMerged;
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dhbWVsZXQvbWVyZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdDQUF3RjtBQUN4RiwyQ0FBd0M7QUFReEM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSSxNQUFNLFdBQVcsR0FBRyxVQUFVLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU07SUFDdkUsSUFBSSxhQUFhLEdBQUcsR0FBRyxNQUFNLElBQUksUUFBUSxFQUFFLENBQUM7SUFFNUMsS0FBSztJQUNMLElBQUksVUFBVSxLQUFLLElBQUksSUFBSSxJQUFBLGlCQUFVLEVBQUMsYUFBYSxDQUFDLElBQUksUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3hFLE9BQU8sSUFBQSxvQkFBYSxFQUFDLGFBQWEsQ0FBQzthQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDWixJQUFJLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsUUFBUSxFQUFFLENBQUMsQ0FBQTtnQkFDMUMsT0FBTyxJQUFBLGFBQU0sRUFBQyxhQUFhLENBQUMsQ0FBQTtZQUNoQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDTCxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1AsT0FBTztnQkFDSCxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLEVBQUUsU0FBUztnQkFDZixRQUFRLEVBQUUsUUFBUTthQUNyQixDQUFBO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDVixDQUFDO0lBRUQsS0FBSztJQUNMLElBQUksVUFBVSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUEsaUJBQVUsRUFBQyxhQUFhLENBQUMsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFF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