Skip to content

Commit 658a96e

Browse files
fix: convert uuid and pdf-parse to dynamic imports
Resolves ERR_REQUIRE_ESM errors by replacing require() with dynamic import() for ES modules in commons, logic, integration, and validation packages. Bumps patch versions for all affected packages.
1 parent 829a83e commit 658a96e

28 files changed

+193
-162
lines changed

.github/workflows/__package.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
uses: actions/[email protected]
2626

2727
- name: Setup Node.js ⚙️
28-
uses: actions/setup-node@v5.0.0
28+
uses: actions/setup-node@v6.0.0
2929
with:
3030
node-version: '20'
3131
check-latest: true

package-lock.json

Lines changed: 28 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/ai/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@statuscompliance/ai",
3-
"version": "1.0.1",
3+
"version": "1.0.2",
44
"description": "Collection of STATUS project components that are responsible for performing ai resquest / responses to Google Gemini API",
55
"license": "Apache-2.0",
66
"keywords": [

packages/commons/lib/common.js

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
1-
const { v4: uuidv4 } = require('uuid');
1+
let uuidv4 = null;
22

3-
function existSection(msg, storeEvidences, config, node) {
3+
// Función para inicializar uuid de forma asíncrona
4+
async function initUuid() {
5+
if (!uuidv4) {
6+
const { v4 } = await import('uuid');
7+
uuidv4 = v4;
8+
}
9+
return uuidv4;
10+
}
11+
12+
async function existSection(msg, storeEvidences, config, node) {
413
let data = msg.payload.result;
514
let section = msg.req?.body?.section ?? config.section;
615
const result = data.includes(section).toString();
@@ -9,38 +18,38 @@ function existSection(msg, storeEvidences, config, node) {
918
section: section,
1019
data: data,
1120
}
12-
addEvidence(msg, "Section", evidence, result, storeEvidences);
21+
await addEvidence(msg, "Section", evidence, result, storeEvidences);
1322
node.send(msg);
1423
}
1524

16-
function extractTextFromPDF(pdfContent, node, msg, storeEvidences, pdfParse) {
25+
async function extractTextFromPDF(pdfContent, node, msg, storeEvidences, pdfParse) {
1726
if (!pdfParse) {
1827
node.error("pdf-parse module not provided");
1928
msg.payload.result = false;
20-
addEvidence(msg, "PDF", "pdf-parse module not available", false, storeEvidences);
29+
await addEvidence(msg, "PDF", "pdf-parse module not available", false, storeEvidences);
2130
node.send(msg);
2231
return;
2332
}
2433

25-
pdfParse(pdfContent)
26-
.then((data) => {
27-
msg.payload.result = data.text;
28-
node.send(msg);
29-
})
30-
.catch((error) => {
31-
node.error(
32-
"Error extracting text from PDF: " + error.message
33-
);
34-
msg.payload.result = false;
35-
addEvidence(msg, "PDF", "Error extracting text from PDF", false, storeEvidences);
36-
node.send(msg);
37-
});
34+
try {
35+
const data = await pdfParse(pdfContent);
36+
msg.payload.result = data.text;
37+
node.send(msg);
38+
} catch (error) {
39+
node.error(
40+
"Error extracting text from PDF: " + error.message
41+
);
42+
msg.payload.result = false;
43+
await addEvidence(msg, "PDF", "Error extracting text from PDF", false, storeEvidences);
44+
node.send(msg);
45+
}
3846
}
3947

40-
function addEvidence(msg, key, value, result, storeEvidences) {
48+
async function addEvidence(msg, key, value, result, storeEvidences) {
4149
if (storeEvidences) {
50+
const uuidFunc = await initUuid();
4251
msg.payload.evidences.push({
43-
id: uuidv4(),
52+
id: uuidFunc(),
4453
key,
4554
value,
4655
result
@@ -51,5 +60,6 @@ function addEvidence(msg, key, value, result, storeEvidences) {
5160
module.exports = {
5261
existSection,
5362
extractTextFromPDF,
54-
addEvidence
63+
addEvidence,
64+
initUuid
5565
};

packages/commons/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@statuscompliance/commons",
3-
"version": "1.0.0",
3+
"version": "1.0.2",
44
"description": "Common utilities for STATUS compliance Node-RED packages",
55
"main": "index.js",
66
"license": "Apache-2.0",

packages/control-flow/nodes/chain-response.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module.exports = function (RED) {
44
RED.nodes.createNode(this, config);
55
var node = this;
66

7-
this.on("input", function (msg) {
7+
this.on("input", async function (msg) {
88
let eventAName = msg.req?.body?.eventAName ?? config.eventAName;
99
let eventBName = msg.req?.body?.eventBName ?? config.eventBName;
1010
let negate = msg.req?.body?.negate ?? config.negate;
@@ -63,7 +63,7 @@ module.exports = function (RED) {
6363
msg.payload.result = result;
6464
msg.payload.evidences = Array.isArray(msg.payload.evidences) ? msg.payload.evidences : [];
6565

66-
addEvidence(
66+
await addEvidence(
6767
msg,
6868
"Chain Response",
6969
{

packages/control-flow/nodes/coexistence.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module.exports = function (RED) {
55
RED.nodes.createNode(this, config);
66
var node = this;
77

8-
this.on("input", function (msg) {
8+
this.on("input", async function (msg) {
99
let eventAName = msg.req?.body?.eventAName ?? config.eventAName;
1010
let eventBName = msg.req?.body?.eventBName ?? config.eventBName;
1111
let negate = msg.req?.body?.negate ?? config.negate;
@@ -55,7 +55,7 @@ module.exports = function (RED) {
5555
msg.payload.result = result
5656
msg.payload.evidences = Array.isArray(msg.payload.evidences) ? msg.payload.evidences : [];
5757

58-
addEvidence(msg, "Coexistence", [eventAName, eventBName], result, storeEvidences);
58+
await addEvidence(msg, "Coexistence", [eventAName, eventBName], result, storeEvidences);
5959

6060
node.send(msg);
6161
});

packages/control-flow/nodes/responded-existence.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module.exports = function (RED) {
55
RED.nodes.createNode(this, config);
66
var node = this;
77

8-
this.on("input", function (msg) {
8+
this.on("input", async function (msg) {
99
let eventAName = msg.req?.body?.eventAName ?? config.eventAName;
1010
let eventBName = msg.req?.body?.eventBName ?? config.eventBName;
1111
let negate = msg.req?.body?.negate ?? config.negate;
@@ -60,7 +60,7 @@ module.exports = function (RED) {
6060

6161
newMsg.payload.result = result;
6262

63-
addEvidence(newMsg, `${eventAName}-${eventBName}`, [eventTimestamps.eventA, eventTimestamps.eventB], result, storeEvidences);
63+
await addEvidence(newMsg, `${eventAName}-${eventBName}`, [eventTimestamps.eventA, eventTimestamps.eventB], result, storeEvidences);
6464

6565
node.send(newMsg);
6666
});

packages/control-flow/nodes/response.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module.exports = function (RED) {
55
RED.nodes.createNode(this, config);
66
var node = this;
77

8-
this.on("input", function (msg) {
8+
this.on("input", async function (msg) {
99
let eventAName = msg.req?.body?.eventAName ?? config.eventAName;
1010
let eventBName = msg.req?.body?.eventBName ?? config.eventBName;
1111
let negate = msg.req?.body?.negate ?? config.negate;
@@ -52,7 +52,7 @@ module.exports = function (RED) {
5252

5353
msg.payload.evidences = Array.isArray(msg.payload.evidences) ? msg.payload.evidences : [];
5454

55-
addEvidence(msg, "Response", [eventAName, eventBName], result, storeEvidences);
55+
await addEvidence(msg, "Response", [eventAName, eventBName], result, storeEvidences);
5656

5757
node.send(msg);
5858
});

packages/control-flow/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@statuscompliance/control-flow",
3-
"version": "2.1.4",
3+
"version": "2.1.5",
44
"description": "Collection of STATUS project components that are responsible for performing control-flow checks.",
55
"license": "Apache-2.0",
66
"keywords": [

0 commit comments

Comments
 (0)