ic-mops 0.34.4 → 0.36.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.
Files changed (54) hide show
  1. package/cli.ts +11 -45
  2. package/commands/add.ts +7 -5
  3. package/commands/bench-replica.ts +99 -0
  4. package/commands/bench.ts +57 -90
  5. package/commands/install-all.ts +4 -4
  6. package/commands/remove.ts +4 -4
  7. package/commands/sync.ts +5 -5
  8. package/commands/update.ts +3 -3
  9. package/declarations/main/main.did +67 -78
  10. package/declarations/main/main.did.d.ts +72 -83
  11. package/declarations/main/main.did.js +12 -23
  12. package/dist/bin/mops.d.ts +2 -0
  13. package/dist/bin/mops.js +2 -0
  14. package/dist/cli.js +11 -44
  15. package/dist/commands/add.d.ts +2 -2
  16. package/dist/commands/add.js +6 -3
  17. package/dist/commands/bench-replica.d.ts +32 -0
  18. package/dist/commands/bench-replica.js +87 -0
  19. package/dist/commands/bench.d.ts +9 -8
  20. package/dist/commands/bench.js +44 -76
  21. package/dist/commands/install-all.d.ts +2 -2
  22. package/dist/commands/install-all.js +3 -3
  23. package/dist/commands/remove.d.ts +2 -2
  24. package/dist/commands/remove.js +3 -2
  25. package/dist/commands/sync.d.ts +2 -2
  26. package/dist/commands/sync.js +4 -4
  27. package/dist/commands/toolchain/moc.d.ts +4 -0
  28. package/dist/commands/toolchain/moc.js +36 -0
  29. package/dist/commands/toolchain/mocv.d.ts +1 -0
  30. package/dist/commands/toolchain/mocv.js +272 -0
  31. package/dist/commands/toolchain/toolchain-utils.d.ts +3 -0
  32. package/dist/commands/toolchain/toolchain-utils.js +56 -0
  33. package/dist/commands/toolchain/wasmtime.d.ts +4 -0
  34. package/dist/commands/toolchain/wasmtime.js +23 -0
  35. package/dist/commands/update.d.ts +2 -2
  36. package/dist/commands/update.js +2 -2
  37. package/dist/declarations/main/main.did +67 -78
  38. package/dist/declarations/main/main.did.d.ts +72 -83
  39. package/dist/declarations/main/main.did.js +12 -23
  40. package/dist/integrity.d.ts +2 -2
  41. package/dist/integrity.js +4 -4
  42. package/dist/moc-wrapper.d.ts +2 -0
  43. package/dist/moc-wrapper.js +8 -0
  44. package/dist/out/cli.d.ts +2 -0
  45. package/dist/out/cli.js +115242 -0
  46. package/dist/package.json +12 -4
  47. package/dist/templates/cli.d.ts +2 -0
  48. package/dist/templates/cli.js +3660 -0
  49. package/integrity.ts +5 -5
  50. package/package.json +12 -4
  51. package/dist/helpers/download-package-files.d.ts +0 -12
  52. package/dist/helpers/download-package-files.js +0 -62
  53. package/dist/helpers/resolve-version.d.ts +0 -1
  54. package/dist/helpers/resolve-version.js +0 -11
