@markw65/monkeyc-optimizer 1.1.30 → 1.1.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -902,3 +902,10 @@ No functional change, just fixes a typo that broke the typescript exports.
902
902
  - Bug fixes
903
903
  - Fixes an issue where exporting a project that uses barrels could fail.
904
904
  - Fixes a type analysis bug that could result in the type checker incorrectly thinking two types were disjoint.
905
+
906
+ ### 1.1.31
907
+
908
+ - Better error reporting when getApiMapping fails
909
+ - Update getApiMapping to handle api.mir from sdk-6.2.0
910
+ - Update various tests to work with sdk-6.2.0 (including marking one test as an expected failure)
911
+ - Add a test to catch the export-project-using-barrels bug that was fixed in 1.1.30
package/build/api.cjs CHANGED
@@ -18,44 +18,44 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var api_exports = {};
20
20
  __export(api_exports, {
21
- checkCompilerVersion: () => import_chunk_QINU6R5E.checkCompilerVersion,
22
- collectNamespaces: () => import_chunk_QINU6R5E.collectNamespaces,
23
- createDocumentationMap: () => import_chunk_QINU6R5E.createDocumentationMap,
24
- diagnostic: () => import_chunk_QINU6R5E.diagnostic,
25
- diagnosticHelper: () => import_chunk_QINU6R5E.diagnosticHelper,
26
- findNamesInScope: () => import_chunk_QINU6R5E.findNamesInScope,
27
- findUsingForNode: () => import_chunk_QINU6R5E.findUsingForNode,
28
- formatAst: () => import_chunk_QINU6R5E.formatAst,
29
- formatAstLongLines: () => import_chunk_QINU6R5E.formatAstLongLines,
30
- getApiFunctionInfo: () => import_chunk_QINU6R5E.getApiFunctionInfo,
31
- getApiMapping: () => import_chunk_QINU6R5E.getApiMapping,
32
- getSuperClasses: () => import_chunk_QINU6R5E.getSuperClasses,
21
+ checkCompilerVersion: () => import_chunk_6OD3V3XN.checkCompilerVersion,
22
+ collectNamespaces: () => import_chunk_6OD3V3XN.collectNamespaces,
23
+ createDocumentationMap: () => import_chunk_6OD3V3XN.createDocumentationMap,
24
+ diagnostic: () => import_chunk_6OD3V3XN.diagnostic,
25
+ diagnosticHelper: () => import_chunk_6OD3V3XN.diagnosticHelper,
26
+ findNamesInScope: () => import_chunk_6OD3V3XN.findNamesInScope,
27
+ findUsingForNode: () => import_chunk_6OD3V3XN.findUsingForNode,
28
+ formatAst: () => import_chunk_6OD3V3XN.formatAst,
29
+ formatAstLongLines: () => import_chunk_6OD3V3XN.formatAstLongLines,
30
+ getApiFunctionInfo: () => import_chunk_6OD3V3XN.getApiFunctionInfo,
31
+ getApiMapping: () => import_chunk_6OD3V3XN.getApiMapping,
32
+ getSuperClasses: () => import_chunk_6OD3V3XN.getSuperClasses,
33
33
  hasProperty: () => import_chunk_MBTLUWXR.hasProperty,
34
- isClassVariable: () => import_chunk_QINU6R5E.isClassVariable,
35
- isLocal: () => import_chunk_QINU6R5E.isLocal,
36
- isLookupCandidate: () => import_chunk_QINU6R5E.isLookupCandidate,
37
- isStateNode: () => import_chunk_QINU6R5E.isStateNode,
38
- lookupByFullName: () => import_chunk_QINU6R5E.lookupByFullName,
39
- lookupNext: () => import_chunk_QINU6R5E.lookupNext,
40
- lookupResultContains: () => import_chunk_QINU6R5E.lookupResultContains,
41
- lookupWithType: () => import_chunk_QINU6R5E.lookupWithType,
42
- makeToyboxLink: () => import_chunk_QINU6R5E.makeToyboxLink,
43
- mapVarDeclsByType: () => import_chunk_QINU6R5E.mapVarDeclsByType,
44
- markInvokeClassMethod: () => import_chunk_QINU6R5E.markInvokeClassMethod,
45
- parseSdkVersion: () => import_chunk_QINU6R5E.parseSdkVersion,
46
- sameLookupResult: () => import_chunk_QINU6R5E.sameLookupResult,
34
+ isClassVariable: () => import_chunk_6OD3V3XN.isClassVariable,
35
+ isLocal: () => import_chunk_6OD3V3XN.isLocal,
36
+ isLookupCandidate: () => import_chunk_6OD3V3XN.isLookupCandidate,
37
+ isStateNode: () => import_chunk_6OD3V3XN.isStateNode,
38
+ lookupByFullName: () => import_chunk_6OD3V3XN.lookupByFullName,
39
+ lookupNext: () => import_chunk_6OD3V3XN.lookupNext,
40
+ lookupResultContains: () => import_chunk_6OD3V3XN.lookupResultContains,
41
+ lookupWithType: () => import_chunk_6OD3V3XN.lookupWithType,
42
+ makeToyboxLink: () => import_chunk_6OD3V3XN.makeToyboxLink,
43
+ mapVarDeclsByType: () => import_chunk_6OD3V3XN.mapVarDeclsByType,
44
+ markInvokeClassMethod: () => import_chunk_6OD3V3XN.markInvokeClassMethod,
45
+ parseSdkVersion: () => import_chunk_6OD3V3XN.parseSdkVersion,
46
+ sameLookupResult: () => import_chunk_6OD3V3XN.sameLookupResult,
47
47
  traverseAst: () => import_chunk_MBTLUWXR.traverseAst,
48
- variableDeclarationName: () => import_chunk_QINU6R5E.variableDeclarationName,
49
- visitReferences: () => import_chunk_QINU6R5E.visitReferences,
50
- visit_resources: () => import_chunk_QINU6R5E.visit_resources,
51
- visitorNode: () => import_chunk_QINU6R5E.visitorNode
48
+ variableDeclarationName: () => import_chunk_6OD3V3XN.variableDeclarationName,
49
+ visitReferences: () => import_chunk_6OD3V3XN.visitReferences,
50
+ visit_resources: () => import_chunk_6OD3V3XN.visit_resources,
51
+ visitorNode: () => import_chunk_6OD3V3XN.visitorNode
52
52
  });
