@lotus-tree/fg-notation 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. package/README.md +29 -19
  2. package/dev/img/basic/+.png +0 -0
  3. package/dev/img/basic/1.png +0 -0
  4. package/dev/img/basic/12369.png +0 -0
  5. package/dev/img/basic/1237.png +0 -0
  6. package/dev/img/basic/1632143.png +0 -0
  7. package/dev/img/basic/2.png +0 -0
  8. package/dev/img/basic/21.png +0 -0
  9. package/dev/img/basic/214.png +0 -0
  10. package/dev/img/basic/21478.png +0 -0
  11. package/dev/img/basic/23.png +0 -0
  12. package/dev/img/basic/236.png +0 -0
  13. package/dev/img/basic/23698.png +0 -0
  14. package/dev/img/basic/28.png +0 -0
  15. package/dev/img/basic/3.png +0 -0
  16. package/dev/img/basic/32147.png +0 -0
  17. package/dev/img/basic/3219.png +0 -0
  18. package/dev/img/basic/341236.png +0 -0
  19. package/dev/img/basic/346.png +0 -0
  20. package/dev/img/basic/360.png +0 -0
  21. package/dev/img/basic/4.png +0 -0
  22. package/dev/img/basic/41236.png +0 -0
  23. package/dev/img/basic/421.png +0 -0
  24. package/dev/img/basic/46.png +0 -0
  25. package/dev/img/basic/4618346.png +0 -0
  26. package/dev/img/basic/47896.png +0 -0
  27. package/dev/img/basic/5.png +0 -0
  28. package/dev/img/basic/6.png +0 -0
  29. package/dev/img/basic/623.png +0 -0
  30. package/dev/img/basic/63214.png +0 -0
  31. package/dev/img/basic/64.png +0 -0
  32. package/dev/img/basic/6428.png +0 -0
  33. package/dev/img/basic/69874.png +0 -0
  34. package/dev/img/basic/7.png +0 -0
  35. package/dev/img/basic/7891.png +0 -0
  36. package/dev/img/basic/8.png +0 -0
  37. package/dev/img/basic/81237.png +0 -0
  38. package/dev/img/basic/82.png +0 -0
  39. package/dev/img/basic/87412.png +0 -0
  40. package/dev/img/basic/89632.png +0 -0
  41. package/dev/img/basic/9.png +0 -0
  42. package/dev/img/basic/[1].png +0 -0
  43. package/dev/img/basic/[2].png +0 -0
  44. package/dev/img/basic/[2]8.png +0 -0
  45. package/dev/img/basic/[3].png +0 -0
  46. package/dev/img/basic/[4].png +0 -0
  47. package/dev/img/basic/[6].png +0 -0
  48. package/dev/img/basic/[7].png +0 -0
  49. package/dev/img/basic/[8].png +0 -0
  50. package/dev/img/basic/[9].png +0 -0
  51. package/dev/img/basic/air.png +0 -0
  52. package/dev/img/basic/doubleforward.png +0 -0
  53. package/dev/img/credits.txt +4 -0
  54. package/dev/img/games/bb/a.png +0 -0
  55. package/dev/img/games/bb/b.png +0 -0
  56. package/dev/img/games/bb/c.png +0 -0
  57. package/dev/img/games/bb/d.png +0 -0
  58. package/dev/img/games/bbtag/a.png +0 -0
  59. package/dev/img/games/bbtag/b.png +0 -0
  60. package/dev/img/games/bbtag/c.png +0 -0
  61. package/dev/img/games/bbtag/d.png +0 -0
  62. package/dev/img/games/bbtag/p.png +0 -0
  63. package/dev/img/games/dbz/a1.png +0 -0
  64. package/dev/img/games/dbz/a2.png +0 -0
  65. package/dev/img/games/dbz/h.png +0 -0
  66. package/dev/img/games/dbz/l.png +0 -0
  67. package/dev/img/games/dbz/m.png +0 -0
  68. package/dev/img/games/dbz/s.png +0 -0
  69. package/dev/img/games/dnf/a.png +0 -0
  70. package/dev/img/games/dnf/as.png +0 -0
  71. package/dev/img/games/dnf/b.png +0 -0
  72. package/dev/img/games/dnf/g.png +0 -0
  73. package/dev/img/games/dnf/ms.png +0 -0
  74. package/dev/img/games/dnf/s.png +0 -0
  75. package/dev/img/games/gbf/g.png +0 -0
  76. package/dev/img/games/gbf/h.png +0 -0
  77. package/dev/img/games/gbf/l.png +0 -0
  78. package/dev/img/games/gbf/m.png +0 -0
  79. package/dev/img/games/gbf/s.png +0 -0
  80. package/dev/img/games/gg/d.png +0 -0
  81. package/dev/img/games/gg/hs.png +0 -0
  82. package/dev/img/games/gg/k.png +0 -0
  83. package/dev/img/games/gg/p.png +0 -0
  84. package/dev/img/games/gg/rc.png +0 -0
  85. package/dev/img/games/gg/s.png +0 -0
  86. package/dev/img/games/kof/a.png +0 -0
  87. package/dev/img/games/kof/b.png +0 -0
  88. package/dev/img/games/kof/c.png +0 -0
  89. package/dev/img/games/kof/d.png +0 -0
  90. package/dev/img/games/kof/max.png +0 -0
  91. package/dev/img/games/mk/1.png +0 -0
  92. package/dev/img/games/mk/2.png +0 -0
  93. package/dev/img/games/mk/3.png +0 -0
  94. package/dev/img/games/mk/4.png +0 -0
  95. package/dev/img/games/sc/[a].png +0 -0
  96. package/dev/img/games/sc/[b].png +0 -0
  97. package/dev/img/games/sc/[g].png +0 -0
  98. package/dev/img/games/sc/[k].png +0 -0
  99. package/dev/img/games/sc/a.png +0 -0
  100. package/dev/img/games/sc/b.png +0 -0
  101. package/dev/img/games/sc/g.png +0 -0
  102. package/dev/img/games/sc/k.png +0 -0
  103. package/dev/img/games/sf/hk.png +0 -0
  104. package/dev/img/games/sf/hp.png +0 -0
  105. package/dev/img/games/sf/j..png +0 -0
  106. package/dev/img/games/sf/lk.png +0 -0
  107. package/dev/img/games/sf/lp.png +0 -0
  108. package/dev/img/games/sf/max.png +0 -0
  109. package/dev/img/games/sf/mk.png +0 -0
  110. package/dev/img/games/sf/mp.png +0 -0
  111. package/dev/img/games/sf/tap.png +0 -0
  112. package/dev/img/games/sg/hk.png +0 -0
  113. package/dev/img/games/sg/hp.png +0 -0
  114. package/dev/img/games/sg/k.png +0 -0
  115. package/dev/img/games/sg/lk.png +0 -0
  116. package/dev/img/games/sg/lp.png +0 -0
  117. package/dev/img/games/sg/mk.png +0 -0
  118. package/dev/img/games/sg/mp.png +0 -0
  119. package/dev/img/games/sg/p.png +0 -0
  120. package/dev/img/games/tfh/a.png +0 -0
  121. package/dev/img/games/tfh/b.png +0 -0
  122. package/dev/img/games/tfh/c.png +0 -0
  123. package/dev/img/games/tfh/d.png +0 -0
  124. package/dev/img/games/tkn/1.png +0 -0
  125. package/dev/img/games/tkn/12.png +0 -0
  126. package/dev/img/games/tkn/1234.png +0 -0
  127. package/dev/img/games/tkn/13.png +0 -0
  128. package/dev/img/games/tkn/14.png +0 -0
  129. package/dev/img/games/tkn/2.png +0 -0
  130. package/dev/img/games/tkn/23.png +0 -0
  131. package/dev/img/games/tkn/24.png +0 -0
  132. package/dev/img/games/tkn/3.png +0 -0
  133. package/dev/img/games/tkn/34.png +0 -0
  134. package/dev/img/games/tkn/4.png +0 -0
  135. package/dev/img/games/tkn/b.png +0 -0
  136. package/dev/img/games/tkn/d-b.png +0 -0
  137. package/dev/img/games/tkn/d-f.png +0 -0
  138. package/dev/img/games/tkn/d.png +0 -0
  139. package/dev/img/games/tkn/f.png +0 -0
  140. package/dev/img/games/tkn/o.png +0 -0
  141. package/dev/img/games/tkn/u-b.png +0 -0
  142. package/dev/img/games/tkn/u-f.png +0 -0
  143. package/dev/img/games/tkn/u.png +0 -0
  144. package/dev/img/preview.png +0 -0
  145. package/dev/index.js +563 -0
  146. package/dev/info.json +33 -0
  147. package/lib/img/basic/+.png +0 -0
  148. package/lib/img/games/bbtag/a.png +0 -0
  149. package/lib/img/games/bbtag/b.png +0 -0
  150. package/lib/img/games/bbtag/c.png +0 -0
  151. package/lib/img/games/bbtag/d.png +0 -0
  152. package/lib/img/games/bbtag/p.png +0 -0
  153. package/lib/img/games/gg/rc.png +0 -0
  154. package/lib/index.js +562 -488
  155. package/lib/info.json +33 -0
  156. package/package.json +9 -4
  157. package/src/img/basic/+.png +0 -0
  158. package/src/img/games/bbtag/a.png +0 -0
  159. package/src/img/games/bbtag/b.png +0 -0
  160. package/src/img/games/bbtag/c.png +0 -0
  161. package/src/img/games/bbtag/d.png +0 -0
  162. package/src/img/games/bbtag/p.png +0 -0
  163. package/src/img/games/gg/rc.png +0 -0
  164. package/src/index.js +87 -33
  165. package/src/info.json +33 -0
  166. package/examples/ex1.GIF +0 -0
  167. package/examples/fg1.GIF +0 -0
  168. package/examples/fg2.GIF +0 -0