@@ -0,0 +1,272 @@
1
+ // @ts-nocheck
2
+ import fs from 'fs-extra';
3
+ import os from 'os';
4
+ import path from 'path';
5
+ import tar from 'tar';
6
+ import { program } from 'commander';
7
+ import prompts from 'prompts';
8
+ import { Octokit } from 'octokit';
9
+ import chalk from 'chalk';
10
+ import fetch from 'node-fetch';
11
+ if (process.platform == 'win32') {
12
+ console.log('Windows is not supported. Please use WSL');
13
+ process.exit(1);
14
+ }
15
+ let zshrc = path.join(os.homedir(), '.zshrc');
16
+ let bashrc = path.join(os.homedir(), '.bashrc');
17
+ let cacheDir = path.join(os.homedir(), '.cache/mocv');
18
+ let curVersionFile = path.join(cacheDir, 'versions/current/version.txt');
19
+ let tmpDir = path.join(cacheDir, '.tmp');
20
+ let file = path.join(tmpDir, 'moc.tar.gz');
21
+ let download = async (version, { silent = false } = {}) => {
22
+ if (!version) {
23
+ console.log('version is not defined');
24
+ process.exit(1);
25
+ }
26
+ if (isCached(version)) {
27
+ return;
28
+ }
29
+ let url;
30
+ if (parseInt(version.replaceAll('.', '')) >= parseInt('0.9.5'.replaceAll('.', ''))) {
31
+ let platfrom = process.platform == 'darwin' ? 'Darwin' : 'Linux';
32
+ let arch = process.arch.startsWith('arm') ? 'arm64' : 'x86_64';
33
+ // currently only x64 binaries are available
34
+ arch = 'x86_64';
35
+ url = `https://github.com/dfinity/motoko/releases/download/${version}/motoko-${platfrom}-${arch}-${version}.tar.gz`;
36
+ }
37
+ else {
38
+ let platfrom = process.platform == 'darwin' ? 'macos' : 'linux64';
39
+ url = `https://github.com/dfinity/motoko/releases/download/${version}/motoko-${platfrom}-${version}.tar.gz`;
40
+ }
41
+ silent || console.log(`Downloading ${url}`);
42
+ let res = await fetch(url);
43
+ if (res.status !== 200) {
44
+ console.log(`ERR ${res.status} ${url}`);
45
+ console.log(`moc version '${version}' not found`);
46
+ process.exit(1);
47
+ }
48
+ let arrayBuffer = await res.arrayBuffer();
49
+ let buffer = Buffer.from(arrayBuffer);
50
+ fs.mkdirSync(tmpDir, { recursive: true });
51
+ fs.writeFileSync(file, buffer);
52
+ let verDir = path.join(cacheDir, 'versions', version);
53
+ fs.mkdirSync(verDir, { recursive: true });
54
+ await tar.extract({
55
+ file,
56
+ cwd: verDir,
57
+ });
58
+ fs.rmSync(file);
59
+ };
60
+ let isCached = (version) => {
61
+ let dir = path.join(cacheDir, 'versions', version);
62
+ return fs.existsSync(path.join(dir, 'moc'))
63
+ && fs.existsSync(path.join(dir, 'mo-doc'))
64
+ && fs.existsSync(path.join(dir, 'mo-ide'));
65
+ };
66
+ let setCurrent = (version) => {
67
+ fs.copySync(path.join(cacheDir, 'versions', version), path.join(cacheDir, 'versions/current'), { recursive: true });
68
+ fs.writeFileSync(curVersionFile, version);
69
+ };
70
+ let getCurrent = () => {
71
+ if (fs.existsSync(curVersionFile)) {
72
+ return fs.readFileSync(curVersionFile).toString();
73
+ }
74
+ };
75
+ let getLatest = async () => {
76
+ let releases = await getReleases();
77
+ return releases[0].tag_name;
78
+ };
79
+ let getReleases = async () => {
80
+ let octokit = new Octokit;
81
+ let res = await octokit.request('GET /repos/dfinity/motoko/releases', {
82
+ per_page: 10,
83
+ headers: {
84
+ 'X-GitHub-Api-Version': '2022-11-28'
85
+ }
86
+ });
87
+ if (res.status !== 200) {
88
+ console.log('Releases fetch error');
89
+ process.exit(1);
90
+ }
91
+ return res.data;
92
+ };
93
+ let use = async (version) => {
94
+ if (version === 'latest') {
95
+ version = await getLatest();
96
+ }
97
+ await download(version);
98
+ setCurrent(version);
99
+ console.log(`Selected moc ${version}`);
100
+ // update github env
101
+ if (process.env.GITHUB_ENV) {
102
+ fs.appendFileSync(process.env.GITHUB_ENV, `DFX_MOC_PATH=${path.join(cacheDir, 'versions', version)}/moc\n`);
103
+ }
104
+ };
105
+ program.name('mocv')
106
+ .action(async (_, config) => {
107
+ if (config.args.length) {
108
+ console.log(`unknown command '${config.args.join(' ')}'`);
109
+ process.exit(1);
110
+ }
111
+ let releases = await getReleases();
112
+ let versions = releases.map((item) => item.tag_name);
113
+ let current = getCurrent();
114
+ let currentIndex = versions.indexOf(current);
115
+ let res = await prompts({
116
+ type: 'select',
117
+ name: 'version',
118
+ message: 'Select moc version',
119
+ choices: releases.map((release, i) => {
120
+ let date = new Date(release.published_at).toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: 'numeric' });
121
+ return {
122
+ title: release.tag_name + chalk.gray(` ${date}${currentIndex === i ? chalk.italic(' (current)') : ''}`),
123
+ value: release.tag_name,
124
+ };
125
+ }),
126
+ initial: currentIndex == -1 ? 0 : currentIndex,
127
+ });
128
+ if (!res.version) {
129
+ return;
130
+ }
131
+ await use(res.version);
132
+ });
133
+ let updateShellConfig = async ({ reset = false, yes = false } = {}) => {
134
+ let setDfxMocPath = reset || yes;
135
+ let updatePath = reset || yes;
136
+ if (!setDfxMocPath) {
137
+ let res = await prompts({
138
+ type: 'select',
139
+ name: 'setDfxMocPath',
140
+ message: 'Do you want to set DFX_MOC_PATH, so `dfx` will use the current `moc` version?',
141
+ choices: [
142
+ {
143
+ title: 'Yes',
144
+ value: true,
145
+ },
146
+ {
147
+ title: 'No',
148
+ value: false,
149
+ },
150
+ ],
151
+ });
152
+ setDfxMocPath = res.setDfxMocPath;
153
+ }
154
+ if (!updatePath) {
155
+ let res = await prompts({
156
+ type: 'select',
157
+ name: 'updatePath',
158
+ message: 'Do you want to update PATH, so you can call `moc`, `mo-doc` and `mo-ide` from the terminal?',
159
+ choices: [
160
+ {
161
+ title: 'Yes',
162
+ value: true,
163
+ },
164
+ {
165
+ title: 'No',
166
+ value: false,
167
+ },
168
+ ],
169
+ });
170
+ updatePath = res.updatePath;
171
+ }
172
+ if (!setDfxMocPath && !updatePath) {
173
+ console.log('Nothing to do');
174
+ return;
175
+ }
176
+ let configFiles = [];
177
+ if (reset || yes) {
178
+ configFiles = [bashrc, zshrc];
179
+ }
180
+ else {
181
+ let { configFile } = await prompts({
182
+ type: 'select',
183
+ name: 'configFile',
184
+ message: 'Select your shell config file',
185
+ choices: [
186
+ {
187
+ title: bashrc,
188
+ value: bashrc,
189
+ },
190
+ {
191
+ title: zshrc,
192
+ value: zshrc,
193
+ },
194
+ ],
195
+ });
196
+ configFiles = [configFile];
197
+ }
198
+ for (let configFile of configFiles) {
199
+ if (!fs.existsSync(configFile)) {
200
+ console.log(`${configFile} not found`);
201
+ process.exit(1);
202
+ }
203
+ let data = fs.readFileSync(configFile).toString();
204
+ let setDfxLine = '\nexport DFX_MOC_PATH="$HOME/.cache/mocv/versions/current/moc"';
205
+ let updatePathLine = '\nPATH="$HOME/.cache/mocv/versions/current:$PATH"';
206
+ let newLines = [];
207
+ setDfxMocPath && newLines.push(setDfxLine);
208
+ updatePath && newLines.push(updatePathLine);
209
+ let oldLines = [
210
+ `\nexport DFX_MOC_PATH=${path.join(cacheDir, 'versions/current')}/moc\n`,
211
+ setDfxLine,
212
+ updatePathLine,
213
+ ];
214
+ for (let oldLine of oldLines) {
215
+ data = data.replace(oldLine, '');
216
+ }
217
+ if (data.endsWith('\n\n')) {
218
+ data = data.trimEnd() + '\n';
219
+ }
220
+ if (!reset) {
221
+ if (!data.endsWith('\n')) {
222
+ data += '\n';
223
+ }
224
+ for (let newLine of newLines) {
225
+ data += newLine;
226
+ }
227
+ data += '\n';
228
+ }
229
+ fs.writeFileSync(configFile, data);
230
+ }
231
+ ;
232
+ console.log('Success!');
233
+ // console.log(`Run "source ${configFile}" to apply changes`);
234
+ console.log('Restart terminal to apply changes');
235
+ };
236
+ program.command('init')
237
+ .description('mocv one time initialization')
238
+ .option('-y, --yes', 'Skip prompts')
239
+ .action(async (options) => {
240
+ updateShellConfig(options);
241
+ });
242
+ program.command('reset')
243
+ .description('Reset changes made by `mocv init`')
244
+ .action(async () => {
245
+ updateShellConfig({ reset: true });
246
+ });
247
+ program.command('use <version>')
248
+ .description('Set current moc version.\nExample 1: "mocv use 0.8.4"\nExample 2: "mocv use latest"')
249
+ .action(async (version) => {
250
+ await use(version);
251
+ });
252
+ program.command('current')
253
+ .description('Print current moc version')
254
+ .action(async () => {
255
+ console.log(getCurrent());
256
+ });
257
+ program.command('bin [version]')
258
+ .description('Print bin directory')
259
+ .action(async (version = getCurrent()) => {
260
+ if (version === 'latest') {
261
+ version = await getLatest();
262
+ }
263
+ if (!version) {
264
+ console.log('No version selected. Please pass a version arg or run `mocv` or `mocv use <version>`');
265
+ process.exit(1);
266
+ }
267
+ if (!isCached(version)) {
268
+ await download(version, { silent: true });
269
+ }
270
+ console.log(path.join(cacheDir, 'versions', version));
271
+ });
272
+ program.parse();
@@ -0,0 +1,3 @@
1
+ export declare let downloadGithubRelease: (url: string, dest: string) => Promise<void>;
2
+ export declare let getLatestReleaseTag: (repo: string) => Promise<string | undefined>;
3
+ export declare let getReleases: (repo: string) => Promise<any>;
@@ -0,0 +1,56 @@
1
+ import path from 'node:path';
2
+ import fs from 'fs-extra';
3
+ import decompress from 'decompress';
4
+ import decompressTarxz from 'decomp-tarxz';
5
+ import { deleteSync } from 'del';
6
+ import { Octokit } from 'octokit';
7
+ import tar from 'tar';
8
+ import { getRootDir } from '../../mops.js';
9
+ export let downloadGithubRelease = async (url, dest) => {
10
+ let res = await fetch(url);
11
+ if (res.status !== 200) {
12
+ console.error(`ERROR ${res.status} ${url}`);
13
+ process.exit(1);
14
+ }
15
+ let arrayBuffer = await res.arrayBuffer();
16
+ let buffer = Buffer.from(arrayBuffer);
17
+ let tmpDir = path.join(getRootDir(), '.mops', '_tmp');
18
+ let archive = path.join(tmpDir, path.basename(url));
19
+ fs.mkdirSync(tmpDir, { recursive: true });
20
+ fs.writeFileSync(archive, buffer);
21
+ fs.mkdirSync(dest, { recursive: true });
22
+ if (archive.endsWith('.xz')) {
23
+ await decompress(archive, dest, {
24
+ strip: 1,
25
+ plugins: [decompressTarxz()],
26
+ }).catch(() => {
27
+ deleteSync([tmpDir]);
28
+ });
29
+ }
30
+ else {
31
+ await tar.extract({
32
+ file: archive,
33
+ cwd: dest,
34
+ });
35
+ }
36
+ deleteSync([tmpDir], { force: true });
37
+ };
38
+ export let getLatestReleaseTag = async (repo) => {
39
+ let releases = await getReleases(repo);
40
+ let release = releases.find((release) => !release.prerelease && !release.draft);
41
+ return release?.tag_name;
42
+ };
43
+ export let getReleases = async (repo) => {
44
+ let octokit = new Octokit;
45
+ let res = await octokit.request(`GET /repos/${repo}/releases`, {
46
+ per_page: 10,
47
+ headers: {
48
+ 'X-GitHub-Api-Version': '2022-11-28'
49
+ }
50
+ });
51
+ if (res.status !== 200) {
52
+ console.log('Releases fetch error');
53
+ process.exit(1);
54
+ }
55
+ return res.data;
56
+ };
@@ -0,0 +1,4 @@
1
+ export declare let isCached: (version: string) => boolean;
2
+ export declare let download: (version: string, { silent }?: {
3
+ silent?: boolean | undefined;
4
+ }) => Promise<void>;
@@ -0,0 +1,23 @@
1
+ import path from 'node:path';
2
+ import fs from 'fs-extra';
3
+ import { globalCacheDir } from '../../mops.js';
4
+ import { downloadGithubRelease } from './toolchain-utils.js';
5
+ let cacheDir = path.join(globalCacheDir, 'wasmtime');
6
+ export let isCached = (version) => {
7
+ let dir = path.join(cacheDir, version);
8
+ return fs.existsSync(dir) && fs.existsSync(path.join(dir, 'wasmtime'));
9
+ };
10
+ export let download = async (version, { silent = false } = {}) => {
11
+ if (!version) {
12
+ console.error('version is not defined');
13
+ process.exit(1);
14
+ }
15
+ if (isCached(version)) {
16
+ return;
17
+ }
18
+ let platfrom = process.platform == 'darwin' ? 'macos' : 'linux';
19
+ let arch = process.arch.startsWith('arm') ? 'aarch64' : 'x86_64';
20
+ let url = `https://github.com/bytecodealliance/wasmtime/releases/download/v${version}/wasmtime-v${version}-${arch}-${platfrom}.tar.xz`;
21
+ silent || console.log(`Downloading ${url}`);
22
+ await downloadGithubRelease(url, path.join(cacheDir, version));
23
+ };
@@ -1,7 +1,7 @@
1
1
  type UpdateOptions = {
2
2
  verbose?: boolean;
3
3
  dev?: boolean;
4
- lockfile?: 'save' | 'ignore';
4
+ lock?: 'update' | 'ignore';
5
5
  };
