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.
- package/README.md +109 -0
- package/dist/app.d.ts +1 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +1 -0
- package/dist/autofighter.d.ts +2 -0
- package/dist/autofighter.d.ts.map +1 -0
- package/dist/autofighter.js +27 -0
- package/dist/boss_farming.d.ts +2 -0
- package/dist/boss_farming.d.ts.map +1 -0
- package/dist/boss_farming.js +33 -0
- package/dist/codegen/api/apis.d.ts +12 -0
- package/dist/codegen/api/apis.d.ts.map +1 -0
- package/dist/codegen/api/apis.js +33 -0
- package/dist/codegen/api/defaultApi.d.ts +239 -0
- package/dist/codegen/api/defaultApi.d.ts.map +1 -0
- package/dist/codegen/api/defaultApi.js +1071 -0
- package/dist/codegen/api.d.ts +3 -0
- package/dist/codegen/api.d.ts.map +1 -0
- package/dist/codegen/api.js +19 -0
- package/dist/codegen/model/aicode.d.ts +34 -0
- package/dist/codegen/model/aicode.d.ts.map +1 -0
- package/dist/codegen/model/aicode.js +47 -0
- package/dist/codegen/model/buy200Response.d.ts +27 -0
- package/dist/codegen/model/buy200Response.d.ts.map +1 -0
- package/dist/codegen/model/buy200Response.js +35 -0
- package/dist/codegen/model/buyRequest.d.ts +27 -0
- package/dist/codegen/model/buyRequest.d.ts.map +1 -0
- package/dist/codegen/model/buyRequest.js +35 -0
- package/dist/codegen/model/createFile200Response.d.ts +27 -0
- package/dist/codegen/model/createFile200Response.d.ts.map +1 -0
- package/dist/codegen/model/createFile200Response.js +29 -0
- package/dist/codegen/model/createFile200ResponseAi.d.ts +30 -0
- package/dist/codegen/model/createFile200ResponseAi.d.ts.map +1 -0
- package/dist/codegen/model/createFile200ResponseAi.js +53 -0
- package/dist/codegen/model/createFileRequest.d.ts +31 -0
- package/dist/codegen/model/createFileRequest.d.ts.map +1 -0
- package/dist/codegen/model/createFileRequest.js +44 -0
- package/dist/codegen/model/createFolder200Response.d.ts +26 -0
- package/dist/codegen/model/createFolder200Response.d.ts.map +1 -0
- package/dist/codegen/model/createFolder200Response.js +29 -0
- package/dist/codegen/model/createFolderRequest.d.ts +27 -0
- package/dist/codegen/model/createFolderRequest.d.ts.map +1 -0
- package/dist/codegen/model/createFolderRequest.js +35 -0
- package/dist/codegen/model/credentials.d.ts +31 -0
- package/dist/codegen/model/credentials.d.ts.map +1 -0
- package/dist/codegen/model/credentials.js +44 -0
- package/dist/codegen/model/deleteFileRequest.d.ts +26 -0
- package/dist/codegen/model/deleteFileRequest.d.ts.map +1 -0
- package/dist/codegen/model/deleteFileRequest.js +29 -0
- package/dist/codegen/model/deleteFolderRequest.d.ts +26 -0
- package/dist/codegen/model/deleteFolderRequest.d.ts.map +1 -0
- package/dist/codegen/model/deleteFolderRequest.js +29 -0
- package/dist/codegen/model/farmer.d.ts +110 -0
- package/dist/codegen/model/farmer.d.ts.map +1 -0
- package/dist/codegen/model/farmer.js +299 -0
- package/dist/codegen/model/farmerOpponent.d.ts +35 -0
- package/dist/codegen/model/farmerOpponent.d.ts.map +1 -0
- package/dist/codegen/model/farmerOpponent.js +68 -0
- package/dist/codegen/model/fightResult.d.ts +38 -0
- package/dist/codegen/model/fightResult.d.ts.map +1 -0
- package/dist/codegen/model/fightResult.js +80 -0
- package/dist/codegen/model/fightResume.d.ts +95 -0
- package/dist/codegen/model/fightResume.d.ts.map +1 -0
- package/dist/codegen/model/fightResume.js +182 -0
- package/dist/codegen/model/fightResumeLeeks1Inner.d.ts +27 -0
- package/dist/codegen/model/fightResumeLeeks1Inner.d.ts.map +1 -0
- package/dist/codegen/model/fightResumeLeeks1Inner.js +35 -0
- package/dist/codegen/model/folder.d.ts +31 -0
- package/dist/codegen/model/folder.d.ts.map +1 -0
- package/dist/codegen/model/folder.js +44 -0
- package/dist/codegen/model/garden.d.ts +30 -0
- package/dist/codegen/model/garden.d.ts.map +1 -0
- package/dist/codegen/model/garden.js +32 -0
- package/dist/codegen/model/gardenGarden.d.ts +52 -0
- package/dist/codegen/model/gardenGarden.d.ts.map +1 -0
- package/dist/codegen/model/gardenGarden.js +113 -0
- package/dist/codegen/model/gardenGardenMyCompositionsInner.d.ts +38 -0
- package/dist/codegen/model/gardenGardenMyCompositionsInner.d.ts.map +1 -0
- package/dist/codegen/model/gardenGardenMyCompositionsInner.js +86 -0
- package/dist/codegen/model/gardenGardenMyTeam.d.ts +32 -0
- package/dist/codegen/model/gardenGardenMyTeam.d.ts.map +1 -0
- package/dist/codegen/model/gardenGardenMyTeam.js +50 -0
- package/dist/codegen/model/getFarmerOpponents200Response.d.ts +27 -0
- package/dist/codegen/model/getFarmerOpponents200Response.d.ts.map +1 -0
- package/dist/codegen/model/getFarmerOpponents200Response.js +29 -0
- package/dist/codegen/model/getFilesContentRequest.d.ts +29 -0
- package/dist/codegen/model/getFilesContentRequest.d.ts.map +1 -0
- package/dist/codegen/model/getFilesContentRequest.js +32 -0
- package/dist/codegen/model/getSoloOpponents200Response.d.ts +27 -0
- package/dist/codegen/model/getSoloOpponents200Response.d.ts.map +1 -0
- package/dist/codegen/model/getSoloOpponents200Response.js +29 -0
- package/dist/codegen/model/ia.d.ts +37 -0
- package/dist/codegen/model/ia.d.ts.map +1 -0
- package/dist/codegen/model/ia.js +80 -0
- package/dist/codegen/model/item.d.ts +35 -0
- package/dist/codegen/model/item.d.ts.map +1 -0
- package/dist/codegen/model/item.js +68 -0
- package/dist/codegen/model/leek.d.ts +172 -0
- package/dist/codegen/model/leek.d.ts.map +1 -0
- package/dist/codegen/model/leek.js +350 -0
- package/dist/codegen/model/logindump.d.ts +34 -0
- package/dist/codegen/model/logindump.d.ts.map +1 -0
- package/dist/codegen/model/logindump.js +41 -0
- package/dist/codegen/model/models.d.ts +87 -0
- package/dist/codegen/model/models.d.ts.map +1 -0
- package/dist/codegen/model/models.js +331 -0
- package/dist/codegen/model/opponent.d.ts +32 -0
- package/dist/codegen/model/opponent.d.ts.map +1 -0
- package/dist/codegen/model/opponent.js +50 -0
- package/dist/codegen/model/publicLeek.d.ts +225 -0
- package/dist/codegen/model/publicLeek.d.ts.map +1 -0
- package/dist/codegen/model/publicLeek.js +494 -0
- package/dist/codegen/model/publicLeekAi.d.ts +30 -0
- package/dist/codegen/model/publicLeekAi.d.ts.map +1 -0
- package/dist/codegen/model/publicLeekAi.js +53 -0
- package/dist/codegen/model/publicLeekChipsInner.d.ts +27 -0
- package/dist/codegen/model/publicLeekChipsInner.d.ts.map +1 -0
- package/dist/codegen/model/publicLeekChipsInner.js +35 -0
- package/dist/codegen/model/saveFile200Response.d.ts +29 -0
- package/dist/codegen/model/saveFile200Response.d.ts.map +1 -0
- package/dist/codegen/model/saveFile200Response.js +32 -0
- package/dist/codegen/model/saveFileRequest.d.ts +27 -0
- package/dist/codegen/model/saveFileRequest.d.ts.map +1 -0
- package/dist/codegen/model/saveFileRequest.js +35 -0
- package/dist/codegen/model/startFarmerFightRequest.d.ts +26 -0
- package/dist/codegen/model/startFarmerFightRequest.d.ts.map +1 -0
- package/dist/codegen/model/startFarmerFightRequest.js +29 -0
- package/dist/codegen/model/startSoloFight200Response.d.ts +26 -0
- package/dist/codegen/model/startSoloFight200Response.d.ts.map +1 -0
- package/dist/codegen/model/startSoloFight200Response.js +29 -0
- package/dist/codegen/model/startSoloFightRequest.d.ts +27 -0
- package/dist/codegen/model/startSoloFightRequest.d.ts.map +1 -0
- package/dist/codegen/model/startSoloFightRequest.js +35 -0
- package/dist/codegen/model/team.d.ts +34 -0
- package/dist/codegen/model/team.d.ts.map +1 -0
- package/dist/codegen/model/team.js +62 -0
- package/dist/codegen/model/tournamentResume.d.ts +36 -0
- package/dist/codegen/model/tournamentResume.d.ts.map +1 -0
- package/dist/codegen/model/tournamentResume.js +47 -0
- package/dist/credentials/credentials-manager.d.ts +19 -0
- package/dist/credentials/credentials-manager.d.ts.map +1 -0
- package/dist/credentials/credentials-manager.js +80 -0
- package/dist/leek-sync/filelist/cached-filelist.d.ts +13 -0
- package/dist/leek-sync/filelist/cached-filelist.d.ts.map +1 -0
- package/dist/leek-sync/filelist/cached-filelist.js +49 -0
- package/dist/leek-sync/filelist/filelist.d.ts +24 -0
- package/dist/leek-sync/filelist/filelist.d.ts.map +1 -0
- package/dist/leek-sync/filelist/filelist.js +77 -0
- package/dist/leek-sync/filelist/leekfile.d.ts +18 -0
- package/dist/leek-sync/filelist/leekfile.d.ts.map +1 -0
- package/dist/leek-sync/filelist/leekfile.js +54 -0
- package/dist/leek-sync/leek-sync-client.d.ts +13 -0
- package/dist/leek-sync/leek-sync-client.d.ts.map +1 -0
- package/dist/leek-sync/leek-sync-client.js +95 -0
- package/dist/leek-sync/leekfile-source/leekfile-source.d.ts +15 -0
- package/dist/leek-sync/leekfile-source/leekfile-source.d.ts.map +1 -0
- package/dist/leek-sync/leekfile-source/leekfile-source.js +37 -0
- package/dist/leek-sync/leekfile-source/leekwars-source.d.ts +22 -0
- package/dist/leek-sync/leekfile-source/leekwars-source.d.ts.map +1 -0
- package/dist/leek-sync/leekfile-source/leekwars-source.js +114 -0
- package/dist/leek-sync/leekfile-source/localfile-source.d.ts +22 -0
- package/dist/leek-sync/leekfile-source/localfile-source.d.ts.map +1 -0
- package/dist/leek-sync/leekfile-source/localfile-source.js +184 -0
- package/dist/leeksync.d.ts +2 -0
- package/dist/leeksync.d.ts.map +1 -0
- package/dist/leeksync.js +15 -0
- package/dist/login.d.ts +2 -0
- package/dist/login.d.ts.map +1 -0
- package/dist/login.js +12 -0
- package/dist/node-leek-client/leek-wars-client.d.ts +46 -0
- package/dist/node-leek-client/leek-wars-client.d.ts.map +1 -0
- package/dist/node-leek-client/leek-wars-client.js +541 -0
- package/dist/node-leek-client/leekwars-frontend/Item.d.ts +80 -0
- package/dist/node-leek-client/leekwars-frontend/Item.d.ts.map +1 -0
- package/dist/node-leek-client/leekwars-frontend/Item.js +88 -0
- package/dist/node-leek-client/leekwars-frontend/Items.d.ts +5 -0
- package/dist/node-leek-client/leekwars-frontend/Items.d.ts.map +1 -0
- package/dist/node-leek-client/leekwars-frontend/Items.js +7077 -0
- package/dist/node-leek-client/leekwars-frontend/Notification.d.ts +41 -0
- package/dist/node-leek-client/leekwars-frontend/Notification.d.ts.map +1 -0
- package/dist/node-leek-client/leekwars-frontend/Notification.js +44 -0
- package/dist/node-leek-client/leekwars-frontend/SocketMessage.d.ts +76 -0
- package/dist/node-leek-client/leekwars-frontend/SocketMessage.d.ts.map +1 -0
- package/dist/node-leek-client/leekwars-frontend/SocketMessage.js +88 -0
- package/dist/node-leek-client/node-leek-client.d.ts +37 -0
- package/dist/node-leek-client/node-leek-client.d.ts.map +1 -0
- package/dist/node-leek-client/node-leek-client.js +203 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"leeksync.d.ts","sourceRoot":"","sources":["../src/leeksync.ts"],"names":[],"mappings":""}
|
package/dist/leeksync.js
ADDED
|
@@ -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"));
|
package/dist/login.d.ts
ADDED
|
@@ -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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"}
|