sb-edit-custom 0.15.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.
@@ -0,0 +1,511 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __extends = (this && this.__extends) || (function () {
4
+ var extendStatics = function (d, b) {
5
+ extendStatics = Object.setPrototypeOf ||
6
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
7
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
8
+ return extendStatics(d, b);
9
+ };
10
+ return function (d, b) {
11
+ if (typeof b !== "function" && b !== null)
12
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
13
+ extendStatics(d, b);
14
+ function __() { this.constructor = d; }
15
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
16
+ };
17
+ })();
18
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
19
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
20
+ return cooked;
21
+ };
22
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ var desc = Object.getOwnPropertyDescriptor(m, k);
25
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
26
+ desc = { enumerable: true, get: function() { return m[k]; } };
27
+ }
28
+ Object.defineProperty(o, k2, desc);
29
+ }) : (function(o, m, k, k2) {
30
+ if (k2 === undefined) k2 = k;
31
+ o[k2] = m[k];
32
+ }));
33
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
34
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
35
+ }) : function(o, v) {
36
+ o["default"] = v;
37
+ });
38
+ var __importStar = (this && this.__importStar) || function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
46
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
47
+ return new (P || (P = Promise))(function (resolve, reject) {
48
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
49
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
50
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
51
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
52
+ });
53
+ };
54
+ var __generator = (this && this.__generator) || function (thisArg, body) {
55
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
56
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
57
+ function verb(n) { return function (v) { return step([n, v]); }; }
58
+ function step(op) {
59
+ if (f) throw new TypeError("Generator is already executing.");
60
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
61
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
62
+ if (y = 0, t) op = [op[0] & 2, t.value];
63
+ switch (op[0]) {
64
+ case 0: case 1: t = op; break;
65
+ case 4: _.label++; return { value: op[1], done: false };
66
+ case 5: _.label++; y = op[1]; op = [0]; continue;
67
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
68
+ default:
69
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
70
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
71
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
72
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
73
+ if (t[2]) _.ops.pop();
74
+ _.trys.pop(); continue;
75
+ }
76
+ op = body.call(thisArg, _);
77
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
78
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
79
+ }
80
+ };
81
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
82
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
83
+ if (ar || !(i in from)) {
84
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
85
+ ar[i] = from[i];
86
+ }
87
+ }
88
+ return to.concat(ar || Array.prototype.slice.call(from));
89
+ };
90
+ var __importDefault = (this && this.__importDefault) || function (mod) {
91
+ return (mod && mod.__esModule) ? mod : { "default": mod };
92
+ };
93
+ Object.defineProperty(exports, "__esModule", { value: true });
94
+ var commander_1 = require("commander");
95
+ var Project_1 = __importDefault(require("../Project"));
96
+ var node_fs_1 = require("node:fs");
97
+ var fs = __importStar(require("node:fs/promises"));
98
+ var path = __importStar(require("node:path"));
99
+ var jszip_1 = __importDefault(require("jszip"));
100
+ var chalk_1 = __importDefault(require("chalk"));
101
+ var program = new commander_1.Command();
102
+ program.name("sb-edit").description("CLI for manipulating Scratch projects");
103
+ program
104
+ .requiredOption("-i, --input <path>", "The path to the input project")
105
+ .addOption(new commander_1.Option("-it, --input-type <type>", "The type of input file").choices(["sb3"]))
106
+ .requiredOption("-o, --output <path>", "The path to the output project")
107
+ .addOption(new commander_1.Option("-ot, --output-type <type>", "The type of output file").choices(["leopard", "leopard-zip"]))
108
+ .addOption(new commander_1.Option("-t, --trace", "Show a detailed error trace"))
109
+ .addOption(new commander_1.Option("--leopard-url <url>", "The URL to use for Leopard").default("https://pub-3089f37cd1294d71b62f5431c86b90ef.r2.dev/dist/index.esm.js"));
110
+ program.parse();
111
+ var options = program.opts();
112
+ var input = options.input, inputType = options.inputType, output = options.output, outputType = options.outputType;
113
+ var InferTypeError = /** @class */ (function (_super) {
114
+ __extends(InferTypeError, _super);
115
+ function InferTypeError(stage, message) {
116
+ var _this = _super.call(this, message) || this;
117
+ _this.stage = stage;
118
+ _this.name = "InferTypeError";
119
+ Object.setPrototypeOf(_this, InferTypeError.prototype);
120
+ return _this;
121
+ }
122
+ return InferTypeError;
123
+ }(Error));
124
+ try {
125
+ // Infer input type
126
+ if (inputType === undefined) {
127
+ if (input.endsWith(".sb3")) {
128
+ inputType = "sb3";
129
+ }
130
+ else if (input.endsWith(".sb") || input.endsWith(".sprite")) {
131
+ throw new InferTypeError("input", "Scratch 1.4 input projects are not currently supported.");
132
+ }
133
+ else if (input.endsWith(".sb2") || input.endsWith(".sprite2")) {
134
+ throw new InferTypeError("input", "Scratch 2.0 input projects are not currently supported.");
135
+ }
136
+ else if (input.endsWith(".sprite3")) {
137
+ throw new InferTypeError("input", "Scratch 3.0 sprite inputs are not currently supported.");
138
+ }
139
+ else {
140
+ throw new InferTypeError("input", "Could not infer input file type.");
141
+ }
142
+ }
143
+ // Infer output type
144
+ if (outputType === undefined) {
145
+ if (output.endsWith(".zip")) {
146
+ outputType = "leopard-zip";
147
+ }
148
+ else if (output.endsWith(".sb")) {
149
+ throw new InferTypeError("output", "Scratch 1.4 output projects are not currently supported.");
150
+ }
151
+ else if (output.endsWith(".sb2")) {
152
+ throw new InferTypeError("output", "Scratch 2.0 output projects are not currently supported.");
153
+ }
154
+ else if (output.endsWith(".sb3")) {
155
+ throw new InferTypeError("output", "Scratch 3.0 output projects are not currently supported.");
156
+ }
157
+ else if (path.extname(output) === "") {
158
+ outputType = "leopard";
159
+ }
160
+ else {
161
+ throw new InferTypeError("output", "Could not infer output type.");
162
+ }
163
+ }
164
+ }
165
+ catch (err) {
166
+ if (err instanceof InferTypeError) {
167
+ process.stderr.write(chalk_1.default.red(templateObject_1 || (templateObject_1 = __makeTemplateObject(["", ""], ["", ""])), err.message));
168
+ switch (err.stage) {
169
+ case "input":
170
+ process.stderr.write(chalk_1.default.gray(templateObject_2 || (templateObject_2 = __makeTemplateObject([" Please choose a different input file. (Or, if your file is actually of a supported type and just has an unusual file name, specify the correct type with --input-type.)\n"], [" Please choose a different input file. (Or, if your file is actually of a supported type and just has an unusual file name, specify the correct type with --input-type.)\\n"]))));
171
+ break;
172
+ case "output":
173
+ process.stderr.write(chalk_1.default.gray(templateObject_3 || (templateObject_3 = __makeTemplateObject([" Please choose a different output path or specify the desired output type with --output-type.\n"], [" Please choose a different output path or specify the desired output type with --output-type.\\n"]))));
174
+ break;
175
+ }
176
+ process.exit(1);
177
+ }
178
+ }
179
+ function run() {
180
+ return __awaiter(this, void 0, void 0, function () {
181
+ function writeStep(description, fn) {
182
+ return __awaiter(this, void 0, void 0, function () {
183
+ var thisStepNumber, value, err_1, indent;
184
+ return __generator(this, function (_a) {
185
+ switch (_a.label) {
186
+ case 0:
187
+ thisStepNumber = stepNumber++;
188
+ process.stdout.write(chalk_1.default.gray(templateObject_4 || (templateObject_4 = __makeTemplateObject([" ", ". ", ""], [" ", ". ", ""])), thisStepNumber, description));
189
+ _a.label = 1;
190
+ case 1:
191
+ _a.trys.push([1, 3, , 4]);
192
+ return [4 /*yield*/, fn()];
193
+ case 2:
194
+ value = _a.sent();
195
+ process.stdout.write(chalk_1.default.bold.green(" Done.\n"));
196
+ return [3 /*break*/, 4];
197
+ case 3:
198
+ err_1 = _a.sent();
199
+ indent = " ".repeat(4 + String(thisStepNumber).length);
200
+ if (err_1 instanceof StepError) {
201
+ process.stdout.write(chalk_1.default.bold.red("\n".concat(indent).concat(err_1.message)));
202
+ process.stdout.write(chalk_1.default.red("\n\nProject conversion failed.\n"));
203
+ }
204
+ else {
205
+ process.stdout.write(chalk_1.default.bold.red(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n", "An unknown error occurred."], ["\\n", "An unknown error occurred."])), indent));
206
+ process.stdout.write(chalk_1.default.red(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n", "The JavaScript details are shown below."], ["\\n", "The JavaScript details are shown below."])), indent));
207
+ process.stdout.write(chalk_1.default.red(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n", "This is a bug, please share the project you used on:"], ["\\n", "This is a bug, please share the project you used on:"])), indent));
208
+ process.stdout.write("\n".concat(indent, "https://github.com/leopard-js/sb-edit/issues"));
209
+ process.stdout.write("\n\n");
210
+ if (options.trace && err_1 instanceof Error) {
211
+ console.error(err_1.stack);
212
+ }
213
+ else {
214
+ console.error(String(err_1));
215
+ }
216
+ }
217
+ process.exit(1);
218
+ return [3 /*break*/, 4];
219
+ case 4: return [2 /*return*/, value];
220
+ }
221
+ });
222
+ });
223
+ }
224
+ function toLeopard() {
225
+ var leopardURL = options.leopardUrl;
226
+ var fileJS = "index.esm.js";
227
+ var fileCSS = "index.min.css";
228
+ var leopardJSURL, leopardCSSURL;
229
+ try {
230
+ leopardJSURL = String(new URL(fileJS, leopardURL));
231
+ leopardCSSURL = String(new URL(fileCSS, leopardURL));
232
+ }
233
+ catch (_a) {
234
+ throw new Error("Provided leopard-url isn't a valid URL base");
235
+ }
236
+ return project.toLeopard({
237
+ leopardJSURL: leopardJSURL,
238
+ leopardCSSURL: leopardCSSURL
239
+ });
240
+ }
241
+ var StepError, stepNumber, fullInputPath, project, _a, leopard_1, fullOutputPath_1, leopard_2, fullOutputPath_2;
242
+ var _this = this;
243
+ return __generator(this, function (_b) {
244
+ switch (_b.label) {
245
+ case 0:
246
+ StepError = /** @class */ (function (_super) {
247
+ __extends(StepError, _super);
248
+ function StepError(message) {
249
+ var _this = _super.call(this, message) || this;
250
+ _this.name = "StepError";
251
+ Object.setPrototypeOf(_this, StepError.prototype);
252
+ return _this;
253
+ }
254
+ return StepError;
255
+ }(Error));
256
+ stepNumber = 1;
257
+ process.stdout.write(chalk_1.default.underline.gray(templateObject_8 || (templateObject_8 = __makeTemplateObject(["Converting project:\n"], ["Converting project:\\n"]))));
258
+ fullInputPath = path.resolve(process.cwd(), input);
259
+ return [4 /*yield*/, writeStep("".concat(chalk_1.default.bold("Importing"), " ").concat(inputType, " project from path ").concat(chalk_1.default.white(fullInputPath), "."), function () { return __awaiter(_this, void 0, void 0, function () {
260
+ var file, err_2, project, _a;
261
+ return __generator(this, function (_b) {
262
+ switch (_b.label) {
263
+ case 0:
264
+ _b.trys.push([0, 2, , 3]);
265
+ return [4 /*yield*/, fs.readFile(fullInputPath)];
266
+ case 1:
267
+ file = _b.sent();
268
+ return [3 /*break*/, 3];
269
+ case 2:
270
+ err_2 = _b.sent();
271
+ if (err_2 instanceof Object && "code" in err_2) {
272
+ switch (err_2.code) {
273
+ case "ENOENT":
274
+ throw new StepError("File not found.");
275
+ case "EISDIR":
276
+ throw new StepError("Input path is a directory but should be a file.");
277
+ }
278
+ }
279
+ throw err_2;
280
+ case 3:
281
+ _a = inputType;
282
+ switch (_a) {
283
+ case "sb3": return [3 /*break*/, 4];
284
+ }
285
+ return [3 /*break*/, 6];
286
+ case 4: return [4 /*yield*/, Project_1.default.fromSb3(file)];
287
+ case 5:
288
+ project = _b.sent();
289
+ return [3 /*break*/, 6];
290
+ case 6: return [2 /*return*/, project];
291
+ }
292
+ });
293
+ }); })];
294
+ case 1:
295
+ project = _b.sent();
296
+ _a = outputType;
297
+ switch (_a) {
298
+ case "leopard": return [3 /*break*/, 2];
299
+ case "leopard-zip": return [3 /*break*/, 5];
300
+ }
301
+ return [3 /*break*/, 8];
302
+ case 2: return [4 /*yield*/, writeStep("".concat(chalk_1.default.bold("Converting"), " project to ").concat(chalk_1.default.white("Leopard"), "."), toLeopard)];
303
+ case 3:
304
+ leopard_1 = _b.sent();
305
+ fullOutputPath_1 = path.resolve(process.cwd(), output);
306
+ return [4 /*yield*/, writeStep("".concat(chalk_1.default.bold("Exporting"), " project to directory ").concat(chalk_1.default.white(fullOutputPath_1), "."), function () { return __awaiter(_this, void 0, void 0, function () {
307
+ var existingFiles, err_3, _a, _i, _b, _c, filename, contents, filePath, _d, _e, target, costumeDir, _f, _g, costume, filename, asset, soundDir, _h, _j, sound, filename, asset;
308
+ return __generator(this, function (_k) {
309
+ switch (_k.label) {
310
+ case 0:
311
+ _k.trys.push([0, 2, , 10]);
312
+ return [4 /*yield*/, fs.readdir(fullOutputPath_1)];
313
+ case 1:
314
+ existingFiles = _k.sent();
315
+ return [3 /*break*/, 10];
316
+ case 2:
317
+ err_3 = _k.sent();
318
+ if (!(err_3 instanceof Object && "code" in err_3)) return [3 /*break*/, 8];
319
+ _a = err_3.code;
320
+ switch (_a) {
321
+ case "ENOENT": return [3 /*break*/, 3];
322
+ case "ENOTDIR": return [3 /*break*/, 5];
323
+ }
324
+ return [3 /*break*/, 6];
325
+ case 3:
326
+ // Directory does not exist, create it
327
+ return [4 /*yield*/, fs.mkdir(output, { recursive: true })];
328
+ case 4:
329
+ // Directory does not exist, create it
330
+ _k.sent();
331
+ existingFiles = [];
332
+ return [3 /*break*/, 7];
333
+ case 5: throw new StepError("Output path is a file, not a directory.");
334
+ case 6: throw err_3;
335
+ case 7: return [3 /*break*/, 9];
336
+ case 8: throw err_3;
337
+ case 9: return [3 /*break*/, 10];
338
+ case 10:
339
+ if (existingFiles.length > 0) {
340
+ throw new StepError("Output directory is not empty.");
341
+ }
342
+ _i = 0, _b = Object.entries(leopard_1);
343
+ _k.label = 11;
344
+ case 11:
345
+ if (!(_i < _b.length)) return [3 /*break*/, 15];
346
+ _c = _b[_i], filename = _c[0], contents = _c[1];
347
+ filePath = path.resolve(fullOutputPath_1, filename);
348
+ // Create directories as needed
349
+ return [4 /*yield*/, fs.mkdir(path.dirname(filePath), { recursive: true })];
350
+ case 12:
351
+ // Create directories as needed
352
+ _k.sent();
353
+ // Write the file
354
+ return [4 /*yield*/, fs.writeFile(filePath, contents)];
355
+ case 13:
356
+ // Write the file
357
+ _k.sent();
358
+ _k.label = 14;
359
+ case 14:
360
+ _i++;
361
+ return [3 /*break*/, 11];
362
+ case 15:
363
+ _d = 0, _e = __spreadArray([project.stage], project.sprites, true);
364
+ _k.label = 16;
365
+ case 16:
366
+ if (!(_d < _e.length)) return [3 /*break*/, 27];
367
+ target = _e[_d];
368
+ costumeDir = path.join(target.name, "costumes");
369
+ return [4 /*yield*/, fs.mkdir(path.resolve(fullOutputPath_1, costumeDir), { recursive: true })];
370
+ case 17:
371
+ _k.sent();
372
+ _f = 0, _g = target.costumes;
373
+ _k.label = 18;
374
+ case 18:
375
+ if (!(_f < _g.length)) return [3 /*break*/, 21];
376
+ costume = _g[_f];
377
+ filename = path.join(costumeDir, "".concat(costume.name, ".").concat(costume.ext));
378
+ asset = Buffer.from(costume.asset);
379
+ return [4 /*yield*/, fs.writeFile(path.resolve(fullOutputPath_1, filename), asset)];
380
+ case 19:
381
+ _k.sent();
382
+ _k.label = 20;
383
+ case 20:
384
+ _f++;
385
+ return [3 /*break*/, 18];
386
+ case 21:
387
+ soundDir = path.join(target.name, "sounds");
388
+ return [4 /*yield*/, fs.mkdir(path.resolve(fullOutputPath_1, soundDir), { recursive: true })];
389
+ case 22:
390
+ _k.sent();
391
+ _h = 0, _j = target.sounds;
392
+ _k.label = 23;
393
+ case 23:
394
+ if (!(_h < _j.length)) return [3 /*break*/, 26];
395
+ sound = _j[_h];
396
+ filename = path.join(soundDir, "".concat(sound.name, ".").concat(sound.ext));
397
+ asset = Buffer.from(sound.asset);
398
+ return [4 /*yield*/, fs.writeFile(path.resolve(fullOutputPath_1, filename), asset)];
399
+ case 24:
400
+ _k.sent();
401
+ _k.label = 25;
402
+ case 25:
403
+ _h++;
404
+ return [3 /*break*/, 23];
405
+ case 26:
406
+ _d++;
407
+ return [3 /*break*/, 16];
408
+ case 27: return [2 /*return*/];
409
+ }
410
+ });
411
+ }); })];
412
+ case 4:
413
+ _b.sent();
414
+ process.stdout.write(chalk_1.default.green(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\nProject exported to Leopard format."], ["\\nProject exported to Leopard format."]))));
415
+ process.stdout.write(chalk_1.default.gray(templateObject_10 || (templateObject_10 = __makeTemplateObject([" Files written to ", "\n\n"], [" Files written to ", "\\n\\n"])), chalk_1.default.white(fullOutputPath_1)));
416
+ process.stdout.write(chalkBox([
417
+ "To preview the project, run:",
418
+ "$ ".concat(chalk_1.default.white(templateObject_11 || (templateObject_11 = __makeTemplateObject(["cd ", ""], ["cd ", ""])), output)),
419
+ "$ ".concat(chalk_1.default.white(templateObject_12 || (templateObject_12 = __makeTemplateObject(["npx vite"], ["npx vite"]))), " # or serve with any HTTP server")
420
+ ]));
421
+ return [3 /*break*/, 8];
422
+ case 5: return [4 /*yield*/, writeStep("".concat(chalk_1.default.bold("Converting"), " project to ").concat(chalk_1.default.white("Leopard"), "."), toLeopard)];
423
+ case 6:
424
+ leopard_2 = _b.sent();
425
+ fullOutputPath_2 = path.resolve(process.cwd(), output);
426
+ return [4 /*yield*/, writeStep("".concat(chalk_1.default.bold("Exporting"), " project to zip file ").concat(chalk_1.default.white(fullOutputPath_2), "."), function () { return __awaiter(_this, void 0, void 0, function () {
427
+ var err_4, zip, _i, _a, _b, filename, contents, _c, _d, target, _e, _f, costume, filename, asset, _g, _h, sound, filename, asset;
428
+ return __generator(this, function (_j) {
429
+ switch (_j.label) {
430
+ case 0:
431
+ _j.trys.push([0, 2, , 3]);
432
+ return [4 /*yield*/, fs.access(fullOutputPath_2)];
433
+ case 1:
434
+ _j.sent();
435
+ throw new StepError("Output file already exists.");
436
+ case 2:
437
+ err_4 = _j.sent();
438
+ if (err_4 instanceof Object && "code" in err_4 && err_4.code === "ENOENT") {
439
+ // File does not exist, good
440
+ }
441
+ else {
442
+ throw err_4;
443
+ }
444
+ return [3 /*break*/, 3];
445
+ case 3:
446
+ zip = new jszip_1.default();
447
+ for (_i = 0, _a = Object.entries(leopard_2); _i < _a.length; _i++) {
448
+ _b = _a[_i], filename = _b[0], contents = _b[1];
449
+ zip.file(filename, contents);
450
+ }
451
+ for (_c = 0, _d = __spreadArray([project.stage], project.sprites, true); _c < _d.length; _c++) {
452
+ target = _d[_c];
453
+ for (_e = 0, _f = target.costumes; _e < _f.length; _e++) {
454
+ costume = _f[_e];
455
+ filename = "".concat(target.name, "/costumes/").concat(costume.name, ".").concat(costume.ext);
456
+ asset = Buffer.from(costume.asset);
457
+ zip.file(filename, asset);
458
+ }
459
+ for (_g = 0, _h = target.sounds; _g < _h.length; _g++) {
460
+ sound = _h[_g];
461
+ filename = "".concat(target.name, "/sounds/").concat(sound.name, ".").concat(sound.ext);
462
+ asset = Buffer.from(sound.asset);
463
+ zip.file(filename, asset);
464
+ }
465
+ }
466
+ zip.generateNodeStream({ type: "nodebuffer", streamFiles: true }).pipe((0, node_fs_1.createWriteStream)(fullOutputPath_2));
467
+ return [2 /*return*/];
468
+ }
469
+ });
470
+ }); })];
471
+ case 7:
472
+ _b.sent();
473
+ return [3 /*break*/, 8];
474
+ case 8: return [2 /*return*/];
475
+ }
476
+ });
477
+ });
478
+ }
479
+ function stripAnsi(string) {
480
+ var pattern = [
481
+ "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
482
+ "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"
483
+ ].join("|");
484
+ var regex = new RegExp(pattern, "g");
485
+ return string.replace(regex, "");
486
+ }
487
+ function stringLength(string) {
488
+ return stripAnsi(string).length;
489
+ }
490
+ function chalkBox(lines) {
491
+ var boxInnerWidth = Math.max.apply(Math, lines.map(stringLength)) + 2;
492
+ var outputStr = "";
493
+ outputStr += chalk_1.default.bold.blue(templateObject_13 || (templateObject_13 = __makeTemplateObject(["\u2554", "\u2557"], ["\u2554", "\u2557"])), "═".repeat(boxInnerWidth));
494
+ for (var _i = 0, lines_1 = lines; _i < lines_1.length; _i++) {
495
+ var line = lines_1[_i];
496
+ outputStr += chalk_1.default.bold.blue(templateObject_14 || (templateObject_14 = __makeTemplateObject(["\n\u2551 "], ["\\n\u2551 "])));
497
+ outputStr += chalk_1.default.gray(line);
498
+ outputStr += " ".repeat(boxInnerWidth - stringLength(line) - 2);
499
+ outputStr += chalk_1.default.bold.blue(templateObject_15 || (templateObject_15 = __makeTemplateObject([" \u2551"], [" \u2551"])));
500
+ }
501
+ outputStr += chalk_1.default.bold.blue("\n\u255A".concat("═".repeat(boxInnerWidth), "\u255D\n"));
502
+ return outputStr;
503
+ }
504
+ run().catch(function (err) {
505
+ if (err instanceof Error) {
506
+ console.error(err.stack);
507
+ }
508
+ process.exit(1);
509
+ });
510
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15;
511
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLHVDQUE0QztBQUM1Qyx1REFBaUM7QUFDakMsbUNBQTRDO0FBQzVDLG1EQUF1QztBQUN2Qyw4Q0FBa0M7QUFDbEMsZ0RBQTBCO0FBQzFCLGdEQUEwQjtBQUUxQixJQUFNLE9BQU8sR0FBRyxJQUFJLG1CQUFPLEVBQUUsQ0FBQztBQUU5QixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0FBRTdFLE9BQU87S0FDSixjQUFjLENBQUMsb0JBQW9CLEVBQUUsK0JBQStCLENBQUM7S0FDckUsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FBQywwQkFBMEIsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDNUYsY0FBYyxDQUFDLHFCQUFxQixFQUFFLGdDQUFnQyxDQUFDO0tBQ3ZFLFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsMkJBQTJCLEVBQUUseUJBQXlCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztLQUNqSCxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLGFBQWEsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO0tBQ25FLFNBQVMsQ0FDUixJQUFJLGtCQUFNLENBQUMscUJBQXFCLEVBQUUsNEJBQTRCLENBQUMsQ0FBQyxPQUFPLENBQUMsdUVBQXVFLENBQUMsQ0FDakosQ0FBQztBQUVKLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUVoQixJQUFNLE9BQU8sR0FPVCxPQUFP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
package/lib/index.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import Block from "./Block";
2
+ import * as BlockInput from "./BlockInput";
3
+ import Costume from "./Costume";
4
+ import Project from "./Project";
5
+ import Sound from "./Sound";
6
+ import { Sprite, Stage } from "./Target";
7
+ import { List, Variable } from "./Data";
8
+ import Script from "./Script";
9
+ import { OpCode } from "./OpCode";
10
+ export { Project, Sprite, Stage, Costume, Sound, Block, BlockInput, Variable, List, Script, OpCode };
package/lib/index.js ADDED
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.OpCode = exports.Script = exports.List = exports.Variable = exports.BlockInput = exports.Sound = exports.Costume = exports.Stage = exports.Sprite = exports.Project = void 0;
30
+ var BlockInput = __importStar(require("./BlockInput"));
31
+ exports.BlockInput = BlockInput;
32
+ var Costume_1 = __importDefault(require("./Costume"));
33
+ exports.Costume = Costume_1.default;
34
+ var Project_1 = __importDefault(require("./Project"));
35
+ exports.Project = Project_1.default;
36
+ var Sound_1 = __importDefault(require("./Sound"));
37
+ exports.Sound = Sound_1.default;
38
+ var Target_1 = require("./Target");
39
+ Object.defineProperty(exports, "Sprite", { enumerable: true, get: function () { return Target_1.Sprite; } });
40
+ Object.defineProperty(exports, "Stage", { enumerable: true, get: function () { return Target_1.Stage; } });
41
+ var Data_1 = require("./Data");
42
+ Object.defineProperty(exports, "List", { enumerable: true, get: function () { return Data_1.List; } });
43
+ Object.defineProperty(exports, "Variable", { enumerable: true, get: function () { return Data_1.Variable; } });
44
+ var Script_1 = __importDefault(require("./Script"));
45
+ exports.Script = Script_1.default;
46
+ var OpCode_1 = require("./OpCode");
47
+ Object.defineProperty(exports, "OpCode", { enumerable: true, get: function () { return OpCode_1.OpCode; } });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSx1REFBMkM7QUFVYSxnQ0FBVTtBQVRsRSxzREFBZ0M7QUFTQyxrQkFUMUIsaUJBQU8sQ0FTMEI7QUFSeEMsc0RBQWdDO0FBUXZCLGtCQVJGLGlCQUFPLENBUUU7QUFQaEIsa0RBQTRCO0FBT2MsZ0JBUG5DLGVBQUssQ0FPbUM7QUFOL0MsbUNBQXlDO0FBTXZCLHVGQU5ULGVBQU0sT0FNUztBQUFFLHNGQU5ULGNBQUssT0FNUztBQUwvQiwrQkFBd0M7QUFLc0MscUZBTHJFLFdBQUksT0FLcUU7QUFBZCx5RkFMckQsZUFBUSxPQUtxRDtBQUo1RSxvREFBOEI7QUFJc0QsaUJBSjdFLGdCQUFNLENBSTZFO0FBRjFGLG1DQUFrQztBQUUwRCx1RkFGbkYsZUFBTSxPQUVtRiJ9
@@ -0,0 +1,22 @@
1
+ import Project from "../../Project";
2
+ import * as prettier from "prettier";
3
+ export interface ToLeopardOptions {
4
+ leopardJSURL: string;
5
+ leopardCSSURL: string;
6
+ getTargetURL: (info: {
7
+ name: string;
8
+ from: "index" | "target";
9
+ }) => string;
10
+ getAssetURL: (info: {
11
+ type: "costume" | "sound";
12
+ target: string;
13
+ name: string;
14
+ md5: string;
15
+ ext: string;
16
+ }) => string;
17
+ indexURL: string;
18
+ autoplay: boolean;
19
+ }
20
+ export default function toLeopard(project: Project, inOptions?: Partial<ToLeopardOptions>, prettierConfig?: prettier.Options): Promise<{
21
+ [fileName: string]: string;
22
+ }>;