6
- export declare function update(pkg?: string, { lockfile }?: UpdateOptions): Promise<void>;
6
+ export declare function update(pkg?: string, { lock }?: UpdateOptions): Promise<void>;
7
7
  export {};
@@ -3,7 +3,7 @@ import { checkConfigFile, getGithubCommit, parseGithubURL, readConfig } from '..
3
3
  import { add } from './add.js';
4
4
  import { getAvailableUpdates } from './available-updates.js';
5
5
  import { checkIntegrity } from '../integrity.js';
6
- export async function update(pkg, { lockfile } = {}) {
6
+ export async function update(pkg, { lock } = {}) {
7
7
  if (!checkConfigFile()) {
8
8
  return;
9
9
  }
@@ -43,5 +43,5 @@ export async function update(pkg, { lockfile } = {}) {
43
43
  await add(`${dep[0]}@${dep[2]}`, { dev });
44
44
  }
45
45
  }
46
- await checkIntegrity(lockfile);
46
+ await checkIntegrity(lock);
47
47
  }
@@ -111,7 +111,7 @@ type Result_3 =
111
111
  };
112
112
  type Result_2 =
113
113
  variant {
114
- err: PublishingErr;
114
+ err: Err;
115
115
  ok: PublishingId;
116
116
  };
117
117
  type Result_1 =
