From 74da8043a9cbcc0ec36b2af1d8d813ed4863d1a3 Mon Sep 17 00:00:00 2001 From: botandbang <337765928+botandbang@users.noreply.github.com> Date: Fri, 6 Nov 2026 21:55:44 -0500 Subject: [PATCH] fix(opt): list luxon as a dependency index.js requires luxon and the published types import it, but it was only a devDependency, so installing @nodevu/opt alone threw "Cannot find module 'luxon'". Fixes #120 --- opt/package.json | 7 +++++-- opt/test/test.js | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/opt/package.json b/opt/package.json index 3805f86..1711292 100644 --- a/opt/package.json +++ b/opt/package.json @@ -33,8 +33,11 @@ "devDependencies": { "c8": "^12.0.0", "fast-check": "^4.10.2", - "luxon": "^3.5.0", "undici": "^8.12.2" }, - "types": "types/index.d.ts" + "types": "types/index.d.ts", + "dependencies": { + "@types/luxon": "^3.7.6", + "luxon": "^3.5.0" + } } diff --git a/opt/test/test.js b/opt/test/test.js index be0a4ff..bfb85b3 100644 --- a/opt/test/test.js +++ b/opt/test/test.js @@ -1,9 +1,28 @@ const { deepStrictEqual, ok, strictEqual } = require('node:assert'); +const { readFileSync } = require('node:fs'); const { describe, it } = require('node:test'); const fc = require('fast-check'); const { fetch: undiciFetch } = require('undici'); const { DateTime } = require('luxon'); const opt = require('../index'); +const { dependencies } = require('../package.json'); + +describe('the published package', () => { + it('should list everything index.js requires in dependencies', () => { + const source = readFileSync(require.resolve('../index'), 'utf8'); + + const required = source + .matchAll(/require\('([^.'][^']*)'\)/g) + .map(([, name]) => name) + .toArray(); + + ok(required.length > 0); + deepStrictEqual( + required.filter((name) => !dependencies?.[name]), + [], + ); + }); +}); describe('the parseOptions module should return all correct defaults', async () => { it('should return the default date', async () => {