Skip to content

Commit

Permalink
Remove JSON schemas in favour of structs (#862)
Browse files Browse the repository at this point in the history
* Remove JSON schemas in favour of structs

* Fix browser export

* Fix build script

* Fix other packages

* Add tests

* Fix PR comments

* Remove custom minSize struct

* Fix export

* Update coverage

* Remove ajv cli

* Remove @json-schema-tools/transpiler
  • Loading branch information
Mrtenz committed Oct 26, 2022
1 parent 99f1fcd commit abdcbea
Show file tree
Hide file tree
Showing 30 changed files with 308 additions and 598 deletions.
5 changes: 3 additions & 2 deletions packages/cli/src/cmds/init/initUtils.test.ts
Expand Up @@ -47,7 +47,8 @@ jest.mock('fs', () => ({
jest.mock('@metamask/snap-utils', () => ({
...jest.requireActual('@metamask/snap-utils'),
readJsonFile: jest.fn(),
validateSnapJsonFile: jest.fn(),
assertIsNpmSnapPackageJson: jest.fn(),
assertIsSnapManifest: jest.fn(),
}));
jest.mock('init-package-json');
jest.mock('mkdirp');
Expand Down Expand Up @@ -75,7 +76,7 @@ describe('initUtils', () => {
.mockImplementationOnce(async () => '');

const validateSnapJsonFileMock = jest
.spyOn(snapUtils, 'validateSnapJsonFile')
.spyOn(snapUtils, 'assertIsNpmSnapPackageJson')
.mockImplementationOnce(() => true);

jest.spyOn(console, 'log').mockImplementation();
Expand Down
7 changes: 4 additions & 3 deletions packages/cli/src/cmds/init/initUtils.ts
Expand Up @@ -5,9 +5,10 @@ import {
NpmSnapFileNames,
SnapManifest,
NpmSnapPackageJson,
validateSnapJsonFile,
assertIsNpmSnapPackageJson,
readJsonFile,
deepClone,
assertIsSnapManifest,
} from '@metamask/snap-utils';
import initPackageJson from 'init-package-json';
import mkdirp from 'mkdirp';
Expand Down Expand Up @@ -48,7 +49,7 @@ export async function asyncPackageInit(

try {
const packageJson = await readJsonFile(NpmSnapFileNames.PackageJson);
validateSnapJsonFile(NpmSnapFileNames.PackageJson, packageJson);
assertIsNpmSnapPackageJson(packageJson);

console.log(
`Init: Successfully parsed '${NpmSnapFileNames.PackageJson}'!`,
Expand Down Expand Up @@ -292,7 +293,7 @@ export async function buildSnapManifest(
};

try {
validateSnapJsonFile(NpmSnapFileNames.Manifest, manifest);
assertIsSnapManifest(manifest);
} catch (error) {
/* istanbul ignore next */
throw new Error(
Expand Down
4 changes: 2 additions & 2 deletions packages/controllers/jest.config.js
Expand Up @@ -10,8 +10,8 @@ module.exports = {
global: {
branches: 85.74,
functions: 95.3,
lines: 94.84,
statements: 94.93,
lines: 94.83,
statements: 94.92,
},
},
projects: [
Expand Down
9 changes: 4 additions & 5 deletions packages/controllers/src/snaps/SnapController.ts
Expand Up @@ -35,7 +35,6 @@ import {
SNAP_PREFIX,
ValidatedSnapId,
validateSnapId,
validateSnapJsonFile,
validateSnapShasum,
TruncatedSnapFields,
Snap,
Expand All @@ -51,6 +50,7 @@ import {
fromEntries,
SnapStatus,
SnapStatusEvents,
assertIsSnapManifest,
} from '@metamask/snap-utils';
import {
Duration,
Expand Down Expand Up @@ -1904,7 +1904,7 @@ export class SnapController extends BaseController<
versionRange = DEFAULT_REQUESTED_SNAP_VERSION,
} = args;

validateSnapJsonFile(NpmSnapFileNames.Manifest, manifest);
assertIsSnapManifest(manifest);
const { version } = manifest;

if (!satisfiesVersionRange(version, versionRange)) {
Expand Down Expand Up @@ -2044,11 +2044,10 @@ export class SnapController extends BaseController<
);
}

const _manifest = await (
const manifest = await (
await this._fetchFunction(manifestUrl.toString(), fetchOptions)
).json();
validateSnapJsonFile(NpmSnapFileNames.Manifest, _manifest);
const manifest = _manifest as SnapManifest;
assertIsSnapManifest(manifest);

const {
source: {
Expand Down
6 changes: 3 additions & 3 deletions packages/utils/jest.config.js
Expand Up @@ -16,9 +16,9 @@ module.exports = {
coverageThreshold: {
global: {
branches: 86.05,
functions: 97,
lines: 96.68,
statements: 96.76,
functions: 97.14,
lines: 96.79,
statements: 96.86,
},
},
moduleFileExtensions: ['js', 'json', 'jsx', 'ts', 'tsx', 'node'],
Expand Down
9 changes: 1 addition & 8 deletions packages/utils/package.json
Expand Up @@ -44,11 +44,7 @@
"lint": "yarn lint:eslint && yarn lint:misc --check",
"lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write",
"lint:changelog": "yarn auto-changelog validate",
"ajv-compile": "ajv compile --strict=true --all-errors",
"build:ajv": "./scripts/build-ajv.sh",
"build:pre-tsc": "yarn build:ajv && node scripts/transpileSchemaTypes.js",
"build:tsc": "tsc --project tsconfig.local.json",
"build": "yarn build:pre-tsc && yarn build:tsc",
"build": "tsc --project tsconfig.local.json",
"build:clean": "yarn clean && yarn build",
"clean": "rimraf '*.tsbuildinfo' 'dist/*'",
"publish:package": "../../scripts/publish-package.sh"
Expand All @@ -60,7 +56,6 @@
"@metamask/utils": "^3.1.0",
"@noble/hashes": "^1.1.3",
"@scure/base": "^1.1.1",
"ajv": "^8.11.0",
"eth-rpc-errors": "^4.0.3",
"fast-deep-equal": "^3.1.3",
"rfdc": "^1.3.0",
Expand All @@ -69,7 +64,6 @@
"superstruct": "^0.16.5"
},
"devDependencies": {
"@json-schema-tools/transpiler": "^1.10.2",
"@lavamoat/allow-scripts": "^2.0.3",
"@metamask/auto-changelog": "^2.6.0",
"@metamask/eslint-config": "^9.0.0",
Expand All @@ -78,7 +72,6 @@
"@metamask/eslint-config-typescript": "^9.0.1",
"@types/jest": "^27.5.1",
"@types/semver": "^7.3.10",
"ajv-cli": "^5.0.0",
"eslint": "^7.30.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-import": "^2.23.4",
Expand Down
28 changes: 0 additions & 28 deletions packages/utils/scripts/build-ajv.sh

This file was deleted.

61 changes: 0 additions & 61 deletions packages/utils/scripts/transpileSchemaTypes.js

This file was deleted.

3 changes: 1 addition & 2 deletions packages/utils/src/fs.test.ts
Expand Up @@ -11,9 +11,8 @@ import {
validateFilePath,
validateDirPath,
} from './fs';
import { NpmSnapFileNames } from './types';
import { NpmSnapFileNames, SnapManifest } from './types';
import { DEFAULT_SNAP_BUNDLE, getSnapManifest } from './test-utils';
import { SnapManifest } from './json-schemas';

jest.mock('fs');

Expand Down
1 change: 0 additions & 1 deletion packages/utils/src/index.browser.ts
Expand Up @@ -4,7 +4,6 @@ export * from './deep-clone';
export * from './default-endowments';
export * from './flatMap';
export * from './json-rpc';
export * from './json-schemas';
export * from './namespace';
export * from './notification';
export * from './object';
Expand Down
1 change: 0 additions & 1 deletion packages/utils/src/index.ts
Expand Up @@ -6,7 +6,6 @@ export * from './eval';
export * from './flatMap';
export * from './fs';
export * from './json-rpc';
export * from './json-schemas';
export * from './manifest';
export * from './mock';
export * from './namespace';
Expand Down
26 changes: 0 additions & 26 deletions packages/utils/src/json-schemas/NpmSnapPackageJson.ts

This file was deleted.

4 changes: 0 additions & 4 deletions packages/utils/src/json-schemas/README.md

This file was deleted.

0 comments on commit abdcbea

Please sign in to comment.