From cb171b53d060ab890f95e9ad22e750624fe3cc9a Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Wed, 27 Nov 2024 08:47:29 -0300 Subject: [PATCH 1/3] update package versions --- package.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index b5826ca..8558844 100644 --- a/package.json +++ b/package.json @@ -39,20 +39,20 @@ "node": ">=16" }, "devDependencies": { - "@seneca/maintain": "^0.0.22", - "@types/jest": "^28.1.8", - "@types/node": "^18.7.13", - "esbuild": "^0.15.5", + "@seneca/maintain": "^0.1.0", + "@types/jest": "^29.5.14", + "@types/node": "^22.10.0", + "esbuild": "^0.24.0", "esbuild-jest": "^0.5.0", - "jest": "^29.0.0", - "prettier": "2.7.1", + "jest": "^29.7.0", + "prettier": "3.4.1", "seneca-doc": "^2.1.3", - "seneca-msg-test": "^3.4.0", - "typescript": "^4.7.4" + "seneca-msg-test": "^4.1.0", + "typescript": "^5.7.2" }, "peerDependencies": { "@seneca/entity-util": ">=1", - "seneca": ">=3", + "seneca": ">=3||>=4.0.0-rc2", "seneca-entity": ">=18", "seneca-promisify": ">=3" } From 4bf079ee2691403cc61cb0206f4c01e9f1bd232f Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Sat, 28 Feb 2026 09:35:41 -0300 Subject: [PATCH 2/3] chore: update dependencies version --- dist/Progress.d.ts | 11 -- dist/Progress.js | 239 ---------------------------------------- dist/Progress.js.map | 1 - dist/ProgressDoc.d.ts | 2 - dist/ProgressDoc.js | 9 -- dist/ProgressDoc.js.map | 1 - package.json | 14 +-- 7 files changed, 7 insertions(+), 270 deletions(-) delete mode 100644 dist/Progress.d.ts delete mode 100644 dist/Progress.js delete mode 100644 dist/Progress.js.map delete mode 100644 dist/ProgressDoc.d.ts delete mode 100644 dist/ProgressDoc.js delete mode 100644 dist/ProgressDoc.js.map diff --git a/dist/Progress.d.ts b/dist/Progress.d.ts deleted file mode 100644 index c9b5663..0000000 --- a/dist/Progress.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -type Options = { - debug: boolean; - step: number; - start: number; - end: number; -}; -export type ProgressOptions = Partial; -declare function Progress(this: any, options: ProgressOptions): { - exports: {}; -}; -export default Progress; diff --git a/dist/Progress.js b/dist/Progress.js deleted file mode 100644 index e1821e5..0000000 --- a/dist/Progress.js +++ /dev/null @@ -1,239 +0,0 @@ -"use strict"; -/* Copyright © 2022 Seneca Project Contributors, MIT License. */ -Object.defineProperty(exports, "__esModule", { value: true }); -// Default options. -const defaults = { - debug: false, - step: 10, - start: 0, - end: 100, -}; -const INIT_OUT = { - ok: false, - why: 'unknown', -}; -function Progress(options) { - const seneca = this; - const { Skip, Exact, Default, Min } = seneca.valid; - const params = makeParams(); - seneca - .fix('sys:progress') - .message('create:progress', params.CreateProgress, msgCreateProgress) - .message('update:progress', params.UpdateProgress, msgUpdateProgress) - .message('get:progress', params.GetProgress, msgGetProgress) - .message('list:progress', params.ListProgress, msgListProgress); - // TODO: seneca.prepare should not be affected by seneca.fix - seneca - .prepare(prepare); - // class SkipNumber extends Number { skip = true } - // Deliberately not importing Gubu, instead using Gubu expressions as an example. - function makeParams() { - return { - CreateProgress: { - kind: String, - id$: Skip(String), - step: Skip(0), - start: Skip(0), - end: Skip(0), - code: Skip(String), - owner: Skip(String), - ref: Skip(String), - user_id: Skip(String), - custom: Skip(Object), - note: Skip(String), - expire: Skip(Number), // Expires in millis fron now. - }, - UpdateProgress: { - id: String, - how: Exact('step', 'val', 'set'), - val: Skip(Number), - status: Skip(String), - code: Skip(String), - custom: Skip(Object), - note: Skip(String), // Custom note string for Entry. - }, - GetProgress: { - id: String, - full: Default(false, Boolean), // If true, include entries - }, - ListProgress: { - q: Min(1, {}), - }, - }; - } - async function msgCreateProgress(msg) { - const seneca = this; - const out = { ...INIT_OUT }; - const data = { - kind: msg.kind, - step: null == msg.step ? options.step : msg.step, - start: null == msg.start ? options.start : msg.start, - end: null == msg.end ? options.end : msg.end, - code: msg.code, - ref: msg.ref, - owner: msg.owner, - user_id: msg.user_id, - custom: msg.custom, - note: msg.note, - expire: msg.expire, - }; - if (null != msg.id$) { - data.id$ = msg.id$; - } - data.val = data.start; - data.status = 'active'; - data.when = Date.now(); - let progress = makeProgressEnt(seneca).data$(data); - progress = await progress.save$(); - // console.log(data, progress) - out.ok = true; - delete out.why; - out.item = progress.data$(false); - return out; - } - async function msgUpdateProgress(msg) { - const seneca = this; - const out = { ...INIT_OUT }; - // console.log('UM', msg) - const id = msg.id; - const full = msg.full; - const how = msg.how; - const entryval = msg.val; - const status = msg.status; - const code = msg.code; - const note = msg.note; - const custom = msg.custom; - let progress = await makeProgressEnt(seneca).load$(id); - if (null != progress) { - progress = await checkExpired(progress); - let stepval = 0; - if ('step' === how) { - stepval = progress.step; - } - else if ('val' === how) { - stepval = entryval; - } - else if ('set' === how) { - stepval = 0; - } - else { - out.why = 'invalid-how'; - out.details = { how }; - return out; - } - let entry = makeEntryEnt(seneca); - entry.data$({ - progress_id: progress.id, - code, - note, - custom, - how, - entryval, - user_id: progress.user_id, - owner: progress.owner, - ref: progress.ref, - when: Date.now(), - }); - progress.val += stepval; - if ('set' === how) { - progress.val = entryval; - } - // Can't go beyond end. - if (0 < progress.end && progress.end < progress.val) { - progress.val = progress.end; - } - else if (progress.end < 0 && progress.val < progress.end) { - progress.val = progress.end; - } - if (null != status) { - progress.status = status; - } - entry = await entry.save$({ - status: progress.status, - val: progress.val - }); - progress = await progress.save$(); - out.item = progress; - out.entry = entry; - out.list = await listEntries(seneca, full, progress); - delete out.why; - out.ok = true; - } - else { - out.why = 'not-found'; - } - return out; - } - async function msgGetProgress(msg) { - const seneca = this; - const out = { ...INIT_OUT }; - const id = msg.id; - const full = msg.full; - let progress = await makeProgressEnt(seneca).load$(id); - if (null != progress) { - progress = await checkExpired(progress); - out.item = progress; - out.list = await listEntries(seneca, full, progress); - delete out.why; - out.ok = true; - } - else { - out.why = 'not-found'; - } - return out; - } - async function msgListProgress(msg) { - const seneca = this; - const out = { ...INIT_OUT }; - const q = { ...msg.q }; - q.status = q.status || 'active'; - const list = makeProgressEnt(seneca).list$(q); - for (let item of list) { - checkExpired(item); - } - out.ok = true; - delete out.why; - out.list = list; - out.q = q; - return out; - } - async function prepare() { - const seneca = this; - } - async function listEntries(seneca, full, progress) { - if (full) { - const eq = { - progress_id: progress.id, - sort$: { 'when': 1 } - }; - const list = await makeEntryEnt(seneca).list$(eq); - return list; - } - return []; - } - async function checkExpired(progress) { - if ('active' == progress.status && - Date.now() < (progress.when + progress.expire)) { - progress.status = 'expired'; - await progress.save$(); - } - return progress; - } - function makeProgressEnt(seneca) { - return seneca.entity('sys/progress'); - } - function makeEntryEnt(seneca) { - return seneca.entity('sys/progressentry'); - } - return { - exports: {} - }; -} -Object.assign(Progress, { defaults }); -// Prevent name mangling -Object.defineProperty(Progress, 'name', { value: 'Progress' }); -exports.default = Progress; -if ('undefined' !== typeof module) { - module.exports = Progress; -} -//# sourceMappingURL=Progress.js.map \ No newline at end of file diff --git a/dist/Progress.js.map b/dist/Progress.js.map deleted file mode 100644 index b79cbda..0000000 --- a/dist/Progress.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Progress.js","sourceRoot":"","sources":["../src/Progress.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/ProgressDoc.d.ts b/dist/ProgressDoc.d.ts deleted file mode 100644 index 963d17c..0000000 --- a/dist/ProgressDoc.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const docs: {}; -export default docs; diff --git a/dist/ProgressDoc.js b/dist/ProgressDoc.js deleted file mode 100644 index ced7092..0000000 --- a/dist/ProgressDoc.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; -/* Copyright © 2023 Seneca Project Contributors, MIT License. */ -Object.defineProperty(exports, "__esModule", { value: true }); -const docs = {}; -exports.default = docs; -if ('undefined' !== typeof module) { - module.exports = docs; -} -//# sourceMappingURL=ProgressDoc.js.map \ No newline at end of file diff --git a/dist/ProgressDoc.js.map b/dist/ProgressDoc.js.map deleted file mode 100644 index 5f82cf3..0000000 --- a/dist/ProgressDoc.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ProgressDoc.js","sourceRoot":"","sources":["../src/ProgressDoc.ts"],"names":[],"mappings":";AAAA,gEAAgE;;AAEhE,MAAM,IAAI,GAAG,EACZ,CAAA;AAED,kBAAe,IAAI,CAAA;AAEnB,IAAI,WAAW,KAAK,OAAO,MAAM,EAAE;IACjC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;CACtB"} \ No newline at end of file diff --git a/package.json b/package.json index 8558844..0a94df7 100644 --- a/package.json +++ b/package.json @@ -40,19 +40,19 @@ }, "devDependencies": { "@seneca/maintain": "^0.1.0", - "@types/jest": "^29.5.14", - "@types/node": "^22.10.0", - "esbuild": "^0.24.0", + "@types/jest": "^30.0.0", + "@types/node": "^25.3.2", + "esbuild": "^0.27.3", "esbuild-jest": "^0.5.0", - "jest": "^29.7.0", - "prettier": "3.4.1", + "jest": "^30.2.0", + "prettier": "3.8.1", "seneca-doc": "^2.1.3", "seneca-msg-test": "^4.1.0", - "typescript": "^5.7.2" + "typescript": "^5.9.3" }, "peerDependencies": { "@seneca/entity-util": ">=1", - "seneca": ">=3||>=4.0.0-rc2", + "seneca": ">=3||>=4", "seneca-entity": ">=18", "seneca-promisify": ">=3" } From 2ece1ff3610808ac6b2013bed22a278daa356518 Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Sat, 28 Feb 2026 10:43:37 -0300 Subject: [PATCH 3/3] chore: drop jest support - update node min support to v22 - addtsconfig to test and src --- .github/workflows/build.yml | 14 +- LICENSE | 2 +- dist-test/basic.messages.d.ts | 9 ++ dist-test/basic.messages.js | 38 +++++ dist-test/basic.messages.js.map | 1 + dist-test/progress.test.d.ts | 1 + dist-test/progress.test.js | 173 +++++++++++++++++++++++ dist-test/progress.test.js.map | 1 + dist/Progress.d.ts | 12 ++ dist/Progress.d.ts.map | 1 + dist/Progress.js | 238 ++++++++++++++++++++++++++++++++ dist/Progress.js.map | 1 + dist/ProgressDoc.d.ts | 3 + dist/ProgressDoc.d.ts.map | 1 + dist/ProgressDoc.js | 9 ++ dist/ProgressDoc.js.map | 1 + jest.config.js | 10 -- package.json | 27 ++-- src/Progress.ts | 48 ++----- src/ProgressDoc.ts | 3 +- src/tsconfig.json | 16 +++ test/basic.messages.ts | 3 - test/progress.test.ts | 206 +++++++++++++-------------- test/tsconfig.json | 14 ++ tsconfig.json | 15 -- 25 files changed, 652 insertions(+), 195 deletions(-) create mode 100644 dist-test/basic.messages.d.ts create mode 100644 dist-test/basic.messages.js create mode 100644 dist-test/basic.messages.js.map create mode 100644 dist-test/progress.test.d.ts create mode 100644 dist-test/progress.test.js create mode 100644 dist-test/progress.test.js.map create mode 100644 dist/Progress.d.ts create mode 100644 dist/Progress.d.ts.map create mode 100644 dist/Progress.js create mode 100644 dist/Progress.js.map create mode 100644 dist/ProgressDoc.d.ts create mode 100644 dist/ProgressDoc.d.ts.map create mode 100644 dist/ProgressDoc.js create mode 100644 dist/ProgressDoc.js.map delete mode 100644 jest.config.js create mode 100644 src/tsconfig.json create mode 100644 test/tsconfig.json delete mode 100644 tsconfig.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8830bb1..a3b27ff 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,25 +17,17 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] - node-version: [lts/*, 17.x, 16.x, 14.x] + node-version: [24.x, 22.x] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - run: npm install - # manually install peerdeps for node 14 - - run: npm i seneca seneca-promisify seneca-entity @seneca/entity-util - run: npm run prettier - run: npm run build --if-present - run: npm test - - - name: Coveralls - uses: coverallsapp/github-action@master - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - path-to-lcov: ./coverage/lcov.info diff --git a/LICENSE b/LICENSE index 7230309..be1b3cd 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021 Seneca Microservices Framework +Copyright (c) 2026 Seneca Microservices Framework Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/dist-test/basic.messages.d.ts b/dist-test/basic.messages.d.ts new file mode 100644 index 0000000..859bac9 --- /dev/null +++ b/dist-test/basic.messages.d.ts @@ -0,0 +1,9 @@ +declare const _default: { + print: boolean + pattern: string + allow: { + missing: boolean + } + calls: never[] +} +export default _default diff --git a/dist-test/basic.messages.js b/dist-test/basic.messages.js new file mode 100644 index 0000000..7c37b65 --- /dev/null +++ b/dist-test/basic.messages.js @@ -0,0 +1,38 @@ +'use strict' +// Basic progressral: sent email invite to a friend +Object.defineProperty(exports, '__esModule', { value: true }) +exports.default = { + print: false, + pattern: 'sys:progress', + allow: { missing: true }, + calls: [ + /* + { + name: 'create-alice', + pattern: 'create:entry', // call { biz:progress, create:entry, ...params } + params: { + user_id: 'u01', + kind: 'standard', // avoid using 'type', 'kind' has fewer conflicts + email: 'alice@example.com', + }, + out: { + ok: true, + entry: { + user_id: 'u01', // _id suffix for foreign keys + kind: 'standard', + email: 'alice@example.com', + }, + occur: { + user_id: 'u01', + entry_kind: 'standard', + kind: 'create', + email: 'alice@example.com', + } + }, + }, + */ + // Print entire database + // { print: true, pattern: 'biz:null,role:mem-store,cmd:dump' }, + ], +} +//# sourceMappingURL=basic.messages.js.map diff --git a/dist-test/basic.messages.js.map b/dist-test/basic.messages.js.map new file mode 100644 index 0000000..fa1a9f8 --- /dev/null +++ b/dist-test/basic.messages.js.map @@ -0,0 +1 @@ +{"version":3,"file":"basic.messages.js","sourceRoot":"","sources":["../test/basic.messages.ts"],"names":[],"mappings":";AAAA,mDAAmD;;AAEnD,kBAAe;IACb,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,cAAc;IACvB,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IAExB,KAAK,EAAE;IACL;;;;;;;;;;;;;;;;;;;;;;;;MAwBE;IACF,wBAAwB;IACxB,gEAAgE;KACjE;CACF,CAAA"} \ No newline at end of file diff --git a/dist-test/progress.test.d.ts b/dist-test/progress.test.d.ts new file mode 100644 index 0000000..336ce12 --- /dev/null +++ b/dist-test/progress.test.d.ts @@ -0,0 +1 @@ +export {} diff --git a/dist-test/progress.test.js b/dist-test/progress.test.js new file mode 100644 index 0000000..bbaf05e --- /dev/null +++ b/dist-test/progress.test.js @@ -0,0 +1,173 @@ +'use strict' +var __importDefault = + (this && this.__importDefault) || + function (mod) { + return mod && mod.__esModule ? mod : { default: mod } + } +Object.defineProperty(exports, '__esModule', { value: true }) +/* Copyright © 2026 Seneca Project Contributors, MIT License. */ +const node_test_1 = require('node:test') +const code_1 = require('@hapi/code') +const seneca_1 = __importDefault(require('seneca')) +const seneca_msg_test_1 = __importDefault(require('seneca-msg-test')) +// import { Maintain } from '@seneca/maintain' +const __1 = __importDefault(require('..')) +const __2 = __importDefault(require('..')) +const basic_messages_1 = __importDefault(require('./basic.messages')) +;(0, node_test_1.describe)('progress', () => { + ;(0, node_test_1.test)('happy', async () => { + // console.log(Progress) + ;(0, code_1.expect)(__2.default).exist() + ;(0, code_1.expect)(__1.default).exist() + const seneca = (0, seneca_1.default)({ legacy: false }) + .test() + .use('promisify') + .use('entity') + .use(__2.default) + await seneca.ready() + }) + ;(0, node_test_1.test)('simple', async () => { + const seneca = await makeSeneca() + let p0 = await seneca.post('sys:progress,create:progress', { + kind: 'simple', + }) + // console.log('p0', p0) + ;(0, code_1.expect)(p0.ok).true() + ;(0, code_1.expect)(p0.item).contains({ + kind: 'simple', + step: 10, + start: 0, + end: 100, + val: 0, + status: 'active', + }) + let p0g0 = await seneca.post('sys:progress,get:progress', { + id: p0.item.id, + }) + // console.log('p0g0', p0g0) + ;(0, code_1.expect)(p0g0.ok).true() + ;(0, code_1.expect)(p0g0.item).contains({ + kind: 'simple', + step: 10, + start: 0, + end: 100, + val: 0, + status: 'active', + }) + let p0g1 = await seneca.post('sys:progress,get:progress', { + id: p0.item.id, + full: true, + }) + // console.log('p0g1', p0g1) + ;(0, code_1.expect)(p0g1.ok).true() + ;(0, code_1.expect)(p0g1.item).contains({ + kind: 'simple', + step: 10, + start: 0, + end: 100, + val: 0, + status: 'active', + }) + ;(0, code_1.expect)(p0g1.list).equal([]) + let p0u0 = await seneca.post('sys:progress,update:progress', { + id: p0.item.id, + how: 'step', + }) + // console.log('p0u0', p0u0) + ;(0, code_1.expect)(p0u0.ok).true() + ;(0, code_1.expect)(p0u0.item).includes({ + entity$: '-/sys/progress', + kind: 'simple', + step: 10, + start: 0, + end: 100, + val: 10, + status: 'active', + }) + ;(0, code_1.expect)(p0u0.entry).includes({ + entity$: '-/sys/progressentry', + }) + ;(0, code_1.expect)(p0u0.list).equal([]) + let p0u0g0 = await seneca.post('sys:progress,get:progress', { + id: p0u0.item.id, + }) + // console.log('p0u0g0', p0u0g0) + ;(0, code_1.expect)(p0u0g0.ok).true() + ;(0, code_1.expect)(p0u0g0.item).includes({ + entity$: '-/sys/progress', + kind: 'simple', + step: 10, + start: 0, + end: 100, + val: 10, + status: 'active', + }) + ;(0, code_1.expect)(p0u0g0.list).equal([]) + let p0u0g1 = await seneca.post('sys:progress,get:progress', { + id: p0u0.item.id, + full: true, + }) + // console.log('p0u0g1', p0u0g1) + ;(0, code_1.expect)(p0u0g1.ok).true() + ;(0, code_1.expect)(p0u0g1.item).includes({ + entity$: '-/sys/progress', + kind: 'simple', + step: 10, + start: 0, + end: 100, + val: 10, + status: 'active', + }) + ;(0, code_1.expect)(p0u0g1.list[0]).includes({ + entity$: '-/sys/progressentry', + }) + let p0u1 = await seneca.post('sys:progress,update:progress', { + id: p0.item.id, + how: 'val', + val: 95, + note: 'aaa', + full: true, + }) + // console.log('p0u1', p0u1) + ;(0, code_1.expect)(p0u1.ok).true() + ;(0, code_1.expect)(p0u1.item).includes({ + entity$: '-/sys/progress', + kind: 'simple', + step: 10, + start: 0, + end: 100, + val: 100, + status: 'active', + }) + ;(0, code_1.expect)(p0u1.entry).includes({ + entity$: '-/sys/progressentry', + note: 'aaa', + }) + ;(0, code_1.expect)(p0u1.list[0]).includes({ + entity$: '-/sys/progressentry', + }) + ;(0, code_1.expect)(p0u1.list[1]).includes({ + entity$: '-/sys/progressentry', + note: 'aaa', + }) + }) + ;(0, node_test_1.test)('basic.messages', async () => { + const seneca = await makeSeneca() + await (0, seneca_msg_test_1.default)(seneca, basic_messages_1.default)() + }) + // test('maintain', Maintain) +}) +async function makeSeneca(options) { + options = options || {} + const seneca = (0, seneca_1.default)({ legacy: false }) + .test() + .use('promisify') + .use('entity') + .use('entity-util', { when: { active: true, human: 'y' } }) + .use(__2.default, options.progress) + await seneca.ready() + // print all message patterns + // console.log(seneca.list()) + return seneca +} +//# sourceMappingURL=progress.test.js.map diff --git a/dist-test/progress.test.js.map b/dist-test/progress.test.js.map new file mode 100644 index 0000000..1ec7905 --- /dev/null +++ b/dist-test/progress.test.js.map @@ -0,0 +1 @@ +{"version":3,"file":"progress.test.js","sourceRoot":"","sources":["../test/progress.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/Progress.d.ts b/dist/Progress.d.ts new file mode 100644 index 0000000..0bdc6dd --- /dev/null +++ b/dist/Progress.d.ts @@ -0,0 +1,12 @@ +type Options = { + debug: boolean; + step: number; + start: number; + end: number; +}; +export type ProgressOptions = Partial; +declare function Progress(this: any, options: ProgressOptions): { + exports: {}; +}; +export default Progress; +//# sourceMappingURL=Progress.d.ts.map \ No newline at end of file diff --git a/dist/Progress.d.ts.map b/dist/Progress.d.ts.map new file mode 100644 index 0000000..67db3b8 --- /dev/null +++ b/dist/Progress.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Progress.d.ts","sourceRoot":"","sources":["../src/Progress.ts"],"names":[],"mappings":"AAEA,KAAK,OAAO,GAAG;IACb,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAUD,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAiB9C,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe;;EA2QpD;AAOD,eAAe,QAAQ,CAAA"} \ No newline at end of file diff --git a/dist/Progress.js b/dist/Progress.js new file mode 100644 index 0000000..ec09471 --- /dev/null +++ b/dist/Progress.js @@ -0,0 +1,238 @@ +"use strict"; +/* Copyright © 2026 Seneca Project Contributors, MIT License. */ +Object.defineProperty(exports, "__esModule", { value: true }); +// Default options. +const defaults = { + debug: false, + step: 10, + start: 0, + end: 100, +}; +const INIT_OUT = { + ok: false, + why: 'unknown', +}; +function Progress(options) { + const seneca = this; + const { Skip, Exact, Default, Min } = seneca.valid; + const params = makeParams(); + seneca + .fix('sys:progress') + .message('create:progress', params.CreateProgress, msgCreateProgress) + .message('update:progress', params.UpdateProgress, msgUpdateProgress) + .message('get:progress', params.GetProgress, msgGetProgress) + .message('list:progress', params.ListProgress, msgListProgress); + // TODO: seneca.prepare should not be affected by seneca.fix + seneca.prepare(prepare); + // class SkipNumber extends Number { skip = true } + // Deliberately not importing Gubu, instead using Gubu expressions as an example. + function makeParams() { + return { + CreateProgress: { + kind: String, // Categorize this progress instance, required. + id$: Skip(String), // Custom id, otherwise generated entity id. + step: Skip(0), // Step size; Undefined (skipped) means use default from options. + start: Skip(0), // Start value; Undefined (skipped) means use default from options. + end: Skip(0), // Start value; Undefined (skipped) means use default from options. + code: Skip(String), // Custom code string. + owner: Skip(String), // Reference to the "owner" (E.g. an entity id). + ref: Skip(String), // Reference to an associated entity. + user_id: Skip(String), // Reference to an associated user. + custom: Skip(Object), // Custom data. + note: Skip(String), // Custom note string. + expire: Skip(Number), // Expires in millis fron now. + }, + UpdateProgress: { + id: String, + how: Exact('step', 'val', 'set'), // step=>incr by step value, val=>custom value. + val: Skip(Number), + status: Skip(String), // Set status manually. + code: Skip(String), // Custom code string for Entry. + custom: Skip(Object), // Custom data for Entry. + note: Skip(String), // Custom note string for Entry. + }, + GetProgress: { + id: String, + full: Default(false, Boolean), // If true, include entries + }, + ListProgress: { + q: Min(1, {}), + }, + }; + } + async function msgCreateProgress(msg) { + const seneca = this; + const out = { ...INIT_OUT }; + const data = { + kind: msg.kind, + step: null == msg.step ? options.step : msg.step, + start: null == msg.start ? options.start : msg.start, + end: null == msg.end ? options.end : msg.end, + code: msg.code, + ref: msg.ref, + owner: msg.owner, + user_id: msg.user_id, + custom: msg.custom, + note: msg.note, + expire: msg.expire, + }; + if (null != msg.id$) { + data.id$ = msg.id$; + } + data.val = data.start; + data.status = 'active'; + data.when = Date.now(); + let progress = makeProgressEnt(seneca).data$(data); + progress = await progress.save$(); + // console.log(data, progress) + out.ok = true; + delete out.why; + out.item = progress.data$(false); + return out; + } + async function msgUpdateProgress(msg) { + const seneca = this; + const out = { ...INIT_OUT }; + // console.log('UM', msg) + const id = msg.id; + const full = msg.full; + const how = msg.how; + const entryval = msg.val; + const status = msg.status; + const code = msg.code; + const note = msg.note; + const custom = msg.custom; + let progress = await makeProgressEnt(seneca).load$(id); + if (null != progress) { + progress = await checkExpired(progress); + let stepval = 0; + if ('step' === how) { + stepval = progress.step; + } + else if ('val' === how) { + stepval = entryval; + } + else if ('set' === how) { + stepval = 0; + } + else { + out.why = 'invalid-how'; + out.details = { how }; + return out; + } + let entry = makeEntryEnt(seneca); + entry.data$({ + progress_id: progress.id, + code, + note, + custom, + how, + entryval, + user_id: progress.user_id, + owner: progress.owner, + ref: progress.ref, + when: Date.now(), + }); + progress.val += stepval; + if ('set' === how) { + progress.val = entryval; + } + // Can't go beyond end. + if (0 < progress.end && progress.end < progress.val) { + progress.val = progress.end; + } + else if (progress.end < 0 && progress.val < progress.end) { + progress.val = progress.end; + } + if (null != status) { + progress.status = status; + } + entry = await entry.save$({ + status: progress.status, + val: progress.val, + }); + progress = await progress.save$(); + out.item = progress; + out.entry = entry; + out.list = await listEntries(seneca, full, progress); + delete out.why; + out.ok = true; + } + else { + out.why = 'not-found'; + } + return out; + } + async function msgGetProgress(msg) { + const seneca = this; + const out = { ...INIT_OUT }; + const id = msg.id; + const full = msg.full; + let progress = await makeProgressEnt(seneca).load$(id); + if (null != progress) { + progress = await checkExpired(progress); + out.item = progress; + out.list = await listEntries(seneca, full, progress); + delete out.why; + out.ok = true; + } + else { + out.why = 'not-found'; + } + return out; + } + async function msgListProgress(msg) { + const seneca = this; + const out = { ...INIT_OUT }; + const q = { ...msg.q }; + q.status = q.status || 'active'; + const list = makeProgressEnt(seneca).list$(q); + for (let item of list) { + checkExpired(item); + } + out.ok = true; + delete out.why; + out.list = list; + out.q = q; + return out; + } + async function prepare() { + const seneca = this; + } + async function listEntries(seneca, full, progress) { + if (full) { + const eq = { + progress_id: progress.id, + sort$: { when: 1 }, + }; + const list = await makeEntryEnt(seneca).list$(eq); + return list; + } + return []; + } + async function checkExpired(progress) { + if ('active' == progress.status && + Date.now() < progress.when + progress.expire) { + progress.status = 'expired'; + await progress.save$(); + } + return progress; + } + function makeProgressEnt(seneca) { + return seneca.entity('sys/progress'); + } + function makeEntryEnt(seneca) { + return seneca.entity('sys/progressentry'); + } + return { + exports: {}, + }; +} +Object.assign(Progress, { defaults }); +// Prevent name mangling +Object.defineProperty(Progress, 'name', { value: 'Progress' }); +exports.default = Progress; +if ('undefined' !== typeof module) { + module.exports = Progress; +} +//# sourceMappingURL=Progress.js.map \ No newline at end of file diff --git a/dist/Progress.js.map b/dist/Progress.js.map new file mode 100644 index 0000000..6d8a60a --- /dev/null +++ b/dist/Progress.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Progress.js","sourceRoot":"","sources":["../src/Progress.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/ProgressDoc.d.ts b/dist/ProgressDoc.d.ts new file mode 100644 index 0000000..624e21c --- /dev/null +++ b/dist/ProgressDoc.d.ts @@ -0,0 +1,3 @@ +declare const docs: {}; +export default docs; +//# sourceMappingURL=ProgressDoc.d.ts.map \ No newline at end of file diff --git a/dist/ProgressDoc.d.ts.map b/dist/ProgressDoc.d.ts.map new file mode 100644 index 0000000..17da951 --- /dev/null +++ b/dist/ProgressDoc.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ProgressDoc.d.ts","sourceRoot":"","sources":["../src/ProgressDoc.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,IAAI,IAAK,CAAA;AAEf,eAAe,IAAI,CAAA"} \ No newline at end of file diff --git a/dist/ProgressDoc.js b/dist/ProgressDoc.js new file mode 100644 index 0000000..ced7092 --- /dev/null +++ b/dist/ProgressDoc.js @@ -0,0 +1,9 @@ +"use strict"; +/* Copyright © 2023 Seneca Project Contributors, MIT License. */ +Object.defineProperty(exports, "__esModule", { value: true }); +const docs = {}; +exports.default = docs; +if ('undefined' !== typeof module) { + module.exports = docs; +} +//# sourceMappingURL=ProgressDoc.js.map \ No newline at end of file diff --git a/dist/ProgressDoc.js.map b/dist/ProgressDoc.js.map new file mode 100644 index 0000000..03401bc --- /dev/null +++ b/dist/ProgressDoc.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ProgressDoc.js","sourceRoot":"","sources":["../src/ProgressDoc.ts"],"names":[],"mappings":";AAAA,gEAAgE;;AAEhE,MAAM,IAAI,GAAG,EAAE,CAAA;AAEf,kBAAe,IAAI,CAAA;AAEnB,IAAI,WAAW,KAAK,OAAO,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;AACvB,CAAC"} \ No newline at end of file diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index a75401e..0000000 --- a/jest.config.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - transform: { - '^.+\\.tsx?$': ['esbuild-jest', { sourcemap: true }], - }, - testEnvironment: 'node', - testMatch: ['**/test/**/*.test.ts'], - watchPathIgnorePatterns: ['dist\\/'], - collectCoverageFrom: ['src/**/*.ts'], - coverageProvider: 'v8', -} diff --git a/package.json b/package.json index 0a94df7..ac04404 100644 --- a/package.json +++ b/package.json @@ -17,14 +17,13 @@ }, "scripts": { "prettier": "prettier --write .", - "test": "jest --coverage", - "test-some": "jest -t", - "test-watch": "jest --coverage --watchAll", - "watch": "tsc -w -d", - "build": "tsc -d", + "test": "node --enable-source-maps --test \"dist-test/**/*.test.js\"", + "test-some": "node --enable-source-maps --test-name-pattern=\"$TEST_PATTERN\" --test \"dist-test/**/*.test.js\"", + "watch": "tsc --build src test -w", + "build": "tsc --build src test", "doc": "seneca-doc", - "clean": "rm -rf node_modules yarn.lock package-lock.json dist", - "reset": "npm run clean && npm i && npm test", + "clean": "rm -rf dist dist-test node_modules yarn.lock package-lock.json", + "reset": "npm run clean && npm i && npm run build && npm test", "repo-tag": "REPO_VERSION=`node -e \"console.log(require('./package').version)\"` && echo TAG: v$REPO_VERSION && git commit -a -m v$REPO_VERSION && git push && git tag v$REPO_VERSION && git push --tags;", "repo-publish": "npm run clean && npm i && npm run repo-publish-quick", "repo-publish-quick": "npm run build && npm run test && npm run doc && npm run repo-tag && npm publish --access public --registry https://registry.npmjs.org " @@ -36,24 +35,22 @@ "LICENSE" ], "engines": { - "node": ">=16" + "node": ">=22" }, "devDependencies": { + "@hapi/code": "^9.0.3", "@seneca/maintain": "^0.1.0", - "@types/jest": "^30.0.0", "@types/node": "^25.3.2", - "esbuild": "^0.27.3", - "esbuild-jest": "^0.5.0", - "jest": "^30.2.0", "prettier": "3.8.1", "seneca-doc": "^2.1.3", "seneca-msg-test": "^4.1.0", "typescript": "^5.9.3" }, "peerDependencies": { - "@seneca/entity-util": ">=1", - "seneca": ">=3||>=4", - "seneca-entity": ">=18", + "@seneca/entity-util": ">=3", + "gubu": ">=9", + "seneca": ">=3||>=4.0.0-rc2", + "seneca-entity": ">=26", "seneca-promisify": ">=3" } } diff --git a/src/Progress.ts b/src/Progress.ts index 43d2dc5..aa082f7 100644 --- a/src/Progress.ts +++ b/src/Progress.ts @@ -1,5 +1,4 @@ -/* Copyright © 2022 Seneca Project Contributors, MIT License. */ - +/* Copyright © 2026 Seneca Project Contributors, MIT License. */ type Options = { debug: boolean @@ -16,10 +15,8 @@ const defaults = { end: 100, } - export type ProgressOptions = Partial - type Out = { ok: boolean why?: string @@ -35,7 +32,6 @@ const INIT_OUT = { why: 'unknown', } - function Progress(this: any, options: ProgressOptions) { const seneca: any = this const { Skip, Exact, Default, Min } = seneca.valid @@ -50,12 +46,11 @@ function Progress(this: any, options: ProgressOptions) { .message('list:progress', params.ListProgress, msgListProgress) // TODO: seneca.prepare should not be affected by seneca.fix - seneca - .prepare(prepare) + seneca.prepare(prepare) // class SkipNumber extends Number { skip = true } - // Deliberately not importing Gubu, instead using Gubu expressions as an example. + // Deliberately not importing Gubu, instead using Gubu expressions as an example. function makeParams() { return { CreateProgress: { @@ -95,7 +90,6 @@ function Progress(this: any, options: ProgressOptions) { } } - async function msgCreateProgress(this: any, msg: any) { const seneca = this @@ -136,7 +130,6 @@ function Progress(this: any, options: ProgressOptions) { return out } - async function msgUpdateProgress(this: any, msg: any) { const seneca = this const out: Out = { ...INIT_OUT } @@ -160,14 +153,11 @@ function Progress(this: any, options: ProgressOptions) { let stepval = 0 if ('step' === how) { stepval = progress.step - } - else if ('val' === how) { + } else if ('val' === how) { stepval = entryval - } - else if ('set' === how) { + } else if ('set' === how) { stepval = 0 - } - else { + } else { out.why = 'invalid-how' out.details = { how } return out @@ -196,8 +186,7 @@ function Progress(this: any, options: ProgressOptions) { // Can't go beyond end. if (0 < progress.end && progress.end < progress.val) { progress.val = progress.end - } - else if (progress.end < 0 && progress.val < progress.end) { + } else if (progress.end < 0 && progress.val < progress.end) { progress.val = progress.end } @@ -207,7 +196,7 @@ function Progress(this: any, options: ProgressOptions) { entry = await entry.save$({ status: progress.status, - val: progress.val + val: progress.val, }) progress = await progress.save$() @@ -218,15 +207,13 @@ function Progress(this: any, options: ProgressOptions) { delete out.why out.ok = true - } - else { + } else { out.why = 'not-found' } return out } - async function msgGetProgress(this: any, msg: any) { const seneca = this const out: Out = { ...INIT_OUT } @@ -245,15 +232,13 @@ function Progress(this: any, options: ProgressOptions) { delete out.why out.ok = true - } - else { + } else { out.why = 'not-found' } return out } - async function msgListProgress(this: any, msg: any) { const seneca = this const out: Out = { ...INIT_OUT } @@ -276,17 +261,15 @@ function Progress(this: any, options: ProgressOptions) { return out } - async function prepare(this: any) { const seneca = this } - async function listEntries(seneca: any, full: boolean, progress: any) { if (full) { const eq = { progress_id: progress.id, - sort$: { 'when': 1 } + sort$: { when: 1 }, } const list = await makeEntryEnt(seneca).list$(eq) return list @@ -294,11 +277,10 @@ function Progress(this: any, options: ProgressOptions) { return [] } - async function checkExpired(progress: any) { if ( 'active' == progress.status && - Date.now() < (progress.when + progress.expire) + Date.now() < progress.when + progress.expire ) { progress.status = 'expired' await progress.save$() @@ -306,7 +288,6 @@ function Progress(this: any, options: ProgressOptions) { return progress } - function makeProgressEnt(seneca: any) { return seneca.entity('sys/progress') } @@ -315,14 +296,11 @@ function Progress(this: any, options: ProgressOptions) { return seneca.entity('sys/progressentry') } - return { - exports: { - } + exports: {}, } } - Object.assign(Progress, { defaults }) // Prevent name mangling diff --git a/src/ProgressDoc.ts b/src/ProgressDoc.ts index 9ab134b..e22c487 100644 --- a/src/ProgressDoc.ts +++ b/src/ProgressDoc.ts @@ -1,7 +1,6 @@ /* Copyright © 2023 Seneca Project Contributors, MIT License. */ -const docs = { -} +const docs = {} export default docs diff --git a/src/tsconfig.json b/src/tsconfig.json new file mode 100644 index 0000000..f0b196f --- /dev/null +++ b/src/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "esModuleInterop": true, + "sourceMap": true, + "module": "nodenext", + "noEmitOnError": true, + "outDir": "../dist", + "resolveJsonModule": true, + "rootDir": ".", + "strict": true, + "target": "ES2022", + "composite": true, + "declaration": true, + "declarationMap": true + } +} diff --git a/test/basic.messages.ts b/test/basic.messages.ts index e8ded59..2330f34 100644 --- a/test/basic.messages.ts +++ b/test/basic.messages.ts @@ -31,10 +31,7 @@ export default { }, }, */ - // Print entire database // { print: true, pattern: 'biz:null,role:mem-store,cmd:dump' }, - ], } - diff --git a/test/progress.test.ts b/test/progress.test.ts index ef7655b..4654c9d 100644 --- a/test/progress.test.ts +++ b/test/progress.test.ts @@ -1,20 +1,21 @@ -/* Copyright © 2023 Seneca Project Contributors, MIT License. */ +/* Copyright © 2026 Seneca Project Contributors, MIT License. */ +import { describe, test } from 'node:test' +import { expect } from '@hapi/code' import Seneca from 'seneca' import SenecaMsgTest from 'seneca-msg-test' // import { Maintain } from '@seneca/maintain' -import ProgressDoc from '../src/ProgressDoc' -import Progress from '../src/Progress' +import ProgressDoc from '..' +import Progress from '..' import BasicMessages from './basic.messages' - describe('progress', () => { test('happy', async () => { // console.log(Progress) - expect(Progress).toBeDefined() - expect(ProgressDoc).toBeDefined() + expect(Progress).exist() + expect(ProgressDoc).exist() const seneca = Seneca({ legacy: false }) .test() .use('promisify') @@ -23,14 +24,15 @@ describe('progress', () => { await seneca.ready() }) - test('simple', async () => { const seneca = await makeSeneca() - let p0 = await seneca.post('sys:progress,create:progress', { kind: 'simple' }) + let p0 = await seneca.post('sys:progress,create:progress', { + kind: 'simple', + }) // console.log('p0', p0) - expect(p0.ok).toEqual(true) - expect(p0.item).toMatchObject({ + expect(p0.ok).true() + expect(p0.item).includes({ kind: 'simple', step: 10, start: 0, @@ -39,10 +41,12 @@ describe('progress', () => { status: 'active', }) - let p0g0 = await seneca.post('sys:progress,get:progress', { id: p0.item.id }) + let p0g0 = await seneca.post('sys:progress,get:progress', { + id: p0.item.id, + }) // console.log('p0g0', p0g0) - expect(p0g0.ok).toEqual(true) - expect(p0g0.item).toMatchObject({ + expect(p0g0.ok).true() + expect(p0g0.item).includes({ kind: 'simple', step: 10, start: 0, @@ -51,10 +55,13 @@ describe('progress', () => { status: 'active', }) - let p0g1 = await seneca.post('sys:progress,get:progress', { id: p0.item.id, full: true }) + let p0g1 = await seneca.post('sys:progress,get:progress', { + id: p0.item.id, + full: true, + }) // console.log('p0g1', p0g1) - expect(p0g1.ok).toEqual(true) - expect(p0g1.item).toMatchObject({ + expect(p0g1.ok).true() + expect(p0g1.item).includes({ kind: 'simple', step: 10, start: 0, @@ -62,108 +69,102 @@ describe('progress', () => { val: 0, status: 'active', }) - expect(p0g1.list).toEqual([]) + expect(p0g1.list).equal([]) - let p0u0 = await seneca.post('sys:progress,update:progress', - { id: p0.item.id, how: 'step' }) + let p0u0 = await seneca.post('sys:progress,update:progress', { + id: p0.item.id, + how: 'step', + }) // console.log('p0u0', p0u0) - expect(p0u0).toMatchObject({ - ok: true, - item: { - 'entity$': '-/sys/progress', - kind: 'simple', - step: 10, - start: 0, - end: 100, - val: 10, - status: 'active', - }, - entry: { - 'entity$': '-/sys/progressentry', - }, - list: [] - }) - - let p0u0g0 = await seneca.post('sys:progress,get:progress', { id: p0u0.item.id }) + expect(p0u0.ok).true() + expect(p0u0.item).includes({ + entity$: '-/sys/progress', + kind: 'simple', + step: 10, + start: 0, + end: 100, + val: 10, + status: 'active', + }) + expect(p0u0.entry).includes({ + entity$: '-/sys/progressentry', + }) + expect(p0u0.list).equal([]) + + let p0u0g0 = await seneca.post('sys:progress,get:progress', { + id: p0u0.item.id, + }) // console.log('p0u0g0', p0u0g0) - expect(p0u0g0).toMatchObject({ - ok: true, - item: { - 'entity$': '-/sys/progress', - kind: 'simple', - step: 10, - start: 0, - end: 100, - val: 10, - status: 'active', - }, - list: [] - }) - - let p0u0g1 = await seneca.post('sys:progress,get:progress', - { id: p0u0.item.id, full: true }) + expect(p0u0g0.ok).true() + expect(p0u0g0.item).includes({ + entity$: '-/sys/progress', + kind: 'simple', + step: 10, + start: 0, + end: 100, + val: 10, + status: 'active', + }) + expect(p0u0g0.list).equal([]) + + let p0u0g1 = await seneca.post('sys:progress,get:progress', { + id: p0u0.item.id, + full: true, + }) // console.log('p0u0g1', p0u0g1) - expect(p0u0g1).toMatchObject({ - ok: true, - item: { - 'entity$': '-/sys/progress', - kind: 'simple', - step: 10, - start: 0, - end: 100, - val: 10, - status: 'active', - }, - list: [ - { - 'entity$': '-/sys/progressentry', - } - ] - }) - - let p0u1 = await seneca.post('sys:progress,update:progress', - { id: p0.item.id, how: 'val', val: 95, note: 'aaa', full: true }) + expect(p0u0g1.ok).true() + expect(p0u0g1.item).includes({ + entity$: '-/sys/progress', + kind: 'simple', + step: 10, + start: 0, + end: 100, + val: 10, + status: 'active', + }) + expect(p0u0g1.list[0]).includes({ + entity$: '-/sys/progressentry', + }) + + let p0u1 = await seneca.post('sys:progress,update:progress', { + id: p0.item.id, + how: 'val', + val: 95, + note: 'aaa', + full: true, + }) // console.log('p0u1', p0u1) - expect(p0u1).toMatchObject({ - ok: true, - item: { - 'entity$': '-/sys/progress', - kind: 'simple', - step: 10, - start: 0, - end: 100, - val: 100, - status: 'active', - }, - entry: { - 'entity$': '-/sys/progressentry', - note: 'aaa', - }, - list: [ - { - 'entity$': '-/sys/progressentry', - }, - { - 'entity$': '-/sys/progressentry', - note: 'aaa', - } - ] + expect(p0u1.ok).true() + expect(p0u1.item).includes({ + entity$: '-/sys/progress', + kind: 'simple', + step: 10, + start: 0, + end: 100, + val: 100, + status: 'active', + }) + expect(p0u1.entry).includes({ + entity$: '-/sys/progressentry', + note: 'aaa', + }) + expect(p0u1.list[0]).includes({ + entity$: '-/sys/progressentry', + }) + expect(p0u1.list[1]).includes({ + entity$: '-/sys/progressentry', + note: 'aaa', }) }) - test('basic.messages', async () => { const seneca = await makeSeneca() await SenecaMsgTest(seneca, BasicMessages)() }) - - - // test('maintain', Maintain) }) - async function makeSeneca(options?: any) { options = options || {} const seneca = Seneca({ legacy: false }) @@ -180,4 +181,3 @@ async function makeSeneca(options?: any) { return seneca } - diff --git a/test/tsconfig.json b/test/tsconfig.json new file mode 100644 index 0000000..5c4cc93 --- /dev/null +++ b/test/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "esModuleInterop": true, + "module": "nodenext", + "noEmitOnError": true, + "outDir": "../dist-test", + "rootDir": ".", + "resolveJsonModule": true, + "sourceMap": true, + "strict": true, + "target": "ES2022", + "composite": true + } +} diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 3b5809e..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compilerOptions": { - "esModuleInterop": true, - "sourceMap": true, - "isolatedModules": true, - "module": "commonjs", - "noEmitOnError": true, - "outDir": "dist", - "resolveJsonModule": true, - "rootDir": "src", - "strict": true, - "target": "ES2019" - }, - "exclude": ["test", "dist", "node_modules"] -}