package/dev/index.js ADDED
@@ -0,0 +1,563 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
+
18
+ var _sharp = _interopRequireDefault(require("sharp"));
19
+
20
+ var _path = _interopRequireDefault(require("path"));
21
+
22
+ var _glob = _interopRequireDefault(require("glob"));
23
+
24
+ var _sequelize = require("sequelize");
25
+
26
+ var _bent = _interopRequireDefault(require("bent"));
27
+
28
+ var _info = require("./info.json");
29
+
30
+ var getJSON = (0, _bent["default"])('json');
31
+
32
+ var imgPath = _path["default"].join(__dirname, 'img');
33
+
34
+ var basicInputs = new Map();
35
+ var gameInputs = new Map();
36
+ var glossary = {};
37
+ var terms = [];
38
+ getGlossary();
39
+ setInterval(getGlossary, 5 * 60 * 1000);
40
+
41
+ function getGlossary() {
42
+ return _getGlossary.apply(this, arguments);
43
+ }
44
+
45
+ function _getGlossary() {
46
+ _getGlossary = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
47
+ var result, tempG, tempT;
48
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
49
+ while (1) {
50
+ switch (_context6.prev = _context6.next) {
51
+ case 0:
52
+ _context6.next = 2;
53
+ return getJSON('https://glossary.infil.net/json/glossary.json');
54
+
55
+ case 2:
56
+ result = _context6.sent;
57
+ tempG = {};
58
+ tempT = [];
59
+ result.forEach(function (i) {
60
+ var term = i.term.toLowerCase();
61
+ tempG[term] = i;
62
+ tempT.push(term);
63
+ });
64
+ glossary = tempG;
65
+ terms = tempT;
66
+
67
+ case 8:
68
+ case "end":
69
+ return _context6.stop();
70
+ }
71
+ }
72
+ }, _callee6);
73
+ }));
74
+ return _getGlossary.apply(this, arguments);
75
+ }
76
+
77
+ _glob["default"].sync(_path["default"].join(imgPath, 'basic/**'), {
78
+ nodir: true
79
+ }).forEach(function (p) {
80
+ var input = p.split('/').pop().replace('.png', '');
81
+ basicInputs.set(input, p);
82
+ var alias = _info.aliases.inputs.basic[input];
83
+
84
+ if (alias) {
85
+ alias.forEach(function (i) {
86
+ basicInputs.set(i, p);
87
+ if (_info.sizes[input]) _info.sizes[i] = _info.sizes[input];
88
+ });
89
+ }
90
+ });
91
+
92
+ _glob["default"].sync(_path["default"].join(imgPath, 'games/*')).forEach(function (p) {
93
+ var _path$parse = _path["default"].parse(_path["default"].relative(_path["default"].join(imgPath, 'games'), p)),
94
+ base = _path$parse.base;
95
+
96
+ gameInputs.set(base, new Map());
97
+
98
+ _glob["default"].sync(_path["default"].join(imgPath, 'games', base, '**'), {
99
+ nodir: true
100
+ }).forEach(function (input) {
101
+ var _path$parse2 = _path["default"].parse(input),
102
+ name = _path$parse2.name;
103
+
104
+ gameInputs.get(base).set(name, input);
105
+ });
106
+
107
+ var alias = _info.aliases.inputs.games[base];
108
+
109
+ if (alias) {
110
+ for (var _i = 0, _Object$entries = Object.entries(alias); _i < _Object$entries.length; _i++) {
111
+ var _Object$entries$_i = (0, _slicedToArray2["default"])(_Object$entries[_i], 2),
112
+ a = _Object$entries$_i[0],
113
+ s = _Object$entries$_i[1];
114
+
115
+ gameInputs.get(base).set(a, s);
116
+ }
117
+ }
118
+ });
119
+
120
+ function solveInput(inputs, input) {
121
+ if (inputs.has(input)) return isString(inputs.get(input)) ? [input] : inputs.get(input);
122
+
123
+ for (var i = 0; i < input.length; i++) {
124
+ var s1 = input.slice(0, 0 - i);
125
+
126
+ if (inputs.has(s1)) {
127
+ var result = inputs.get(s1);
128
+ var remaining = solveInput(inputs, input.slice(0 - i));
129
+ return isString(result) ? [s1].concat((0, _toConsumableArray2["default"])(remaining)) : [].concat((0, _toConsumableArray2["default"])(result), (0, _toConsumableArray2["default"])(remaining));
130
+ }
131
+ }
132
+
133
+ throw new Error("Cannot find \"".concat(input, "\" as a recognizable input"));
134
+ }
135
+
136
+ function sendInput(_x, _x2, _x3, _x4) {
137
+ return _sendInput.apply(this, arguments);
138
+ }
139
+
140
+ function _sendInput() {
141
+ _sendInput = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(inputs, result, message, caption) {
142
+ var width, images, left, canvas;
143
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
144
+ while (1) {
145
+ switch (_context7.prev = _context7.next) {
146
+ case 0:
147
+ width = result.map(function (it) {
148
+ return _info.sizes[it] || 152;
149
+ }).reduce(function (a, b) {
150
+ return a + b;
151
+ }, 0);
152
+ images = [];
153
+ left = 0;
154
+ result.forEach(function (it, index) {
155
+ var size = _info.sizes[it] || 152;
156
+ images.push({
157
+ input: inputs.get(it),
158
+ left: left,
159
+ top: Math.floor((152 - size) / 2)
160
+ });
161
+ left += size;
162
+ });
163
+ canvas = (0, _sharp["default"])({
164
+ create: {
165
+ width: width,
166
+ height: 152,
167
+ channels: 4,
168
+ background: 'transparent'
169
+ }
170
+ }).png().composite(images);
171
+ _context7.next = 7;
172
+ return canvas.toBuffer();
173
+
174
+ case 7:
175
+ canvas = _context7.sent;
176
+
177
+ if (!(result.length < 12)) {
178
+ _context7.next = 12;
179
+ break;
180
+ }
181
+
182
+ _context7.next = 11;
183
+ return (0, _sharp["default"])(canvas).resize({
184
+ height: 55
185
+ }).png().toBuffer();
186
+
187
+ case 11:
188
+ canvas = _context7.sent;
189
+
190
+ case 12:
191
+ return _context7.abrupt("return", message.reply({
192
+ content: caption,
193
+ files: [canvas]
194
+ }));
195
+
196
+ case 13:
197
+ case "end":
198
+ return _context7.stop();
199
+ }
200
+ }
201
+ }, _callee7);
202
+ }));
203
+ return _sendInput.apply(this, arguments);
204
+ }
205
+
206
+ function checkGame(game) {
207
+ return gameInputs.has(game) ? game : _info.aliases.games[game];
208
+ }
209
+
210
+ function isString(x) {
211
+ return Object.prototype.toString.call(x) === '[object String]';
212
+ }
213
+
214
+ var _default = {
215
+ name: 'fg-notation',
216
+ about: {
217
+ name: 'FG Notation',
218
+ value: '[Instructions and source code](https://lotus.chitowarlock.com/fgnotation)\n[Infil\'s Fighting Game Glossary](https://glossary.infil.net)\n[MagicianStuff\'s Fighthing Game notations emotes](https://twitter.com/MagicianStuff/status/1477931054484893697)'
219
+ },
220
+ intents: ['GUILD_MESSAGES'],
221
+ partials: ['MESSAGE'],
222
+ preload: function preload(sequelize) {
223
+ sequelize.define('fginput', {
224
+ guild: {
225
+ type: _sequelize.DataTypes.STRING,
226
+ primaryKey: true
227
+ },
228
+ name: {
229
+ type: _sequelize.DataTypes.STRING,
230
+ primaryKey: true
231
+ },
232
+ createdBy: _sequelize.DataTypes.STRING,
233
+ game: _sequelize.DataTypes.STRING,
234
+ caption: _sequelize.DataTypes.STRING,
235
+ input: _sequelize.DataTypes.STRING
236
+ });
237
+ },
238
+ events: {
239
+ messageCreate: function messageCreate(global, message) {
240
+ return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
241
+ var client, config, sequelize, guildId, prefix, name, row, inputs;
242
+ return _regenerator["default"].wrap(function _callee$(_context) {
243
+ while (1) {
244
+ switch (_context.prev = _context.next) {
245
+ case 0:
246
+ client = global.client, config = global.config, sequelize = global.sequelize;
247
+
248
+ if (!(message.author.id === client.user.id || !message.member)) {
249
+ _context.next = 3;
250
+ break;
251
+ }
252
+
253
+ return _context.abrupt("return");
254
+
255
+ case 3:
256
+ guildId = message.guildId;
257
+ prefix = config[guildId].prefix;
258
+
259
+ if (!message.content.startsWith(prefix)) {
260
+ _context.next = 14;
261
+ break;
262
+ }
263
+
264
+ name = message.content.split(' ').pop().replace(prefix, '');
265
+ _context.t0 = _info.builtin[name];
266
+
267
+ if (_context.t0) {
268
+ _context.next = 12;
269
+ break;
270
+ }
271
+
272
+ _context.next = 11;
273
+ return sequelize.models.fginput.findOne({
274
+ where: {
275
+ guild: message.guild.id,
276
+ name: name
277
+ }
278
+ });
279
+
280
+ case 11:
281
+ _context.t0 = _context.sent;
282
+
283
+ case 12:
284
+ row = _context.t0;
285
+
286
+ if (row) {
287
+ inputs = new Map([].concat((0, _toConsumableArray2["default"])(basicInputs), (0, _toConsumableArray2["default"])(gameInputs.get(row.game))));
288
+ sendInput(inputs, row.input.split(' '), message, row.caption);
289
+ }
290
+
291
+ case 14:
292
+ case "end":
293
+ return _context.stop();
294
+ }
295
+ }
296
+ }, _callee);
297
+ }))();
298
+ }
299
+ },
300
+ commands: {
301
+ fgi: {
302
+ usage: 'fgi [game] [inputs]',
303
+ desc: 'Converts a list of inputs into an image',
304
+ example: 'fgi sf 236P 214K',
305
+ execute: function () {
306
+ var _execute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(_ref, _ref2) {
307
+ var param, message, _param, gameInput, i1, game, inputs, result;
308
+
309
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
310
+ while (1) {
311
+ switch (_context2.prev = _context2.next) {
312
+ case 0:
313
+ param = _ref.param;
314
+ message = _ref2.message;
315
+ _param = (0, _slicedToArray2["default"])(param, 3), gameInput = _param[1], i1 = _param[2];
316
+
317
+ if (!(!gameInput || !i1)) {
318
+ _context2.next = 5;
319
+ break;
320
+ }
321
+
322
+ return _context2.abrupt("return", message.reply('Missing arguments. Example: >fgi sf 236P 214K'));
323
+
324
+ case 5:
325
+ game = checkGame(gameInput);
326
+
327
+ if (gameInputs.has(game)) {
328
+ _context2.next = 8;
329
+ break;
330
+ }
331
+
332
+ return _context2.abrupt("return", message.reply("\"".concat(game, "\" is not a valid game. Available games: ").concat(Array.from(gameInputs.keys()).join(' '))));
333
+
334
+ case 8:
335
+ try {
336
+ inputs = new Map([].concat((0, _toConsumableArray2["default"])(basicInputs), (0, _toConsumableArray2["default"])(gameInputs.get(game))));
337
+ result = param.slice(2).map(function (i) {
338
+ return solveInput(inputs, i.toLowerCase());
339
+ }).flat();
340
+ sendInput(inputs, result, message);
341
+ } catch (err) {
342
+ message.reply(err.message);
343
+ }
344
+
345
+ case 9:
346
+ case "end":
347
+ return _context2.stop();
348
+ }
349
+ }
350
+ }, _callee2);
351
+ }));
352
+
353
+ function execute(_x5, _x6) {
354
+ return _execute.apply(this, arguments);
355
+ }
356
+
357
+ return execute;
358
+ }()
359
+ },
360
+ fgsave: {
361
+ usage: 'fgsave [game] [name] [inputs]',
362
+ desc: 'Saves a list of inputs into a command',
363
+ example: 'fgi sf testName 236P 214K',
364
+ execute: function () {
365
+ var _execute2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(_ref3, _ref4) {
366
+ var param, sequelize, message, _param2, gameInput, name, i1, game, inputs, input;
367
+
368
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
369
+ while (1) {
370
+ switch (_context3.prev = _context3.next) {
371
+ case 0:
372
+ param = _ref3.param, sequelize = _ref3.sequelize;
373
+ message = _ref4.message;
374
+ _param2 = (0, _slicedToArray2["default"])(param, 4), gameInput = _param2[1], name = _param2[2], i1 = _param2[3];
375
+
376
+ if (!(!gameInput || !name || !i1)) {
377
+ _context3.next = 5;
378
+ break;
379
+ }
380
+
381
+ return _context3.abrupt("return", message.reply('Missing arguments. Example: >fgi sf testName 236P 214K'));
382
+
383
+ case 5:
384
+ game = checkGame(gameInput);
385
+
386
+ if (gameInputs.has(game)) {
387
+ _context3.next = 8;
388
+ break;
389
+ }
390
+
391
+ return _context3.abrupt("return", message.reply("\"".concat(game, "\" is not a valid game. Available games: ").concat(Array.from(gameInputs.keys()).join(' '))));
392
+
393
+ case 8:
394
+ _context3.prev = 8;
395
+ inputs = new Map([].concat((0, _toConsumableArray2["default"])(basicInputs), (0, _toConsumableArray2["default"])(gameInputs.get(game))));
396
+ input = param.slice(3).map(function (i) {
397
+ return solveInput(inputs, i.toLowerCase());
398
+ }).flat().join(' ');
399
+ _context3.next = 13;
400
+ return sequelize.models.fginput.create({
401
+ guild: message.guild.id,
402
+ name: name,
403
+ createdBy: message.author.id,
404
+ game: game,
405
+ input: input
406
+ });
407
+
408
+ case 13:
409
+ message.channel.send("Saved command \"".concat(input, "\" as \"").concat(name, "\""));
410
+ _context3.next = 19;
411
+ break;
412
+
413
+ case 16:
414
+ _context3.prev = 16;
415
+ _context3.t0 = _context3["catch"](8);
416
+ message.reply(_context3.t0.message);
417
+
418
+ case 19:
419
+ case "end":
420
+ return _context3.stop();
421
+ }
422
+ }
423
+ }, _callee3, null, [[8, 16]]);
424
+ }));
425
+
426
+ function execute(_x7, _x8) {
427
+ return _execute2.apply(this, arguments);
428
+ }
429
+
430
+ return execute;
431
+ }()
432
+ },
433
+ fgcaption: {
434
+ usage: 'fgcaption [name] [caption]',
435
+ desc: 'Adds a caption to a saved input command',
436
+ example: 'fgcaption testName This is a caption',
437
+ execute: function () {
438
+ var _execute3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(_ref5, _ref6) {
439
+ var param, sequelize, message, _param3, name, i1, row;
440
+
441
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
442
+ while (1) {
443
+ switch (_context4.prev = _context4.next) {
444
+ case 0:
445
+ param = _ref5.param, sequelize = _ref5.sequelize;
446
+ message = _ref6.message;
447
+ _param3 = (0, _slicedToArray2["default"])(param, 3), name = _param3[1], i1 = _param3[2];
448
+
449
+ if (!(!name || !i1)) {
450
+ _context4.next = 5;
451
+ break;
452
+ }
453
+
454
+ return _context4.abrupt("return", message.reply('Missing arguments. Example: >fgi testName This is a caption'));
455
+
456
+ case 5:
457
+ _context4.next = 7;
458
+ return sequelize.models.fginput.findOne({
459
+ where: {
460
+ guild: message.guild.id,
461
+ name: name
462
+ }
463
+ });
464
+
465
+ case 7:
466
+ row = _context4.sent;
467
+
468
+ if (row) {
469
+ _context4.next = 10;
470
+ break;
471
+ }
472
+
473
+ return _context4.abrupt("return", message.reply("\"".concat(name, "\" is not a saved input list")));
474
+
475
+ case 10:
476
+ row.caption = param.slice(2).join(' ');
477
+ _context4.next = 13;
478
+ return row.save();
479
+
480
+ case 13:
481
+ message.channel.send("Saved caption for input list \"".concat(name, "\""));
482
+
483
+ case 14:
484
+ case "end":
485
+ return _context4.stop();
486
+ }
487
+ }
488
+ }, _callee4);
489
+ }));
490
+
491
+ function execute(_x9, _x10) {
492
+ return _execute3.apply(this, arguments);
493
+ }
494
+
495
+ return execute;
496
+ }()
497
+ },
498
+ fgglossary: {
499
+ usage: 'fgglossary [search term]',
500
+ desc: 'Searches for a term on Infil\'s Glossary',
501
+ example: 'fgglossary mexican uppercut',
502
+ execute: function () {
503
+ var _execute4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(_ref7, _ref8) {
504
+ var param, sequelize, message, params, search, result, url;
505
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
506
+ while (1) {
507
+ switch (_context5.prev = _context5.next) {
508
+ case 0:
509
+ param = _ref7.param, sequelize = _ref7.sequelize;
510
+ message = _ref8.message;
511
+ params = param.slice(1);
512
+
513
+ if (!(params.length === 0)) {
514
+ _context5.next = 5;
515
+ break;
516
+ }
517
+
518
+ return _context5.abrupt("return", message.reply('Missing search term. Example: >fgglossary mexican uppercut'));
519
+
520
+ case 5:
521
+ search = params.join(' ').toLowerCase();
522
+ result = terms.filter(function (i) {
523
+ return i.includes(search);
524
+ });
525
+ url = "https://glossary.infil.net/?t=".concat(params.join('%20').toLowerCase());
526
+
527
+ if (!(result.length === 0)) {
528
+ _context5.next = 10;
529
+ break;
530
+ }
531
+
532
+ return _context5.abrupt("return", message.reply("Term \"".concat(search, "\" not found")));
533
+
534
+ case 10:
535
+ if (!(result.length === 1)) {
536
+ _context5.next = 12;
537
+ break;
538
+ }
539
+
540
+ return _context5.abrupt("return", message.reply("```".concat(glossary[result[0]].def, "```Source: <").concat(url, ">")));
541
+
542
+ case 12:
543
+ message.reply("Multiple terms found: ".concat(url));
544
+
545
+ case 13:
546
+ case "end":
547
+ return _context5.stop();
548
+ }
549
+ }
550
+ }, _callee5);
551
+ }));
552
+
553
+ function execute(_x11, _x12) {
554
+ return _execute4.apply(this, arguments);
555
+ }
556
+
557
+ return execute;
558
+ }()
559
+ }
560
+ }
561
+ };
562
+ exports["default"] = _default;
563
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJnZXRKU09OIiwiaW1nUGF0aCIsInBhdGgiLCJqb2luIiwiX19kaXJuYW1lIiwiYmFzaWNJbnB1dHMiLCJNYXAiLCJnYW1lSW5wdXRzIiwiZ2xvc3NhcnkiLCJ0ZXJtcyIsImdldEdsb3NzYXJ5Iiwic2V0SW50ZXJ2YWwiLCJyZXN1bHQiLCJ0ZW1wRyIsInRlbXBUIiwiZm9yRWFjaCIsImkiLCJ0ZXJtIiwidG9Mb3dlckNhc2UiLCJwdXNoIiwiZ2xvYiIsInN5bmMiLCJub2RpciIsInAiLCJpbnB1dCIsInNwbGl0IiwicG9wIiwicmVwbGFjZSIsInNldCIsImFsaWFzIiwiYWxpYXNlcyIsImlucHV0cyIsImJhc2ljIiwic2l6ZXMiLCJwYXJzZSIsInJlbGF0aXZlIiwiYmFzZSIsIm5hbWUiLCJnZXQiLCJnYW1lcyIsIk9iamVjdCIsImVudHJpZXMiLCJhIiwicyIsInNvbHZlSW5wdXQiLCJoYXMiLCJpc1N0cmluZyIsImxlbmd0aCIsInMxIiwic2xpY2UiLCJyZW1haW5pbmciLCJFcnJvciIsInNlbmRJbnB1dCIsIm1lc3NhZ2UiLCJjYXB0aW9uIiwid2lkdGgiLCJtYXAiLCJpdCIsInJlZHVjZSIsImIiLCJpbWFnZXMiLCJsZWZ0IiwiaW5kZXgiLCJzaXplIiwidG9wIiwiTWF0aCIsImZsb29yIiwiY2FudmFzIiwiY3JlYXRlIiwiaGVpZ2h0IiwiY2hhbm5lbHMiLCJiYWNrZ3JvdW5kIiwicG5nIiwiY29tcG9zaXRlIiwidG9CdWZmZXIiLCJyZXNpemUiLCJyZXBseSIsImNvbnRlbnQiLCJmaWxlcyIsImNoZWNrR2FtZSIsImdhbWUiLCJ4IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiYWJvdXQiLCJ2YWx1ZSIsImludGVudHMiLCJwYXJ0aWFscyIsInByZWxvYWQiLCJzZXF1ZWxpemUiLCJkZWZpbmUiLCJndWlsZCIsInR5cGUiLCJEYXRhVHlwZXMiLCJTVFJJTkciLCJwcmltYXJ5S2V5IiwiY3JlYXRlZEJ5IiwiZXZlbnRzIiwibWVzc2FnZUNyZWF0ZSIsImdsb2JhbCIsImNsaWVudCIsImNvbmZpZyIsImF1dGhvciIsImlkIiwidXNlciIsIm1lbWJlciIsImd1aWxkSWQiLCJwcmVmaXgiLCJzdGFydHNXaXRoIiwiYnVpbHRpbiIsIm1vZGVscyIsImZnaW5wdXQiLCJmaW5kT25lIiwid2hlcmUiLCJyb3ciLCJjb21tYW5kcyIsImZnaSIsInVzYWdlIiwiZGVzYyIsImV4YW1wbGUiLCJleGVjdXRlIiwicGFyYW0iLCJnYW1lSW5wdXQiLCJpMSIsIkFycmF5IiwiZnJvbSIsImtleXMiLCJmbGF0IiwiZXJyIiwiZmdzYXZlIiwiY2hhbm5lbCIsInNlbmQiLCJmZ2NhcHRpb24iLCJzYXZlIiwiZmdnbG9zc2FyeSIsInBhcmFtcyIsInNlYXJjaCIsImZpbHRlciIsImluY2x1ZGVzIiwidXJsIiwiZGVmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUVBLElBQU1BLE9BQU8sR0FBRyxzQkFBSyxNQUFMLENBQWhCOztBQUNBLElBQU1DLE9BQU8sR0FBR0MsaUJBQUtDLElBQUwsQ0FBVUMsU0FBVixFQUFxQixLQUFyQixDQUFoQjs7QUFDQSxJQUFNQyxXQUFXLEdBQUcsSUFBSUMsR0FBSixFQUFwQjtBQUNBLElBQU1DLFVBQVUsR0FBRyxJQUFJRCxHQUFKLEVBQW5CO0FBRUEsSUFBSUUsUUFBUSxHQUFHLEVBQWY7QUFDQSxJQUFJQyxLQUFLLEdBQUcsRUFBWjtBQUVBQyxXQUFXO0FBQ1hDLFdBQVcsQ0FBQ0QsV0FBRCxFQUFjLElBQUksRUFBSixHQUFTLElBQXZCLENBQVg7O1NBRWVBLFc7Ozs7OytGQUFmO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBQ3VCVixPQUFPLENBQUMsK0NBQUQsQ0FEOUI7O0FBQUE7QUFDUVksWUFBQUEsTUFEUjtBQUVRQyxZQUFBQSxLQUZSLEdBRWdCLEVBRmhCO0FBR1FD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QUFGOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBSkc7QUFoRUo7QUFsREcsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaGFycCBmcm9tICdzaGFycCdcclxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcclxuaW1wb3J0IGdsb2IgZnJvbSAnZ2xvYidcclxuaW1wb3J0IHsgRGF0YVR5cGVzIH0gZnJvbSAnc2VxdWVsaXplJ1xyXG5pbXBvcnQgYmVudCBmcm9tICdiZW50J1xyXG5cclxuaW1wb3J0IHsgc2l6ZXMsIGFsaWFzZXMsIGJ1aWx0aW4gfSBmcm9tICcuL2luZm8uanNvbidcclxuXHJcbmNvbnN0IGdldEpTT04gPSBiZW50KCdqc29uJylcclxuY29uc3QgaW1nUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICdpbWcnKVxyXG5jb25zdCBiYXNpY0lucHV0cyA9IG5ldyBNYXAoKVxyXG5jb25zdCBnYW1lSW5wdXRzID0gbmV3IE1hcCgpXHJcblxyXG5sZXQgZ2xvc3NhcnkgPSB7fVxyXG5sZXQgdGVybXMgPSBbXVxyXG5cclxuZ2V0R2xvc3NhcnkoKVxyXG5zZXRJbnRlcnZhbChnZXRHbG9zc2FyeSwgNSAqIDYwICogMTAwMClcclxuXHJcbmFzeW5jIGZ1bmN0aW9uIGdldEdsb3NzYXJ5ICgpIHtcclxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZXRKU09OKCdodHRwczovL2dsb3NzYXJ5LmluZmlsLm5ldC9qc29uL2dsb3NzYXJ5Lmpzb24nKVxyXG4gIGNvbnN0IHRlbXBHID0ge31cclxuICBjb25zdCB0ZW1wVCA9IFtdXHJcblxyXG4gIHJlc3VsdC5mb3JFYWNoKGkgPT4ge1xyXG4gICAgY29uc3QgdGVybSA9IGkudGVybS50b0xvd2VyQ2FzZSgpXHJcbiAgICB0ZW1wR1t0ZXJtXSA9IGlcclxuICAgIHRlbXBULnB1c2godGVybSlcclxuICB9KVxyXG5cclxuICBnbG9zc2FyeSA9IHRlbXBHXHJcbiAgdGVybXMgPSB0ZW1wVFxyXG59XHJcblxyXG5nbG9iLnN5bmMocGF0aC5qb2luKGltZ1BhdGgsICdiYXNpYy8qKicpLCB7IG5vZGlyOiB0cnVlIH0pXHJcbiAgLmZvckVhY2gocCA9PiB7XHJcbiAgICBjb25zdCBpbnB1dCA9IHAuc3BsaXQoJy8nKS5wb3AoKS5yZXBsYWNlKCcucG5nJywgJycpXHJcbiAgICBiYXNpY0lucHV0cy5zZXQoaW5wdXQsIHApXHJcblxyXG4gICAgY29uc3QgYWxpYXMgPSBhbGlhc2VzLmlucHV0cy5iYXNpY1tpbnB1dF1cclxuICAgIGlmIChhbGlhcykge1xyXG4gICAgICBhbGlhcy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICAgIGJhc2ljSW5wdXRzLnNldChpLCBwKVxyXG4gICAgICAgIGlmIChzaXplc1tpbnB1dF0pIHNpemVzW2ldID0gc2l6ZXNbaW5wdXRdXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfSlcclxuXHJcbmdsb2Iuc3luYyhwYXRoLmpvaW4oaW1nUGF0aCwgJ2dhbWVzLyonKSlcclxuICAuZm9yRWFjaChwID0+IHtcclxuICAgIGNvbnN0IHsgYmFzZSB9ID0gcGF0aC5wYXJzZShwYXRoLnJlbGF0aXZlKHBhdGguam9pbihpbWdQYXRoLCAnZ2FtZXMnKSwgcCkpXHJcbiAgICBnYW1lSW5wdXRzLnNldChiYXNlLCBuZXcgTWFwKCkpXHJcblxyXG4gICAgZ2xvYi5zeW5jKHBhdGguam9pbihpbWdQYXRoLCAnZ2FtZXMnLCBiYXNlLCAnKionKSwgeyBub2RpcjogdHJ1ZSB9KVxyXG4gICAgICAuZm9yRWFjaChpbnB1dCA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBuYW1lIH0gPSBwYXRoLnBhcnNlKGlucHV0KVxyXG4gICAgICAgIGdhbWVJbnB1dHMuZ2V0KGJhc2UpLnNldChuYW1lLCBpbnB1dClcclxuICAgICAgfSlcclxuXHJcbiAgICBjb25zdCBhbGlhcyA9IGFsaWFzZXMuaW5wdXRzLmdhbWVzW2Jhc2VdXHJcblxyXG4gICAgaWYgKGFsaWFzKSB7XHJcbiAgICAgIGZvciAoY29uc3QgW2EsIHNdIG9mIE9iamVjdC5lbnRyaWVzKGFsaWFzKSkge1xyXG4gICAgICAgIGdhbWVJbnB1dHMuZ2V0KGJhc2UpLnNldChhLCBzKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSlcclxuXHJcbmZ1bmN0aW9uIHNvbHZlSW5wdXQgKGlucHV0cywgaW5wdXQpIHtcclxuICBpZiAoaW5wdXRzLmhhcyhpbnB1dCkpIHJldHVybiBpc1N0cmluZyhpbnB1dHMuZ2V0KGlucHV0KSkgPyBbaW5wdXRdIDogaW5wdXRzLmdldChpbnB1dClcclxuXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xyXG4gICAgY29uc3QgczEgPSBpbnB1dC5zbGljZSgwLCAwIC0gaSlcclxuXHJcbiAgICBpZiAoaW5wdXRzLmhhcyhzMSkpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gaW5wdXRzLmdldChzMSlcclxuICAgICAgY29uc3QgcmVtYWluaW5nID0gc29sdmVJbnB1dChpbnB1dHMsIGlucHV0LnNsaWNlKDAgLSBpKSlcclxuXHJcbiAgICAgIHJldHVybiBpc1N0cmluZyhyZXN1bHQpID8gW3MxLCAuLi5yZW1haW5pbmddIDogWy4uLnJlc3VsdCwgLi4ucmVtYWluaW5nXVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBcIiR7aW5wdXR9XCIgYXMgYSByZWNvZ25pemFibGUgaW5wdXRgKVxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBzZW5kSW5wdXQgKGlucHV0cywgcmVzdWx0LCBtZXNzYWdlLCBjYXB0aW9uKSB7XHJcbiAgY29uc3Qgd2lkdGggPSByZXN1bHQubWFwKGl0ID0+IHNpemVzW2l0XSB8fCAxNTIpLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApXHJcbiAgY29uc3QgaW1hZ2VzID0gW11cclxuICBsZXQgbGVmdCA9IDBcclxuXHJcbiAgcmVzdWx0LmZvckVhY2goKGl0LCBpbmRleCkgPT4ge1xyXG4gICAgY29uc3Qgc2l6ZSA9IHNpemVzW2l0XSB8fCAxNTJcclxuICAgIGltYWdlcy5wdXNoKHsgaW5wdXQ6IGlucHV0cy5nZXQoaXQpLCBsZWZ0LCB0b3A6IE1hdGguZmxvb3IoKDE1MiAtIHNpemUpIC8gMikgfSlcclxuICAgIGxlZnQgKz0gc2l6ZVxyXG4gIH0pXHJcblxyXG4gIGxldCBjYW52YXMgPSBzaGFycCh7IGNyZWF0ZTogeyB3aWR0aCwgaGVpZ2h0OiAxNTIsIGNoYW5uZWxzOiA0LCBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnIH0gfSlcclxuICAgIC5wbmcoKVxyXG4gICAgLmNvbXBvc2l0ZShpbWFnZXMpXHJcblxyXG4gIGNhbnZhcyA9IGF3YWl0IGNhbnZhcy50b0J1ZmZlcigpXHJcblxyXG4gIGlmIChyZXN1bHQubGVuZ3RoIDwgMTIpIGNhbnZhcyA9IGF3YWl0IHNoYXJwKGNhbnZhcykucmVzaXplKHsgaGVpZ2h0OiA1NSB9KS5wbmcoKS50b0J1ZmZlcigpXHJcblxyXG4gIHJldHVybiBtZXNzYWdlLnJlcGx5KHsgY29udGVudDogY2FwdGlvbiwgZmlsZXM6IFtjYW52YXNdIH0pXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoZWNrR2FtZSAoZ2FtZSkge1xyXG4gIHJldHVybiBnYW1lSW5wdXRzLmhhcyhnYW1lKSA/IGdhbWUgOiBhbGlhc2VzLmdhbWVzW2dhbWVdXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzU3RyaW5nICh4KSB7XHJcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh4KSA9PT0gJ1tvYmplY3QgU3RyaW5nXSdcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIG5hbWU6ICdmZy1ub3RhdGlvbicsXHJcbiAgYWJvdXQ6IHtcclxuICAgIG5hbWU6ICdGRyBOb3RhdGlvbicsXHJcbiAgICB2YWx1ZTogJ1tJbnN0cnVjdGlvbnMgYW5kIHNvdXJjZSBjb2RlXShodHRwczovL2xvdHVzLmNoaXRvd2FybG9jay5jb20vZmdub3RhdGlvbilcXG5bSW5maWxcXCdzIEZpZ2h0aW5nIEdhbWUgR2xvc3NhcnldKGh0dHBzOi8vZ2xvc3NhcnkuaW5maWwubmV0KVxcbltNYWdpY2lhblN0dWZmXFwncyBGaWdodGhpbmcgR2FtZSBub3RhdGlvbnMgZW1vdGVzXShodHRwczovL3R3aXR0ZXIuY29tL01hZ2ljaWFuU3R1ZmYvc3RhdHVzLzE0Nzc5MzEwNTQ0ODQ4OTM2OTcpJ1xyXG4gIH0sXHJcbiAgaW50ZW50czogWydHVUlMRF9NRVNTQUdFUyddLFxyXG4gIHBhcnRpYWxzOiBbJ01FU1NBR0UnXSxcclxuXHJcbiAgcHJlbG9hZDogc2VxdWVsaXplID0+IHtcclxuICAgIHNlcXVlbGl6ZS5kZWZpbmUoJ2ZnaW5wdXQnLCB7XHJcbiAgICAgIGd1aWxkOiB7XHJcbiAgICAgICAgdHlwZTogRGF0YVR5cGVzLlNUUklORyxcclxuICAgICAgICBwcmltYXJ5S2V5OiB0cnVlXHJcbiAgICAgIH0sXHJcbiAgICAgIG5hbWU6IHtcclxuICAgICAgICB0eXBlOiBEYXRhVHlwZXMuU1RSSU5HLFxyXG4gICAgICAgIHByaW1hcnlLZXk6IHRydWVcclxuICAgICAgfSxcclxuICAgICAgY3JlYXRlZEJ5OiBEYXRhVHlwZXMuU1RSSU5HLFxyXG4gICAgICBnYW1lOiBEYXRhVHlwZXMuU1RSSU5HLFxyXG4gICAgICBjYXB0aW9uOiBEYXRhVHlwZXMuU1RSSU5HLFxyXG4gICAgICBpbnB1dDogRGF0YVR5cGVzLlNUUklOR1xyXG4gICAgfSlcclxuICB9LFxyXG5cclxuICBldmVudHM6IHtcclxuICAgIGFzeW5jIG1lc3NhZ2VDcmVhdGUgKGdsb2JhbCwgbWVzc2FnZSkge1xyXG4gICAgICBjb25zdCB7IGNsaWVudCwgY29uZmlnLCBzZXF1ZWxpemUgfSA9IGdsb2JhbFxyXG4gICAgICBpZiAobWVzc2FnZS5hdXRob3IuaWQgPT09IGNsaWVudC51c2VyLmlkIHx8ICFtZXNzYWdlLm1lbWJlcikgcmV0dXJuXHJcblxyXG4gICAgICBjb25zdCBndWlsZElkID0gbWVzc2FnZS5ndWlsZElkXHJcbiAgICAgIGNvbnN0IHsgcHJlZml4IH0gPSBjb25maWdbZ3VpbGRJZF1cclxuXHJcbiAgICAgIGlmIChtZXNzYWdlLmNvbnRlbnQuc3RhcnRzV2l0aChwcmVmaXgpKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IG1lc3NhZ2UuY29udGVudC5zcGxpdCgnICcpLnBvcCgpLnJlcGxhY2UocHJlZml4LCAnJylcclxuICAgICAgICBjb25zdCByb3cgPSBidWlsdGluW25hbWVdIHx8IChcclxuICAgICAgICAgIGF3YWl0IHNlcXVlbGl6ZS5tb2RlbHMuZmdpbnB1dC5maW5kT25lKHtcclxuICAgICAgICAgICAgd2hlcmU6IHsgZ3VpbGQ6IG1lc3NhZ2UuZ3VpbGQuaWQsIG5hbWUgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcblxyXG4gICAgICAgIGlmIChyb3cpIHtcclxuICAgICAgICAgIGNvbnN0IGlucHV0cyA9IG5ldyBNYXAoWy4uLmJhc2ljSW5wdXRzLCAuLi5nYW1lSW5wdXRzLmdldChyb3cuZ2FtZSldKVxyXG4gICAgICAgICAgc2VuZElucHV0KGlucHV0cywgcm93LmlucHV0LnNwbGl0KCcgJyksIG1lc3NhZ2UsIHJvdy5jYXB0aW9uKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIGNvbW1hbmRzOiB7XHJcbiAgICBmZ2k6IHtcclxuICAgICAgdXNhZ2U6ICdmZ2kgW2dhbWVdIFtpbnB1dHNdJyxcclxuICAgICAgZGVzYzogJ0NvbnZlcnRzIGEgbGlzdCBvZiBpbnB1dHMgaW50byBhbiBpbWFnZScsXHJcbiAgICAgIGV4YW1wbGU6ICdmZ2kgc2YgMjM2UCAyMTRLJyxcclxuICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgcGFyYW0gfSwgeyBtZXNzYWdlIH0pID0+IHtcclxuICAgICAgICBjb25zdCBbLCBnYW1lSW5wdXQsIGkxXSA9IHBhcmFtXHJcbiAgICAgICAgaWYgKCFnYW1lSW5wdXQgfHwgIWkxKSByZXR1cm4gbWVzc2FnZS5yZXBseSgnTWlzc2luZyBhcmd1bWVudHMuIEV4YW1wbGU6ID5mZ2kgc2YgMjM2UCAyMTRLJylcclxuXHJcbiAgICAgICAgY29uc3QgZ2FtZSA9IGNoZWNrR2FtZShnYW1lSW5wdXQpXHJcbiAgICAgICAgaWYgKCFnYW1lSW5wdXRzLmhhcyhnYW1lKSkgcmV0dXJuIG1lc3NhZ2UucmVwbHkoYFwiJHtnYW1lfVwiIGlzIG5vdCBhIHZhbGlkIGdhbWUuIEF2YWlsYWJsZSBnYW1lczogJHtBcnJheS5mcm9tKGdhbWVJbnB1dHMua2V5cygpKS5qb2luKCcgJyl9YClcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNvbnN0IGlucHV0cyA9IG5ldyBNYXAoWy4uLmJhc2ljSW5wdXRzLCAuLi5nYW1lSW5wdXRzLmdldChnYW1lKV0pXHJcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBwYXJhbS5zbGljZSgyKS5tYXAoaSA9PiBzb2x2ZUlucHV0KGlucHV0cywgaS50b0xvd2VyQ2FzZSgpKSkuZmxhdCgpXHJcblxyXG4gICAgICAgICAgc2VuZElucHV0KGlucHV0cywgcmVzdWx0LCBtZXNzYWdlKVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgbWVzc2FnZS5yZXBseShlcnIubWVzc2FnZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBmZ3NhdmU6IHtcclxuICAgICAgdXNhZ2U6ICdmZ3NhdmUgW2dhbWVdIFtuYW1lXSBbaW5wdXRzXScsXHJcbiAgICAgIGRlc2M6ICdTYXZlcyBhIGxpc3Qgb2YgaW5wdXRzIGludG8gYSBjb21tYW5kJyxcclxuICAgICAgZXhhbXBsZTogJ2ZnaSBzZiB0ZXN0TmFtZSAyMzZQIDIxNEsnLFxyXG4gICAgICBleGVjdXRlOiBhc3luYyAoeyBwYXJhbSwgc2VxdWVsaXplIH0sIHsgbWVzc2FnZSB9KSA9PiB7XHJcbiAgICAgICAgY29uc3QgWywgZ2FtZUlucHV0LCBuYW1lLCBpMV0gPSBwYXJhbVxyXG4gICAgICAgIGlmICghZ2FtZUlucHV0IHx8ICFuYW1lIHx8ICFpMSkgcmV0dXJuIG1lc3NhZ2UucmVwbHkoJ01pc3NpbmcgYXJndW1lbnRzLiBFeGFtcGxlOiA+ZmdpIHNmIHRlc3ROYW1lIDIzNlAgMjE0SycpXHJcblxyXG4gICAgICAgIGNvbnN0IGdhbWUgPSBjaGVja0dhbWUoZ2FtZUlucHV0KVxyXG4gICAgICAgIGlmICghZ2FtZUlucHV0cy5oYXMoZ2FtZSkpIHJldHVybiBtZXNzYWdlLnJlcGx5KGBcIiR7Z2FtZX1cIiBpcyBub3QgYSB2YWxpZCBnYW1lLiBBdmFpbGFibGUgZ2FtZXM6ICR7QXJyYXkuZnJvbShnYW1lSW5wdXRzLmtleXMoKSkuam9pbignICcpfWApXHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjb25zdCBpbnB1dHMgPSBuZXcgTWFwKFsuLi5iYXNpY0lucHV0cywgLi4uZ2FtZUlucHV0cy5nZXQoZ2FtZSldKVxyXG4gICAgICAgICAgY29uc3QgaW5wdXQgPSBwYXJhbS5zbGljZSgzKS5tYXAoaSA9PiBzb2x2ZUlucHV0KGlucHV0cywgaS50b0xvd2VyQ2FzZSgpKSkuZmxhdCgpLmpvaW4oJyAnKVxyXG5cclxuICAgICAgICAgIGF3YWl0IHNlcXVlbGl6ZS5tb2RlbHMuZmdpbnB1dC5jcmVhdGUoeyBndWlsZDogbWVzc2FnZS5ndWlsZC5pZCwgbmFtZSwgY3JlYXRlZEJ5OiBtZXNzYWdlLmF1dGhvci5pZCwgZ2FtZSwgaW5wdXQgfSlcclxuXHJcbiAgICAgICAgICBtZXNzYWdlLmNoYW5uZWwuc2VuZChgU2F2ZWQgY29tbWFuZCBcIiR7aW5wdXR9XCIgYXMgXCIke25hbWV9XCJgKVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgbWVzc2FnZS5yZXBseShlcnIubWVzc2FnZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBmZ2NhcHRpb246IHtcclxuICAgICAgdXNhZ2U6ICdmZ2NhcHRpb24gW25hbWVdIFtjYXB0aW9uXScsXHJcbiAgICAgIGRlc2M6ICdBZGRzIGEgY2FwdGlvbiB0byBhIHNhdmVkIGlucHV0IGNvbW1hbmQnLFxyXG4gICAgICBleGFtcGxlOiAnZmdjYXB0aW9uIHRlc3ROYW1lIFRoaXMgaXMgYSBjYXB0aW9uJyxcclxuICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgcGFyYW0sIHNlcXVlbGl6ZSB9LCB7IG1lc3NhZ2UgfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IFssIG5hbWUsIGkxXSA9IHBhcmFtXHJcbiAgICAgICAgaWYgKCFuYW1lIHx8ICFpMSkgcmV0dXJuIG1lc3NhZ2UucmVwbHkoJ01pc3NpbmcgYXJndW1lbnRzLiBFeGFtcGxlOiA+ZmdpIHRlc3ROYW1lIFRoaXMgaXMgYSBjYXB0aW9uJylcclxuXHJcbiAgICAgICAgY29uc3Qgcm93ID0gYXdhaXQgc2VxdWVsaXplLm1vZGVscy5mZ2lucHV0LmZpbmRPbmUoe1xyXG4gICAgICAgICAgd2hlcmU6IHsgZ3VpbGQ6IG1lc3NhZ2UuZ3VpbGQuaWQsIG5hbWUgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGlmICghcm93KSByZXR1cm4gbWVzc2FnZS5yZXBseShgXCIke25hbWV9XCIgaXMgbm90IGEgc2F2ZWQgaW5wdXQgbGlzdGApXHJcbiAgICAgICAgcm93LmNhcHRpb24gPSBwYXJhbS5zbGljZSgyKS5qb2luKCcgJylcclxuICAgICAgICBhd2FpdCByb3cuc2F2ZSgpXHJcblxyXG4gICAgICAgIG1lc3NhZ2UuY2hhbm5lbC5zZW5kKGBTYXZlZCBjYXB0aW9uIGZvciBpbnB1dCBsaXN0IFwiJHtuYW1lfVwiYClcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGZnZ2xvc3Nhcnk6IHtcclxuICAgICAgdXNhZ2U6ICdmZ2dsb3NzYXJ5IFtzZWFyY2ggdGVybV0nLFxyXG4gICAgICBkZXNjOiAnU2VhcmNoZXMgZm9yIGEgdGVybSBvbiBJbmZpbFxcJ3MgR2xvc3NhcnknLFxyXG4gICAgICBleGFtcGxlOiAnZmdnbG9zc2FyeSBtZXhpY2FuIHVwcGVyY3V0JyxcclxuICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgcGFyYW0sIHNlcXVlbGl6ZSB9LCB7IG1lc3NhZ2UgfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHBhcmFtLnNsaWNlKDEpXHJcbiAgICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPT09IDApIHJldHVybiBtZXNzYWdlLnJlcGx5KCdNaXNzaW5nIHNlYXJjaCB0ZXJtLiBFeGFtcGxlOiA+ZmdnbG9zc2FyeSBtZXhpY2FuIHVwcGVyY3V0JylcclxuXHJcbiAgICAgICAgY29uc3Qgc2VhcmNoID0gcGFyYW1zLmpvaW4oJyAnKS50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGVybXMuZmlsdGVyKGkgPT4gaS5pbmNsdWRlcyhzZWFyY2gpKVxyXG4gICAgICAgIGNvbnN0IHVybCA9IGBodHRwczovL2dsb3NzYXJ5LmluZmlsLm5ldC8/dD0ke3BhcmFtcy5qb2luKCclMjAnKS50b0xvd2VyQ2FzZSgpfWBcclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHJldHVybiBtZXNzYWdlLnJlcGx5KGBUZXJtIFwiJHtzZWFyY2h9XCIgbm90IGZvdW5kYClcclxuICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMSkgcmV0dXJuIG1lc3NhZ2UucmVwbHkoYFxcYFxcYFxcYCR7Z2xvc3NhcnlbcmVzdWx0WzBdXS5kZWZ9XFxgXFxgXFxgU291cmNlOiA8JHt1cmx9PmApXHJcblxyXG4gICAgICAgIG1lc3NhZ2UucmVwbHkoYE11bHRpcGxlIHRlcm1zIGZvdW5kOiAke3VybH1gKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
package/dev/info.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "sizes": { "+": 55 },
3
+
4
+ "builtin": {
5
+ "37": {
6
+ "game": "sf",
7
+ "caption": "***LETS GO JUSTIN!***",
8
+ "input": "6 6 6 6 6 6 6 >> 6 6 6 6 6 6 6 >> 8 6 j. hk >> 2 mk >> 623 mp >> 236 236 lk"
9
+ }
10
+ },
11
+
12
+ "aliases": {
13
+ "games": {
14
+ "bbt": "bbtag",
15
+ "db": "dbz"
16
+ },
17
+
18
+ "inputs": {
19
+ "basic": {
20
+ "doubleforward": [">>"]
21
+ },
22
+
23
+ "games": {
24
+ "bbtag": {
25
+ "throw": ["b","+","c"],
26
+ "crb": ["d","+","p"],
27
+ "airdash": ["a","+","b"],
28
+ "reversal": ["a","+","d"]
29
+ }
30
+ }
31
+ }
32
+ }
33
+ }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file