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 +3 -1
- package/lib/index.d.ts +4 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +12 -8
- package/lib/index.js.map +1 -1
- package/lib/package.d.ts +11 -1
- package/lib/package.d.ts.map +1 -1
- package/lib/package.js +107 -23
- package/lib/package.js.map +1 -1
- package/lib/versions/interpreter.d.ts +2 -1
- package/lib/versions/interpreter.d.ts.map +1 -1
- package/lib/versions/interpreter.js.map +1 -1
- package/lib/versions/moc.d.ts +2 -1
- package/lib/versions/moc.d.ts.map +1 -1
- package/lib/versions/moc.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +9 -7
- package/src/package.ts +156 -30
- package/src/versions/interpreter.ts +2 -2
- package/src/versions/moc.ts +2 -2
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
|
|
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
|
|
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;
|
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,
|
|
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
|
|
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 =
|
|
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":";;;;;;;;;;;AAAA,iCAA8B;AAC9B,
|
|
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
|
|
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
|
package/lib/package.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
48
|
+
const result = yield fetchFromCDN_(mo, info, directory);
|
|
47
49
|
if (result) {
|
|
48
50
|
return result;
|
|
49
51
|
}
|
|
50
52
|
}
|
|
51
|
-
return yield
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
147
|
+
const { name, filepath, branch, owner } = result;
|
|
145
148
|
return {
|
|
146
|
-
name
|
|
147
|
-
repo: `https://github.com/${owner}/${
|
|
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 =
|
|
157
|
-
return
|
|
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
|
package/lib/package.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.js","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":";AAAA,2FAA2F;;;;;;;;;;;;;;;AAE3F,aAAa;AACb,8FAA+D;AAC/D,8DAAgC;
|
|
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":"
|
|
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,
|
|
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"}
|
package/lib/versions/moc.d.ts
CHANGED
|
@@ -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":"
|
|
1
|
+
{"version":3,"file":"moc.d.ts","sourceRoot":"","sources":["../../src/versions/moc.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,wBAA4C"}
|
package/lib/versions/moc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moc.js","sourceRoot":"","sources":["../../src/versions/moc.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
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
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
|
|
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
|
|
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
|
|
12
|
+
dir?: string;
|
|
13
13
|
branch?: string | undefined;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
58
|
+
const result = await fetchFromCDN_(mo, info, directory);
|
|
45
59
|
if (result) {
|
|
46
60
|
return result;
|
|
47
61
|
}
|
|
48
62
|
}
|
|
49
|
-
return await
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
158
|
-
|
|
167
|
+
const { name, filepath, branch, owner } = result;
|
|
159
168
|
return {
|
|
160
|
-
name
|
|
161
|
-
repo: `https://github.com/${owner}/${
|
|
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 =
|
|
175
|
-
|
|
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
|
-
// },
|
package/src/versions/moc.ts
CHANGED