@@ -141,7 +141,6 @@ type Request =
141
141
  url: text;
142
142
  };
143
143
  type PublishingId = text;
144
- type PublishingErr = text;
145
144
  type PageCount = nat;
146
145
  type PackageVersion = text;
147
146
  type PackageSummary__1 =
@@ -272,13 +271,6 @@ type PackageConfigV2 =
272
271
  scripts: vec Script;
273
272
  version: text;
274
273
  };
275
- type PackageChanges__1 =
276
- record {
277
- deps: vec DepChange;
278
- devDeps: vec DepChange;
279
- notes: text;
280
- tests: TestsChanges;
281
- };
282
274
  type PackageChanges =
283
275
  record {
284
276
  deps: vec DepChange;
@@ -286,6 +278,71 @@ type PackageChanges =
286
278
  notes: text;
287
279
  tests: TestsChanges;
288
280
  };
281
+ type Main =
282
+ service {
283
+ backup: () -> ();
284
+ computeHashesForExistingFiles: () -> ();
285
+ finishPublish: (PublishingId) -> (Result);
286
+ getApiVersion: () -> (Text) query;
287
+ getBackupCanisterId: () -> (principal) query;
288
+ getDefaultPackages: (text) ->
289
+ (vec record {
290
+ PackageName;
291
+ PackageVersion;
292
+ }) query;
293
+ getDownloadTrendByPackageId: (PackageId) ->
294
+ (vec DownloadsSnapshot__1) query;
295
+ getDownloadTrendByPackageName: (PackageName) ->
296
+ (vec DownloadsSnapshot__1) query;
297
+ getFileHashes: (PackageName, PackageVersion) -> (Result_8);
298
+ getFileHashesByPackageIds: (vec PackageId) ->
299
+ (vec record {
300
+ PackageId;
301
+ vec record {
302
+ FileId;
303
+ blob;
304
+ };
305
+ });
306
+ getFileIds: (PackageName, PackageVersion) -> (Result_7) query;
307
+ getHighestSemverBatch:
308
+ (vec record {
309
+ PackageName;
310
+ PackageVersion;
311
+ SemverPart;
312
+ }) -> (Result_6) query;
313
+ getHighestVersion: (PackageName) -> (Result_5) query;
314
+ getMostDownloadedPackages: () -> (vec PackageSummary) query;
315
+ getMostDownloadedPackagesIn7Days: () -> (vec PackageSummary) query;
316
+ getNewPackages: () -> (vec PackageSummary) query;
317
+ getPackageDetails: (PackageName, PackageVersion) -> (Result_4) query;
318
+ getPackagesByCategory: () -> (vec record {
319
+ text;
320
+ vec PackageSummary;
321
+ }) query;
322
+ getRecentlyUpdatedPackages: () -> (vec PackageSummaryWithChanges) query;
323
+ getStoragesStats: () -> (vec record {
324
+ StorageId;
325
+ StorageStats;
326
+ }) query;
327
+ getTotalDownloads: () -> (nat) query;
328
+ getTotalPackages: () -> (nat) query;
329
+ getUser: (principal) -> (opt User__1) query;
330
+ http_request: (Request) -> (Response) query;
331
+ notifyInstall: (PackageName, PackageVersion) -> () oneway;
332
+ notifyInstalls: (vec record {
333
+ PackageName;
334
+ PackageVersion;
335
+ }) -> () oneway;
336
+ restore: (nat, nat) -> ();
337
+ search: (Text, opt nat, opt nat) -> (vec PackageSummary, PageCount) query;
338
+ setUserProp: (text, text) -> (Result_1);
339
+ startFileUpload: (PublishingId, Text, nat, blob) -> (Result_3);
340
+ startPublish: (PackageConfigV2) -> (Result_2);
341
+ transferOwnership: (PackageName, principal) -> (Result_1);
342
+ uploadFileChunk: (PublishingId, FileId, nat, blob) -> (Result);
343
+ uploadNotes: (PublishingId, text) -> (Result);
344
+ uploadTestStats: (PublishingId, TestStats) -> (Result);
345
+ };
289
346
  type Header =