53
53
  module.exports = __toCommonJS(api_exports);
54
- var import_chunk_QINU6R5E = require("./chunk-QINU6R5E.cjs");
54
+ var import_chunk_6OD3V3XN = require("./chunk-6OD3V3XN.cjs");
55
55
  var import_chunk_PVBIKZYZ = require("./chunk-PVBIKZYZ.cjs");
56
56
  var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
57
57
  var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
58
- (0, import_chunk_QINU6R5E.init_api)();
58
+ (0, import_chunk_6OD3V3XN.init_api)();
59
59
  // Annotate the CommonJS export names for ESM import in node:
60
60
  0 && (module.exports = {
61
61
  checkCompilerVersion,
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_QINU6R5E_exports = {};
30
- __export(chunk_QINU6R5E_exports, {
29
+ var chunk_6OD3V3XN_exports = {};
30
+ __export(chunk_6OD3V3XN_exports, {
31
31
  EnumTagsConst: () => EnumTagsConst,
32
32
  LastTypeTag: () => LastTypeTag,
33
33
  ObjectLikeTagsConst: () => ObjectLikeTagsConst,
@@ -122,7 +122,7 @@ __export(chunk_QINU6R5E_exports, {
122
122
  visitorNode: () => visitorNode,
123
123
  xml_util_exports: () => xml_util_exports
124
124
  });
125
- module.exports = __toCommonJS(chunk_QINU6R5E_exports);
125
+ module.exports = __toCommonJS(chunk_6OD3V3XN_exports);
126
126
  var import_chunk_PVBIKZYZ = require("./chunk-PVBIKZYZ.cjs");
127
127
  var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
128
128
  var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
@@ -19213,52 +19213,47 @@ async function getApiMapping(state, resourcesMap, manifestXML) {
19213
19213
  state.sdkVersion = parseSdkVersion(match[1]);
19214
19214
  }
19215
19215
  }
19216
- const api = (await fs2.readFile(`${sdk}bin/api.mir`)).toString().replace(/\r\n/g, "\n").replace(/^(\s*type)\s/gm, "$1def ");
19217
- try {
19218
- const ast = parser.parse(api, null, {
19219
- filepath: "api.mir"
19220
- });
19221
- if (resourcesMap) {
19222
- const rezAst = state ? state.rezAst || { type: "Program", body: [] } : ast;
19223
- add_resources_to_ast(state, rezAst, resourcesMap, manifestXML);
19224
- if (state) {
19225
- state.rezAst = rezAst;
19226
- state.manifestXML = manifestXML;
19227
- }
19228
- }
19229
- const result = collectNamespaces(ast, state);
19230
- if (state && state.rezAst) {
19231
- collectNamespaces(state.rezAst, state);
19232
- }
19233
- negativeFixups.forEach((fixup) => {
19234
- const vs = fixup.split(".").reduce((state2, part) => {
19235
- const decls = isStateNode(state2) && state2.decls?.[part];
19236
- if (!Array.isArray(decls) || decls.length !== 1 || !decls[0]) {
19237
- throw `Failed to find and fix negative constant ${fixup}`;
19238
- }
19239
- return decls[0];
19240
- }, result);
19241
- const value2 = isStateNode(vs) ? vs.node : vs;
19242
- if (!value2 || value2.type !== "EnumStringMember" && (value2.type !== "VariableDeclarator" || value2.kind !== "const")) {
19243
- throw `Negative constant ${fixup} did not refer to a constant`;
19244
- }
19245
- const init = (0, import_chunk_MBTLUWXR.getLiteralNode)(value2.init);
19246
- if (!init || init.type !== "Literal") {
19247
- throw `Negative constant ${fixup} was not a Literal`;
19248
- }
19249
- if (typeof init.value !== "number") {
19250
- console.log(`Negative fixup ${fixup} was not a number!`);
19251
- } else if (init.value > 0) {
19252
- init.value = -init.value;
19253
- init.raw = "-" + init.raw;
19254
- } else {
19255
- }
19256
- });
19257
- return result;
19258
- } catch (e) {
19259
- console.error(`${e}`);
19260
- return null;
19261
- }
19216
+ const api = (await fs2.readFile(`${sdk}bin/api.mir`)).toString().replace(/\r\n/g, "\n").replace(/^(\s*static)?\s*<init>\s*\{\s*\}\s*?\n/gm, "").replace(/^(\s*type)\s/gm, "$1def ");
19217
+ const ast = parser.parse(api, null, {
19218
+ filepath: "api.mir"
19219
+ });
19220
+ if (resourcesMap) {
19221
+ const rezAst = state ? state.rezAst || { type: "Program", body: [] } : ast;
19222
+ add_resources_to_ast(state, rezAst, resourcesMap, manifestXML);
19223
+ if (state) {
19224
+ state.rezAst = rezAst;
19225
+ state.manifestXML = manifestXML;
19226
+ }
19227
+ }
19228
+ const result = collectNamespaces(ast, state);
19229
+ if (state && state.rezAst) {
19230
+ collectNamespaces(state.rezAst, state);
19231
+ }
19232
+ negativeFixups.forEach((fixup) => {
19233
+ const vs = fixup.split(".").reduce((state2, part) => {
19234
+ const decls = isStateNode(state2) && state2.decls?.[part];
19235
+ if (!Array.isArray(decls) || decls.length !== 1 || !decls[0]) {
19236
+ throw `Failed to find and fix negative constant ${fixup}`;
19237
+ }
19238
+ return decls[0];
19239
+ }, result);
19240
+ const value2 = isStateNode(vs) ? vs.node : vs;
19241
+ if (!value2 || value2.type !== "EnumStringMember" && (value2.type !== "VariableDeclarator" || value2.kind !== "const")) {
19242
+ throw `Negative constant ${fixup} did not refer to a constant`;
19243
+ }
19244
+ const init = (0, import_chunk_MBTLUWXR.getLiteralNode)(value2.init);
19245
+ if (!init || init.type !== "Literal") {
19246
+ throw `Negative constant ${fixup} was not a Literal`;
19247
+ }
19248
+ if (typeof init.value !== "number") {
19249
+ console.log(`Negative fixup ${fixup} was not a number!`);
19250
+ } else if (init.value > 0) {
19251
+ init.value = -init.value;
19252
+ init.raw = "-" + init.raw;
19253
+ } else {
19254
+ }
19255
+ });
19256
+ return result;
19262
19257
  }
19263
19258
  function isStateNode(node) {
19264
19259
  return (0, import_chunk_MBTLUWXR.hasProperty)(node, "node");
@@ -29847,7 +29842,7 @@ async function generateOneConfig(buildConfig, manifestXML, dependencyFiles, conf
29847
29842
  const opt_time = await (0, import_chunk_PVBIKZYZ.first_modified)(
29848
29843
  Object.values(fnMap).map((v) => v.output)
29849
29844
  );
29850
- if (source_time < opt_time && 1686169752423 < opt_time) {
29845
+ if (source_time < opt_time && 1687277028413 < opt_time) {
29851
29846
  return {
29852
29847
  hasTests,
29853
29848
  diagnostics: prevDiagnostics,
@@ -29884,7 +29879,7 @@ async function generateOneConfig(buildConfig, manifestXML, dependencyFiles, conf
29884
29879
  hasTests: hasTests2,
29885
29880
  diagnostics,
29886
29881
  sdkVersion,
29887
- optimizerVersion: "1.1.30",
29882
+ optimizerVersion: "1.1.31",
29888
29883
  ...Object.fromEntries(
29889
29884
  configOptionsToCheck.map((option) => [option, config[option]])
29890
29885
  )
@@ -18,29 +18,29 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var optimizer_exports = {};
20
20
  __export(optimizer_exports, {
21
- StateNodeAttributes: () => import_chunk_QINU6R5E.StateNodeAttributes,
22
- buildOptimizedProject: () => import_chunk_QINU6R5E.buildOptimizedProject,
21
+ StateNodeAttributes: () => import_chunk_6OD3V3XN.StateNodeAttributes,
22
+ buildOptimizedProject: () => import_chunk_6OD3V3XN.buildOptimizedProject,
23
23
  copyRecursiveAsNeeded: () => import_chunk_PVBIKZYZ.copyRecursiveAsNeeded,
24
- defaultConfig: () => import_chunk_QINU6R5E.defaultConfig,
25
- display: () => import_chunk_QINU6R5E.display,
26
- generateApiMirTests: () => import_chunk_QINU6R5E.generateApiMirTests,
27
- generateOneConfig: () => import_chunk_QINU6R5E.generateOneConfig,
28
- generateOptimizedProject: () => import_chunk_QINU6R5E.generateOptimizedProject,
29
- getConfig: () => import_chunk_QINU6R5E.getConfig,
30
- getProjectAnalysis: () => import_chunk_QINU6R5E.getProjectAnalysis,
31
- get_jungle: () => import_chunk_QINU6R5E.get_jungle,
32
- isErrorWithLocation: () => import_chunk_QINU6R5E.isErrorWithLocation,
33
- launchSimulator: () => import_chunk_QINU6R5E.launchSimulator,
34
- manifestProducts: () => import_chunk_QINU6R5E.manifestProducts,
35
- mctree: () => import_chunk_QINU6R5E.mctree,
36
- simulateProgram: () => import_chunk_QINU6R5E.simulateProgram
24
+ defaultConfig: () => import_chunk_6OD3V3XN.defaultConfig,
25
+ display: () => import_chunk_6OD3V3XN.display,
26
+ generateApiMirTests: () => import_chunk_6OD3V3XN.generateApiMirTests,
27
+ generateOneConfig: () => import_chunk_6OD3V3XN.generateOneConfig,
28
+ generateOptimizedProject: () => import_chunk_6OD3V3XN.generateOptimizedProject,
29
+ getConfig: () => import_chunk_6OD3V3XN.getConfig,
30
+ getProjectAnalysis: () => import_chunk_6OD3V3XN.getProjectAnalysis,
31
+ get_jungle: () => import_chunk_6OD3V3XN.get_jungle,
32
+ isErrorWithLocation: () => import_chunk_6OD3V3XN.isErrorWithLocation,
33
+ launchSimulator: () => import_chunk_6OD3V3XN.launchSimulator,
34
+ manifestProducts: () => import_chunk_6OD3V3XN.manifestProducts,
35
+ mctree: () => import_chunk_6OD3V3XN.mctree,
36
+ simulateProgram: () => import_chunk_6OD3V3XN.simulateProgram
37
37
  });
38
38
  module.exports = __toCommonJS(optimizer_exports);
39
- var import_chunk_QINU6R5E = require("./chunk-QINU6R5E.cjs");
39
+ var import_chunk_6OD3V3XN = require("./chunk-6OD3V3XN.cjs");
40
40
  var import_chunk_PVBIKZYZ = require("./chunk-PVBIKZYZ.cjs");
41
41
  var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
42
42
  var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
43
- (0, import_chunk_QINU6R5E.init_optimizer)();
43
+ (0, import_chunk_6OD3V3XN.init_optimizer)();
44
44
  // Annotate the CommonJS export names for ESM import in node:
45
45
  0 && (module.exports = {
46
46
  StateNodeAttributes,
@@ -18,25 +18,25 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var sdk_util_exports = {};
20
20
  __export(sdk_util_exports, {
21
- SectionKinds: () => import_chunk_QINU6R5E.SectionKinds,
22
- appSupport: () => import_chunk_QINU6R5E.appSupport,
23
- connectiq: () => import_chunk_QINU6R5E.connectiq,
24
- getDeviceInfo: () => import_chunk_QINU6R5E.getDeviceInfo,
25
- getFunctionDocumentation: () => import_chunk_QINU6R5E.getFunctionDocumentation,
26
- getLanguages: () => import_chunk_QINU6R5E.getLanguages,
27
- getSdkPath: () => import_chunk_QINU6R5E.getSdkPath,
28
- isWin: () => import_chunk_QINU6R5E.isWin,
29
- optimizeProgram: () => import_chunk_QINU6R5E.optimizeProgram,
30
- readPrg: () => import_chunk_QINU6R5E.readPrg,
31
- readPrgWithOffsets: () => import_chunk_QINU6R5E.readPrgWithOffsets,
32
- xmlUtil: () => import_chunk_QINU6R5E.xml_util_exports
21
+ SectionKinds: () => import_chunk_6OD3V3XN.SectionKinds,
22
+ appSupport: () => import_chunk_6OD3V3XN.appSupport,
23
+ connectiq: () => import_chunk_6OD3V3XN.connectiq,
24
+ getDeviceInfo: () => import_chunk_6OD3V3XN.getDeviceInfo,
25
+ getFunctionDocumentation: () => import_chunk_6OD3V3XN.getFunctionDocumentation,
26
+ getLanguages: () => import_chunk_6OD3V3XN.getLanguages,
27
+ getSdkPath: () => import_chunk_6OD3V3XN.getSdkPath,
28
+ isWin: () => import_chunk_6OD3V3XN.isWin,
29
+ optimizeProgram: () => import_chunk_6OD3V3XN.optimizeProgram,
30
+ readPrg: () => import_chunk_6OD3V3XN.readPrg,
31
+ readPrgWithOffsets: () => import_chunk_6OD3V3XN.readPrgWithOffsets,
32
+ xmlUtil: () => import_chunk_6OD3V3XN.xml_util_exports
33
33
  });
34
34
  module.exports = __toCommonJS(sdk_util_exports);
35
- var import_chunk_QINU6R5E = require("./chunk-QINU6R5E.cjs");
35
+ var import_chunk_6OD3V3XN = require("./chunk-6OD3V3XN.cjs");
36
36
  var import_chunk_PVBIKZYZ = require("./chunk-PVBIKZYZ.cjs");
37
37
  var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
38
38
  var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
39
- (0, import_chunk_QINU6R5E.init_sdk_util)();
39
+ (0, import_chunk_6OD3V3XN.init_sdk_util)();
40
40
  // Annotate the CommonJS export names for ESM import in node:
41
41
  0 && (module.exports = {
42
42
  SectionKinds,
@@ -9,7 +9,7 @@ export { visitorNode, visitReferences } from "./visitor";
9
9
  export { traverseAst, hasProperty, visit_resources };
10
10
  export declare function parseSdkVersion(version: string | undefined): number;
11
11
  export declare function checkCompilerVersion(version: string, sdkVer: number): boolean | undefined;
12
- export declare function getApiMapping(state?: ProgramState, resourcesMap?: Record<string, JungleResourceMap>, manifestXML?: xmlUtil.Document): Promise<ProgramStateNode | null>;
12
+ export declare function getApiMapping(state?: ProgramState, resourcesMap?: Record<string, JungleResourceMap>, manifestXML?: xmlUtil.Document): Promise<ProgramStateNode>;
13
13
  export declare function isStateNode(node: {
14
14
  type: string;
15
15
  }): node is StateNode;
@@ -21,17 +21,17 @@ __export(worker_thread_exports, {
21
21
  default: () => worker_thread_default
22
22
  });
23
23
  module.exports = __toCommonJS(worker_thread_exports);
24
- var import_chunk_QINU6R5E = require("./chunk-QINU6R5E.cjs");
24
+ var import_chunk_6OD3V3XN = require("./chunk-6OD3V3XN.cjs");
25
25
  var import_chunk_PVBIKZYZ = require("./chunk-PVBIKZYZ.cjs");
26
26
  var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
27
27
  var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
28
28
  var import_node_worker_threads = require("node:worker_threads");
29
29
  var require_worker_thread = (0, import_chunk_ABYVSU2C.__commonJS)({
30
30
  "src/worker-thread.ts"() {
31
- (0, import_chunk_QINU6R5E.init_worker_task)();
31
+ (0, import_chunk_6OD3V3XN.init_worker_task)();
32
32
  if (import_node_worker_threads.parentPort) {
33
33
  import_node_worker_threads.parentPort.on("message", async (task) => {
34
- return import_node_worker_threads.parentPort.postMessage(await (0, import_chunk_QINU6R5E.performTask)(task));
34
+ return import_node_worker_threads.parentPort.postMessage(await (0, import_chunk_6OD3V3XN.performTask)(task));
35
35
  });
36
36
  }
37
37
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@markw65/monkeyc-optimizer",
3
3
  "type": "commonjs",
4
- "version": "1.1.30",
4
+ "version": "1.1.31",
5
5
  "description": "Source to source optimizer for Garmin Monkey C code",
6
6
  "main": "build/optimizer.cjs",
7
7
  "types": "build/src/optimizer.d.ts",