@markw65/monkeyc-optimizer 1.0.12 → 1.0.13
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 +18 -0
- package/build/api.cjs +254 -75
- package/build/optimizer.cjs +220 -143
- package/build/sdk-util.cjs +2 -2
- package/build/src/api.d.ts +5 -4
- package/build/src/build.d.ts +2 -2
- package/build/src/jungles.d.ts +1 -1
- package/build/src/manifest.d.ts +3 -3
- package/build/src/mc-rewrite.d.ts +3 -3
- package/build/src/optimizer.d.ts +23 -15
- package/build/src/sdk-util.d.ts +1 -0
- package/build/src/util.d.ts +2 -3
- package/build/util.cjs +1 -14
- package/package.json +2 -2
package/build/sdk-util.cjs
CHANGED
|
@@ -7215,8 +7215,8 @@ async function getDeviceInfo() {
|
|
|
7215
7215
|
}
|
|
7216
7216
|
return Promise.all(files.map((file) => {
|
|
7217
7217
|
return promises_namespaceObject.readFile(file).then((data) => {
|
|
7218
|
-
const { deviceId, appTypes, deviceFamily } = JSON.parse(data.toString());
|
|
7219
|
-
return [deviceId, { appTypes, deviceFamily }];
|
|
7218
|
+
const { deviceId, appTypes, deviceFamily, displayName } = JSON.parse(data.toString());
|
|
7219
|
+
return [deviceId, { appTypes, deviceFamily, displayName }];
|
|
7220
7220
|
});
|
|
7221
7221
|
})).then((info) => {
|
|
7222
7222
|
return Object.fromEntries(info);
|
package/build/src/api.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { mctree } from "@markw65/prettier-plugin-monkeyc";
|
|
2
2
|
export declare function getApiMapping(state?: ProgramState): Promise<ProgramStateNode | null>;
|
|
3
|
-
export declare function hasProperty(obj:
|
|
3
|
+
export declare function hasProperty<T extends null extends T ? unknown : undefined extends T ? unknown : never>(obj: T, prop: string): obj is NonNullable<T>;
|
|
4
|
+
export declare function hasProperty<T>(obj: T, prop: string): boolean;
|
|
4
5
|
export declare function isStateNode(node: StateNodeDecl): node is StateNode;
|
|
5
6
|
export declare function variableDeclarationName(node: mctree.TypedIdentifier): string;
|
|
6
|
-
export declare function collectNamespaces(ast: mctree.Program,
|
|
7
|
-
export declare function traverseAst(node: mctree.Node, pre?: (node: mctree.Node) => void | null | false | (keyof mctree.NodeAll)[], post?: (node: mctree.Node) => void | null | false | mctree.Node): false | void | null | mctree.Node;
|
|
8
|
-
export declare function formatAst(node: mctree.Node, monkeyCSource?: string): string;
|
|
7
|
+
export declare function collectNamespaces(ast: mctree.Program, stateIn?: ProgramState): ProgramStateNode;
|
|
8
|
+
export declare function traverseAst(node: mctree.Node, pre?: null | ((node: mctree.Node) => void | null | false | (keyof mctree.NodeAll)[]), post?: (node: mctree.Node) => void | null | false | mctree.Node): false | void | null | mctree.Node;
|
|
9
|
+
export declare function formatAst(node: mctree.Node, monkeyCSource?: string | null): string;
|
package/build/src/build.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export declare function build_project(product: string, options: BuildConfig, lineCallback?: (line: string) => void): Promise<{
|
|
1
|
+
export declare function build_project(product: string | null, options: BuildConfig, lineCallback?: (line: string) => void): Promise<{
|
|
2
2
|
exe: string;
|
|
3
3
|
args: string[];
|
|
4
4
|
program: string;
|
|
5
|
-
product: string;
|
|
5
|
+
product: string | null;
|
|
6
6
|
}>;
|
package/build/src/jungles.d.ts
CHANGED
package/build/src/manifest.d.ts
CHANGED
|
@@ -56,8 +56,8 @@ export declare type ManifestXML = {
|
|
|
56
56
|
$: {
|
|
57
57
|
"xmlns:iq": string;
|
|
58
58
|
};
|
|
59
|
-
"iq:application"
|
|
60
|
-
"iq:barrel"
|
|
59
|
+
"iq:application"?: Array<iqApplication>;
|
|
60
|
+
"iq:barrel"?: Array<iqBarrel>;
|
|
61
61
|
};
|
|
62
62
|
};
|
|
63
63
|
export declare function readManifest(manifest: string): Promise<ManifestXML>;
|
|
@@ -66,6 +66,6 @@ export declare function manifestProducts(manifest: ManifestXML): string[];
|
|
|
66
66
|
export declare function manifestBarrels(manifest: ManifestXML): string[];
|
|
67
67
|
export declare function manifestDropBarrels(manifest: ManifestXML): void;
|
|
68
68
|
export declare function manifestBarrelName(manifestName: string, manifest: ManifestXML): string;
|
|
69
|
-
export declare function manifestAnnotations(manifest: ManifestXML): string[];
|
|
69
|
+
export declare function manifestAnnotations(manifest: ManifestXML): string[] | undefined;
|
|
70
70
|
export declare function checkManifest(manifest: ManifestXML, products: string[]): Promise<boolean>;
|
|
71
71
|
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { mctree } from "@markw65/prettier-plugin-monkeyc";
|
|
2
2
|
export declare function getFileSources(fnMap: FilesToOptimizeMap): Promise<void>;
|
|
3
3
|
export declare function getFileASTs(fnMap: FilesToOptimizeMap): Promise<boolean>;
|
|
4
|
-
export declare function analyze(fnMap: FilesToOptimizeMap): Promise<
|
|
5
|
-
export declare function getLiteralFromDecls(decls: StateNodeDecl[]):
|
|
6
|
-
export declare function getLiteralNode(node: mctree.Node): null | mctree.Literal | mctree.AsExpression;
|
|
4
|
+
export declare function analyze(fnMap: FilesToOptimizeMap): Promise<ProgramStateAnalysis>;
|
|
5
|
+
export declare function getLiteralFromDecls(decls: StateNodeDecl[]): null;
|
|
6
|
+
export declare function getLiteralNode(node: mctree.Node | null | undefined): null | mctree.Literal | mctree.AsExpression;
|
|
7
7
|
export declare function optimizeMonkeyC(fnMap: FilesToOptimizeMap): Promise<void>;
|
package/build/src/optimizer.d.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { mctree } from "@markw65/prettier-plugin-monkeyc";
|
|
2
|
+
import { get_jungle, ResolvedJungle, Target } from "./jungles";
|
|
2
3
|
import { launchSimulator, simulateProgram } from "./launch";
|
|
4
|
+
import { manifestProducts } from "./manifest";
|
|
3
5
|
import { copyRecursiveAsNeeded } from "./util";
|
|
4
|
-
|
|
5
|
-
export { copyRecursiveAsNeeded, launchSimulator, simulateProgram, get_jungle, ResolvedJungle, mctree, };
|
|
6
|
+
export { copyRecursiveAsNeeded, get_jungle, launchSimulator, manifestProducts, mctree, ResolvedJungle, simulateProgram, };
|
|
6
7
|
export declare const defaultConfig: {
|
|
7
8
|
outputPath: string;
|
|
8
9
|
workspace: string;
|
|
9
10
|
};
|
|
11
|
+
export interface ErrorWithLocation extends Error {
|
|
12
|
+
location?: NonNullable<mctree.Node["loc"]>;
|
|
13
|
+
}
|
|
14
|
+
export declare function isErrorWithLocation(e: Error): e is ErrorWithLocation;
|
|
10
15
|
declare global {
|
|
11
16
|
type BuildConfig = {
|
|
12
17
|
workspace?: string;
|
|
@@ -86,10 +91,10 @@ declare global {
|
|
|
86
91
|
allClasses?: ClassStateNode[];
|
|
87
92
|
stack?: ProgramStateStack;
|
|
88
93
|
shouldExclude?: (node: any) => any;
|
|
89
|
-
pre?: (node: mctree.Node) => null | false | (keyof mctree.NodeAll)[];
|
|
90
|
-
post?: (node: mctree.Node) => null | false | mctree.Node;
|
|
91
|
-
lookup?: (node: mctree.Node, name?: string | null, stack?: ProgramStateStack) => [string, StateNodeDecl[], ProgramStateStack];
|
|
92
|
-
traverse?: (node: mctree.Node) => void |
|
|
94
|
+
pre?: (node: mctree.Node, state: ProgramStateLive) => null | false | (keyof mctree.NodeAll)[];
|
|
95
|
+
post?: (node: mctree.Node, state: ProgramStateLive) => null | false | mctree.Node;
|
|
96
|
+
lookup?: (node: mctree.Node, name?: string | null, stack?: ProgramStateStack) => [string, StateNodeDecl[], ProgramStateStack] | [null, null, null];
|
|
97
|
+
traverse?: (node: mctree.Node) => void | null | false | mctree.Node;
|
|
93
98
|
exposed?: {
|
|
94
99
|
[key: string]: true;
|
|
95
100
|
};
|
|
@@ -112,6 +117,12 @@ declare global {
|
|
|
112
117
|
[key: string]: mctree.Literal;
|
|
113
118
|
};
|
|
114
119
|
};
|
|
120
|
+
type Finalized<T, Keys extends keyof T> = T & {
|
|
121
|
+
[key in Keys]-?: NonNullable<T[key]>;
|
|
122
|
+
};
|
|
123
|
+
export type ProgramStateLive = Finalized<ProgramState, "stack" | "lookup" | "traverse" | "index" | "constants">;
|
|
124
|
+
export type ProgramStateAnalysis = Finalized<ProgramStateLive, "allClasses" | "allFunctions">;
|
|
125
|
+
export type ProgramStateOptimizer = Finalized<ProgramStateAnalysis, "localsStack" | "exposed" | "calledFunctions">;
|
|
115
126
|
type ExcludeAnnotationsMap = {
|
|
116
127
|
[key: string]: boolean;
|
|
117
128
|
};
|
|
@@ -137,20 +148,17 @@ export declare function buildOptimizedProject(product: string | null, options: B
|
|
|
137
148
|
exe: string;
|
|
138
149
|
args: string[];
|
|
139
150
|
program: string;
|
|
140
|
-
product: string;
|
|
141
|
-
hasTests: boolean;
|
|
151
|
+
product: string | null;
|
|
152
|
+
hasTests: boolean | undefined;
|
|
142
153
|
}>;
|
|
143
|
-
/**
|
|
144
|
-
*
|
|
145
|
-
* @param {BuildConfig} options
|
|
146
|
-
* @returns
|
|
147
|
-
*/
|
|
148
154
|
export declare function generateOptimizedProject(options: BuildConfig): Promise<{
|
|
149
|
-
jungleFiles: string;
|
|
155
|
+
jungleFiles: string | undefined;
|
|
150
156
|
program: string;
|
|
157
|
+
xml?: undefined;
|
|
151
158
|
hasTests?: undefined;
|
|
152
159
|
} | {
|
|
153
160
|
jungleFiles: string;
|
|
161
|
+
xml: import("./manifest").ManifestXML;
|
|
154
162
|
program: string;
|
|
155
163
|
hasTests: boolean;
|
|
156
164
|
}>;
|
package/build/src/sdk-util.d.ts
CHANGED
package/build/src/util.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
}): Promise<Array<string>>;
|
|
1
|
+
import * as glob from "glob";
|
|
2
|
+
export declare function globa(pattern: string, options?: glob.IOptions): Promise<Array<string>>;
|
|
4
3
|
export declare function last_modified(inputs: string[]): Promise<number>;
|
|
5
4
|
export declare function first_modified(inputs: string[]): Promise<number>;
|
|
6
5
|
export declare function pushUnique<T>(arr: T[], value: T): void;
|
package/build/util.cjs
CHANGED
|
@@ -3940,18 +3940,6 @@ module.exports = require("util");
|
|
|
3940
3940
|
/******/ }
|
|
3941
3941
|
/******/
|
|
3942
3942
|
/************************************************************************/
|
|
3943
|
-
/******/ /* webpack/runtime/compat get default export */
|
|
3944
|
-
/******/ (() => {
|
|
3945
|
-
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
3946
|
-
/******/ __webpack_require__.n = (module) => {
|
|
3947
|
-
/******/ var getter = module && module.__esModule ?
|
|
3948
|
-
/******/ () => (module['default']) :
|
|
3949
|
-
/******/ () => (module);
|
|
3950
|
-
/******/ __webpack_require__.d(getter, { a: getter });
|
|
3951
|
-
/******/ return getter;
|
|
3952
|
-
/******/ };
|
|
3953
|
-
/******/ })();
|
|
3954
|
-
/******/
|
|
3955
3943
|
/******/ /* webpack/runtime/define property getters */
|
|
3956
3944
|
/******/ (() => {
|
|
3957
3945
|
/******/ // define getter functions for harmony exports
|
|
@@ -4020,7 +4008,6 @@ var external_fs_ = __webpack_require__(6231);
|
|
|
4020
4008
|
const promises_namespaceObject = require("fs/promises");
|
|
4021
4009
|
// EXTERNAL MODULE: ./node_modules/glob/glob.js
|
|
4022
4010
|
var glob = __webpack_require__(2884);
|
|
4023
|
-
var glob_default = /*#__PURE__*/__webpack_require__.n(glob);
|
|
4024
4011
|
// EXTERNAL MODULE: external "path"
|
|
4025
4012
|
var external_path_ = __webpack_require__(1423);
|
|
4026
4013
|
;// CONCATENATED MODULE: external "readline"
|
|
@@ -4038,7 +4025,7 @@ const external_readline_namespaceObject = require("readline");
|
|
|
4038
4025
|
__webpack_require__.g["lastModifiedSource" + ""] = 0;
|
|
4039
4026
|
function globa(pattern, options) {
|
|
4040
4027
|
return new Promise((resolve, reject) => {
|
|
4041
|
-
|
|
4028
|
+
glob.glob(pattern, options || {}, (er, files) => {
|
|
4042
4029
|
if (er) {
|
|
4043
4030
|
reject(files);
|
|
4044
4031
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@markw65/monkeyc-optimizer",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.13",
|
|
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",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"author": "markw65",
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@markw65/prettier-plugin-monkeyc": "^1.0.
|
|
30
|
+
"@markw65/prettier-plugin-monkeyc": "^1.0.20"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@types/glob": "^7.2.0",
|