Skip to content

Commit d051bb3

Browse files
authored
convert to ESM (#18)
1 parent e02a61f commit d051bb3

19 files changed

Lines changed: 361 additions & 187 deletions

index.js

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,19 @@
1-
for (const l of ['group', 'nameserver', 'permission', 'session', 'user', 'zone', 'zone_record']) {
2-
module.exports[l] = require(`./lib/${l}`)
1+
import * as group from './lib/group.js'
2+
import * as nameserver from './lib/nameserver.js'
3+
import * as permission from './lib/permission.js'
4+
import * as session from './lib/session.js'
5+
import * as user from './lib/user.js'
6+
import * as zone from './lib/zone.js'
7+
import * as zone_record from './lib/zone_record.js'
8+
9+
export { group, nameserver, permission, session, user, zone, zone_record }
10+
11+
export default {
12+
group,
13+
nameserver,
14+
permission,
15+
session,
16+
user,
17+
zone,
18+
zone_record,
319
}

index.mjs

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

index.test.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
const assert = require('node:assert/strict')
2-
const { describe, it } = require('node:test')
1+
import assert from 'node:assert/strict'
2+
import { describe, it } from 'node:test'
3+
import { createRequire } from 'node:module'
34

4-
const schema = require('./index')
5+
const require = createRequire(import.meta.url)
6+
7+
import * as schema from './index.js'
58

69
describe('index', function () {
710
const testGroup = require('./lib/test/group.json')

lib/group.js

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,61 @@
1-
const Joi = require('joi')
1+
import Joi from 'joi'
22

3-
const shared = require('./shared')
4-
const permission = require('./permission')
3+
import * as shared from './shared.js'
4+
import * as permission from './permission.js'
55

6-
exports.id = Joi.number().integer().min(1).max(4294967295)
6+
export const id = Joi.number().integer().min(1).max(4294967295)
77

8-
exports.pid = shared.uint32
8+
export const pid = shared.uint32
99

10-
exports.name = Joi.string()
10+
export const name = Joi.string()
1111
.min(3)
1212
.max(255)
1313
.pattern(new RegExp("^[a-zA-Z0-9 _.@'-]+$"))
1414
.pattern(new RegExp('^[a-zA-Z0-9]'))
1515

16-
exports.v3 = Joi.object({
17-
id: exports.id,
18-
parent_gid: exports.pid,
19-
name: exports.name.required(),
16+
export const v3 = Joi.object({
17+
id: id,
18+
parent_gid: pid,
19+
name: name.required(),
2020
deleted: Joi.boolean(),
2121
has_children: Joi.boolean(),
2222
permission: permission.v3,
2323
})
2424

2525
// legacy group format
26-
exports.v2 = Joi.object({
27-
nt_group_id: exports.id,
28-
parent_group_id: exports.pid,
29-
name: exports.name.required(),
26+
export const v2 = Joi.object({
27+
nt_group_id: id,
28+
parent_group_id: pid,
29+
name: name.required(),
3030
deleted: Joi.boolean(),
3131
has_children: Joi.boolean(),
3232
permission: permission.v3,
3333
})
3434

35-
exports.GET_req = Joi.object({
36-
id: exports.pid,
37-
name: exports.name,
35+
export const GET_req = Joi.object({
36+
id: pid,
37+
name: name,
3838
deleted: Joi.boolean(),
3939
})
4040

41-
exports.GET_res = Joi.object({
41+
export const GET_res = Joi.object({
4242
group: Joi.object({
43-
id: exports.pid,
44-
name: exports.name,
45-
parent_gid: exports.pid,
43+
id: pid,
44+
name: name,
45+
parent_gid: pid,
4646
deleted: Joi.boolean(),
4747
}),
4848
meta: shared.meta,
4949
})
5050

51-
exports.POST = Joi.object({
52-
id: exports.id,
53-
name: exports.name,
54-
parent_gid: exports.pid,
51+
export const POST = Joi.object({
52+
id: id,
53+
name: name,
54+
parent_gid: pid,
5555
deleted: Joi.boolean(),
5656
})
5757

58-
exports.DELETE = Joi.object({
59-
id: exports.id,
58+
export const DELETE = Joi.object({
59+
id: id,
6060
deleted: Joi.boolean(),
6161
})

lib/group.test.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1-
const assert = require('node:assert/strict')
2-
const { describe, it } = require('node:test')
1+
import assert from 'node:assert/strict'
2+
import { describe, it } from 'node:test'
3+
import { createRequire } from 'node:module'
34

4-
const schema = require('./group').v3
5+
const require = createRequire(import.meta.url)
6+
7+
import * as group from './group.js'
8+
const schema = group.v3
59
const testGroup = require('./test/group.json')
610

711
describe('group', function () {

lib/nameserver.js

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,53 @@
1-
const Joi = require('joi')
1+
import Joi from 'joi'
22

3-
const shared = require('./shared')
3+
import * as shared from './shared.js'
44

5-
exports.id = shared.uint16.min(0)
5+
export const id = shared.uint16.min(0)
66

7-
exports.name = Joi.string()
7+
export const name = Joi.string()
88
.min(2)
99
.max(127)
1010
.domain({ allowFullyQualified: true, tlds: false })
1111
.pattern(/\.$/)
1212

13-
exports.type = Joi.string().valid('bind', 'djbdns', 'knot', 'nsd', 'maradns', 'powerdns', 'dynect')
13+
export const type = Joi.string().valid('bind', 'djbdns', 'knot', 'nsd', 'maradns', 'powerdns', 'dynect')
1414

15-
exports.remote_login = Joi.string().empty('').max(127)
15+
export const remote_login = Joi.string().empty('').max(127)
1616

17-
exports.v3 = Joi.object({
18-
id: exports.id,
17+
export const v3 = Joi.object({
18+
id: id,
1919
gid: shared.uint32.required(),
20-
name: exports.name.required(),
20+
name: name.required(),
2121
ttl: shared.ttl.required(),
2222
description: Joi.string().empty('').max(255),
2323
address: shared.ipv4.required(),
2424
address6: shared.ipv6.empty(''),
25-
remote_login: exports.remote_login,
25+
remote_login: remote_login,
2626
logdir: Joi.string().empty('').max(255),
2727
datadir: Joi.string().empty('').min(2).max(255),
2828
export: Joi.object({
2929
interval: shared.uint16,
3030
serials: Joi.boolean(),
3131
status: Joi.string().empty('').max(255),
32-
type: exports.type.required(),
32+
type: type.required(),
3333
}),
3434
deleted: Joi.boolean(),
3535
})
3636

37-
exports.GET_req = Joi.object({
38-
id: exports.id,
39-
name: exports.name,
37+
export const GET_req = Joi.object({
38+
id: id,
39+
name: name,
4040
deleted: Joi.boolean(),
4141
})
4242

43-
exports.GET_res = Joi.object({
44-
nameserver: Joi.array().items(exports.v3),
43+
export const GET_res = Joi.object({
44+
nameserver: Joi.array().items(v3),
4545
meta: shared.meta,
4646
})
4747

48-
exports.POST = exports.v3
48+
export const POST = v3
4949

50-
exports.DELETE = Joi.object({
51-
id: exports.id,
50+
export const DELETE = Joi.object({
51+
id: id,
5252
deleted: Joi.boolean(),
5353
})

lib/nameserver.test.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1-
const assert = require('node:assert/strict')
2-
const { describe, it } = require('node:test')
1+
import assert from 'node:assert/strict'
2+
import { describe, it } from 'node:test'
3+
import { createRequire } from 'node:module'
34

4-
const schema = require('./nameserver').v3
5+
const require = createRequire(import.meta.url)
6+
7+
import * as nameserver from './nameserver.js'
8+
const schema = nameserver.v3
59
const testNS = require('./test/nameserver.json')
610

711
describe('nameserver', function () {

lib/permission.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
const Joi = require('joi')
1+
import Joi from 'joi'
22

3-
const shared = require('./shared')
3+
import * as shared from './shared.js'
44

5-
exports.id = Joi.number().integer().min(1).max(4294967295)
5+
export const id = Joi.number().integer().min(1).max(4294967295)
66

7-
exports.v3 = Joi.object({
8-
id: exports.id,
7+
export const v3 = Joi.object({
8+
id: id,
99
name: Joi.string().empty(''),
1010
inherit: Joi.boolean(),
1111
self_write: Joi.boolean(),
1212
deleted: Joi.boolean(),
1313
group: Joi.object({
14-
id: exports.id,
14+
id: id,
1515
write: Joi.boolean(),
1616
create: Joi.boolean(),
1717
delete: Joi.boolean(),
1818
}),
1919
user: Joi.object({
20-
id: exports.id,
20+
id: id,
2121
write: Joi.boolean(),
2222
create: Joi.boolean(),
2323
delete: Joi.boolean(),
@@ -42,19 +42,19 @@ exports.v3 = Joi.object({
4242
}),
4343
})
4444

45-
exports.POST = exports.v3
45+
export const POST = v3
4646

47-
exports.GET_req = Joi.object({
48-
id: exports.id,
47+
export const GET_req = Joi.object({
48+
id: id,
4949
deleted: Joi.boolean(),
5050
})
5151

52-
exports.GET_res = Joi.object({
53-
permission: exports.v3,
52+
export const GET_res = Joi.object({
53+
permission: v3,
5454
meta: shared.meta,
5555
})
5656

57-
exports.DELETE = Joi.object({
58-
id: exports.id,
57+
export const DELETE = Joi.object({
58+
id: id,
5959
deleted: Joi.boolean(),
6060
})

lib/session.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
const Joi = require('joi')
1+
import Joi from 'joi'
22

3-
const shared = require('./shared')
4-
const group = require('./group')
5-
const user = require('./user')
3+
import * as shared from './shared.js'
4+
import * as group from './group.js'
5+
import * as user from './user.js'
66

7-
exports.id = shared.uint32
7+
export const id = shared.uint32
88

9-
exports.POST = Joi.object({
9+
export const POST = Joi.object({
1010
username: user.username.required(),
1111
password: user.password.required(),
1212
})
1313

14-
exports.GET_res = Joi.object({
14+
export const GET_res = Joi.object({
1515
user: user.v3,
1616
group: group.v3,
1717
session: Joi.object({
@@ -22,4 +22,4 @@ exports.GET_res = Joi.object({
2222
meta: shared.meta,
2323
})
2424

25-
exports.DELETE = Joi.object({})
25+
export const DELETE = Joi.object({})

lib/session.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
const assert = require('node:assert/strict')
2-
const { describe, it } = require('node:test')
1+
import assert from 'node:assert/strict'
2+
import { describe, it } from 'node:test'
33

4-
const schema = require('./session')
4+
import * as schema from './session.js'
55

66
describe('session', () => {
77
describe('POST', function () {

0 commit comments

Comments
 (0)