motoko 3.0.0-beta0 → 3.0.0-beta1

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- # MotokoJS · [![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)
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
@@ -16,12 +16,11 @@ export declare const file: (mo: Motoko, path: string) => {
16
16
  };
17
17
  candid(): string;
18
18
  wasm(mode: WasmMode): any;
19
- parseMotoko(): {
20
- ast: object;
21
- exportType: object;
22
- };
23
- parseCandid(): {
19
+ parseMotoko(): object;
20
+ parseMotokoTypes(): {
24
21
  ast: object;
22
+ outputType: object;
25
23
  };
24
+ parseCandid(): object;
26
25
  };
27
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;;;;;;;;CAW1B,CAAC"}
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
@@ -58,6 +58,9 @@ const file = (mo, path) => {
58
58
  parseMotoko() {
59
59
  return mo.parseMotoko(result.read());
60
60
  },
61
+ parseMotokoTypes() {
62
+ return mo.parseMotokoTypes(result.read());
63
+ },
61
64
  parseCandid() {
62
65
  return mo.parseCandid(result.read());
63
66
  },
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;AAlDW,QAAA,IAAI,QAkDf"}
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
@@ -41,13 +41,12 @@ export default function wrapMotoko(compiler: Compiler, version: string): {
41
41
  };
42
42
  candid(): string;
43
43
  wasm(mode: WasmMode): any;
44
- parseMotoko(): {
45
- ast: object;
46
- exportType: object;
47
- };
48
- parseCandid(): {
44
+ parseMotoko(): object;
45
+ parseMotokoTypes(): {
49
46
  ast: object;
47
+ outputType: object;
50
48
  };
49
+ parseCandid(): object;
51
50
  };
52
51
  read(path: string): string;
53
52
  write(path: string, content?: string): void;
@@ -68,13 +67,14 @@ export default function wrapMotoko(compiler: Compiler, version: string): {
68
67
  };
69
68
  candid(path: string): string;
70
69
  wasm(path: string, mode: WasmMode): any;
71
- parseMotoko(content: string): {
72
- ast: object;
73
- exportType: object;
74
- };
75
- parseCandid(content: string): {
70
+ parseMotoko(content: string): object;
71
+ parseMotokoTypes(content: string): {
76
72
  ast: object;
73
+ outputType: object;
77
74
  };
75
+ parseCandid(content: string): object;
76
+ resolveMain(directory?: string): string | undefined;
77
+ resolveLib(directory?: string): string | undefined;
78
78
  };
79
79
  export {};
80
80
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,WAAW,EAAE,MAAM,WAAW,CAAC;AAEpE,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;;;;;iBAcvB,MAAM;wBAAc,MAAM;;;iBAG1B,MAAM;;;eAjEhC,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;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;yBAG5C,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE;EAOpD"}
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,4 @@
1
+ import { Motoko } from '..';
2
+ export declare function resolveMain(mo: Motoko, directory: string): string | undefined;
3
+ export declare function resolveLib(mo: Motoko, directory: string): string | undefined;
4
+ //# sourceMappingURL=resolveEntryPoint.d.ts.map
@@ -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"}
@@ -17,13 +17,12 @@ declare const _default: {
17
17
  };
18
18
  candid(): string;
19
19
  wasm(mode: import("..").WasmMode): any;
20
- parseMotoko(): {
21
- ast: object;
22
- exportType: object;
23
- };
24
- parseCandid(): {
20
+ parseMotoko(): object;
21
+ parseMotokoTypes(): {
25
22
  ast: object;
23
+ outputType: object;
26
24
  };
25
+ parseCandid(): object;
27
26
  };
28
27
  read(path: string): string;
29
28
  write(path: string, content?: string): void;
@@ -44,13 +43,14 @@ declare const _default: {
44
43
  };
45
44
  candid(path: string): string;
46
45
  wasm(path: string, mode: import("..").WasmMode): any;
47
- parseMotoko(content: string): {
48
- ast: object;
49
- exportType: object;
50
- };
51
- parseCandid(content: string): {
46
+ parseMotoko(content: string): object;
47
+ parseMotokoTypes(content: string): {
52
48
  ast: object;
49
+ outputType: object;
53
50
  };
51
+ parseCandid(content: string): object;
52
+ resolveMain(directory?: string): string;
53
+ resolveLib(directory?: string): string;
54
54
  };
55
55
  export default _default;
56
56
  //# sourceMappingURL=interpreter.d.ts.map
@@ -17,13 +17,12 @@ declare const _default: {
17
17
  };
18
18
  candid(): string;
19
19
  wasm(mode: import("..").WasmMode): any;
20
- parseMotoko(): {
21
- ast: object;
22
- exportType: object;
23
- };
24
- parseCandid(): {
20
+ parseMotoko(): object;
21
+ parseMotokoTypes(): {
25
22
  ast: object;
23
+ outputType: object;
26
24
  };
25
+ parseCandid(): object;
27
26
  };
28
27
  read(path: string): string;
29
28
  write(path: string, content?: string): void;
@@ -44,13 +43,14 @@ declare const _default: {
44
43
  };
45
44
  candid(path: string): string;
46
45
  wasm(path: string, mode: import("..").WasmMode): any;
47
- parseMotoko(content: string): {
48
- ast: object;
49
- exportType: object;
50
- };
51
- parseCandid(content: string): {
46
+ parseMotoko(content: string): object;
47
+ parseMotokoTypes(content: string): {
52
48
  ast: object;
49
+ outputType: object;
53
50
  };
51
+ parseCandid(content: string): object;
52
+ resolveMain(directory?: string): string;
53
+ resolveLib(directory?: string): string;
54
54
  };
55
55
  export default _default;
56
56
  //# sourceMappingURL=moc.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "motoko",
3
- "version": "3.0.0-beta0",
3
+ "version": "3.0.0-beta1",
4
4
  "description": "Compile and run Motoko smart contracts in Node.js or the browser.",
5
5
  "author": "Ryan Vandersmith (https://github.com/rvanasa)",
6
6
  "license": "Apache-2.0",
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
 
@@ -128,12 +129,21 @@ export default function wrapMotoko(compiler: Compiler, version: string) {
128
129
  }
129
130
  return invoke('compileWasm', true, [mode, path]);
130
131
  },
131
- parseMotoko(content: string): { ast: object; exportType: object } {
132
+ parseMotoko(content: string): object {
132
133
  return invoke('parseMotoko', true, [content]);
133
134
  },
134
- parseCandid(content: string): { ast: object } {
135
+ parseMotokoTypes(content: string): { ast: object; outputType: object } {
136
+ return invoke('parseMotokoTypes', true, [content]);
137
+ },
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
+ }