motoko 2.0.10 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
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');