Skip to content

Commit 005b339

Browse files
authored
Merge pull request #67 from Agoric/type-enforcing-dapp-contracts
Linting dapp-agoric-basics
2 parents 00d8c53 + 83d7b03 commit 005b339

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+1894
-720
lines changed

contract/.eslintignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
bundles
2+
dist

contract/jsconfig.json

Lines changed: 0 additions & 25 deletions
This file was deleted.

contract/package.json

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,53 +14,53 @@
1414
"build": "yarn build:deployer",
1515
"build:deployer": "rollup -c rollup.config.mjs",
1616
"test": "ava --verbose",
17-
"lint": "eslint '**/*.js'",
18-
"lint:types": "tsc -p jsconfig.json",
17+
"lint": "tsc && eslint '**/*.js'",
1918
"lint:fix": "eslint --fix '**/*.js'"
2019
},
2120
"devDependencies": {
2221
"@agoric/deploy-script-support": "^0.10.4-u14.0",
23-
"@agoric/eslint-config": "dev",
22+
"@agoric/eslint-config": "^0.4.1-u16.0",
2423
"@agoric/smart-wallet": "0.5.4-u14.0",
2524
"@agoric/store": "0.9.3-u14.0",
2625
"@agoric/xsnap": "0.14.3-u14.0",
2726
"@agoric/zone": "0.2.3-u14.0",
28-
"@endo/eslint-plugin": "^0.5.2",
27+
"@endo/eslint-plugin": "^2.2.1",
2928
"@endo/nat": "^4.1.27",
3029
"@endo/promise-kit": "0.2.56",
3130
"@endo/ses-ava": "^0.2.44",
32-
"@jessie.js/eslint-plugin": "^0.4.0",
31+
"@jessie.js/eslint-plugin": "^0.4.1",
3332
"@typescript-eslint/eslint-plugin": "^6.7.0",
3433
"@typescript-eslint/parser": "^6.7.0",
3534
"agoric": "^0.21.2-u12.0",
3635
"ava": "^5.3.0",
3736
"eslint": "^8.47.0",
3837
"eslint-config-airbnb-base": "^15.0.0",
3938
"eslint-config-jessie": "^0.0.6",
40-
"eslint-config-prettier": "^9.0.0",
39+
"eslint-config-prettier": "^9.1.0",
4140
"eslint-plugin-ava": "^14.0.0",
4241
"eslint-plugin-github": "^4.10.0",
43-
"eslint-plugin-import": "^2.25.3",
44-
"eslint-plugin-jsdoc": "^46.4.3",
45-
"eslint-plugin-prettier": "^5.0.0",
42+
"eslint-plugin-import": "^2.29.1",
43+
"eslint-plugin-jsdoc": "^48.5.2",
44+
"eslint-plugin-prettier": "^5.1.3",
4645
"import-meta-resolve": "^2.2.1",
4746
"prettier": "^3.0.3",
4847
"prettier-plugin-jsdoc": "^1.0.0",
4948
"type-coverage": "^2.26.3",
50-
"typescript": "~5.2.2"
49+
"typescript": "^5.5.3",
50+
"typescript-eslint": "^7.2.0"
5151
},
5252
"dependencies": {
53-
"@agoric/ertp": "^0.16.3-u14.0",
53+
"@agoric/ertp": "^0.16.3-u16.1",
5454
"@agoric/governance": "^0.10.4-u14.0",
5555
"@agoric/inter-protocol": "0.16.2-u14.1",
5656
"@agoric/vats": "0.15.2-u14.0",
5757
"@agoric/vat-data": "0.5.3-u14.0",
58-
"@agoric/zoe": "^0.26.3-u14.0",
59-
"@endo/bundle-source": "^2.8.0",
58+
"@agoric/zoe": "^0.26.3-u16.1",
59+
"@endo/bundle-source": "^3.4.0",
6060
"@endo/far": "^0.2.22",
61-
"@endo/init": "^0.5.60",
62-
"@endo/marshal": "^0.8.9",
63-
"@endo/patterns": "^0.2.5"
61+
"@endo/init": "^1.1.4",
62+
"@endo/marshal": "^1.5.3",
63+
"@endo/patterns": "^1.4.3"
6464
},
6565
"ava": {
6666
"files": [
@@ -80,14 +80,35 @@
8080
},
8181
"homepage": "https://github.com/Agoric/dapp-agoric-basics#readme",
8282
"eslintConfig": {
83+
"env": {
84+
"node": true
85+
},
86+
"parser": "@typescript-eslint/parser",
8387
"parserOptions": {
8488
"sourceType": "module",
8589
"ecmaVersion": 2021
8690
},
8791
"ignorePatterns": "bundles/**.js",
8892
"extends": [
93+
"plugin:@typescript-eslint/recommended",
8994
"@agoric"
90-
]
95+
],
96+
"plugins": [
97+
"@typescript-eslint",
98+
"prettier"
99+
],
100+
"rules": {
101+
"prettier/prettier": "warn",
102+
"@typescript-eslint/no-unused-vars": [
103+
"error",
104+
{
105+
"vars": "all",
106+
"args": "all",
107+
"argsIgnorePattern": "^_",
108+
"varsIgnorePattern": "^_"
109+
}
110+
]
111+
}
91112
},
92113
"prettier": {
93114
"trailingComma": "all",

contract/scripts/deploy-contract.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#!/usr/bin/env node
2-
/* global process, fetch, setTimeout */
32
// @ts-check
43
import '@endo/init';
54
import fsp from 'node:fs/promises';

contract/src/collectFees.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import { atomicTransfer } from '@agoric/zoe/src/contractSupport/index.js';
44

5+
/** @import {Brand} from '@agoric/ertp/src/types.js'; */
6+
57
/**
68
* Provide shared support for providing access to fees from a service contract.
79
*

contract/src/fixHub.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,15 @@ import { E, Far } from '@endo/far';
33

44
const { Fail } = assert;
55

6+
/**
7+
* @import {ERef} from '@endo/far';
8+
* @import {NameAdmin} from '@agoric/vats';
9+
*/
10+
611
/**
712
* ref https://github.com/Agoric/agoric-sdk/issues/8408#issuecomment-1741445458
813
*
9-
* @param {ERef<import('@agoric/vats').NameAdmin>} namesByAddressAdmin
14+
* @param {ERef<NameAdmin>} namesByAddressAdmin
1015
*/
1116
export const fixHub = async namesByAddressAdmin => {
1217
assert(namesByAddressAdmin, 'no namesByAddressAdmin???');

contract/src/objectTools.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { E } from '@endo/far';
33

44
const { entries, fromEntries } = Object;
55

6+
/** @import {ERef} from '@endo/far'; */
7+
68
/**
79
* Given a record whose values may be promise, return a promise for a record with all the values resolved.
810
*

contract/src/platform-goals/board-aux.core.js

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,26 @@
11
// @ts-check
2+
/// <reference types="@agoric/vats/src/core/types-ambient.js"/>
23
import { E, Far } from '@endo/far';
34

5+
/**
6+
* @import {ERef} from '@endo/far';
7+
* @import {StorageNode,Marshaller} from '@agoric/internal/src/lib-chainStorage.js';
8+
* @import {Zone} from '@agoric/zone';
9+
* @import {Brand} from '@agoric/ertp/src/types.js';
10+
* @import {Board} from '@agoric/vats';
11+
*/
12+
413
const { Fail } = assert;
514

615
// vstorage paths under published.*
716
// and zone store key
817
export const BOARD_AUX = 'boardAux';
918

1019
/**
11-
* @param {import('@agoric/zone').Zone} zone
20+
* @param {Zone} zone
1221
* @param {Marshaller} marshalData
1322
* @param {{
14-
* board: ERef<import('@agoric/vats').Board>;
23+
* board: ERef<Board>;
1524
* chainStorage: ERef<StorageNode>;
1625
* }} powers
1726
*/
@@ -73,7 +82,6 @@ export const makeBoardAuxManager = (zone, marshalData, powers) => {
7382
/**
7483
* @typedef {PromiseSpaceOf<{
7584
* brandAuxPublisher: BrandAuxPublisher;
76-
* boardAuxTOFU: BoardAuxTOFU;
7785
* boardAuxAdmin: BoardAuxAdmin;
7886
* }>} BoardAuxPowers
7987
*/
@@ -86,12 +94,12 @@ export const marshalData = harden({
8694
unserialize: () => Fail`not implemented`,
8795
});
8896

89-
/** @param {BootstrapPowers} powers */
97+
/**
98+
* @param {BootstrapPowers} powers
99+
*/
90100
export const produceBoardAuxManager = async powers => {
91101
const { zone } = powers;
92102
const { board } = powers.consume;
93-
/** @type {import('../types').NonNullChainStorage['consume']} */
94-
// @ts-expect-error cast
95103
const { chainStorage } = powers.consume;
96104

97105
/** @type {BoardAuxPowers['produce']} */
@@ -100,6 +108,7 @@ export const produceBoardAuxManager = async powers => {
100108

101109
const mgr = makeBoardAuxManager(zone, marshalData, { board, chainStorage });
102110
produce.brandAuxPublisher.reset();
111+
103112
// TODO: powers.produce.boardAuxTOFU.reset();
104113
produce.boardAuxAdmin.reset();
105114
produce.brandAuxPublisher.resolve(mgr.brandAuxPublisher);

contract/src/platform-goals/endo1.core.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
import * as marshal from '@endo/marshal';
33
import * as patterns from '@endo/patterns';
44

5+
/** @import {BootstrapManifestPermit} from '@agoric/vats/src/core/lib-boot.js'; */
6+
57
/**
68
* @typedef {{
79
* endo1: {
@@ -23,9 +25,8 @@ export const produceEndoModules = permittedPowers => {
2325
produce.endo1.resolve(endo);
2426
};
2527

26-
/** @type {import('@agoric/vats/src/core/lib-boot').BootstrapManifestPermit} */
28+
/** @type {BootstrapManifestPermit} */
2729
export const permit = {
28-
/** @type {Record<keyof Endo1Modules, true>} */
2930
produce: { endo1: true },
3031
};
3132

contract/src/platform-goals/start-contract.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33

44
import { E } from '@endo/far';
55

6+
/**
7+
* @import {AssetKind, Brand} from '@agoric/ertp/src/types.js';
8+
* @import {BoardAuxPowers} from './board-aux.core.js';
9+
*/
10+
611
const { Fail } = assert;
712

813
/**
@@ -63,7 +68,7 @@ export const startContract = async (
6368
console.log(name, 'started');
6469

6570
if (issuerNames) {
66-
/** @type {BootstrapPowers & import('./board-aux.core').BoardAuxPowers} */
71+
/** @type {BootstrapPowers & BoardAuxPowers} */
6772
// @ts-expect-error cast
6873
const auxPowers = powers;
6974

0 commit comments

Comments
 (0)