pxt-core 13.1.18 → 13.1.20

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/built/pxt.js CHANGED
@@ -113528,7 +113528,7 @@ var pxt;
113528
113528
  }]
113529
113529
  },
113530
113530
  {
113531
- name: lf("booming kick"),
113531
+ name: lf("boom kick"),
113532
113532
  startFrequency: 100,
113533
113533
  startVolume: 1024,
113534
113534
  steps: [{
@@ -119033,10 +119033,12 @@ var pxt;
119033
119033
  * @param skipIDs string[] a list of string ids (block id, asset id, or file name) to ignore
119034
119034
  **/
119035
119035
  isAssetUsed(asset, files, skipIDs) {
119036
- var _a, _b, _c;
119037
- let blockIds = ((_b = (_a = asset.meta) === null || _a === void 0 ? void 0 : _a.blockIDs) === null || _b === void 0 ? void 0 : _b.filter(id => !skipIDs || (skipIDs === null || skipIDs === void 0 ? void 0 : skipIDs.indexOf(id)) < 0)) || [];
119038
- if (blockIds.length > 0)
119039
- return true;
119036
+ var _a, _b, _c, _d, _e;
119037
+ if (!((_a = asset.meta) === null || _a === void 0 ? void 0 : _a.displayName) || !files) {
119038
+ let blockIds = ((_c = (_b = asset.meta) === null || _b === void 0 ? void 0 : _b.blockIDs) === null || _c === void 0 ? void 0 : _c.filter(id => !skipIDs || (skipIDs === null || skipIDs === void 0 ? void 0 : skipIDs.indexOf(id)) < 0)) || [];
119039
+ if (blockIds.length > 0)
119040
+ return true;
119041
+ }
119040
119042
  if (asset.type == "tile" /* pxt.AssetType.Tile */) {
119041
119043
  for (const tm of this.getAssets("tilemap" /* AssetType.Tilemap */)) {
119042
119044
  if ((skipIDs === null || skipIDs === void 0 ? void 0 : skipIDs.indexOf(tm.id)) >= 0) {
@@ -119048,84 +119050,83 @@ var pxt;
119048
119050
  }
119049
119051
  }
119050
119052
  if (files) {
119051
- const shortId = pxt.Util.escapeForRegex(getShortIDForAsset(asset));
119052
- const displayName = pxt.Util.escapeForRegex((_c = asset.meta) === null || _c === void 0 ? void 0 : _c.displayName) || "";
119053
- let assetTsRefs;
119054
- switch (asset.type) {
119055
- case "tile" /* pxt.AssetType.Tile */:
119056
- assetTsRefs = `myTiles.${shortId}|assets.tile\`${shortId}\``;
119057
- if (displayName)
119058
- assetTsRefs += `|assets.tile\`${displayName}\``;
119059
- break;
119060
- case "tilemap" /* pxt.AssetType.Tilemap */:
119061
- assetTsRefs = `tilemap\`${shortId}\``;
119062
- break;
119063
- case "animation" /* pxt.AssetType.Animation */:
119064
- assetTsRefs = `assets.animation\`${shortId}\``;
119065
- if (displayName)
119066
- assetTsRefs += `|assets.animation\`${displayName}\``;
119067
- break;
119068
- case "song" /* pxt.AssetType.Song */:
119069
- assetTsRefs = `assets.song\`${shortId}\``;
119070
- if (displayName)
119071
- assetTsRefs += `|assets.song\`${displayName}\``;
119072
- break;
119073
- case "json" /* pxt.AssetType.Json */:
119074
- assetTsRefs = `assets.json\`${shortId}\``;
119075
- if (displayName)
119076
- assetTsRefs += `|assets.json\`${displayName}\``;
119077
- break;
119078
- default:
119079
- assetTsRefs = `assets.image\`${shortId}\``;
119080
- if (displayName)
119081
- assetTsRefs += `|assets.image\`${displayName}\``;
119082
- break;
119053
+ const config = pxt.U.jsonTryParse((_d = files["pxt.json"]) === null || _d === void 0 ? void 0 : _d.content);
119054
+ const filesToCheck = [];
119055
+ if (config === null || config === void 0 ? void 0 : config.files) {
119056
+ for (const file of config.files) {
119057
+ if (file.endsWith(".g.ts"))
119058
+ continue;
119059
+ if (skipIDs && (skipIDs.indexOf(file) !== -1))
119060
+ continue;
119061
+ if (file.endsWith(".ts") && file !== pxt.MAIN_TS || file.endsWith(".py") && file !== pxt.MAIN_PY) {
119062
+ filesToCheck.push(file);
119063
+ }
119064
+ }
119065
+ }
119066
+ if ((config === null || config === void 0 ? void 0 : config.preferredEditor) === pxt.BLOCKS_PROJECT_NAME) {
119067
+ filesToCheck.push(pxt.MAIN_BLOCKS);
119083
119068
  }
119084
- const assetTsRegex = new RegExp(assetTsRefs, "gm");
119085
- let assetPyRefs;
119069
+ else if ((config === null || config === void 0 ? void 0 : config.preferredEditor) === pxt.JAVASCRIPT_PROJECT_NAME) {
119070
+ filesToCheck.push(pxt.MAIN_TS);
119071
+ }
119072
+ else if ((config === null || config === void 0 ? void 0 : config.preferredEditor) === pxt.PYTHON_PROJECT_NAME) {
119073
+ filesToCheck.push(pxt.MAIN_PY);
119074
+ }
119075
+ const references = [];
119076
+ const shortId = pxt.Util.escapeForRegex(getShortIDForAsset(asset));
119077
+ const displayName = pxt.Util.escapeForRegex((_e = asset.meta) === null || _e === void 0 ? void 0 : _e.displayName) || "";
119078
+ const addNamespaceReference = (namespace, fun, id) => {
119079
+ references.push(`${namespace}\\s*\\.\\s*${fun}\`\\s*${id}\\s*\``);
119080
+ };
119086
119081
  switch (asset.type) {
119087
119082
  case "tile" /* pxt.AssetType.Tile */:
119088
- assetPyRefs = `myTiles.${shortId}|assets.tile\("""${shortId}"""\)`;
119083
+ references.push(`myTiles\\s*\\.\\s*${shortId}\\s*`);
119084
+ addNamespaceReference("assets", "tile", shortId);
119089
119085
  if (displayName)
119090
- assetPyRefs += `|assets.tile\("""${displayName}"""\)`;
119086
+ addNamespaceReference("assets", "tile", displayName);
119091
119087
  break;
119092
119088
  case "tilemap" /* pxt.AssetType.Tilemap */:
119093
- assetPyRefs = `assets.tilemap\("""${shortId}"""\)`;
119089
+ references.push(`tilemap\`\\s*${shortId}\\s*\``);
119090
+ addNamespaceReference("assets", "tilemap", shortId);
119091
+ if (displayName) {
119092
+ references.push(`tilemap\`\\s*${displayName}\\s*\``);
119093
+ addNamespaceReference("assets", "tilemap", displayName);
119094
+ }
119094
119095
  break;
119095
119096
  case "animation" /* pxt.AssetType.Animation */:
119096
- assetPyRefs = `assets.animation\("""${shortId}"""\)`;
119097
+ addNamespaceReference("assets", "animation", shortId);
119097
119098
  if (displayName)
119098
- assetPyRefs += `|assets.animation\("""${displayName}"""\)`;
119099
+ addNamespaceReference("assets", "animation", displayName);
119099
119100
  break;
119100
119101
  case "song" /* pxt.AssetType.Song */:
119101
- assetPyRefs = `assets.song\("""${shortId}"""\)`;
119102
+ addNamespaceReference("assets", "song", shortId);
119102
119103
  if (displayName)
119103
- assetPyRefs += `|assets.song\("""${displayName}"""\)`;
119104
+ addNamespaceReference("assets", "song", displayName);
119104
119105
  break;
119105
119106
  case "json" /* pxt.AssetType.Json */:
119106
- assetPyRefs = `assets.json\("""${shortId}"""\)`;
119107
+ addNamespaceReference("assets", "json", shortId);
119107
119108
  if (displayName)
119108
- assetPyRefs += `|assets.json\("""${displayName}"""\)`;
119109
+ addNamespaceReference("assets", "json", displayName);
119109
119110
  break;
119110
119111
  default:
119111
- assetPyRefs = `assets.image\("""${shortId}"""\)`;
119112
+ addNamespaceReference("assets", "image", shortId);
119112
119113
  if (displayName)
119113
- assetPyRefs += `|assets.image\("""${displayName}"""\)`;
119114
+ addNamespaceReference("assets", "image", displayName);
119114
119115
  break;
119115
119116
  }
119116
- const assetPyRegex = new RegExp(assetPyRefs, "gm");
119117
- for (let filename of Object.keys(files)) {
119118
- if ((skipIDs === null || skipIDs === void 0 ? void 0 : skipIDs.indexOf(filename)) >= 0)
119119
- continue;
119120
- const f = files[filename];
119121
- // Match .ts files that are not generated (.g.ts)
119122
- if (filename.match(/((?!\.g).{2}|^.{0,1})\.ts$/i)) {
119123
- if (f.content.match(assetTsRegex))
119117
+ const regex = new RegExp(references.map(r => `(?:${r})`).join("|"));
119118
+ const pyRegex = new RegExp(references.map(r => `(?:${r})`).join("|").replace(/`/g, '"""'));
119119
+ for (const file of filesToCheck) {
119120
+ const content = files[file].content;
119121
+ if (file.endsWith(".py")) {
119122
+ if (pyRegex.test(content)) {
119124
119123
  return true;
119124
+ }
119125
119125
  }
119126
- else if (filename.endsWith(".py")) {
119127
- if (f.content.match(assetPyRegex))
119126
+ else {
119127
+ if (regex.test(content)) {
119128
119128
  return true;
119129
+ }
119129
119130
  }
119130
119131
  }
119131
119132
  }
package/built/pxtlib.js CHANGED
@@ -15807,7 +15807,7 @@ var pxt;
15807
15807
  }]
15808
15808
  },
15809
15809
  {
15810
- name: lf("booming kick"),
15810
+ name: lf("boom kick"),
15811
15811
  startFrequency: 100,
15812
15812
  startVolume: 1024,
15813
15813
  steps: [{
@@ -21312,10 +21312,12 @@ var pxt;
21312
21312
  * @param skipIDs string[] a list of string ids (block id, asset id, or file name) to ignore
21313
21313
  **/
21314
21314
  isAssetUsed(asset, files, skipIDs) {
21315
- var _a, _b, _c;
21316
- let blockIds = ((_b = (_a = asset.meta) === null || _a === void 0 ? void 0 : _a.blockIDs) === null || _b === void 0 ? void 0 : _b.filter(id => !skipIDs || (skipIDs === null || skipIDs === void 0 ? void 0 : skipIDs.indexOf(id)) < 0)) || [];
21317
- if (blockIds.length > 0)
21318
- return true;
21315
+ var _a, _b, _c, _d, _e;
21316
+ if (!((_a = asset.meta) === null || _a === void 0 ? void 0 : _a.displayName) || !files) {
21317
+ let blockIds = ((_c = (_b = asset.meta) === null || _b === void 0 ? void 0 : _b.blockIDs) === null || _c === void 0 ? void 0 : _c.filter(id => !skipIDs || (skipIDs === null || skipIDs === void 0 ? void 0 : skipIDs.indexOf(id)) < 0)) || [];
21318
+ if (blockIds.length > 0)
21319
+ return true;
21320
+ }
21319
21321
  if (asset.type == "tile" /* pxt.AssetType.Tile */) {
21320
21322
  for (const tm of this.getAssets("tilemap" /* AssetType.Tilemap */)) {
21321
21323
  if ((skipIDs === null || skipIDs === void 0 ? void 0 : skipIDs.indexOf(tm.id)) >= 0) {
@@ -21327,84 +21329,83 @@ var pxt;
21327
21329
  }
21328
21330
  }
21329
21331
  if (files) {
21330
- const shortId = pxt.Util.escapeForRegex(getShortIDForAsset(asset));
21331
- const displayName = pxt.Util.escapeForRegex((_c = asset.meta) === null || _c === void 0 ? void 0 : _c.displayName) || "";
21332
- let assetTsRefs;
21333
- switch (asset.type) {
21334
- case "tile" /* pxt.AssetType.Tile */:
21335
- assetTsRefs = `myTiles.${shortId}|assets.tile\`${shortId}\``;
21336
- if (displayName)
21337
- assetTsRefs += `|assets.tile\`${displayName}\``;
21338
- break;
21339
- case "tilemap" /* pxt.AssetType.Tilemap */:
21340
- assetTsRefs = `tilemap\`${shortId}\``;
21341
- break;
21342
- case "animation" /* pxt.AssetType.Animation */:
21343
- assetTsRefs = `assets.animation\`${shortId}\``;
21344
- if (displayName)
21345
- assetTsRefs += `|assets.animation\`${displayName}\``;
21346
- break;
21347
- case "song" /* pxt.AssetType.Song */:
21348
- assetTsRefs = `assets.song\`${shortId}\``;
21349
- if (displayName)
21350
- assetTsRefs += `|assets.song\`${displayName}\``;
21351
- break;
21352
- case "json" /* pxt.AssetType.Json */:
21353
- assetTsRefs = `assets.json\`${shortId}\``;
21354
- if (displayName)
21355
- assetTsRefs += `|assets.json\`${displayName}\``;
21356
- break;
21357
- default:
21358
- assetTsRefs = `assets.image\`${shortId}\``;
21359
- if (displayName)
21360
- assetTsRefs += `|assets.image\`${displayName}\``;
21361
- break;
21332
+ const config = pxt.U.jsonTryParse((_d = files["pxt.json"]) === null || _d === void 0 ? void 0 : _d.content);
21333
+ const filesToCheck = [];
21334
+ if (config === null || config === void 0 ? void 0 : config.files) {
21335
+ for (const file of config.files) {
21336
+ if (file.endsWith(".g.ts"))
21337
+ continue;
21338
+ if (skipIDs && (skipIDs.indexOf(file) !== -1))
21339
+ continue;
21340
+ if (file.endsWith(".ts") && file !== pxt.MAIN_TS || file.endsWith(".py") && file !== pxt.MAIN_PY) {
21341
+ filesToCheck.push(file);
21342
+ }
21343
+ }
21344
+ }
21345
+ if ((config === null || config === void 0 ? void 0 : config.preferredEditor) === pxt.BLOCKS_PROJECT_NAME) {
21346
+ filesToCheck.push(pxt.MAIN_BLOCKS);
21362
21347
  }
21363
- const assetTsRegex = new RegExp(assetTsRefs, "gm");
21364
- let assetPyRefs;
21348
+ else if ((config === null || config === void 0 ? void 0 : config.preferredEditor) === pxt.JAVASCRIPT_PROJECT_NAME) {
21349
+ filesToCheck.push(pxt.MAIN_TS);
21350
+ }
21351
+ else if ((config === null || config === void 0 ? void 0 : config.preferredEditor) === pxt.PYTHON_PROJECT_NAME) {
21352
+ filesToCheck.push(pxt.MAIN_PY);
21353
+ }
21354
+ const references = [];
21355
+ const shortId = pxt.Util.escapeForRegex(getShortIDForAsset(asset));
21356
+ const displayName = pxt.Util.escapeForRegex((_e = asset.meta) === null || _e === void 0 ? void 0 : _e.displayName) || "";
21357
+ const addNamespaceReference = (namespace, fun, id) => {
21358
+ references.push(`${namespace}\\s*\\.\\s*${fun}\`\\s*${id}\\s*\``);
21359
+ };
21365
21360
  switch (asset.type) {
21366
21361
  case "tile" /* pxt.AssetType.Tile */:
21367
- assetPyRefs = `myTiles.${shortId}|assets.tile\("""${shortId}"""\)`;
21362
+ references.push(`myTiles\\s*\\.\\s*${shortId}\\s*`);
21363
+ addNamespaceReference("assets", "tile", shortId);
21368
21364
  if (displayName)
21369
- assetPyRefs += `|assets.tile\("""${displayName}"""\)`;
21365
+ addNamespaceReference("assets", "tile", displayName);
21370
21366
  break;
21371
21367
  case "tilemap" /* pxt.AssetType.Tilemap */:
21372
- assetPyRefs = `assets.tilemap\("""${shortId}"""\)`;
21368
+ references.push(`tilemap\`\\s*${shortId}\\s*\``);
21369
+ addNamespaceReference("assets", "tilemap", shortId);
21370
+ if (displayName) {
21371
+ references.push(`tilemap\`\\s*${displayName}\\s*\``);
21372
+ addNamespaceReference("assets", "tilemap", displayName);
21373
+ }
21373
21374
  break;
21374
21375
  case "animation" /* pxt.AssetType.Animation */:
21375
- assetPyRefs = `assets.animation\("""${shortId}"""\)`;
21376
+ addNamespaceReference("assets", "animation", shortId);
21376
21377
  if (displayName)
21377
- assetPyRefs += `|assets.animation\("""${displayName}"""\)`;
21378
+ addNamespaceReference("assets", "animation", displayName);
21378
21379
  break;
21379
21380
  case "song" /* pxt.AssetType.Song */:
21380
- assetPyRefs = `assets.song\("""${shortId}"""\)`;
21381
+ addNamespaceReference("assets", "song", shortId);
21381
21382
  if (displayName)
21382
- assetPyRefs += `|assets.song\("""${displayName}"""\)`;
21383
+ addNamespaceReference("assets", "song", displayName);
21383
21384
  break;
21384
21385
  case "json" /* pxt.AssetType.Json */:
21385
- assetPyRefs = `assets.json\("""${shortId}"""\)`;
21386
+ addNamespaceReference("assets", "json", shortId);
21386
21387
  if (displayName)
21387
- assetPyRefs += `|assets.json\("""${displayName}"""\)`;
21388
+ addNamespaceReference("assets", "json", displayName);
21388
21389
  break;
21389
21390
  default:
21390
- assetPyRefs = `assets.image\("""${shortId}"""\)`;
21391
+ addNamespaceReference("assets", "image", shortId);
21391
21392
  if (displayName)
21392
- assetPyRefs += `|assets.image\("""${displayName}"""\)`;
21393
+ addNamespaceReference("assets", "image", displayName);
21393
21394
  break;
21394
21395
  }
21395
- const assetPyRegex = new RegExp(assetPyRefs, "gm");
21396
- for (let filename of Object.keys(files)) {
21397
- if ((skipIDs === null || skipIDs === void 0 ? void 0 : skipIDs.indexOf(filename)) >= 0)
21398
- continue;
21399
- const f = files[filename];
21400
- // Match .ts files that are not generated (.g.ts)
21401
- if (filename.match(/((?!\.g).{2}|^.{0,1})\.ts$/i)) {
21402
- if (f.content.match(assetTsRegex))
21396
+ const regex = new RegExp(references.map(r => `(?:${r})`).join("|"));
21397
+ const pyRegex = new RegExp(references.map(r => `(?:${r})`).join("|").replace(/`/g, '"""'));
21398
+ for (const file of filesToCheck) {
21399
+ const content = files[file].content;
21400
+ if (file.endsWith(".py")) {
21401
+ if (pyRegex.test(content)) {
21403
21402
  return true;
21403
+ }
21404
21404
  }
21405
- else if (filename.endsWith(".py")) {
21406
- if (f.content.match(assetPyRegex))
21405
+ else {
21406
+ if (regex.test(content)) {
21407
21407
  return true;
21408
+ }
21408
21409
  }
21409
21410
  }
21410
21411
  }