290
347
  record {
291
348
  text;
@@ -323,72 +380,4 @@ type DepChange =
323
380
  newVersion: text;
324
381
  oldVersion: text;
325
382
  };
326
- service : {
327
- backup: () -> ();
328
- claimAirdrop: (principal) -> (text);
329
- computeHashesForExistingFiles: () -> ();
330
- diff: (text, text) -> (PackageChanges__1) query;
331
- finishPublish: (PublishingId) -> (Result);
332
- getAirdropAmount: () -> (nat) query;
333
- getAirdropAmountAll: () -> (nat) query;
334
- getApiVersion: () -> (Text) query;
335
- getBackupCanisterId: () -> (principal) query;
336
- getDefaultPackages: (text) ->
337
- (vec record {
338
- PackageName;
339
- PackageVersion;
340
- }) query;
341
- getDownloadTrendByPackageId: (PackageId) ->
342
- (vec DownloadsSnapshot__1) query;
343
- getDownloadTrendByPackageName: (PackageName) ->
344
- (vec DownloadsSnapshot__1) query;
345
- getFileHashes: (PackageName, PackageVersion) -> (Result_8);
346
- getFileHashesByPackageIds: (vec PackageId) ->
347
- (vec record {
348
- PackageId;
349
- vec record {
350
- FileId;
351
- blob;
352
- };
353
- });
354
- getFileIds: (PackageName, PackageVersion) -> (Result_7) query;
355
- getHighestSemverBatch:
356
- (vec record {
357
- PackageName;
358
- PackageVersion;
359
- SemverPart;
360
- }) -> (Result_6) query;
361
- getHighestVersion: (PackageName) -> (Result_5) query;
362
- getMostDownloadedPackages: () -> (vec PackageSummary) query;
363
- getMostDownloadedPackagesIn7Days: () -> (vec PackageSummary) query;
364
- getNewPackages: () -> (vec PackageSummary) query;
365
- getPackageDetails: (PackageName, PackageVersion) -> (Result_4) query;
366
- getPackagesByCategory: () -> (vec record {
367
- text;
368
- vec PackageSummary;
369
- }) query;
370
- getRecentlyUpdatedPackages: () -> (vec PackageSummaryWithChanges) query;
371
- getStoragesStats: () -> (vec record {
372
- StorageId;
373
- StorageStats;
374
- }) query;
375
- getTotalDownloads: () -> (nat) query;
376
- getTotalPackages: () -> (nat) query;
377
- getUser: (principal) -> (opt User__1) query;
378
- http_request: (Request) -> (Response) query;
379
- notifyInstall: (PackageName, PackageVersion) -> () oneway;
380
- notifyInstalls: (vec record {
381
- PackageName;
382
- PackageVersion;
383
- }) -> () oneway;
384
- restore: (nat, nat) -> ();
385
- search: (Text, opt nat, opt nat) -> (vec PackageSummary, PageCount) query;
386
- setUserProp: (text, text) -> (Result_1);
387
- startFileUpload: (PublishingId, Text, nat, blob) -> (Result_3);
388
- startPublish: (PackageConfigV2) -> (Result_2);
389
- takeAirdropSnapshot: () -> () oneway;
390
- transferOwnership: (PackageName, principal) -> (Result_1);
391
- uploadFileChunk: (PublishingId, FileId, nat, blob) -> (Result);
392
- uploadNotes: (PublishingId, text) -> (Result);
393
- uploadTestStats: (PublishingId, TestStats) -> (Result);
394
- }
383
+ service : () -> Main