node-leek 1.0.0

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 (188) hide show
  1. package/README.md +109 -0
  2. package/dist/app.d.ts +1 -0
  3. package/dist/app.d.ts.map +1 -0
  4. package/dist/app.js +1 -0
  5. package/dist/autofighter.d.ts +2 -0
  6. package/dist/autofighter.d.ts.map +1 -0
  7. package/dist/autofighter.js +27 -0
  8. package/dist/boss_farming.d.ts +2 -0
  9. package/dist/boss_farming.d.ts.map +1 -0
  10. package/dist/boss_farming.js +33 -0
  11. package/dist/codegen/api/apis.d.ts +12 -0
  12. package/dist/codegen/api/apis.d.ts.map +1 -0
  13. package/dist/codegen/api/apis.js +33 -0
  14. package/dist/codegen/api/defaultApi.d.ts +239 -0
  15. package/dist/codegen/api/defaultApi.d.ts.map +1 -0
  16. package/dist/codegen/api/defaultApi.js +1071 -0
  17. package/dist/codegen/api.d.ts +3 -0
  18. package/dist/codegen/api.d.ts.map +1 -0
  19. package/dist/codegen/api.js +19 -0
  20. package/dist/codegen/model/aicode.d.ts +34 -0
  21. package/dist/codegen/model/aicode.d.ts.map +1 -0
  22. package/dist/codegen/model/aicode.js +47 -0
  23. package/dist/codegen/model/buy200Response.d.ts +27 -0
  24. package/dist/codegen/model/buy200Response.d.ts.map +1 -0
  25. package/dist/codegen/model/buy200Response.js +35 -0
  26. package/dist/codegen/model/buyRequest.d.ts +27 -0
  27. package/dist/codegen/model/buyRequest.d.ts.map +1 -0
  28. package/dist/codegen/model/buyRequest.js +35 -0
  29. package/dist/codegen/model/createFile200Response.d.ts +27 -0
  30. package/dist/codegen/model/createFile200Response.d.ts.map +1 -0
  31. package/dist/codegen/model/createFile200Response.js +29 -0
  32. package/dist/codegen/model/createFile200ResponseAi.d.ts +30 -0
  33. package/dist/codegen/model/createFile200ResponseAi.d.ts.map +1 -0
  34. package/dist/codegen/model/createFile200ResponseAi.js +53 -0
  35. package/dist/codegen/model/createFileRequest.d.ts +31 -0
  36. package/dist/codegen/model/createFileRequest.d.ts.map +1 -0
  37. package/dist/codegen/model/createFileRequest.js +44 -0
  38. package/dist/codegen/model/createFolder200Response.d.ts +26 -0
  39. package/dist/codegen/model/createFolder200Response.d.ts.map +1 -0
  40. package/dist/codegen/model/createFolder200Response.js +29 -0
  41. package/dist/codegen/model/createFolderRequest.d.ts +27 -0
  42. package/dist/codegen/model/createFolderRequest.d.ts.map +1 -0
  43. package/dist/codegen/model/createFolderRequest.js +35 -0
  44. package/dist/codegen/model/credentials.d.ts +31 -0
  45. package/dist/codegen/model/credentials.d.ts.map +1 -0
  46. package/dist/codegen/model/credentials.js +44 -0
  47. package/dist/codegen/model/deleteFileRequest.d.ts +26 -0
  48. package/dist/codegen/model/deleteFileRequest.d.ts.map +1 -0
  49. package/dist/codegen/model/deleteFileRequest.js +29 -0
  50. package/dist/codegen/model/deleteFolderRequest.d.ts +26 -0
  51. package/dist/codegen/model/deleteFolderRequest.d.ts.map +1 -0
  52. package/dist/codegen/model/deleteFolderRequest.js +29 -0
  53. package/dist/codegen/model/farmer.d.ts +110 -0
  54. package/dist/codegen/model/farmer.d.ts.map +1 -0
  55. package/dist/codegen/model/farmer.js +299 -0
  56. package/dist/codegen/model/farmerOpponent.d.ts +35 -0
  57. package/dist/codegen/model/farmerOpponent.d.ts.map +1 -0
  58. package/dist/codegen/model/farmerOpponent.js +68 -0
  59. package/dist/codegen/model/fightResult.d.ts +38 -0
  60. package/dist/codegen/model/fightResult.d.ts.map +1 -0
  61. package/dist/codegen/model/fightResult.js +80 -0
  62. package/dist/codegen/model/fightResume.d.ts +95 -0
  63. package/dist/codegen/model/fightResume.d.ts.map +1 -0
  64. package/dist/codegen/model/fightResume.js +182 -0
  65. package/dist/codegen/model/fightResumeLeeks1Inner.d.ts +27 -0
  66. package/dist/codegen/model/fightResumeLeeks1Inner.d.ts.map +1 -0
  67. package/dist/codegen/model/fightResumeLeeks1Inner.js +35 -0
  68. package/dist/codegen/model/folder.d.ts +31 -0
  69. package/dist/codegen/model/folder.d.ts.map +1 -0
  70. package/dist/codegen/model/folder.js +44 -0
  71. package/dist/codegen/model/garden.d.ts +30 -0
  72. package/dist/codegen/model/garden.d.ts.map +1 -0
  73. package/dist/codegen/model/garden.js +32 -0
  74. package/dist/codegen/model/gardenGarden.d.ts +52 -0
  75. package/dist/codegen/model/gardenGarden.d.ts.map +1 -0
  76. package/dist/codegen/model/gardenGarden.js +113 -0
  77. package/dist/codegen/model/gardenGardenMyCompositionsInner.d.ts +38 -0
  78. package/dist/codegen/model/gardenGardenMyCompositionsInner.d.ts.map +1 -0
  79. package/dist/codegen/model/gardenGardenMyCompositionsInner.js +86 -0
  80. package/dist/codegen/model/gardenGardenMyTeam.d.ts +32 -0
  81. package/dist/codegen/model/gardenGardenMyTeam.d.ts.map +1 -0
  82. package/dist/codegen/model/gardenGardenMyTeam.js +50 -0
  83. package/dist/codegen/model/getFarmerOpponents200Response.d.ts +27 -0
  84. package/dist/codegen/model/getFarmerOpponents200Response.d.ts.map +1 -0
  85. package/dist/codegen/model/getFarmerOpponents200Response.js +29 -0
  86. package/dist/codegen/model/getFilesContentRequest.d.ts +29 -0
  87. package/dist/codegen/model/getFilesContentRequest.d.ts.map +1 -0
  88. package/dist/codegen/model/getFilesContentRequest.js +32 -0
  89. package/dist/codegen/model/getSoloOpponents200Response.d.ts +27 -0
  90. package/dist/codegen/model/getSoloOpponents200Response.d.ts.map +1 -0
  91. package/dist/codegen/model/getSoloOpponents200Response.js +29 -0
  92. package/dist/codegen/model/ia.d.ts +37 -0
  93. package/dist/codegen/model/ia.d.ts.map +1 -0
  94. package/dist/codegen/model/ia.js +80 -0
  95. package/dist/codegen/model/item.d.ts +35 -0
  96. package/dist/codegen/model/item.d.ts.map +1 -0
  97. package/dist/codegen/model/item.js +68 -0
  98. package/dist/codegen/model/leek.d.ts +172 -0
  99. package/dist/codegen/model/leek.d.ts.map +1 -0
  100. package/dist/codegen/model/leek.js +350 -0
  101. package/dist/codegen/model/logindump.d.ts +34 -0
  102. package/dist/codegen/model/logindump.d.ts.map +1 -0
  103. package/dist/codegen/model/logindump.js +41 -0
  104. package/dist/codegen/model/models.d.ts +87 -0
  105. package/dist/codegen/model/models.d.ts.map +1 -0
  106. package/dist/codegen/model/models.js +331 -0
  107. package/dist/codegen/model/opponent.d.ts +32 -0
  108. package/dist/codegen/model/opponent.d.ts.map +1 -0
  109. package/dist/codegen/model/opponent.js +50 -0
  110. package/dist/codegen/model/publicLeek.d.ts +225 -0
  111. package/dist/codegen/model/publicLeek.d.ts.map +1 -0
  112. package/dist/codegen/model/publicLeek.js +494 -0
  113. package/dist/codegen/model/publicLeekAi.d.ts +30 -0
  114. package/dist/codegen/model/publicLeekAi.d.ts.map +1 -0
  115. package/dist/codegen/model/publicLeekAi.js +53 -0
  116. package/dist/codegen/model/publicLeekChipsInner.d.ts +27 -0
  117. package/dist/codegen/model/publicLeekChipsInner.d.ts.map +1 -0
  118. package/dist/codegen/model/publicLeekChipsInner.js +35 -0
  119. package/dist/codegen/model/saveFile200Response.d.ts +29 -0
  120. package/dist/codegen/model/saveFile200Response.d.ts.map +1 -0
  121. package/dist/codegen/model/saveFile200Response.js +32 -0
  122. package/dist/codegen/model/saveFileRequest.d.ts +27 -0
  123. package/dist/codegen/model/saveFileRequest.d.ts.map +1 -0
  124. package/dist/codegen/model/saveFileRequest.js +35 -0
  125. package/dist/codegen/model/startFarmerFightRequest.d.ts +26 -0
  126. package/dist/codegen/model/startFarmerFightRequest.d.ts.map +1 -0
  127. package/dist/codegen/model/startFarmerFightRequest.js +29 -0
  128. package/dist/codegen/model/startSoloFight200Response.d.ts +26 -0
  129. package/dist/codegen/model/startSoloFight200Response.d.ts.map +1 -0
  130. package/dist/codegen/model/startSoloFight200Response.js +29 -0
  131. package/dist/codegen/model/startSoloFightRequest.d.ts +27 -0
  132. package/dist/codegen/model/startSoloFightRequest.d.ts.map +1 -0
  133. package/dist/codegen/model/startSoloFightRequest.js +35 -0
  134. package/dist/codegen/model/team.d.ts +34 -0
  135. package/dist/codegen/model/team.d.ts.map +1 -0
  136. package/dist/codegen/model/team.js +62 -0
  137. package/dist/codegen/model/tournamentResume.d.ts +36 -0
  138. package/dist/codegen/model/tournamentResume.d.ts.map +1 -0
  139. package/dist/codegen/model/tournamentResume.js +47 -0
  140. package/dist/credentials/credentials-manager.d.ts +19 -0
  141. package/dist/credentials/credentials-manager.d.ts.map +1 -0
  142. package/dist/credentials/credentials-manager.js +80 -0
  143. package/dist/leek-sync/filelist/cached-filelist.d.ts +13 -0
  144. package/dist/leek-sync/filelist/cached-filelist.d.ts.map +1 -0
  145. package/dist/leek-sync/filelist/cached-filelist.js +49 -0
  146. package/dist/leek-sync/filelist/filelist.d.ts +24 -0
  147. package/dist/leek-sync/filelist/filelist.d.ts.map +1 -0
  148. package/dist/leek-sync/filelist/filelist.js +77 -0
  149. package/dist/leek-sync/filelist/leekfile.d.ts +18 -0
  150. package/dist/leek-sync/filelist/leekfile.d.ts.map +1 -0
  151. package/dist/leek-sync/filelist/leekfile.js +54 -0
  152. package/dist/leek-sync/leek-sync-client.d.ts +13 -0
  153. package/dist/leek-sync/leek-sync-client.d.ts.map +1 -0
  154. package/dist/leek-sync/leek-sync-client.js +95 -0
  155. package/dist/leek-sync/leekfile-source/leekfile-source.d.ts +15 -0
  156. package/dist/leek-sync/leekfile-source/leekfile-source.d.ts.map +1 -0
  157. package/dist/leek-sync/leekfile-source/leekfile-source.js +37 -0
  158. package/dist/leek-sync/leekfile-source/leekwars-source.d.ts +22 -0
  159. package/dist/leek-sync/leekfile-source/leekwars-source.d.ts.map +1 -0
  160. package/dist/leek-sync/leekfile-source/leekwars-source.js +114 -0
  161. package/dist/leek-sync/leekfile-source/localfile-source.d.ts +22 -0
  162. package/dist/leek-sync/leekfile-source/localfile-source.d.ts.map +1 -0
  163. package/dist/leek-sync/leekfile-source/localfile-source.js +184 -0
  164. package/dist/leeksync.d.ts +2 -0
  165. package/dist/leeksync.d.ts.map +1 -0
  166. package/dist/leeksync.js +15 -0
  167. package/dist/login.d.ts +2 -0
  168. package/dist/login.d.ts.map +1 -0
  169. package/dist/login.js +12 -0
  170. package/dist/node-leek-client/leek-wars-client.d.ts +46 -0
  171. package/dist/node-leek-client/leek-wars-client.d.ts.map +1 -0
  172. package/dist/node-leek-client/leek-wars-client.js +541 -0
  173. package/dist/node-leek-client/leekwars-frontend/Item.d.ts +80 -0
  174. package/dist/node-leek-client/leekwars-frontend/Item.d.ts.map +1 -0
  175. package/dist/node-leek-client/leekwars-frontend/Item.js +88 -0
  176. package/dist/node-leek-client/leekwars-frontend/Items.d.ts +5 -0
  177. package/dist/node-leek-client/leekwars-frontend/Items.d.ts.map +1 -0
  178. package/dist/node-leek-client/leekwars-frontend/Items.js +7077 -0
  179. package/dist/node-leek-client/leekwars-frontend/Notification.d.ts +41 -0
  180. package/dist/node-leek-client/leekwars-frontend/Notification.d.ts.map +1 -0
  181. package/dist/node-leek-client/leekwars-frontend/Notification.js +44 -0
  182. package/dist/node-leek-client/leekwars-frontend/SocketMessage.d.ts +76 -0
  183. package/dist/node-leek-client/leekwars-frontend/SocketMessage.d.ts.map +1 -0
  184. package/dist/node-leek-client/leekwars-frontend/SocketMessage.js +88 -0
  185. package/dist/node-leek-client/node-leek-client.d.ts +37 -0
  186. package/dist/node-leek-client/node-leek-client.d.ts.map +1 -0
  187. package/dist/node-leek-client/node-leek-client.js +203 -0
  188. package/package.json +25 -0
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const leekfile_js_1 = __importDefault(require("../filelist/leekfile.js"));
7
+ const leekfile_source_js_1 = __importDefault(require("./leekfile-source.js"));
8
+ class LeekwarsSource extends leekfile_source_js_1.default {
9
+ nodeLeekClient;
10
+ constructor(nodeLeekClient, filelist) {
11
+ super(filelist);
12
+ this.nodeLeekClient = nodeLeekClient;
13
+ }
14
+ async init() {
15
+ // Get an updated list of leekwars files
16
+ const leekwarsFiles = this.nodeLeekClient.getFiles();
17
+ // Remove in leekwarsFilesystem all files that aren't present in leekwars anymore
18
+ this.filelist.removeAllNotIn(Object.keys(leekwarsFiles));
19
+ // fetchAllFiles in leekwars and update leekwarsFiles accordingly (note: use leekwarsFiles to get timestamp on files previously fetched)
20
+ const filesToUpdate = [];
21
+ Object.entries(leekwarsFiles).forEach(([name, fileId]) => {
22
+ if (this.isFolder(name)) {
23
+ const newFolder = leekfile_js_1.default.Folder(name, fileId);
24
+ if (!this.filelist.fileIsSimilar(newFolder)) {
25
+ this.filelist.set(name, newFolder);
26
+ }
27
+ }
28
+ else {
29
+ filesToUpdate.push([fileId, name]);
30
+ }
31
+ });
32
+ // Update all file in local filesystem with new code and timestamp
33
+ await this.fetchFiles(filesToUpdate);
34
+ }
35
+ async fetchFiles(files) {
36
+ const aiNames = {};
37
+ var fetchRequests = {};
38
+ files.forEach(([ai_id, ai_name]) => {
39
+ fetchRequests[ai_id] = this.filelist.getTimestamp(ai_name);
40
+ aiNames[ai_id] = ai_name;
41
+ });
42
+ return this.nodeLeekClient
43
+ .fetchFiles(fetchRequests)
44
+ .then(ais => ais.forEach(aiCode => {
45
+ const name = aiNames[aiCode.id];
46
+ if (name == undefined)
47
+ return;
48
+ this.filelist.set(name, new leekfile_js_1.default(name, aiCode.id, aiCode.code, aiCode.modified));
49
+ }));
50
+ }
51
+ isFolder(filename) {
52
+ return filename.charAt(filename.length - 1) == "/";
53
+ }
54
+ async deleteFile(file) {
55
+ var leekwarsFile = this.filelist.get(file.name);
56
+ if (leekwarsFile != null) {
57
+ if (leekwarsFile.folder)
58
+ return this.nodeLeekClient.deleteFolder(leekwarsFile.id).then(() => super.deleteFile(file));
59
+ return this.nodeLeekClient.deleteFile(leekwarsFile.id).then(() => super.deleteFile(file));
60
+ }
61
+ else {
62
+ console.error("Trying to delete on leekwars " + file.name + ". But this file doesn't exists");
63
+ }
64
+ }
65
+ async updateFile(file) {
66
+ await this.createOrUpdateFileInLeekwars(file);
67
+ }
68
+ async createOrUpdateFileInLeekwars(file) {
69
+ var leekwarsFile = this.filelist.get(file.name);
70
+ if (leekwarsFile != null)
71
+ await this.updateFileInLeekwars(leekwarsFile, file.code);
72
+ else
73
+ await this.createFileInLeekwars(file);
74
+ }
75
+ async updateFileInLeekwars(file, code) {
76
+ if (file.folder)
77
+ return;
78
+ return this.nodeLeekClient.saveFile(file.id, code)
79
+ .then((timestamp) => {
80
+ this.filelist.get(file.name).setCode(file.code);
81
+ this.filelist.get(file.name).timestamp = timestamp;
82
+ });
83
+ }
84
+ async createFileInLeekwars(file) {
85
+ if (file.folder)
86
+ return this.createFolderInLeekwars(file).then((id) => { });
87
+ return this.nodeLeekClient.createFile(await this.getOrCreateFolderId(file.getParentFolder()), file.getFilenameWithoutExtension())
88
+ .then(async (ia) => {
89
+ const newFile = new leekfile_js_1.default(file.name, ia.id, ia.code, 0);
90
+ this.filelist.set(file.name, newFile);
91
+ return this.updateFileInLeekwars(newFile, file.code);
92
+ });
93
+ }
94
+ async createFolderInLeekwars(file) {
95
+ return this.getOrCreateFolderId(file.name);
96
+ }
97
+ async getOrCreateFolderId(dirname) {
98
+ if (this.filelist.contains(dirname)) {
99
+ return this.filelist.get(dirname).id;
100
+ }
101
+ const id = await this.nodeLeekClient.createFolder(await this.getOrCreateFolderId(this.getFolderParentPath(dirname)), this.getFolderName(dirname));
102
+ this.filelist.set(dirname, leekfile_js_1.default.Folder(dirname, id));
103
+ return id;
104
+ }
105
+ getFolderParentPath(dirname) {
106
+ const withoutLeadingSlash = dirname.substring(0, dirname.length - 2);
107
+ return withoutLeadingSlash.substring(0, withoutLeadingSlash.lastIndexOf("/") + 1);
108
+ }
109
+ getFolderName(dirname) {
110
+ const withoutLeadingSlash = dirname.substring(0, dirname.length - 1);
111
+ return withoutLeadingSlash.substring(withoutLeadingSlash.lastIndexOf("/") + 1);
112
+ }
113
+ }
114
+ exports.default = LeekwarsSource;
@@ -0,0 +1,22 @@
1
+ import LeekFile from "../filelist/leekfile.js";
2
+ import LeekfileSource from "./leekfile-source.js";
3
+ import Filelist from "../filelist/filelist.js";
4
+ declare class LocalfileSource extends LeekfileSource {
5
+ private path;
6
+ private observer;
7
+ constructor(path: string, filelist: Filelist);
8
+ init(): Promise<void>;
9
+ deleteFile(file: LeekFile): Promise<void>;
10
+ updateFile(file: LeekFile): Promise<void>;
11
+ private updateFileInLocalFilesystem;
12
+ private createFileInLocalFilesystem;
13
+ private createFolderInLocalFilesystem;
14
+ startWatching(leekfilesource: LeekfileSource): void;
15
+ loadFile(filename: string, lazy?: boolean): LeekFile;
16
+ private getFileTimestamp;
17
+ private exploreFiles;
18
+ private cleanupPath;
19
+ private onChange;
20
+ }
21
+ export default LocalfileSource;
22
+ //# sourceMappingURL=localfile-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localfile-source.d.ts","sourceRoot":"","sources":["../../../src/leek-sync/leekfile-source/localfile-source.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAM/C,cAAM,eAAgB,SAAQ,cAAc;IAExC,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,QAAQ,CAAmB;gBAEvB,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAMtC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBZ,UAAU,CAAC,IAAI,EAAE,QAAQ;IAmBzB,UAAU,CAAC,IAAI,EAAE,QAAQ;YAU1B,2BAA2B;IAIzC,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,6BAA6B;IAO9B,aAAa,CAAC,cAAc,EAAE,cAAc;IAmB5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,OAAe,GAAG,QAAQ;IAMlE,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,QAAQ;CAwCnB;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const leekfile_js_1 = __importDefault(require("../filelist/leekfile.js"));
7
+ const leekfile_source_js_1 = __importDefault(require("./leekfile-source.js"));
8
+ const filelist_js_1 = __importDefault(require("../filelist/filelist.js"));
9
+ const node_fs_1 = __importDefault(require("node:fs"));
10
+ const watcher_1 = __importDefault(require("watcher"));
11
+ const leekfile_js_2 = __importDefault(require("../filelist/leekfile.js"));
12
+ class LocalfileSource extends leekfile_source_js_1.default {
13
+ path;
14
+ observer;
15
+ constructor(path, filelist) {
16
+ super(filelist);
17
+ this.path = path;
18
+ this.observer = [];
19
+ }
20
+ async init() {
21
+ // Get an updated list of local files
22
+ const localFiles = this.exploreFiles(this.path);
23
+ this.filelist.removeAllNotIn(localFiles.getFileNames());
24
+ localFiles.getFiles().forEach(file => {
25
+ if (this.filelist.fileIsSimilar(file))
26
+ return;
27
+ if (file.folder) {
28
+ this.filelist.set(file.name, file);
29
+ }
30
+ else {
31
+ // console.log("File has been created/changed while LeekSync was off : " + file.name + " (" + this.filelist.get(file.name)?.timestamp + " / " + file?.timestamp + ")")
32
+ this.filelist.set(file.name, this.loadFile(file.name));
33
+ }
34
+ });
35
+ }
36
+ async deleteFile(file) {
37
+ if (file.folder)
38
+ node_fs_1.default.rmdir(this.path + file.name, (err) => {
39
+ if (err) {
40
+ throw err;
41
+ }
42
+ else {
43
+ return super.deleteFile(file);
44
+ }
45
+ });
46
+ else
47
+ node_fs_1.default.unlink(this.path + file.name, (err) => {
48
+ if (err) {
49
+ throw err;
50
+ }
51
+ else {
52
+ return super.deleteFile(file);
53
+ }
54
+ });
55
+ }
56
+ async updateFile(file) {
57
+ if (file.name in this.filelist) {
58
+ if (file.folder)
59
+ return;
60
+ return this.updateFileInLocalFilesystem(file);
61
+ }
62
+ else {
63
+ return this.createFileInLocalFilesystem(file);
64
+ }
65
+ }
66
+ async updateFileInLocalFilesystem(file) {
67
+ return this.createFileInLocalFilesystem(file);
68
+ }
69
+ createFileInLocalFilesystem(file) {
70
+ console.log("Creating file : " + this.path + file.name);
71
+ if (file.folder)
72
+ return this.createFolderInLocalFilesystem(file);
73
+ return node_fs_1.default.writeFile(this.path + file.name, file.code, 'utf-8', (err) => {
74
+ if (err)
75
+ throw err;
76
+ this.filelist.set(file.name, new leekfile_js_1.default(file.name, file.id, file.code, this.getFileTimestamp(file.name)));
77
+ });
78
+ }
79
+ createFolderInLocalFilesystem(file) {
80
+ if (!file.folder)
81
+ return;
82
+ if (!node_fs_1.default.existsSync(this.path + file.name)) {
83
+ node_fs_1.default.mkdirSync(this.path + file.name);
84
+ }
85
+ }
86
+ startWatching(leekfilesource) {
87
+ this.observer = [leekfilesource];
88
+ const watcher = new watcher_1.default(this.path, {
89
+ recursive: true,
90
+ renameDetection: true
91
+ });
92
+ const root = require("path").resolve(this.path);
93
+ watcher.on('error', error => {
94
+ console.log(error instanceof Error); // => true, "Error" instances are always provided on "error"
95
+ });
96
+ watcher.on('all', (event, targetPath, targetPathNext) => this.onChange(event, targetPath.substring(root.length), targetPathNext?.substring(root.length)));
97
+ }
98
+ loadFile(filename, lazy = false) {
99
+ if (!lazy)
100
+ console.debug("Loading " + filename);
101
+ console.debug("Loading " + filename);
102
+ return new leekfile_js_1.default(filename, 0, lazy ? "Lazy loaded file, shouldn't be upload to leekwars as such" : node_fs_1.default.readFileSync(this.path + filename, "utf8"), this.getFileTimestamp(filename), false);
103
+ }
104
+ getFileTimestamp(filename) {
105
+ console.log("getFileTimestamp " + filename);
106
+ return node_fs_1.default.statSync(this.path + filename).mtime.getTime();
107
+ }
108
+ exploreFiles(from, filelist = null) {
109
+ from = from.replace("//", "/");
110
+ if (filelist == null) {
111
+ filelist = new filelist_js_1.default();
112
+ filelist.set("/", leekfile_js_1.default.Folder("/", 0));
113
+ }
114
+ if (!node_fs_1.default.existsSync(from)) {
115
+ node_fs_1.default.mkdirSync(from, { recursive: true });
116
+ }
117
+ node_fs_1.default.readdirSync(from, { withFileTypes: true }).forEach(file => {
118
+ const trueFileName = this.cleanupPath(file);
119
+ // Do process hidden files
120
+ if (file.name[0] == ".")
121
+ return;
122
+ filelist.set(trueFileName, file.isDirectory() ?
123
+ new leekfile_js_1.default(trueFileName, 0, "", 0, true)
124
+ : this.loadFile(trueFileName, true));
125
+ if (file.isDirectory()) {
126
+ this.exploreFiles(from + "/" + file.name, filelist);
127
+ }
128
+ });
129
+ return filelist;
130
+ }
131
+ cleanupPath(file) {
132
+ var parentPath = file.parentPath.startsWith("../")
133
+ ? file.parentPath.substring(2)
134
+ : file.parentPath.startsWith("./")
135
+ ? file.parentPath.substring(1)
136
+ : file.parentPath;
137
+ if (!parentPath.endsWith("/")) {
138
+ parentPath = parentPath + "/";
139
+ }
140
+ var parentName = parentPath.substring(this.path.length - 1);
141
+ if (!parentName.endsWith("/")) {
142
+ parentName = parentName + "/";
143
+ }
144
+ if (!parentName.startsWith("/")) {
145
+ parentName = "/" + parentName;
146
+ }
147
+ return parentName + file.name + (file.isDirectory() ? "/" : "");
148
+ }
149
+ onChange(event, path, toPath) {
150
+ switch (event) {
151
+ case "addDir":
152
+ const dirname = path + "/";
153
+ if (!this.filelist.contains(dirname)) {
154
+ console.log("Updating folder " + dirname);
155
+ const file = leekfile_js_2.default.Folder(dirname);
156
+ this.filelist.set(file.name, file);
157
+ this.observer.forEach(observer => observer.updateFile(file).then(() => console.log("Updated folder " + file.name)));
158
+ }
159
+ break;
160
+ case "add":
161
+ case "change":
162
+ if (!this.filelist.fileIsSimilar(this.loadFile(path, true))) {
163
+ console.log("Updating " + path);
164
+ const file = this.loadFile(path);
165
+ this.filelist.set(file.name, file);
166
+ this.observer.forEach(observer => observer.updateFile(file).then(() => console.log("Updated " + file.name)));
167
+ }
168
+ break;
169
+ case "unlinkDir":
170
+ path = path + "/";
171
+ case "unlink":
172
+ if (this.filelist.contains(path)) {
173
+ console.log("Deleting file " + path);
174
+ this.filelist.remove(path);
175
+ this.observer.forEach(observer => observer.deleteFile(new leekfile_js_1.default(path, 0, "", 0)).then(() => console.log("Updated " + path)));
176
+ }
177
+ break;
178
+ default:
179
+ console.log("[" + event + "] @ " + path + " " + (toPath != undefined ? "\n => " + toPath : "")); // => could be any target event: 'add', 'addDir', 'change', 'rename', 'renameDir', 'unlink' or 'unlinkDir'
180
+ break;
181
+ }
182
+ }
183
+ }
184
+ exports.default = LocalfileSource;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=leeksync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leeksync.d.ts","sourceRoot":"","sources":["../src/leeksync.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const credentials_manager_js_1 = require("./credentials/credentials-manager.js");
4
+ const args = require('minimist')(process.argv.slice(2));
5
+ const path = args['path'] ?? args['p'] ?? "./leekscripts";
6
+ const watch = (args['watch'] ?? args['w']) != null;
7
+ const choice = args['choice'] ?? args['c'];
8
+ const readonly = (args['readonly'] ?? args['r']) != null;
9
+ async function leekSync(client, index) {
10
+ await client.syncWith(path, watch, choice);
11
+ }
12
+ // LeekSync on each account
13
+ new credentials_manager_js_1.CredentialsManager(args['credentials'] ?? "credentials.json")
14
+ .forEachAccount(leekSync, readonly)
15
+ .then(() => console.log("LeekSync closed"));
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":""}
package/dist/login.js ADDED
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const credentials_manager_js_1 = require("./credentials/credentials-manager.js");
4
+ const args = require('minimist')(process.argv.slice(2));
5
+ const readonly = (args['readonly'] ?? args['r']) != null;
6
+ async function login(client, index) {
7
+ // await client.buy("50fights", 20);
8
+ }
9
+ // Login on each account
10
+ new credentials_manager_js_1.CredentialsManager(args['credentials'] ?? "credentials.json")
11
+ .forEachAccount(login, readonly)
12
+ .then(() => console.log("LeekSync closed"));
@@ -0,0 +1,46 @@
1
+ import { Farmer } from "../codegen/model/farmer.js";
2
+ import { Aicode } from "../codegen/model/aicode.js";
3
+ import { Opponent } from "../codegen/model/opponent.js";
4
+ import { FightResult } from "../codegen/model/fightResult.js";
5
+ import { CreateFile200ResponseAi } from "../codegen/model/createFile200ResponseAi.js";
6
+ import { FarmerOpponent } from "../codegen/model/farmerOpponent.js";
7
+ import { PublicLeek } from "../codegen/model/publicLeek.js";
8
+ import { Buy200Response } from "../codegen/model/buy200Response.js";
9
+ export declare class LeekWarsClient {
10
+ private apiClient;
11
+ private ready;
12
+ private readonly username;
13
+ private readonly password;
14
+ private readonly readonly;
15
+ private socket;
16
+ private token;
17
+ private phpsessid;
18
+ protected currentRoom: string;
19
+ constructor(username: string, password: string, readonly?: boolean);
20
+ protected loginOnLeekwars(): Promise<Farmer>;
21
+ close(): Promise<void>;
22
+ sleep(delay: number): Promise<void>;
23
+ getLeek(leek_id: number): Promise<PublicLeek | null>;
24
+ buy(item_id: string, quantity?: number): Promise<Buy200Response | null>;
25
+ fetchFiles(requests: {
26
+ [ai: number]: number;
27
+ }): Promise<Array<Aicode>>;
28
+ fetchFile(ai: number, timestamp: number): Promise<Aicode | void>;
29
+ saveFile(ai_id: number, code: string): Promise<number>;
30
+ createFile(folder_id: number, name: string, version?: number): Promise<CreateFile200ResponseAi>;
31
+ createFolder(folder_id: number, name: string): Promise<number>;
32
+ deleteFile(ai_id: number): Promise<void>;
33
+ deleteFolder(folder_id: number): Promise<void>;
34
+ protected getSoloOpponents(leek_id: number): Promise<Opponent[]>;
35
+ protected startSoloFight(leek_id: number, target_id: number): Promise<number>;
36
+ protected getFarmerOpponents(): Promise<FarmerOpponent[]>;
37
+ protected startFarmerFight(target_id: number): Promise<number>;
38
+ getFight(fight_id: number): Promise<FightResult>;
39
+ protected createBossRoom(bossId?: number, locked?: boolean, leeks?: number[]): Promise<void>;
40
+ protected joinBossRoom(roomId: string, leeks?: number[]): Promise<void>;
41
+ startRoomFight(): Promise<void>;
42
+ protected recieveNotification(message: any): Promise<void>;
43
+ protected connectWebSocket(): Promise<void>;
44
+ on_level_up: (leekId: number, level: number, capitalToSpend: number) => void;
45
+ }
46
+ //# sourceMappingURL=leek-wars-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leek-wars-client.d.ts","sourceRoot":"","sources":["../../src/node-leek-client/leek-wars-client.ts"],"names":[],"mappings":"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"}