motoko 2.1.0 → 3.0.0-beta1
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 +13 -1
- package/lib/file.d.ts +4 -0
- package/lib/file.d.ts.map +1 -1
- package/lib/file.js +3 -0
- package/lib/file.js.map +1 -1
- package/lib/index.d.ts +10 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +10 -0
- package/lib/index.js.map +1 -1
- package/lib/utils/resolveEntryPoint.d.ts +4 -0
- package/lib/utils/resolveEntryPoint.d.ts.map +1 -0
- package/lib/utils/resolveEntryPoint.js +48 -0
- package/lib/utils/resolveEntryPoint.js.map +1 -0
- package/lib/versions/interpreter.d.ts +10 -0
- package/lib/versions/interpreter.d.ts.map +1 -1
- package/lib/versions/moc.d.ts +10 -0
- package/lib/versions/moc.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/file.ts +3 -0
- package/src/index.ts +10 -0
- package/src/utils/resolveEntryPoint.ts +64 -0
- package/versions/latest/moc.min.js +1 -1
- package/versions/latest/moc_interpreter.min.js +1 -1
package/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
|
2
|
-
#
|
2
|
+
# Motoko.js [](https://www.npmjs.com/package/motoko) [](https://opensource.org/licenses/Apache-2.0) [](https://github.com/dfinity/motoko/issues)
|
3
3
|
|
4
4
|
> #### Compile and run [Motoko](https://smartcontracts.org/) smart contracts in Node.js or the browser.
|
5
5
|
|
@@ -136,9 +136,18 @@ mo.wasm(path, 'wasi') // WASI interface format
|
|
136
136
|
// Return the parse tree for a Motoko string
|
137
137
|
mo.parseMotoko(motokoString)
|
138
138
|
|
139
|
+
// Return the parse tree (with types) for a Motoko string
|
140
|
+
mo.parseMotokoTypes(motokoString)
|
141
|
+
|
139
142
|
// Return the parse tree for a Candid string
|
140
143
|
mo.parseCandid(candidString)
|
141
144
|
|
145
|
+
// Find the 'Main.mo' file or an equivalent canister entry point
|
146
|
+
mo.resolveMain(directory = '')
|
147
|
+
|
148
|
+
// Find the 'Lib.mo' file or an equivalent library entry point
|
149
|
+
mo.resolveLib(directory = '')
|
150
|
+
|
142
151
|
// Get the compiler version ('latest' by default)
|
143
152
|
mo.version
|
144
153
|
|
@@ -189,6 +198,9 @@ file.wasm('wasi') // note: cannot contain actors
|
|
189
198
|
// Parse the file as a Motoko program
|
190
199
|
file.parseMotoko()
|
191
200
|
|
201
|
+
// Parse the file (with types) as a Motoko program
|
202
|
+
file.parseMotokoTypes()
|
203
|
+
|
192
204
|
// Parse the file as a Candid interface
|
193
205
|
file.parseCandid()
|
194
206
|
```
|
package/lib/file.d.ts
CHANGED
@@ -17,6 +17,10 @@ export declare const file: (mo: Motoko, path: string) => {
|
|
17
17
|
candid(): string;
|
18
18
|
wasm(mode: WasmMode): any;
|
19
19
|
parseMotoko(): object;
|
20
|
+
parseMotokoTypes(): {
|
21
|
+
ast: object;
|
22
|
+
outputType: object;
|
23
|
+
};
|
20
24
|
parseCandid(): object;
|
21
25
|
};
|
22
26
|
//# sourceMappingURL=file.d.ts.map
|
package/lib/file.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC;AAerC,oBAAY,UAAU,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;AAEjD,eAAO,MAAM,IAAI,OAAQ,MAAM,QAAQ,MAAM;;;YAa7B,MAAM;mBAGC,MAAM;oBAGL,MAAM;;;;;;;;;;eAoBX,QAAQ
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC;AAerC,oBAAY,UAAU,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;AAEjD,eAAO,MAAM,IAAI,OAAQ,MAAM,QAAQ,MAAM;;;YAa7B,MAAM;mBAGC,MAAM;oBAGL,MAAM;;;;;;;;;;eAoBX,QAAQ;;;;;;;CAc1B,CAAC"}
|
package/lib/file.js
CHANGED
package/lib/file.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"file.js","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":";;;AAEA,SAAS,YAAY,CAAC,IAAY;IAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC1B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;KACjD;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QACtB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxB;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACpB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAC5B;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAIM,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,IAAY,EAAE,EAAE;IAC7C,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG;QACX,IAAI,IAAI;YACJ,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,kBAAkB;QAClB,uCAAuC;QACvC,iDAAiD;QACjD,KAAK;QACL,KAAK;YACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI;YACA,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,CAAC,OAAe;YACjB,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,CAAC,OAAe;YAClB,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACtC,IAAI,GAAG,OAAO,CAAC;YACf,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,MAAM;YACF,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI;YACA,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,KAAK;YACD,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,GAAG;YACC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,MAAM;YACF,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,IAAc;YACf,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,WAAW;YACP,OAAO,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,WAAW;YACP,OAAO,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;KACJ,CAAC;IACF,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":";;;AAEA,SAAS,YAAY,CAAC,IAAY;IAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC1B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;KACjD;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QACtB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxB;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACpB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAC5B;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAIM,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,IAAY,EAAE,EAAE;IAC7C,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG;QACX,IAAI,IAAI;YACJ,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,kBAAkB;QAClB,uCAAuC;QACvC,iDAAiD;QACjD,KAAK;QACL,KAAK;YACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI;YACA,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,CAAC,OAAe;YACjB,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,CAAC,OAAe;YAClB,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACtC,IAAI,GAAG,OAAO,CAAC;YACf,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,MAAM;YACF,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI;YACA,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,KAAK;YACD,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,GAAG;YACC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,MAAM;YACF,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,IAAc;YACf,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,WAAW;YACP,OAAO,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,gBAAgB;YACZ,OAAO,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,WAAW;YACP,OAAO,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;KACJ,CAAC;IACF,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AArDW,QAAA,IAAI,QAqDf"}
|
package/lib/index.d.ts
CHANGED
@@ -42,6 +42,10 @@ export default function wrapMotoko(compiler: Compiler, version: string): {
|
|
42
42
|
candid(): string;
|
43
43
|
wasm(mode: WasmMode): any;
|
44
44
|
parseMotoko(): object;
|
45
|
+
parseMotokoTypes(): {
|
46
|
+
ast: object;
|
47
|
+
outputType: object;
|
48
|
+
};
|
45
49
|
parseCandid(): object;
|
46
50
|
};
|
47
51
|
read(path: string): string;
|
@@ -64,7 +68,13 @@ export default function wrapMotoko(compiler: Compiler, version: string): {
|
|
64
68
|
candid(path: string): string;
|
65
69
|
wasm(path: string, mode: WasmMode): any;
|
66
70
|
parseMotoko(content: string): object;
|
71
|
+
parseMotokoTypes(content: string): {
|
72
|
+
ast: object;
|
73
|
+
outputType: object;
|
74
|
+
};
|
67
75
|
parseCandid(content: string): object;
|
76
|
+
resolveMain(directory?: string): string | undefined;
|
77
|
+
resolveLib(directory?: string): string | undefined;
|
68
78
|
};
|
69
79
|
export {};
|
70
80
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,WAAW,EAAE,MAAM,WAAW,CAAC;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,WAAW,EAAE,MAAM,WAAW,CAAC;AAGpE,oBAAY,MAAM,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnD,aAAK,QAAQ,GAAG,GAAG,CAAC;AAGpB,oBAAY,UAAU,GAAG;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACH,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;QAC3C,GAAG,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;KAC5C,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,oBAAY,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;AAErC,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM;;;eA2CnD,MAAM;;;;;;;;;;oBAmDJ,MAAM;oBAAU,MAAM;oBAAU,MAAM,GAAG,MAAM;;;;;;iBAiBlB,MAAM;wBAAc,MAAM;;;;eAjEzD,MAAM,GAAG,MAAM;gBAGd,MAAM,YAAW,MAAM;iBAOtB,MAAM,WAAW,MAAM;iBAGvB,MAAM;oBAIH,MAAM,GAAG,MAAM,EAAE;uBAGR,MAAM,GAAG,WAAW;2BAGhB,OAAO,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC;qBAGhD,MAAM,aAAa,MAAM;;wBAQtB,MAAM;wBAIN,MAAM;gBAGd,MAAM,GAAG,UAAU,EAAE;cAKvB,MAAM,aACD,MAAM,EAAE,GAAG,SAAS,GAChC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;iBAGjD,MAAM,GAAG,MAAM;eAGjB,MAAM,QAAQ,QAAQ;yBAQZ,MAAM,GAAG,MAAM;8BAGV,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;yBAGjD,MAAM,GAAG,MAAM;4BAGb,MAAM,GAAQ,MAAM,GAAG,SAAS;2BAGjC,MAAM,GAAQ,MAAM,GAAG,SAAS;EAO7D"}
|
package/lib/index.js
CHANGED
@@ -11,6 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
12
|
const file_1 = require("./file");
|
13
13
|
const package_1 = require("./package");
|
14
|
+
const resolveEntryPoint_1 = require("./utils/resolveEntryPoint");
|
14
15
|
function wrapMotoko(compiler, version) {
|
15
16
|
const debug = require('debug')(version ? `motoko:${version}` : 'motoko');
|
16
17
|
const invoke = (key, unwrap, args) => {
|
@@ -117,9 +118,18 @@ function wrapMotoko(compiler, version) {
|
|
117
118
|
parseMotoko(content) {
|
118
119
|
return invoke('parseMotoko', true, [content]);
|
119
120
|
},
|
121
|
+
parseMotokoTypes(content) {
|
122
|
+
return invoke('parseMotokoTypes', true, [content]);
|
123
|
+
},
|
120
124
|
parseCandid(content) {
|
121
125
|
return invoke('parseCandid', true, [content]);
|
122
126
|
},
|
127
|
+
resolveMain(directory = '') {
|
128
|
+
return (0, resolveEntryPoint_1.resolveMain)(mo, directory);
|
129
|
+
},
|
130
|
+
resolveLib(directory = '') {
|
131
|
+
return (0, resolveEntryPoint_1.resolveLib)(mo, directory);
|
132
|
+
},
|
123
133
|
};
|
124
134
|
// @ts-ignore
|
125
135
|
mo.default = mo;
|
package/lib/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"resolveEntryPoint.d.ts","sourceRoot":"","sources":["../../src/utils/resolveEntryPoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAyD5B,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE7E;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE5E"}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.resolveLib = exports.resolveMain = void 0;
|
4
|
+
// function getOne<T>(values: T[]): T | undefined {
|
5
|
+
// if (values.length) {
|
6
|
+
// return values[0];
|
7
|
+
// }
|
8
|
+
// }
|
9
|
+
function resolveEntryPoint(mo, directory, expected) {
|
10
|
+
directory = directory || '';
|
11
|
+
if (directory && !directory.endsWith('/')) {
|
12
|
+
directory += '/';
|
13
|
+
}
|
14
|
+
const moFiles = mo.list(directory).filter((f) => /\.mo$/i.test(f));
|
15
|
+
if (moFiles.length === 1) {
|
16
|
+
return moFiles[0];
|
17
|
+
}
|
18
|
+
else if (moFiles.length === 0) {
|
19
|
+
throw new Error('Could not find any Motoko files in the top-level directory');
|
20
|
+
}
|
21
|
+
const expectedFiles = moFiles.filter((f) => f.toLowerCase() === expected.toLowerCase());
|
22
|
+
if (expectedFiles.length === 1) {
|
23
|
+
return expectedFiles[0];
|
24
|
+
}
|
25
|
+
else if (expectedFiles.length > 1) {
|
26
|
+
throw new Error(`Found ${expectedFiles.length} entry point files with different capitalization`);
|
27
|
+
}
|
28
|
+
throw new Error(`Found ${moFiles.length} possible entry points. Please rename one of these files to '${expected}'`);
|
29
|
+
// TODO: evaluate whether we want to choose an entry point by parsing files
|
30
|
+
// const parsedFiles = moFiles.map((f) => {
|
31
|
+
// try {
|
32
|
+
// return mo.parseMotoko(mo.read(directory + f));
|
33
|
+
// } catch (err) {
|
34
|
+
// throw new Error(`Parse error in ${f}`);
|
35
|
+
// }
|
36
|
+
// });
|
37
|
+
// console.log(parsedFiles);
|
38
|
+
// return getOne(parsedFiles.filter());
|
39
|
+
}
|
40
|
+
function resolveMain(mo, directory) {
|
41
|
+
return resolveEntryPoint(mo, directory, 'Main.mo');
|
42
|
+
}
|
43
|
+
exports.resolveMain = resolveMain;
|
44
|
+
function resolveLib(mo, directory) {
|
45
|
+
return resolveEntryPoint(mo, directory, 'Lib.mo');
|
46
|
+
}
|
47
|
+
exports.resolveLib = resolveLib;
|
48
|
+
//# sourceMappingURL=resolveEntryPoint.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"resolveEntryPoint.js","sourceRoot":"","sources":["../../src/utils/resolveEntryPoint.ts"],"names":[],"mappings":";;;AAEA,mDAAmD;AACnD,2BAA2B;AAC3B,4BAA4B;AAC5B,QAAQ;AACR,IAAI;AAEJ,SAAS,iBAAiB,CACtB,EAAU,EACV,SAAiB,EACjB,QAAgB;IAEhB,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC;IAC5B,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACvC,SAAS,IAAI,GAAG,CAAC;KACpB;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;KACrB;SAAM,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CACX,4DAA4D,CAC/D,CAAC;KACL;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CACpD,CAAC;IACF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;KAC3B;SAAM,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QACjC,MAAM,IAAI,KAAK,CACX,SAAS,aAAa,CAAC,MAAM,kDAAkD,CAClF,CAAC;KACL;IAED,MAAM,IAAI,KAAK,CACX,SAAS,OAAO,CAAC,MAAM,gEAAgE,QAAQ,GAAG,CACrG,CAAC;IAEF,2EAA2E;IAE3E,2CAA2C;IAC3C,YAAY;IACZ,yDAAyD;IACzD,sBAAsB;IACtB,kDAAkD;IAClD,QAAQ;IACR,MAAM;IAEN,4BAA4B;IAE5B,uCAAuC;AAC3C,CAAC;AAED,SAAgB,WAAW,CAAC,EAAU,EAAE,SAAiB;IACrD,OAAO,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC;AAFD,kCAEC;AAED,SAAgB,UAAU,CAAC,EAAU,EAAE,SAAiB;IACpD,OAAO,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACtD,CAAC;AAFD,gCAEC"}
|
@@ -18,6 +18,10 @@ declare const _default: {
|
|
18
18
|
candid(): string;
|
19
19
|
wasm(mode: import("..").WasmMode): any;
|
20
20
|
parseMotoko(): object;
|
21
|
+
parseMotokoTypes(): {
|
22
|
+
ast: object;
|
23
|
+
outputType: object;
|
24
|
+
};
|
21
25
|
parseCandid(): object;
|
22
26
|
};
|
23
27
|
read(path: string): string;
|
@@ -40,7 +44,13 @@ declare const _default: {
|
|
40
44
|
candid(path: string): string;
|
41
45
|
wasm(path: string, mode: import("..").WasmMode): any;
|
42
46
|
parseMotoko(content: string): object;
|
47
|
+
parseMotokoTypes(content: string): {
|
48
|
+
ast: object;
|
49
|
+
outputType: object;
|
50
|
+
};
|
43
51
|
parseCandid(content: string): object;
|
52
|
+
resolveMain(directory?: string): string;
|
53
|
+
resolveLib(directory?: string): string;
|
44
54
|
};
|
45
55
|
export default _default;
|
46
56
|
//# sourceMappingURL=interpreter.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../../src/versions/interpreter.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../../src/versions/interpreter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,wBAAwD"}
|
package/lib/versions/moc.d.ts
CHANGED
@@ -18,6 +18,10 @@ declare const _default: {
|
|
18
18
|
candid(): string;
|
19
19
|
wasm(mode: import("..").WasmMode): any;
|
20
20
|
parseMotoko(): object;
|
21
|
+
parseMotokoTypes(): {
|
22
|
+
ast: object;
|
23
|
+
outputType: object;
|
24
|
+
};
|
21
25
|
parseCandid(): object;
|
22
26
|
};
|
23
27
|
read(path: string): string;
|
@@ -40,7 +44,13 @@ declare const _default: {
|
|
40
44
|
candid(path: string): string;
|
41
45
|
wasm(path: string, mode: import("..").WasmMode): any;
|
42
46
|
parseMotoko(content: string): object;
|
47
|
+
parseMotokoTypes(content: string): {
|
48
|
+
ast: object;
|
49
|
+
outputType: object;
|
50
|
+
};
|
43
51
|
parseCandid(content: string): object;
|
52
|
+
resolveMain(directory?: string): string;
|
53
|
+
resolveLib(directory?: string): string;
|
44
54
|
};
|
45
55
|
export default _default;
|
46
56
|
//# sourceMappingURL=moc.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"moc.d.ts","sourceRoot":"","sources":["../../src/versions/moc.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"moc.d.ts","sourceRoot":"","sources":["../../src/versions/moc.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,wBAA4C"}
|
package/package.json
CHANGED
package/src/file.ts
CHANGED
@@ -60,6 +60,9 @@ export const file = (mo: Motoko, path: string) => {
|
|
60
60
|
parseMotoko() {
|
61
61
|
return mo.parseMotoko(result.read());
|
62
62
|
},
|
63
|
+
parseMotokoTypes() {
|
64
|
+
return mo.parseMotokoTypes(result.read());
|
65
|
+
},
|
63
66
|
parseCandid() {
|
64
67
|
return mo.parseCandid(result.read());
|
65
68
|
},
|
package/src/index.ts
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import { file } from './file';
|
2
2
|
import { fetchPackage, loadPackages, PackageInfo } from './package';
|
3
|
+
import { resolveMain, resolveLib } from './utils/resolveEntryPoint';
|
3
4
|
|
4
5
|
export type Motoko = ReturnType<typeof wrapMotoko>;
|
5
6
|
|
@@ -131,9 +132,18 @@ export default function wrapMotoko(compiler: Compiler, version: string) {
|
|
131
132
|
parseMotoko(content: string): object {
|
132
133
|
return invoke('parseMotoko', true, [content]);
|
133
134
|
},
|
135
|
+
parseMotokoTypes(content: string): { ast: object; outputType: object } {
|
136
|
+
return invoke('parseMotokoTypes', true, [content]);
|
137
|
+
},
|
134
138
|
parseCandid(content: string): object {
|
135
139
|
return invoke('parseCandid', true, [content]);
|
136
140
|
},
|
141
|
+
resolveMain(directory: string = ''): string | undefined {
|
142
|
+
return resolveMain(mo, directory);
|
143
|
+
},
|
144
|
+
resolveLib(directory: string = ''): string | undefined {
|
145
|
+
return resolveLib(mo, directory);
|
146
|
+
},
|
137
147
|
};
|
138
148
|
// @ts-ignore
|
139
149
|
mo.default = mo;
|
@@ -0,0 +1,64 @@
|
|
1
|
+
import { Motoko } from '..';
|
2
|
+
|
3
|
+
// function getOne<T>(values: T[]): T | undefined {
|
4
|
+
// if (values.length) {
|
5
|
+
// return values[0];
|
6
|
+
// }
|
7
|
+
// }
|
8
|
+
|
9
|
+
function resolveEntryPoint(
|
10
|
+
mo: Motoko,
|
11
|
+
directory: string,
|
12
|
+
expected: string,
|
13
|
+
): string {
|
14
|
+
directory = directory || '';
|
15
|
+
if (directory && !directory.endsWith('/')) {
|
16
|
+
directory += '/';
|
17
|
+
}
|
18
|
+
|
19
|
+
const moFiles = mo.list(directory).filter((f) => /\.mo$/i.test(f));
|
20
|
+
if (moFiles.length === 1) {
|
21
|
+
return moFiles[0];
|
22
|
+
} else if (moFiles.length === 0) {
|
23
|
+
throw new Error(
|
24
|
+
'Could not find any Motoko files in the top-level directory',
|
25
|
+
);
|
26
|
+
}
|
27
|
+
|
28
|
+
const expectedFiles = moFiles.filter(
|
29
|
+
(f) => f.toLowerCase() === expected.toLowerCase(),
|
30
|
+
);
|
31
|
+
if (expectedFiles.length === 1) {
|
32
|
+
return expectedFiles[0];
|
33
|
+
} else if (expectedFiles.length > 1) {
|
34
|
+
throw new Error(
|
35
|
+
`Found ${expectedFiles.length} entry point files with different capitalization`,
|
36
|
+
);
|
37
|
+
}
|
38
|
+
|
39
|
+
throw new Error(
|
40
|
+
`Found ${moFiles.length} possible entry points. Please rename one of these files to '${expected}'`,
|
41
|
+
);
|
42
|
+
|
43
|
+
// TODO: evaluate whether we want to choose an entry point by parsing files
|
44
|
+
|
45
|
+
// const parsedFiles = moFiles.map((f) => {
|
46
|
+
// try {
|
47
|
+
// return mo.parseMotoko(mo.read(directory + f));
|
48
|
+
// } catch (err) {
|
49
|
+
// throw new Error(`Parse error in ${f}`);
|
50
|
+
// }
|
51
|
+
// });
|
52
|
+
|
53
|
+
// console.log(parsedFiles);
|
54
|
+
|
55
|
+
// return getOne(parsedFiles.filter());
|
56
|
+
}
|
57
|
+
|
58
|
+
export function resolveMain(mo: Motoko, directory: string): string | undefined {
|
59
|
+
return resolveEntryPoint(mo, directory, 'Main.mo');
|
60
|
+
}
|
61
|
+
|
62
|
+
export function resolveLib(mo: Motoko, directory: string): string | undefined {
|
63
|
+
return resolveEntryPoint(mo, directory, 'Lib.mo');
|
64
|
+
}
|