motoko 2.1.0 → 3.0.0-beta1
Sign up to get free protection for your applications and to get access to all the features.
- 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 [![npm version](https://img.shields.io/npm/v/motoko.svg?logo=npm)](https://www.npmjs.com/package/motoko) [![GitHub license](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](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
|
+
}
|