motoko 2.0.10 → 2.1.0

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
@@ -102,8 +102,10 @@ mo.delete(path)
102
102
  // List the files in a virtual directory
103
103
  mo.list(path)
104
104
 
105
+ await mo.fetchPackage({name: '', repo: ''});
106
+
105
107
  // Try to load packages from GitHub and/or jsDelivr
106
- await mo.loadPackages({ packageName: repositoryPath, ... })
108
+ await mo.loadPackages({ [packageName]: repositoryPath, ... })
107
109
 
108
110
  // Use a virtual directory as a package
109
111
  mo.addPackage(packageName, directory)
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { PackageInfo } from './package';
2
- export declare type Motoko = ReturnType<typeof getMotoko>;
2
+ export declare type Motoko = ReturnType<typeof wrapMotoko>;
3
3
  declare type Compiler = any;
4
4
  export declare type Diagnostic = {
5
5
  code?: string | number | {
@@ -22,7 +22,7 @@ export declare type Diagnostic = {
22
22
  tags?: string[];
23
23
  };
24
24
  export declare type WasmMode = 'ic' | 'wasi';
25
- export default function getMotoko(compiler: Compiler, version: string): {
25
+ export default function wrapMotoko(compiler: Compiler, version: string): {
26
26
  version: string;
27
27
  compiler: any;
28
28
  file(path: string): {
@@ -44,12 +44,13 @@ export default function getMotoko(compiler: Compiler, version: string): {
44
44
  parseMotoko(): object;
45
45
  parseCandid(): object;
46
46
  };
47
- loadPackages(packages: Record<string, string | PackageInfo>): Promise<void>;
48
47
  read(path: string): string;
49
48
  write(path: string, content?: string): void;
50
49
  rename(path: string, newPath: string): void;
51
50
  delete(path: string): void;
52
51
  list(directory: string): string[];
52
+ fetchPackage(info: string | PackageInfo): Promise<import("./package").Package>;
53
+ loadPackages(packages: Record<string, string | PackageInfo>): Promise<void>;
53
54
  addPackage(name: string, directory: string): void;
54
55
  clearPackages(): void;
55
56
  setAliases(aliases: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,WAAW,EAAE,MAAM,WAAW,CAAC;AAEtD,oBAAY,MAAM,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAElD,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,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM;;;eA2ClD,MAAM;;;;;;;;;;oBAiDJ,MAAM;oBAAU,MAAM;oBAAU,MAAM,GAAG,MAAM;;;;;;;2BA7C/B,OAAO,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC;eAGtD,MAAM,GAAG,MAAM;gBAGd,MAAM,YAAW,MAAM;iBAOtB,MAAM,WAAW,MAAM;iBAGvB,MAAM;oBAIH,MAAM,GAAG,MAAM,EAAE;qBAGhB,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;yBAGf,MAAM,GAAG,MAAM;EAO3C"}
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;;;;;;;eAhDjD,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;yBAGf,MAAM,GAAG,MAAM;EAO3C"}
package/lib/index.js CHANGED
@@ -11,7 +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
- function getMotoko(compiler, version) {
14
+ function wrapMotoko(compiler, version) {
15
15
  const debug = require('debug')(version ? `motoko:${version}` : 'motoko');
16
16
  const invoke = (key, unwrap, args) => {
17
17
  if (!compiler) {
@@ -50,12 +50,6 @@ function getMotoko(compiler, version) {
50
50
  file(path) {
51
51
  return (0, file_1.file)(mo, path);
52
52
  },
53
- // findPackage,
54
- loadPackages(packages) {
55
- return __awaiter(this, void 0, void 0, function* () {
56
- return (0, package_1.loadPackages)(mo, packages);
57
- });
58
- },
59
53
  read(path) {
60
54
  return invoke('readFile', false, [path]);
61
55
  },
@@ -76,6 +70,16 @@ function getMotoko(compiler, version) {
76
70
  list(directory) {
77
71
  return invoke('readDir', false, [directory]);
78
72
  },
73
+ fetchPackage(info) {
74
+ return __awaiter(this, void 0, void 0, function* () {
75
+ return (0, package_1.fetchPackage)(info);
76
+ });
77
+ },
78
+ loadPackages(packages) {
79
+ return __awaiter(this, void 0, void 0, function* () {
80
+ return (0, package_1.loadPackages)(mo, packages);
81
+ });
82
+ },
79
83
  addPackage(name, directory) {
80
84
  debug('+package', name, directory);
81
85
  invoke('addPackage', false, [name, directory]);
@@ -121,5 +125,5 @@ function getMotoko(compiler, version) {
121
125
  mo.default = mo;
122
126
  return mo;
123
127
  }
124
- exports.default = getMotoko;
128
+ exports.default = wrapMotoko;
125
129
  //# sourceMappingURL=index.js.map
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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"}
package/lib/package.d.ts CHANGED
@@ -3,8 +3,18 @@ export interface PackageInfo {
3
3
  name: string;
4
4
  repo: string;
5
5
  version: string;
6
- dir: string;
6
+ dir?: string;
7
7
  branch?: string | undefined;
8
8
  }
9
+ export interface Package {
10
+ name: string;
11
+ version: string;
12
+ files: PackageFiles;
13
+ }
14
+ export declare type PackageFiles = Record<string, PackageFile>;
15
+ export interface PackageFile {
16
+ content: string;
17
+ }
18
+ export declare function fetchPackage(info: string | PackageInfo): Promise<Package | undefined>;
9
19
  export declare function loadPackages(mo: Motoko, packages: Record<string, string | PackageInfo>): Promise<void>;
10
20
  //# sourceMappingURL=package.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;AAE3B,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AA0JD,wBAAsB,YAAY,CAC9B,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,iBAQjD"}
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;AAE3B,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;CACvB;AAED,oBAAY,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAEvD,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAC;CACnB;AA+PD,wBAAsB,YAAY,CAC9B,IAAI,EAAE,MAAM,GAAG,WAAW,GAC3B,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAa9B;AAED,wBAAsB,YAAY,CAC9B,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,iBAWjD"}
package/lib/package.js CHANGED
@@ -13,11 +13,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  return (mod && mod.__esModule) ? mod : { "default": mod };
14
14
  };
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.loadPackages = void 0;
16
+ exports.loadPackages = exports.fetchPackage = void 0;
17
17
  // @ts-ignore
18
18
  const isomorphic_parse_github_url_1 = __importDefault(require("isomorphic-parse-github-url"));
19
19
  const cross_fetch_1 = __importDefault(require("cross-fetch"));
20
- function fetchPackage(mo, info) {
20
+ // TODO: call `fetchPackage` instead of deprecated functions
21
+ function loadPackage(mo, info) {
21
22
  return __awaiter(this, void 0, void 0, function* () {
22
23
  if (!info.repo.startsWith('https://github.com/') ||
23
24
  !info.repo.endsWith('.git')) {
@@ -30,25 +31,26 @@ function fetchPackage(mo, info) {
30
31
  branch: info.version,
31
32
  dir: info.dir || 'src',
32
33
  };
33
- const result = yield fetchGithub(mo, repo, info.name);
34
+ const result = yield fetchGithub_(mo, repo, info.name);
34
35
  if (result) {
35
36
  mo.addPackage(info.name, info.name + '/');
36
37
  }
37
38
  return result ? true : false;
38
39
  });
39
40
  }
40
- function fetchGithub(mo, info, directory = '') {
41
+ /** @deprecated */
42
+ function fetchGithub_(mo, info, directory = '') {
41
43
  return __awaiter(this, void 0, void 0, function* () {
42
44
  const possiblyCDN = !((info.branch.length % 2 === 0 && /^[A-F0-9]+$/i.test(info.branch)) ||
43
45
  info.branch === 'master' ||
44
46
  info.branch === 'main');
45
47
  if (possiblyCDN) {
46
- const result = yield fetchFromCDN(mo, info, directory);
48
+ const result = yield fetchFromCDN_(mo, info, directory);
47
49
  if (result) {
48
50
  return result;
49
51
  }
50
52
  }
51
- return yield fetchFromGithub(mo, info, directory);
53
+ return yield fetchFromGithub_(mo, info, directory);
52
54
  });
53
55
  }
54
56
  // function saveWorkplaceToMotoko(mo, files) {
@@ -57,7 +59,8 @@ function fetchGithub(mo, info, directory = '') {
57
59
  // mo.addFile(name, code);
58
60
  // }
59
61
  // }
60
- function fetchFromCDN(mo, info, directory = '') {
62
+ /** @deprecated */
63
+ function fetchFromCDN_(mo, info, directory = '') {
61
64
  return __awaiter(this, void 0, void 0, function* () {
62
65
  const meta_url = `https://data.jsdelivr.com/v1/package/gh/${info.repo}@${info.branch}/flat`;
63
66
  const base_url = `https://cdn.jsdelivr.net/gh/${info.repo}@${info.branch}`;
@@ -88,7 +91,8 @@ function fetchFromCDN(mo, info, directory = '') {
88
91
  });
89
92
  });
90
93
  }
91
- function fetchFromGithub(mo, info, directory = '') {
94
+ /** @deprecated */
95
+ function fetchFromGithub_(mo, info, directory = '') {
92
96
  return __awaiter(this, void 0, void 0, function* () {
93
97
  const meta_url = `https://api.github.com/repos/${info.repo}/git/trees/${info.branch}?recursive=1`;
94
98
  const base_url = `https://raw.githubusercontent.com/${info.repo}/${info.branch}/`;
@@ -122,9 +126,7 @@ function fetchFromGithub(mo, info, directory = '') {
122
126
  });
123
127
  });
124
128
  }
125
- // async function resolve(path) {
126
- // }
127
- function parseGithubPackage(path, name) {
129
+ function parseGithubPackageInfo(path) {
128
130
  if (!path) {
129
131
  return;
130
132
  }
@@ -139,30 +141,112 @@ function parseGithubPackage(path, name) {
139
141
  }
140
142
  }
141
143
  catch (err) {
142
- console.warn(err);
144
+ // console.warn(err);
145
+ return;
143
146
  }
144
- const { name: repoName, filepath, branch, owner } = result;
147
+ const { name, filepath, branch, owner } = result;
145
148
  return {
146
- name: name || repoName,
147
- repo: `https://github.com/${owner}/${repoName}.git`,
149
+ name,
150
+ repo: `https://github.com/${owner}/${name}.git`,
148
151
  version: branch,
149
152
  dir: filepath,
153
+ branch,
150
154
  // homepage: ,
151
155
  };
152
156
  }
157
+ function fetchPackageFiles(info) {
158
+ return __awaiter(this, void 0, void 0, function* () {
159
+ const prefix = 'https://github.com/';
160
+ const suffix = '.git';
161
+ if (!info.repo.startsWith(prefix) || !info.repo.endsWith(suffix)) {
162
+ return;
163
+ }
164
+ const repoPart = info.repo.slice(prefix.length, -suffix.length);
165
+ // TODO: modify condition?
166
+ const possiblyCDN = !((info.branch &&
167
+ info.branch.length % 2 === 0 &&
168
+ /^[A-F0-9]+$/i.test(info.branch)) ||
169
+ info.branch === 'master' ||
170
+ info.branch === 'main');
171
+ if (possiblyCDN) {
172
+ const result = yield fetchFromService(info, 'CDN', `https://data.jsdelivr.com/v1/package/gh/${repoPart}@${info.branch}/flat`, `https://cdn.jsdelivr.net/gh/${repoPart}@${info.branch}`, 'files', 'name');
173
+ if (result === null || result === void 0 ? void 0 : result.length) {
174
+ return result;
175
+ }
176
+ }
177
+ return yield fetchFromService(info, 'GitHub', `https://api.github.com/repos/${repoPart}/git/trees/${info.branch}?recursive=1`, `https://raw.githubusercontent.com/${repoPart}/${info.branch}/`, 'tree', 'path', (file) => file.type === 'blob');
178
+ });
179
+ }
180
+ function fetchFromService(info, serviceName, metaUrl, baseUrl, resultProperty, pathProperty, condition) {
181
+ return __awaiter(this, void 0, void 0, function* () {
182
+ const response = yield (0, cross_fetch_1.default)(metaUrl);
183
+ if (!response.ok) {
184
+ throw Error(response.statusText ||
185
+ `Could not fetch from ${serviceName}: ${info.repo}`);
186
+ }
187
+ const json = yield response.json();
188
+ if (!json.hasOwnProperty(resultProperty)) {
189
+ throw new Error(`Unexpected response from ${serviceName}`);
190
+ }
191
+ // Remove leading and trailing '/' from directory
192
+ let directory = info.dir
193
+ ? info.dir.replace(/^\//, '').replace(/\/$/, '')
194
+ : '';
195
+ const files = {};
196
+ yield Promise.all(json[resultProperty]
197
+ .filter((file) => {
198
+ return ((!directory ||
199
+ file[pathProperty].startsWith(file[pathProperty].startsWith('/')
200
+ ? `/${directory}`
201
+ : directory)) &&
202
+ (!condition || condition(file)) &&
203
+ /\.mo$/.test(file[pathProperty]));
204
+ })
205
+ .map((file) => __awaiter(this, void 0, void 0, function* () {
206
+ const response = yield (0, cross_fetch_1.default)(`${baseUrl}${file[pathProperty]}`);
207
+ if (!response.ok) {
208
+ throw Error(response.statusText);
209
+ }
210
+ const content = yield response.text();
211
+ let path = file[pathProperty];
212
+ if (path.startsWith('/')) {
213
+ path = path.slice(1);
214
+ }
215
+ if (directory) {
216
+ // Remove directory prefix
217
+ path = path.slice(directory.length + 1);
218
+ }
219
+ files[path] = {
220
+ content,
221
+ };
222
+ })));
223
+ return files;
224
+ });
225
+ }
226
+ function fetchPackage(info) {
227
+ return __awaiter(this, void 0, void 0, function* () {
228
+ if (typeof info === 'string') {
229
+ info = parseGithubPackageInfo(info);
230
+ }
231
+ const files = yield fetchPackageFiles(info);
232
+ if (!files) {
233
+ return;
234
+ }
235
+ return {
236
+ name: info.name,
237
+ version: info.version,
238
+ files,
239
+ };
240
+ });
241
+ }
242
+ exports.fetchPackage = fetchPackage;
153
243
  function loadPackages(mo, packages) {
154
244
  return __awaiter(this, void 0, void 0, function* () {
155
245
  yield Promise.all(Object.entries(packages).map(([name, path]) => {
156
- const info = parseGithubPackage(path, name);
157
- return fetchPackage(mo, info);
246
+ const info = Object.assign(Object.assign({}, parseGithubPackageInfo(path)), { name });
247
+ return loadPackage(mo, info);
158
248
  }));
159
249
  });
160
250
  }
161
251
  exports.loadPackages = loadPackages;
162
- // export async function findPackage(package) {
163
- // if (typeof package === 'string') {
164
- // return resolve(package);
165
- // }
166
- // return package;
167
- // },
168
252
  //# sourceMappingURL=package.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"package.js","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":"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"}
@@ -20,12 +20,13 @@ declare const _default: {
20
20
  parseMotoko(): object;
21
21
  parseCandid(): object;
22
22
  };
23
- loadPackages(packages: Record<string, string | import("../package").PackageInfo>): Promise<void>;
24
23
  read(path: string): string;
25
24
  write(path: string, content?: string): void;
26
25
  rename(path: string, newPath: string): void;
27
26
  delete(path: string): void;
28
27
  list(directory: string): string[];
28
+ fetchPackage(info: string | import("../package").PackageInfo): Promise<import("../package").Package>;
29
+ loadPackages(packages: Record<string, string | import("../package").PackageInfo>): Promise<void>;
29
30
  addPackage(name: string, directory: string): void;
30
31
  clearPackages(): void;
31
32
  setAliases(aliases: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../../src/versions/interpreter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,wBAAuD"}
1
+ {"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../../src/versions/interpreter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,wBAAwD"}
@@ -1 +1 @@
1
- {"version":3,"file":"interpreter.js","sourceRoot":"","sources":["../../src/versions/interpreter.ts"],"names":[],"mappings":";;;;;AAAA,2CAA2B;AAC3B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,2CAA2C,CAAC,CAAC;AAExE,kBAAe,IAAA,WAAS,EAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"interpreter.js","sourceRoot":"","sources":["../../src/versions/interpreter.ts"],"names":[],"mappings":";;;;;AAAA,2CAA4B;AAC5B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,2CAA2C,CAAC,CAAC;AAExE,kBAAe,IAAA,WAAU,EAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC"}
@@ -20,12 +20,13 @@ declare const _default: {
20
20
  parseMotoko(): object;
21
21
  parseCandid(): object;
22
22
  };
23
- loadPackages(packages: Record<string, string | import("../package").PackageInfo>): Promise<void>;
24
23
  read(path: string): string;
25
24
  write(path: string, content?: string): void;
26
25
  rename(path: string, newPath: string): void;
27
26
  delete(path: string): void;
28
27
  list(directory: string): string[];
28
+ fetchPackage(info: string | import("../package").PackageInfo): Promise<import("../package").Package>;
29
+ loadPackages(packages: Record<string, string | import("../package").PackageInfo>): Promise<void>;
29
30
  addPackage(name: string, directory: string): void;
30
31
  clearPackages(): void;
31
32
  setAliases(aliases: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"moc.d.ts","sourceRoot":"","sources":["../../src/versions/moc.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,wBAA2C"}
1
+ {"version":3,"file":"moc.d.ts","sourceRoot":"","sources":["../../src/versions/moc.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,wBAA4C"}
@@ -1 +1 @@
1
- {"version":3,"file":"moc.js","sourceRoot":"","sources":["../../src/versions/moc.ts"],"names":[],"mappings":";;;;;AAAA,2CAA2B;AAC3B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAE5D,kBAAe,IAAA,WAAS,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"moc.js","sourceRoot":"","sources":["../../src/versions/moc.ts"],"names":[],"mappings":";;;;;AAAA,2CAA4B;AAC5B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAE5D,kBAAe,IAAA,WAAU,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "motoko",
3
- "version": "2.0.10",
3
+ "version": "2.1.0",
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/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { file } from './file';
2
- import { loadPackages, PackageInfo } from './package';
2
+ import { fetchPackage, loadPackages, PackageInfo } from './package';
3
3
 
4
- export type Motoko = ReturnType<typeof getMotoko>;
4
+ export type Motoko = ReturnType<typeof wrapMotoko>;
5
5
 
6
6
  type Compiler = any; // TODO
7
7
 
@@ -20,7 +20,7 @@ export type Diagnostic = {
20
20
 
21
21
  export type WasmMode = 'ic' | 'wasi';
22
22
 
23
- export default function getMotoko(compiler: Compiler, version: string) {
23
+ export default function wrapMotoko(compiler: Compiler, version: string) {
24
24
  const debug = require('debug')(version ? `motoko:${version}` : 'motoko');
25
25
 
26
26
  const invoke = (key: string, unwrap: boolean, args: any[]) => {
@@ -66,10 +66,6 @@ export default function getMotoko(compiler: Compiler, version: string) {
66
66
  file(path: string) {
67
67
  return file(mo, path);
68
68
  },
69
- // findPackage,
70
- async loadPackages(packages: Record<string, string | PackageInfo>) {
71
- return loadPackages(mo, packages);
72
- },
73
69
  read(path: string): string {
74
70
  return invoke('readFile', false, [path]);
75
71
  },
@@ -90,6 +86,12 @@ export default function getMotoko(compiler: Compiler, version: string) {
90
86
  list(directory: string): string[] {
91
87
  return invoke('readDir', false, [directory]);
92
88
  },
89
+ async fetchPackage(info: string | PackageInfo) {
90
+ return fetchPackage(info);
91
+ },
92
+ async loadPackages(packages: Record<string, string | PackageInfo>) {
93
+ return loadPackages(mo, packages);
94
+ },
93
95
  addPackage(name: string, directory: string) {
94
96
  debug('+package', name, directory);
95
97
  invoke('addPackage', false, [name, directory]);
package/src/package.ts CHANGED
@@ -9,11 +9,24 @@ export interface PackageInfo {
9
9
  name: string;
10
10
  repo: string;
11
11
  version: string;
12
- dir: string;
12
+ dir?: string;
13
13
  branch?: string | undefined;
14
14
  }
15
15
 
16
- async function fetchPackage(mo: Motoko, info: PackageInfo) {
16
+ export interface Package {
17
+ name: string;
18
+ version: string;
19
+ files: PackageFiles;
20
+ }
21
+
22
+ export type PackageFiles = Record<string, PackageFile>;
23
+
24
+ export interface PackageFile {
25
+ content: string;
26
+ }
27
+
28
+ // TODO: call `fetchPackage` instead of deprecated functions
29
+ async function loadPackage(mo: Motoko, info: PackageInfo) {
17
30
  if (
18
31
  !info.repo.startsWith('https://github.com/') ||
19
32
  !info.repo.endsWith('.git')
@@ -27,26 +40,27 @@ async function fetchPackage(mo: Motoko, info: PackageInfo) {
27
40
  branch: info.version,
28
41
  dir: info.dir || 'src',
29
42
  };
30
- const result = await fetchGithub(mo, repo, info.name);
43
+ const result = await fetchGithub_(mo, repo, info.name);
31
44
  if (result) {
32
45
  mo.addPackage(info.name, info.name + '/');
33
46
  }
34
47
  return result ? true : false;
35
48
  }
36
49
 
37
- async function fetchGithub(mo: Motoko, info: PackageInfo, directory = '') {
50
+ /** @deprecated */
51
+ async function fetchGithub_(mo: Motoko, info: PackageInfo, directory = '') {
38
52
  const possiblyCDN = !(
39
53
  (info.branch.length % 2 === 0 && /^[A-F0-9]+$/i.test(info.branch)) ||
40
54
  info.branch === 'master' ||
41
55
  info.branch === 'main'
42
56
  );
43
57
  if (possiblyCDN) {
44
- const result = await fetchFromCDN(mo, info, directory);
58
+ const result = await fetchFromCDN_(mo, info, directory);
45
59
  if (result) {
46
60
  return result;
47
61
  }
48
62
  }
49
- return await fetchFromGithub(mo, info, directory);
63
+ return await fetchFromGithub_(mo, info, directory);
50
64
  }
51
65
 
52
66
  // function saveWorkplaceToMotoko(mo, files) {
@@ -56,7 +70,8 @@ async function fetchGithub(mo: Motoko, info: PackageInfo, directory = '') {
56
70
  // }
57
71
  // }
58
72
 
59
- async function fetchFromCDN(mo: Motoko, info: PackageInfo, directory = '') {
73
+ /** @deprecated */
74
+ async function fetchFromCDN_(mo: Motoko, info: PackageInfo, directory = '') {
60
75
  const meta_url = `https://data.jsdelivr.com/v1/package/gh/${info.repo}@${info.branch}/flat`;
61
76
  const base_url = `https://cdn.jsdelivr.net/gh/${info.repo}@${info.branch}`;
62
77
  const response = await fetch(meta_url);
@@ -87,7 +102,8 @@ async function fetchFromCDN(mo: Motoko, info: PackageInfo, directory = '') {
87
102
  });
88
103
  }
89
104
 
90
- async function fetchFromGithub(
105
+ /** @deprecated */
106
+ async function fetchFromGithub_(
91
107
  mo: Motoko,
92
108
  info: PackageInfo,
93
109
  directory: string = '',
@@ -129,14 +145,7 @@ async function fetchFromGithub(
129
145
  });
130
146
  }
131
147
 
132
- // async function resolve(path) {
133
-
134
- // }
135
-
136
- function parseGithubPackage(
137
- path: string | PackageInfo,
138
- name: string,
139
- ): PackageInfo {
148
+ function parseGithubPackageInfo(path: string | PackageInfo): PackageInfo {
140
149
  if (!path) {
141
150
  return;
142
151
  }
@@ -151,35 +160,152 @@ function parseGithubPackage(
151
160
  return;
152
161
  }
153
162
  } catch (err) {
154
- console.warn(err);
163
+ // console.warn(err);
164
+ return;
155
165
  }
156
166
 
157
- const { name: repoName, filepath, branch, owner } = result;
158
-
167
+ const { name, filepath, branch, owner } = result;
159
168
  return {
160
- name: name || repoName,
161
- repo: `https://github.com/${owner}/${repoName}.git`,
169
+ name,
170
+ repo: `https://github.com/${owner}/${name}.git`,
162
171
  version: branch,
163
172
  dir: filepath,
173
+ branch,
164
174
  // homepage: ,
165
175
  };
166
176
  }
167
177
 
178
+ async function fetchPackageFiles(
179
+ info: PackageInfo,
180
+ ): Promise<PackageFiles | undefined> {
181
+ const prefix = 'https://github.com/';
182
+ const suffix = '.git';
183
+ if (!info.repo.startsWith(prefix) || !info.repo.endsWith(suffix)) {
184
+ return;
185
+ }
186
+ const repoPart = info.repo.slice(prefix.length, -suffix.length);
187
+
188
+ // TODO: modify condition?
189
+ const possiblyCDN = !(
190
+ (info.branch &&
191
+ info.branch.length % 2 === 0 &&
192
+ /^[A-F0-9]+$/i.test(info.branch)) ||
193
+ info.branch === 'master' ||
194
+ info.branch === 'main'
195
+ );
196
+ if (possiblyCDN) {
197
+ const result = await fetchFromService(
198
+ info,
199
+ 'CDN',
200
+ `https://data.jsdelivr.com/v1/package/gh/${repoPart}@${info.branch}/flat`,
201
+ `https://cdn.jsdelivr.net/gh/${repoPart}@${info.branch}`,
202
+ 'files',
203
+ 'name',
204
+ );
205
+ if (result?.length) {
206
+ return result;
207
+ }
208
+ }
209
+ return await fetchFromService(
210
+ info,
211
+ 'GitHub',
212
+ `https://api.github.com/repos/${repoPart}/git/trees/${info.branch}?recursive=1`,
213
+ `https://raw.githubusercontent.com/${repoPart}/${info.branch}/`,
214
+ 'tree',
215
+ 'path',
216
+ (file) => file.type === 'blob',
217
+ );
218
+ }
219
+
220
+ async function fetchFromService(
221
+ info: PackageInfo,
222
+ serviceName: string,
223
+ metaUrl: string,
224
+ baseUrl: string,
225
+ resultProperty: string,
226
+ pathProperty: string,
227
+ condition?: (file: any) => boolean,
228
+ ): Promise<PackageFiles | undefined> {
229
+ const response = await fetch(metaUrl);
230
+ if (!response.ok) {
231
+ throw Error(
232
+ response.statusText ||
233
+ `Could not fetch from ${serviceName}: ${info.repo}`,
234
+ );
235
+ }
236
+ const json = await response.json();
237
+ if (!json.hasOwnProperty(resultProperty)) {
238
+ throw new Error(`Unexpected response from ${serviceName}`);
239
+ }
240
+ // Remove leading and trailing '/' from directory
241
+ let directory = info.dir
242
+ ? info.dir.replace(/^\//, '').replace(/\/$/, '')
243
+ : '';
244
+ const files: Record<string, PackageFile> = {};
245
+ await Promise.all(
246
+ (<any[]>json[resultProperty])
247
+ .filter((file) => {
248
+ return (
249
+ (!directory ||
250
+ file[pathProperty].startsWith(
251
+ file[pathProperty].startsWith('/')
252
+ ? `/${directory}`
253
+ : directory,
254
+ )) &&
255
+ (!condition || condition(file)) &&
256
+ /\.mo$/.test(file[pathProperty])
257
+ );
258
+ })
259
+ .map(async (file) => {
260
+ const response = await fetch(`${baseUrl}${file[pathProperty]}`);
261
+ if (!response.ok) {
262
+ throw Error(response.statusText);
263
+ }
264
+ const content = await response.text();
265
+ let path = file[pathProperty];
266
+ if (path.startsWith('/')) {
267
+ path = path.slice(1);
268
+ }
269
+ if (directory) {
270
+ // Remove directory prefix
271
+ path = path.slice(directory.length + 1);
272
+ }
273
+ files[path] = {
274
+ content,
275
+ };
276
+ }),
277
+ );
278
+ return files;
279
+ }
280
+
281
+ export async function fetchPackage(
282
+ info: string | PackageInfo,
283
+ ): Promise<Package | undefined> {
284
+ if (typeof info === 'string') {
285
+ info = parseGithubPackageInfo(info);
286
+ }
287
+ const files = await fetchPackageFiles(info);
288
+ if (!files) {
289
+ return;
290
+ }
291
+ return {
292
+ name: info.name,
293
+ version: info.version,
294
+ files,
295
+ };
296
+ }
297
+
168
298
  export async function loadPackages(
169
299
  mo: Motoko,
170
300
  packages: Record<string, string | PackageInfo>,
171
301
  ) {
172
302
  await Promise.all(
173
303
  Object.entries(packages).map(([name, path]) => {
174
- const info = parseGithubPackage(path, name);
175
- return fetchPackage(mo, info);
304
+ const info = {
305
+ ...parseGithubPackageInfo(path),
306
+ name,
307
+ };
308
+ return loadPackage(mo, info);
176
309
  }),
177
310
  );
178
311
  }
179
-
180
- // export async function findPackage(package) {
181
- // if (typeof package === 'string') {
182
- // return resolve(package);
183
- // }
184
- // return package;
185
- // },
@@ -1,4 +1,4 @@
1
- import getMotoko from '..';
1
+ import wrapMotoko from '..';
2
2
  const { Motoko } = require('../../versions/latest/moc_interpreter.min');
3
3
 
4
- export default getMotoko(Motoko, 'latest/interpreter');
4
+ export default wrapMotoko(Motoko, 'latest/interpreter');
@@ -1,4 +1,4 @@
1
- import getMotoko from '..';
1
+ import wrapMotoko from '..';
2
2
  const { Motoko } = require('../../versions/latest/moc.min');
3
3
 
4
- export default getMotoko(Motoko, 'latest');
4
+ export default wrapMotoko(Motoko, 'latest');