Skip to content

Commit d64e1c2

Browse files
committed
refactor: make ajv a peerDependency
1 parent 4df19c2 commit d64e1c2

File tree

5 files changed

+22
-9
lines changed

5 files changed

+22
-9
lines changed

.babelrc

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
{
2+
"plugins": ["@babel/plugin-syntax-dynamic-import"],
23
"env": {
34
"test": {
45
"presets": [
5-
[ "@babel/preset-env", {
6+
[ "@babel/env", {
67
"targets": { "node": "current" }
78
}]
89
]

package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
"test": "run-s test:*"
1414
},
1515
"dependencies": {
16-
"ajv": "^6.10.2",
1716
"os-locale": "^4.0.0",
1817
"semver": "^6.3.0"
1918
},
2019
"devDependencies": {
20+
"@babel/plugin-syntax-dynamic-import": "^7.7.4",
2121
"@babel/preset-env": "^7.7.4",
2222
"@nuxtjs/eslint-config": "^2.0.0",
2323
"ajv-cli": "^3.0.0",
@@ -27,5 +27,8 @@
2727
"eslint": "^6.7.1",
2828
"jest": "^24.9.0",
2929
"npm-run-all": "^4.1.5"
30+
},
31+
"peerDependencies": {
32+
"ajv": "^6.10.2"
3033
}
3134
}

src/index.js

+12-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import Ajv from 'ajv'
21
import osLocale from 'os-locale'
32
import semver from 'semver'
43
import schema from '../src/schema'
@@ -104,9 +103,19 @@ export function filter(data, options) {
104103

105104
let ajvValidate
106105

107-
export function validate(data) {
106+
export async function validate(data) {
108107
if (!ajvValidate) {
109-
ajvValidate = new Ajv().compile(schema)
108+
try {
109+
const Ajv = await import('ajv').then(m => m.default || m)
110+
ajvValidate = new Ajv().compile(schema)
111+
} catch (err) {
112+
if (err.code === 'MODULE_NOT_FOUND') {
113+
console.error('ajv not found, please install the peer dependency') // eslint-disable-line no-console
114+
return true
115+
}
116+
117+
throw err
118+
}
110119
}
111120

112121
return ajvValidate(data)

test/motd.test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ describe('motd', () => {
4444
jest.restoreAllMocks()
4545
})
4646

47-
test('schema', () => {
48-
expect(motd.validate(data)).toBe(true)
47+
test('schema', async () => {
48+
await expect(motd.validate(data)).resolves.toBe(true)
4949
})
5050

5151
test('getRegion only returns region part from locale', () => {

test/tags.test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ const data = [
5454
]
5555

5656
describe('motd', () => {
57-
test('schema', () => {
58-
expect(motd.validate(data)).toBe(true)
57+
test('schema', async () => {
58+
await expect(motd.validate(data)).resolves.toBe(true)
5959
})
6060

6161
test('filterTags doesnt filter without tags specified', () => {

0 commit comments

Comments
 (0)