@jtff/miztemplate-lib 2.1.6 → 2.2.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/index.js CHANGED
@@ -1,4 +1,4 @@
1
- const MizTemplateCI = require("./lib/jtff-lib-ci.js");
1
+ const {MizTemplateCI,MizLib} = require("./lib/jtff-lib-ci.js");
2
2
  const build = require("./scripts/build.js");
3
3
  const clean = require("./scripts/clean.js");
4
4
  const ftpupload = require("./scripts/ftpupload.js");
@@ -12,6 +12,7 @@ const templateUpdate = require("./scripts/template-update.js");
12
12
 
13
13
  module.exports = {
14
14
  MizTemplateCI: MizTemplateCI,
15
+ MizLib: MizLib,
15
16
  build:build,
16
17
  clean:clean,
17
18
  ftpupload:ftpupload,
@@ -10,51 +10,9 @@ const { format, parse } = require("lua-json");
10
10
  const ftpClient = require('ftp');
11
11
 
12
12
  class MizTemplateCI{
13
-
14
13
  constructor(config) {
15
14
  this.config = config
16
- }
17
-
18
- injectScripts(tObject, trObject, mrObject, strTitle, scriptFilesArray, timingInSeconds, hexColor) {
19
- let nextIndex = Object.keys(trObject).length + 1;
20
- if (nextIndex === 1) {
21
- tObject['actions'] = {};
22
- tObject['func'] = {};
23
- tObject['conditions'] = {};
24
- tObject['flag'] = {};
25
- trObject = {};
26
- }
27
- let actionSentence = "";
28
- let actionsObject = {};
29
- for (const [index, scriptFile] of scriptFilesArray.entries()) {
30
- actionSentence += "a_do_script_file(getValueResourceByKey(\"" + scriptFile + "\")); "
31
- actionsObject[index + 1] = {
32
- file: scriptFile,
33
- predicate: 'a_do_script_file',
34
- };
35
- mrObject[scriptFile] = scriptFile;
36
- }
37
- actionSentence += "mission.trig.func[" + nextIndex + "]=nil;"
38
- tObject['actions'][nextIndex] = actionSentence;
39
- tObject['func'][nextIndex] = "if mission.trig.conditions[" + nextIndex + "]() then mission.trig.actions[" + nextIndex + "]() end";
40
- tObject['conditions'][nextIndex] = "return(c_time_after(" + timingInSeconds + ") )";
41
- tObject['flag'][nextIndex] = true;
42
- trObject[nextIndex] = {
43
- rules: {
44
- 1: {
45
- coalitionlist: 'red',
46
- seconds: timingInSeconds,
47
- predicate: 'c_time_after',
48
- zone: ''
49
- }
50
- },
51
- eventlist: '',
52
- comment: strTitle,
53
- actions: actionsObject,
54
- predicate: 'triggerOnce',
55
- colorItem: hexColor
56
- };
57
- return { tObject: tObject, trObject: trObject, mrObject: mrObject };
15
+ this.mizlib = new MizLib()
58
16
  }
59
17
 
60
18
  getVersion() {
@@ -104,6 +62,181 @@ class MizTemplateCI{
104
62
  return newVersionObject;
105
63
  }
106
64
 
65
+ getDestinationMizFilePaths() {
66
+ const returnArray = this.config.missionTemplates.map(missionTemplate => {
67
+ return this.config.general.missionFolder + '/'
68
+ + this.config.general.missionPrefix + '_'
69
+ + missionTemplate.theatre + '_'
70
+ + this.config.general.missionSuffix
71
+ + '_' + this.config.general.missionVersion + '.miz'
72
+ });
73
+ return returnArray;
74
+ }
75
+
76
+ getGeneratedMizFilePaths() {
77
+ return fs.readdirSync(this.config.general.missionFolder + '/')
78
+ .filter(file => file.endsWith((".miz")))
79
+ .map(mizFile => {
80
+ return this.config.general.missionFolder + '/' + mizFile;
81
+ });
82
+ }
83
+
84
+ uploadMizFiles(credentials) {
85
+ const destFtpServer = new ftpClient();
86
+ const configObject = this.config;
87
+
88
+ destFtpServer.connect({
89
+ host: credentials.host,
90
+ secure: false,
91
+ user: credentials.user,
92
+ password: credentials.password
93
+ });
94
+ destFtpServer.on('ready', function () {
95
+ destFtpServer.cwd(credentials.folder, function (err, curDir) {
96
+ if (err) throw err;
97
+ Promise.all(
98
+ fs.readdirSync(configObject.general.missionFolder)
99
+ .filter(file => file.endsWith('.pub.json'))
100
+ .map(file => {
101
+ return new Promise((resolve, reject) => {
102
+ // console.log(configObject.general.missionFolder+'/'+file);
103
+ fs.readFile(configObject.general.missionFolder + '/' + file, function (err, data) {
104
+ if (err) reject(err);
105
+ data = JSON.parse(data.toString());
106
+ // console.log(data);
107
+ destFtpServer.put(data.mizFiles, path.basename(data.mizFiles), false, function (err) {
108
+ if (err) reject(err);
109
+ console.log('file ' + path.basename(data.mizFiles) + ' uploaded on DCS Server');
110
+ resolve(path.basename(data.mizFiles));
111
+ });
112
+ });
113
+ })
114
+ })
115
+ ).then(() => {
116
+ destFtpServer.end();
117
+ });
118
+ });
119
+ });
120
+ }
121
+
122
+ publishMizFiles(credentials) {
123
+ const configObject = this.config;
124
+ const jwtClient = new google.auth.JWT(
125
+ credentials.client_email,
126
+ null,
127
+ credentials.private_key,
128
+ configObject.google.scopes
129
+ );
130
+ jwtClient.authorize(function (err, tokens) {
131
+ if (err) {
132
+ console.log(err);
133
+ throw err;
134
+ } else {
135
+ console.log("Successfully connected!");
136
+ const drive = google.drive({ version: 'v3', jwtClient });
137
+ fs.readdirSync(configObject.general.missionFolder)
138
+ .filter(file => file.endsWith('.pub.json'))
139
+ .map(file => {
140
+ // console.log(configObject.general.missionFolder+'/'+file);
141
+ fs.readFile(configObject.general.missionFolder + '/' + file, function (err, data) {
142
+ if (err) throw err;
143
+ data = JSON.parse(data.toString());
144
+ // console.log(data);
145
+ drive.files.list({
146
+ q: `'${data.gdriveFolder}' in parents and trashed = false and name = '${path.basename(data.mizFiles)}'`,
147
+ auth: jwtClient
148
+ }).then(rsp => {
149
+ // console.log(rsp.data.files);
150
+ // console.log(path.basename(data.mizFiles));
151
+ const fileMetadata = {
152
+ 'name': path.basename(data.mizFiles),
153
+ parents: [data.gdriveFolder]
154
+ };
155
+ const media = {
156
+ mimeType: 'application/zip',
157
+ body: fs.createReadStream(data.mizFiles)
158
+ };
159
+ if (rsp.data.files.length > 0) {
160
+ drive.files.update({
161
+ fileId: rsp.data.files[0].id,
162
+ auth: jwtClient,
163
+ media: media
164
+ }, (err, file) => {
165
+ if (err) {
166
+ // Handle error
167
+ console.error(err);
168
+ } else {
169
+ console.log('File updated Id: ', file.id);
170
+ }
171
+ });
172
+ } else {
173
+ drive.files.create({
174
+ resource: fileMetadata,
175
+ media: media,
176
+ auth: jwtClient,
177
+ fields: 'id'
178
+ }, (err, file) => {
179
+ if (err) {
180
+ // Handle error
181
+ console.error(err);
182
+ } else {
183
+ console.log('File created Id: ', file.id);
184
+ }
185
+ });
186
+ }
187
+ });
188
+ });
189
+ });
190
+ }
191
+ });
192
+ }
193
+ }
194
+
195
+ class MizLib{
196
+ constructor() {
197
+ }
198
+ injectScripts(tObject, trObject, mrObject, strTitle, scriptFilesArray, timingInSeconds, hexColor) {
199
+ let nextIndex = Object.keys(trObject).length + 1;
200
+ if (nextIndex === 1) {
201
+ tObject['actions'] = {};
202
+ tObject['func'] = {};
203
+ tObject['conditions'] = {};
204
+ tObject['flag'] = {};
205
+ trObject = {};
206
+ }
207
+ let actionSentence = "";
208
+ let actionsObject = {};
209
+ for (const [index, scriptFile] of scriptFilesArray.entries()) {
210
+ actionSentence += "a_do_script_file(getValueResourceByKey(\"" + scriptFile + "\")); "
211
+ actionsObject[index + 1] = {
212
+ file: scriptFile,
213
+ predicate: 'a_do_script_file',
214
+ };
215
+ mrObject[scriptFile] = scriptFile;
216
+ }
217
+ actionSentence += "mission.trig.func[" + nextIndex + "]=nil;"
218
+ tObject['actions'][nextIndex] = actionSentence;
219
+ tObject['func'][nextIndex] = "if mission.trig.conditions[" + nextIndex + "]() then mission.trig.actions[" + nextIndex + "]() end";
220
+ tObject['conditions'][nextIndex] = "return(c_time_after(" + timingInSeconds + ") )";
221
+ tObject['flag'][nextIndex] = true;
222
+ trObject[nextIndex] = {
223
+ rules: {
224
+ 1: {
225
+ coalitionlist: 'red',
226
+ seconds: timingInSeconds,
227
+ predicate: 'c_time_after',
228
+ zone: ''
229
+ }
230
+ },
231
+ eventlist: '',
232
+ comment: strTitle,
233
+ actions: actionsObject,
234
+ predicate: 'triggerOnce',
235
+ colorItem: hexColor
236
+ };
237
+ return { tObject: tObject, trObject: trObject, mrObject: mrObject };
238
+ }
239
+
107
240
  async mizOpen(mizPath) {
108
241
  var MizFile = new jszip();
109
242
  const mizData = fs.readFileSync(mizPath);
@@ -360,135 +493,6 @@ class MizTemplateCI{
360
493
  let luaTable = 'return { \n' + await this.mizOpenMapResource(await this.mizOpen(MizPath)) + ' }';
361
494
  return parse(luaTable).mapResource;
362
495
  }
363
-
364
- getDestinationMizFilePaths() {
365
- const returnArray = this.config.missionTemplates.map(missionTemplate => {
366
- return this.config.general.missionFolder + '/'
367
- + this.config.general.missionPrefix + '_'
368
- + missionTemplate.theatre + '_'
369
- + this.config.general.missionSuffix
370
- + '_' + this.config.general.missionVersion + '.miz'
371
- });
372
- return returnArray;
373
- }
374
-
375
- getGeneratedMizFilePaths() {
376
- return fs.readdirSync(this.config.general.missionFolder + '/')
377
- .filter(file => file.endsWith((".miz")))
378
- .map(mizFile => {
379
- return this.config.general.missionFolder + '/' + mizFile;
380
- });
381
- }
382
-
383
- uploadMizFiles(credentials) {
384
- const destFtpServer = new ftpClient();
385
- const configObject = this.config;
386
-
387
- destFtpServer.connect({
388
- host: credentials.host,
389
- secure: false,
390
- user: credentials.user,
391
- password: credentials.password
392
- });
393
- destFtpServer.on('ready', function () {
394
- destFtpServer.cwd(credentials.folder, function (err, curDir) {
395
- if (err) throw err;
396
- Promise.all(
397
- fs.readdirSync(configObject.general.missionFolder)
398
- .filter(file => file.endsWith('.pub.json'))
399
- .map(file => {
400
- return new Promise((resolve, reject) => {
401
- // console.log(configObject.general.missionFolder+'/'+file);
402
- fs.readFile(configObject.general.missionFolder + '/' + file, function (err, data) {
403
- if (err) reject(err);
404
- data = JSON.parse(data.toString());
405
- // console.log(data);
406
- destFtpServer.put(data.mizFiles, path.basename(data.mizFiles), false, function (err) {
407
- if (err) reject(err);
408
- console.log('file ' + path.basename(data.mizFiles) + ' uploaded on DCS Server');
409
- resolve(path.basename(data.mizFiles));
410
- });
411
- });
412
- })
413
- })
414
- ).then(() => {
415
- destFtpServer.end();
416
- });
417
- });
418
- });
419
- }
420
-
421
- publishMizFiles(credentials) {
422
- const configObject = this.config;
423
- const jwtClient = new google.auth.JWT(
424
- credentials.client_email,
425
- null,
426
- credentials.private_key,
427
- configObject.google.scopes
428
- );
429
- jwtClient.authorize(function (err, tokens) {
430
- if (err) {
431
- console.log(err);
432
- throw err;
433
- } else {
434
- console.log("Successfully connected!");
435
- const drive = google.drive({ version: 'v3', jwtClient });
436
- fs.readdirSync(configObject.general.missionFolder)
437
- .filter(file => file.endsWith('.pub.json'))
438
- .map(file => {
439
- // console.log(configObject.general.missionFolder+'/'+file);
440
- fs.readFile(configObject.general.missionFolder + '/' + file, function (err, data) {
441
- if (err) throw err;
442
- data = JSON.parse(data.toString());
443
- // console.log(data);
444
- drive.files.list({
445
- q: `'${data.gdriveFolder}' in parents and trashed = false and name = '${path.basename(data.mizFiles)}'`,
446
- auth: jwtClient
447
- }).then(rsp => {
448
- // console.log(rsp.data.files);
449
- // console.log(path.basename(data.mizFiles));
450
- const fileMetadata = {
451
- 'name': path.basename(data.mizFiles),
452
- parents: [data.gdriveFolder]
453
- };
454
- const media = {
455
- mimeType: 'application/zip',
456
- body: fs.createReadStream(data.mizFiles)
457
- };
458
- if (rsp.data.files.length > 0) {
459
- drive.files.update({
460
- fileId: rsp.data.files[0].id,
461
- auth: jwtClient,
462
- media: media
463
- }, (err, file) => {
464
- if (err) {
465
- // Handle error
466
- console.error(err);
467
- } else {
468
- console.log('File updated Id: ', file.id);
469
- }
470
- });
471
- } else {
472
- drive.files.create({
473
- resource: fileMetadata,
474
- media: media,
475
- auth: jwtClient,
476
- fields: 'id'
477
- }, (err, file) => {
478
- if (err) {
479
- // Handle error
480
- console.error(err);
481
- } else {
482
- console.log('File created Id: ', file.id);
483
- }
484
- });
485
- }
486
- });
487
- });
488
- });
489
- }
490
- });
491
- }
492
496
  }
493
497
 
494
- module.exports = MizTemplateCI;
498
+ module.exports = {MizTemplateCI, MizLib};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jtff/miztemplate-lib",
3
- "version": "2.1.6",
3
+ "version": "2.2.0",
4
4
  "description": "JTFF mission template library",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -31,10 +31,10 @@
31
31
  "fs": "^0.0.1-security",
32
32
  "ftp": "^0.3.10",
33
33
  "googleapis": "^92.0.0",
34
- "jszip": "^3.7.1",
35
- "lua-json": "^1.0.0",
34
+ "jszip": "^3.10.1",
35
+ "lua-json": "^1.0.1",
36
36
  "path": "^0.12.7",
37
37
  "prompt": "^1.3.0",
38
- "util": "^0.12.4"
38
+ "util": "^0.12.5"
39
39
  }
40
40
  }
package/scripts/build.js CHANGED
@@ -3,7 +3,7 @@ const fs = require("fs");
3
3
  function build(jtffci) {
4
4
  fs.mkdirSync(jtffci.config.general.missionFolder, { recursive: true });
5
5
  jtffci.config.missionTemplates.forEach(async missionTemplate => {
6
- await jtffci.mizUpdate([
6
+ await jtffci.mizlib.mizUpdate([
7
7
  missionTemplate.prefix,
8
8
  '_',
9
9
  missionTemplate.theatre,
@@ -116,15 +116,15 @@ function injectScripts(jtffci, env_mission) {
116
116
  console.log(' inject_mission specific scripts: ' + (/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_mission));
117
117
  console.log(' inject_radio_presets scripts: ' + (/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_radio_presets));
118
118
 
119
- const zip = await jtffci.mizOpen(env_mission);
120
- jtffci.mizUpdateSrcLuaFiles(zip);
121
- jtffci.mizUpdateLibLuaFiles(zip);
119
+ const zip = await jtffci.mizlib.mizOpen(env_mission);
120
+ jtffci.mizlib.mizUpdateSrcLuaFiles(zip);
121
+ jtffci.mizlib.mizUpdateLibLuaFiles(zip);
122
122
  // injection des fichiers son Generaux
123
123
  // const generalSoundFolder = zip.remove('General').folder('General');
124
- // await jtffci.addFilesToZip(generalSoundFolder, 'resources/sounds/General', fs.readdirSync('resources/sounds/General'));
124
+ // await jtffci.mizlib.addFilesToZip(generalSoundFolder, 'resources/sounds/General', fs.readdirSync('resources/sounds/General'));
125
125
  // injection des fichiers son Misc
126
126
  const generalSoundFolder = zip.remove('Misc').folder('Misc');
127
- await jtffci.addFilesToZip(generalSoundFolder, 'resources/sounds/Misc', fs.readdirSync('resources/sounds/Misc'));
127
+ await jtffci.mizlib.addFilesToZip(generalSoundFolder, 'resources/sounds/Misc', fs.readdirSync('resources/sounds/Misc'));
128
128
 
129
129
  const inputZip = await zip.generateAsync({
130
130
  type: 'nodebuffer',
@@ -144,7 +144,7 @@ function injectScripts(jtffci, env_mission) {
144
144
  inputZip);
145
145
 
146
146
 
147
- const missionObject = await jtffci.getMissionObjectFromMiz(
147
+ const missionObject = await jtffci.mizlib.getMissionObjectFromMiz(
148
148
  [
149
149
  jtffci.config.general.missionFolder,
150
150
  "/",
@@ -153,7 +153,7 @@ function injectScripts(jtffci, env_mission) {
153
153
  path.basename(env_mission)
154
154
  ].join("")
155
155
  );
156
- let mapResourceObject = await jtffci.getMapResourceObjectFromMiz(
156
+ let mapResourceObject = await jtffci.mizlib.getMapResourceObjectFromMiz(
157
157
  [
158
158
  jtffci.config.general.missionFolder,
159
159
  "/",
@@ -167,8 +167,21 @@ function injectScripts(jtffci, env_mission) {
167
167
  mapResourceObject = {};
168
168
  }
169
169
  }
170
+ // injection SplashDamage
171
+ let tuple = jtffci.mizlib.injectScripts(
172
+ missionObject['trig'],
173
+ missionObject['trigrules'],
174
+ mapResourceObject,
175
+ 'SplashDamage load',
176
+ ['Splash_Damage_2_0.lua'],
177
+ 9,
178
+ '0x008000ff'
179
+ );
180
+ missionObject['trig'] = tuple.tObject;
181
+ missionObject['trigrules'] = tuple.trObject;
182
+ mapResourceObject = tuple.mrObject;
170
183
  // injection Moose
171
- let tuple = jtffci.injectScripts(
184
+ tuple = jtffci.mizlib.injectScripts(
172
185
  missionObject['trig'],
173
186
  missionObject['trigrules'],
174
187
  mapResourceObject,
@@ -181,7 +194,7 @@ function injectScripts(jtffci, env_mission) {
181
194
  missionObject['trigrules'] = tuple.trObject;
182
195
  mapResourceObject = tuple.mrObject;
183
196
  // injection Mist
184
- tuple = jtffci.injectScripts(
197
+ tuple = jtffci.mizlib.injectScripts(
185
198
  missionObject['trig'],
186
199
  missionObject['trigrules'],
187
200
  mapResourceObject,
@@ -194,7 +207,7 @@ function injectScripts(jtffci, env_mission) {
194
207
  missionObject['trigrules'] = tuple.trObject;
195
208
  mapResourceObject = tuple.mrObject;
196
209
  // injection Skynet
197
- tuple = jtffci.injectScripts(
210
+ tuple = jtffci.mizlib.injectScripts(
198
211
  missionObject['trig'],
199
212
  missionObject['trigrules'],
200
213
  mapResourceObject,
@@ -207,7 +220,7 @@ function injectScripts(jtffci, env_mission) {
207
220
  missionObject['trigrules'] = tuple.trObject;
208
221
  mapResourceObject = tuple.mrObject;
209
222
  // injection Librairies JTFF
210
- tuple = jtffci.injectScripts(
223
+ tuple = jtffci.mizlib.injectScripts(
211
224
  missionObject['trig'],
212
225
  missionObject['trigrules'],
213
226
  mapResourceObject,
@@ -227,7 +240,7 @@ function injectScripts(jtffci, env_mission) {
227
240
  },
228
241
  );
229
242
  // injection de la gestion des Set_Clients
230
- tuple = jtffci.injectScripts(
243
+ tuple = jtffci.mizlib.injectScripts(
231
244
  missionObject['trig'],
232
245
  missionObject['trigrules'],
233
246
  mapResourceObject,
@@ -251,7 +264,7 @@ function injectScripts(jtffci, env_mission) {
251
264
  objectName: "OnDemandTankersConfig"
252
265
  },
253
266
  );
254
- tuple = jtffci.injectScripts(
267
+ tuple = jtffci.mizlib.injectScripts(
255
268
  missionObject['trig'],
256
269
  missionObject['trigrules'],
257
270
  mapResourceObject,
@@ -266,7 +279,7 @@ function injectScripts(jtffci, env_mission) {
266
279
  }
267
280
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_airboss)) {
268
281
  // injection des fichiers son Airboss
269
- const zip = await jtffci.mizOpen([
282
+ const zip = await jtffci.mizlib.mizOpen([
270
283
  jtffci.config.general.missionFolder,
271
284
  "/",
272
285
  path.parse(env_mission).name,
@@ -274,7 +287,7 @@ function injectScripts(jtffci, env_mission) {
274
287
  path.basename(env_mission)
275
288
  ].join(""));
276
289
  const airbossSoundFolder = zip.remove('AIRBOSS').folder('AIRBOSS');
277
- await jtffci.addFilesToZip(airbossSoundFolder, 'resources/sounds/AIRBOSS', fs.readdirSync('resources/sounds/AIRBOSS'));
290
+ await jtffci.mizlib.addFilesToZip(airbossSoundFolder, 'resources/sounds/AIRBOSS', fs.readdirSync('resources/sounds/AIRBOSS'));
278
291
  const inputZip = await zip.generateAsync({
279
292
  type: 'nodebuffer',
280
293
  streamFiles: true,
@@ -301,7 +314,7 @@ function injectScripts(jtffci, env_mission) {
301
314
  objectName: "PedrosConfig"
302
315
  },
303
316
  );
304
- tuple = jtffci.injectScripts(
317
+ tuple = jtffci.mizlib.injectScripts(
305
318
  missionObject['trig'],
306
319
  missionObject['trigrules'],
307
320
  mapResourceObject,
@@ -321,7 +334,7 @@ function injectScripts(jtffci, env_mission) {
321
334
  objectName: "BeaconsConfig"
322
335
  },
323
336
  );
324
- tuple = jtffci.injectScripts(
337
+ tuple = jtffci.mizlib.injectScripts(
325
338
  missionObject['trig'],
326
339
  missionObject['trigrules'],
327
340
  mapResourceObject,
@@ -345,7 +358,7 @@ function injectScripts(jtffci, env_mission) {
345
358
  objectName: "AwacsOnDemandConfig"
346
359
  },
347
360
  );
348
- tuple = jtffci.injectScripts(
361
+ tuple = jtffci.mizlib.injectScripts(
349
362
  missionObject['trig'],
350
363
  missionObject['trigrules'],
351
364
  mapResourceObject,
@@ -360,7 +373,7 @@ function injectScripts(jtffci, env_mission) {
360
373
  }
361
374
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_atis)) {
362
375
  // injection des fichiers son ATIS
363
- // const zip = await jtffci.mizOpen([
376
+ // const zip = await jtffci.mizlib.mizOpen([
364
377
  // jtffci.config.general.missionFolder,
365
378
  // "/",
366
379
  // path.parse(env_mission).name,
@@ -368,7 +381,7 @@ function injectScripts(jtffci, env_mission) {
368
381
  // path.basename(env_mission)
369
382
  // ].join(""));
370
383
  // const atisSoundFolder = zip.remove('ATIS').folder('ATIS');
371
- // await jtffci.addFilesToZip(atisSoundFolder, 'resources/sounds/ATIS', fs.readdirSync('resources/sounds/ATIS'));
384
+ // await jtffci.mizlib.addFilesToZip(atisSoundFolder, 'resources/sounds/ATIS', fs.readdirSync('resources/sounds/ATIS'));
372
385
  // const inputZip = await zip.generateAsync({
373
386
  // type: 'nodebuffer',
374
387
  // streamFiles: true,
@@ -391,7 +404,7 @@ function injectScripts(jtffci, env_mission) {
391
404
  objectName: "AtisConfig"
392
405
  },
393
406
  );
394
- tuple = jtffci.injectScripts(
407
+ tuple = jtffci.mizlib.injectScripts(
395
408
  missionObject['trig'],
396
409
  missionObject['trigrules'],
397
410
  mapResourceObject,
@@ -427,7 +440,7 @@ function injectScripts(jtffci, env_mission) {
427
440
  objectName: "InterceptConfig"
428
441
  },
429
442
  );
430
- tuple = jtffci.injectScripts(
443
+ tuple = jtffci.mizlib.injectScripts(
431
444
  missionObject['trig'],
432
445
  missionObject['trigrules'],
433
446
  mapResourceObject,
@@ -442,7 +455,7 @@ function injectScripts(jtffci, env_mission) {
442
455
  }
443
456
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_Logistics)) {
444
457
  // injection des fichiers son CTLD
445
- const zip = await jtffci.mizOpen([
458
+ const zip = await jtffci.mizlib.mizOpen([
446
459
  jtffci.config.general.missionFolder,
447
460
  "/",
448
461
  path.parse(env_mission).name,
@@ -450,7 +463,7 @@ function injectScripts(jtffci, env_mission) {
450
463
  path.basename(env_mission)
451
464
  ].join(""));
452
465
  const rangeSoundFolder = zip.remove('CTLD').folder('CTLD');
453
- await jtffci.addFilesToZip(rangeSoundFolder, 'resources/sounds/CTLD', fs.readdirSync('resources/sounds/CTLD'));
466
+ await jtffci.mizlib.addFilesToZip(rangeSoundFolder, 'resources/sounds/CTLD', fs.readdirSync('resources/sounds/CTLD'));
454
467
  const inputZip = await zip.generateAsync({
455
468
  type: 'nodebuffer',
456
469
  streamFiles: true,
@@ -473,7 +486,7 @@ function injectScripts(jtffci, env_mission) {
473
486
  objectName: "CTLDConfig"
474
487
  },
475
488
  );
476
- tuple = jtffci.injectScripts(
489
+ tuple = jtffci.mizlib.injectScripts(
477
490
  missionObject['trig'],
478
491
  missionObject['trigrules'],
479
492
  mapResourceObject,
@@ -488,7 +501,7 @@ function injectScripts(jtffci, env_mission) {
488
501
  }
489
502
  if ((/^y\b|o\b|yes\b|oui\b/i).test(prompt_result.inject_A2G)) {
490
503
  // injection des fichiers son Range
491
- // const zip = await jtffci.mizOpen([
504
+ // const zip = await jtffci.mizlib.mizOpen([
492
505
  // jtffci.config.general.missionFolder,
493
506
  // "/",
494
507
  // path.parse(env_mission).name,
@@ -496,7 +509,7 @@ function injectScripts(jtffci, env_mission) {
496
509
  // path.basename(env_mission)
497
510
  // ].join(""));
498
511
  // const rangeSoundFolder = zip.remove('RANGE').folder('RANGE');
499
- // await jtffci.addFilesToZip(rangeSoundFolder, 'resources/sounds/RANGE', fs.readdirSync('resources/sounds/RANGE'));
512
+ // await jtffci.mizlib.addFilesToZip(rangeSoundFolder, 'resources/sounds/RANGE', fs.readdirSync('resources/sounds/RANGE'));
500
513
  // const inputZip = await zip.generateAsync({
501
514
  // type: 'nodebuffer',
502
515
  // streamFiles: true,
@@ -539,7 +552,7 @@ function injectScripts(jtffci, env_mission) {
539
552
  objectName: "SkynetConfig"
540
553
  },
541
554
  );
542
- tuple = jtffci.injectScripts(
555
+ tuple = jtffci.mizlib.injectScripts(
543
556
  missionObject['trig'],
544
557
  missionObject['trigrules'],
545
558
  mapResourceObject,
@@ -561,7 +574,7 @@ function injectScripts(jtffci, env_mission) {
561
574
  "/src/200-mission.lua"
562
575
  ].join("")
563
576
  );
564
- const zip = await jtffci.mizOpen([
577
+ const zip = await jtffci.mizlib.mizOpen([
565
578
  jtffci.config.general.missionFolder,
566
579
  "/",
567
580
  path.parse(env_mission).name,
@@ -569,7 +582,7 @@ function injectScripts(jtffci, env_mission) {
569
582
  path.basename(env_mission)
570
583
  ].join(""));
571
584
 
572
- jtffci.mizUpdateLuaFile(zip, [
585
+ jtffci.mizlib.mizUpdateLuaFile(zip, [
573
586
  jtffci.config.general.missionFolder,
574
587
  "/",
575
588
  path.parse(env_mission).name,
@@ -592,7 +605,7 @@ function injectScripts(jtffci, env_mission) {
592
605
  path.basename(env_mission)
593
606
  ].join(""),
594
607
  inputZip);
595
- tuple = jtffci.injectScripts(
608
+ tuple = jtffci.mizlib.injectScripts(
596
609
  missionObject['trig'],
597
610
  missionObject['trigrules'],
598
611
  mapResourceObject,
@@ -614,14 +627,14 @@ function injectScripts(jtffci, env_mission) {
614
627
  "/",
615
628
  path.basename(env_mission)
616
629
  ].join("") + ": injecting radio presets declared in resources/radios/" + path.parse(env_mission).name);
617
- const zip = await jtffci.mizOpen([
630
+ const zip = await jtffci.mizlib.mizOpen([
618
631
  jtffci.config.general.missionFolder,
619
632
  "/",
620
633
  path.parse(env_mission).name,
621
634
  "/",
622
635
  path.basename(env_mission)
623
636
  ].join(""));
624
- await jtffci.mizUpdateRadioPresets(zip, 'resources/radios/' + path.parse(env_mission).name);
637
+ await jtffci.mizlib.mizUpdateRadioPresets(zip, 'resources/radios/' + path.parse(env_mission).name);
625
638
  }
626
639
  for (let settingsObject of settingsArray) {
627
640
  fs.copyFileSync(
@@ -638,7 +651,7 @@ function injectScripts(jtffci, env_mission) {
638
651
  ].join("")
639
652
  );
640
653
  }
641
- await jtffci.mizInjectSettingsFolder(
654
+ await jtffci.mizlib.mizInjectSettingsFolder(
642
655
  [
643
656
  jtffci.config.general.missionFolder,
644
657
  "/",
@@ -654,7 +667,7 @@ function injectScripts(jtffci, env_mission) {
654
667
  ].join("")
655
668
  );
656
669
  if (settingsArray.length > 0) {
657
- tuple = jtffci.injectScripts(
670
+ tuple = jtffci.mizlib.injectScripts(
658
671
  missionObject['trig'],
659
672
  missionObject['trigrules'],
660
673
  mapResourceObject,
@@ -668,7 +681,7 @@ function injectScripts(jtffci, env_mission) {
668
681
  mapResourceObject = tuple.mrObject;
669
682
  }
670
683
  // Sauvegarde de la mission avec scripts injectés
671
- await jtffci.mizInjectMissionDataFile(
684
+ await jtffci.mizlib.mizInjectMissionDataFile(
672
685
  [
673
686
  jtffci.config.general.missionFolder,
674
687
  "/",
@@ -678,7 +691,7 @@ function injectScripts(jtffci, env_mission) {
678
691
  ].join(""),
679
692
  { mission: missionObject }
680
693
  );
681
- await jtffci.mizInjectMapResourceFile(
694
+ await jtffci.mizlib.mizInjectMapResourceFile(
682
695
  [
683
696
  jtffci.config.general.missionFolder,
684
697
  "/",
@@ -3,7 +3,7 @@ const fs = require("fs");
3
3
  function templateUpdate(jtffci) {
4
4
  fs.mkdirSync(jtffci.config.general.missionFolder, { recursive: true });
5
5
  jtffci.config.missionTemplates.map(async missionTemplate => {
6
- await jtffci.mizUpdate([
6
+ await jtffci.mizlib.mizUpdate([
7
7
  missionTemplate.prefix,
8
8
  '_',
9
9
  missionTemplate.theatre,