@atom8n/node-cli 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +289 -0
- package/bin/n8n-node.mjs +5 -0
- package/dist/build.tsbuildinfo +1 -0
- package/dist/commands/build.d.ts +8 -0
- package/dist/commands/build.js +61 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/cloud-support.d.ts +14 -0
- package/dist/commands/cloud-support.js +136 -0
- package/dist/commands/cloud-support.js.map +1 -0
- package/dist/commands/dev/index.d.ts +10 -0
- package/dist/commands/dev/index.js +103 -0
- package/dist/commands/dev/index.js.map +1 -0
- package/dist/commands/dev/utils.d.ts +27 -0
- package/dist/commands/dev/utils.js +462 -0
- package/dist/commands/dev/utils.js.map +1 -0
- package/dist/commands/lint.d.ts +13 -0
- package/dist/commands/lint.js +124 -0
- package/dist/commands/lint.js.map +1 -0
- package/dist/commands/new/index.d.ts +14 -0
- package/dist/commands/new/index.js +141 -0
- package/dist/commands/new/index.js.map +1 -0
- package/dist/commands/new/prompts.d.ts +3 -0
- package/dist/commands/new/prompts.js +42 -0
- package/dist/commands/new/prompts.js.map +1 -0
- package/dist/commands/new/utils.d.ts +1 -0
- package/dist/commands/new/utils.js +13 -0
- package/dist/commands/new/utils.js.map +1 -0
- package/dist/commands/prerelease.d.ts +8 -0
- package/dist/commands/prerelease.js +20 -0
- package/dist/commands/prerelease.js.map +1 -0
- package/dist/commands/release.d.ts +7 -0
- package/dist/commands/release.js +52 -0
- package/dist/commands/release.js.map +1 -0
- package/dist/configs/eslint.d.ts +3 -0
- package/dist/configs/eslint.js +65 -0
- package/dist/configs/eslint.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/template/core.d.ts +29 -0
- package/dist/template/core.js +55 -0
- package/dist/template/core.js.map +1 -0
- package/dist/template/templates/declarative/custom/ast.d.ts +17 -0
- package/dist/template/templates/declarative/custom/ast.js +110 -0
- package/dist/template/templates/declarative/custom/ast.js.map +1 -0
- package/dist/template/templates/declarative/custom/ast.ts +161 -0
- package/dist/template/templates/declarative/custom/prompts.d.ts +3 -0
- package/dist/template/templates/declarative/custom/prompts.js +80 -0
- package/dist/template/templates/declarative/custom/prompts.js.map +1 -0
- package/dist/template/templates/declarative/custom/prompts.ts +87 -0
- package/dist/template/templates/declarative/custom/template/README.md +46 -0
- package/dist/template/templates/declarative/custom/template/nodes/Example/Example.node.json +18 -0
- package/dist/template/templates/declarative/custom/template/nodes/Example/Example.node.ts +50 -0
- package/dist/template/templates/declarative/custom/template/nodes/Example/example.dark.svg +13 -0
- package/dist/template/templates/declarative/custom/template/nodes/Example/example.svg +13 -0
- package/dist/template/templates/declarative/custom/template/nodes/Example/resources/company/getAll.ts +61 -0
- package/dist/template/templates/declarative/custom/template/nodes/Example/resources/company/index.ts +34 -0
- package/dist/template/templates/declarative/custom/template/nodes/Example/resources/user/create.ts +26 -0
- package/dist/template/templates/declarative/custom/template/nodes/Example/resources/user/get.ts +17 -0
- package/dist/template/templates/declarative/custom/template/nodes/Example/resources/user/index.ts +60 -0
- package/dist/template/templates/declarative/custom/template/package.json +48 -0
- package/dist/template/templates/declarative/custom/template/tsconfig.json +25 -0
- package/dist/template/templates/declarative/custom/template.d.ts +2 -0
- package/dist/template/templates/declarative/custom/template.js +83 -0
- package/dist/template/templates/declarative/custom/template.js.map +1 -0
- package/dist/template/templates/declarative/custom/template.ts +121 -0
- package/dist/template/templates/declarative/custom/types.d.ts +9 -0
- package/dist/template/templates/declarative/custom/types.js +3 -0
- package/dist/template/templates/declarative/custom/types.js.map +1 -0
- package/dist/template/templates/declarative/custom/types.ts +8 -0
- package/dist/template/templates/declarative/github-issues/template/README.md +73 -0
- package/dist/template/templates/declarative/github-issues/template/credentials/GithubIssuesApi.credentials.ts +45 -0
- package/dist/template/templates/declarative/github-issues/template/credentials/GithubIssuesOAuth2Api.credentials.ts +54 -0
- package/dist/template/templates/declarative/github-issues/template/icons/github.dark.svg +3 -0
- package/dist/template/templates/declarative/github-issues/template/icons/github.svg +3 -0
- package/dist/template/templates/declarative/github-issues/template/nodes/GithubIssues/GithubIssues.node.json +18 -0
- package/dist/template/templates/declarative/github-issues/template/nodes/GithubIssues/GithubIssues.node.ts +96 -0
- package/dist/template/templates/declarative/github-issues/template/nodes/GithubIssues/listSearch/getIssues.ts +49 -0
- package/dist/template/templates/declarative/github-issues/template/nodes/GithubIssues/listSearch/getRepositories.ts +50 -0
- package/dist/template/templates/declarative/github-issues/template/nodes/GithubIssues/listSearch/getUsers.ts +49 -0
- package/dist/template/templates/declarative/github-issues/template/nodes/GithubIssues/resources/issue/create.ts +74 -0
- package/dist/template/templates/declarative/github-issues/template/nodes/GithubIssues/resources/issue/get.ts +14 -0
- package/dist/template/templates/declarative/github-issues/template/nodes/GithubIssues/resources/issue/getAll.ts +124 -0
- package/dist/template/templates/declarative/github-issues/template/nodes/GithubIssues/resources/issue/index.ts +75 -0
- package/dist/template/templates/declarative/github-issues/template/nodes/GithubIssues/resources/issueComment/getAll.ts +65 -0
- package/dist/template/templates/declarative/github-issues/template/nodes/GithubIssues/resources/issueComment/index.ts +47 -0
- package/dist/template/templates/declarative/github-issues/template/nodes/GithubIssues/shared/descriptions.ts +151 -0
- package/dist/template/templates/declarative/github-issues/template/nodes/GithubIssues/shared/transport.ts +32 -0
- package/dist/template/templates/declarative/github-issues/template/nodes/GithubIssues/shared/utils.ts +14 -0
- package/dist/template/templates/declarative/github-issues/template/package.json +51 -0
- package/dist/template/templates/declarative/github-issues/template/tsconfig.json +25 -0
- package/dist/template/templates/declarative/github-issues/template.d.ts +1 -0
- package/dist/template/templates/declarative/github-issues/template.js +14 -0
- package/dist/template/templates/declarative/github-issues/template.js.map +1 -0
- package/dist/template/templates/declarative/github-issues/template.ts +9 -0
- package/dist/template/templates/index.d.ts +15 -0
- package/dist/template/templates/index.js +28 -0
- package/dist/template/templates/index.js.map +1 -0
- package/dist/template/templates/index.ts +35 -0
- package/dist/template/templates/programmatic/example/template/README.md +46 -0
- package/dist/template/templates/programmatic/example/template/nodes/Example/Example.node.json +18 -0
- package/dist/template/templates/programmatic/example/template/nodes/Example/Example.node.ts +78 -0
- package/dist/template/templates/programmatic/example/template/nodes/Example/example.dark.svg +13 -0
- package/dist/template/templates/programmatic/example/template/nodes/Example/example.svg +13 -0
- package/dist/template/templates/programmatic/example/template/package.json +48 -0
- package/dist/template/templates/programmatic/example/template/tsconfig.json +25 -0
- package/dist/template/templates/programmatic/example/template.d.ts +1 -0
- package/dist/template/templates/programmatic/example/template.js +14 -0
- package/dist/template/templates/programmatic/example/template.js.map +1 -0
- package/dist/template/templates/programmatic/example/template.ts +9 -0
- package/dist/template/templates/shared/credentials/apiKey.credentials.ts +42 -0
- package/dist/template/templates/shared/credentials/basicAuth.credentials.ts +50 -0
- package/dist/template/templates/shared/credentials/bearer.credentials.ts +42 -0
- package/dist/template/templates/shared/credentials/custom.credentials.ts +48 -0
- package/dist/template/templates/shared/credentials/oauth2AuthorizationCode.credentials.ts +51 -0
- package/dist/template/templates/shared/credentials/oauth2ClientCredentials.credentials.ts +45 -0
- package/dist/template/templates/shared/default/.github/workflows/ci.yml +28 -0
- package/dist/template/templates/shared/default/.prettierrc.js +51 -0
- package/dist/template/templates/shared/default/.vscode/launch.json +12 -0
- package/dist/template/templates/shared/default/CHANGELOG.md +0 -0
- package/dist/template/templates/shared/default/eslint.config.mjs +3 -0
- package/dist/utils/ast.d.ts +11 -0
- package/dist/utils/ast.js +32 -0
- package/dist/utils/ast.js.map +1 -0
- package/dist/utils/child-process.d.ts +17 -0
- package/dist/utils/child-process.js +65 -0
- package/dist/utils/child-process.js.map +1 -0
- package/dist/utils/command-suggestions.d.ts +6 -0
- package/dist/utils/command-suggestions.js +30 -0
- package/dist/utils/command-suggestions.js.map +1 -0
- package/dist/utils/filesystem.d.ts +12 -0
- package/dist/utils/filesystem.js +105 -0
- package/dist/utils/filesystem.js.map +1 -0
- package/dist/utils/git.d.ts +7 -0
- package/dist/utils/git.js +36 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/json.d.ts +1 -0
- package/dist/utils/json.js +12 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/package-manager.d.ts +4 -0
- package/dist/utils/package-manager.js +48 -0
- package/dist/utils/package-manager.js.map +1 -0
- package/dist/utils/package.d.ts +15 -0
- package/dist/utils/package.js +53 -0
- package/dist/utils/package.js.map +1 -0
- package/dist/utils/prompts.d.ts +5 -0
- package/dist/utils/prompts.js +65 -0
- package/dist/utils/prompts.js.map +1 -0
- package/dist/utils/validation.d.ts +3 -0
- package/dist/utils/validation.js +23 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.folderExists = folderExists;
|
|
7
|
+
exports.copyFolder = copyFolder;
|
|
8
|
+
exports.delayAtLeast = delayAtLeast;
|
|
9
|
+
exports.writeFileSafe = writeFileSafe;
|
|
10
|
+
exports.ensureFolder = ensureFolder;
|
|
11
|
+
exports.renameFilesInDirectory = renameFilesInDirectory;
|
|
12
|
+
exports.renameDirectory = renameDirectory;
|
|
13
|
+
exports.createSymlink = createSymlink;
|
|
14
|
+
const change_case_1 = require("change-case");
|
|
15
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
16
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
17
|
+
const validation_1 = require("./validation");
|
|
18
|
+
async function folderExists(dir) {
|
|
19
|
+
try {
|
|
20
|
+
const stat = await promises_1.default.stat(dir);
|
|
21
|
+
return stat.isDirectory();
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async function copyFolder({ source: source, destination, ignore = [], }) {
|
|
28
|
+
const ignoreSet = new Set(ignore);
|
|
29
|
+
async function walkAndCopy(currentSrc, currentDest) {
|
|
30
|
+
const entries = await promises_1.default.readdir(currentSrc, { withFileTypes: true });
|
|
31
|
+
await Promise.all(entries.map(async (entry) => {
|
|
32
|
+
if (ignoreSet.has(entry.name))
|
|
33
|
+
return;
|
|
34
|
+
const srcPath = node_path_1.default.join(currentSrc, entry.name);
|
|
35
|
+
const destPath = node_path_1.default.join(currentDest, entry.name);
|
|
36
|
+
if (entry.isDirectory()) {
|
|
37
|
+
await promises_1.default.mkdir(destPath, { recursive: true });
|
|
38
|
+
await walkAndCopy(srcPath, destPath);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
await promises_1.default.copyFile(srcPath, destPath);
|
|
42
|
+
}
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
await promises_1.default.mkdir(destination, { recursive: true });
|
|
46
|
+
await walkAndCopy(source, destination);
|
|
47
|
+
}
|
|
48
|
+
async function delayAtLeast(promise, minMs) {
|
|
49
|
+
const delayPromise = new Promise((res) => setTimeout(res, minMs));
|
|
50
|
+
const [result] = await Promise.all([promise, delayPromise]);
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
async function writeFileSafe(filePath, contents) {
|
|
54
|
+
await promises_1.default.mkdir(node_path_1.default.dirname(filePath), { recursive: true });
|
|
55
|
+
await promises_1.default.writeFile(filePath, contents);
|
|
56
|
+
}
|
|
57
|
+
async function ensureFolder(dir) {
|
|
58
|
+
return await promises_1.default.mkdir(dir, { recursive: true });
|
|
59
|
+
}
|
|
60
|
+
async function renameFilesInDirectory(dirPath, oldName, newName) {
|
|
61
|
+
const files = await promises_1.default.readdir(dirPath);
|
|
62
|
+
for (const file of files) {
|
|
63
|
+
const oldPath = node_path_1.default.resolve(dirPath, file);
|
|
64
|
+
const oldFileName = node_path_1.default.basename(oldPath);
|
|
65
|
+
const newFileName = oldFileName
|
|
66
|
+
.replace(oldName, newName)
|
|
67
|
+
.replace((0, change_case_1.camelCase)(oldName), (0, change_case_1.camelCase)(newName));
|
|
68
|
+
if (newFileName !== oldFileName) {
|
|
69
|
+
const newPath = node_path_1.default.resolve(dirPath, newFileName);
|
|
70
|
+
await promises_1.default.rename(oldPath, newPath);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async function renameDirectory(oldDirPath, newDirName) {
|
|
75
|
+
const parentDir = node_path_1.default.dirname(oldDirPath);
|
|
76
|
+
const newDirPath = node_path_1.default.resolve(parentDir, newDirName);
|
|
77
|
+
await promises_1.default.rename(oldDirPath, newDirPath);
|
|
78
|
+
return newDirPath;
|
|
79
|
+
}
|
|
80
|
+
async function createSymlink(target, linkPath) {
|
|
81
|
+
await promises_1.default.mkdir(node_path_1.default.dirname(linkPath), { recursive: true });
|
|
82
|
+
try {
|
|
83
|
+
const stats = await promises_1.default.lstat(linkPath);
|
|
84
|
+
if (stats.isSymbolicLink() || stats.isFile()) {
|
|
85
|
+
await promises_1.default.unlink(linkPath);
|
|
86
|
+
}
|
|
87
|
+
else if (stats.isDirectory()) {
|
|
88
|
+
await promises_1.default.rm(linkPath, { recursive: true, force: true });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
if (!(0, validation_1.isEnoentError)(error)) {
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
const targetStats = await promises_1.default.stat(target);
|
|
98
|
+
const type = targetStats.isDirectory() ? 'dir' : 'file';
|
|
99
|
+
await promises_1.default.symlink(target, linkPath, type);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
await promises_1.default.symlink(target, linkPath, 'junction');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=filesystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/utils/filesystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tryReadGitUser = tryReadGitUser;
|
|
4
|
+
exports.initGit = initGit;
|
|
5
|
+
const node_child_process_1 = require("node:child_process");
|
|
6
|
+
const child_process_1 = require("./child-process");
|
|
7
|
+
function tryReadGitUser() {
|
|
8
|
+
const user = { name: '', email: '' };
|
|
9
|
+
try {
|
|
10
|
+
const name = (0, node_child_process_1.execSync)('git config --get user.name', {
|
|
11
|
+
stdio: ['pipe', 'pipe', 'ignore'],
|
|
12
|
+
})
|
|
13
|
+
.toString()
|
|
14
|
+
.trim();
|
|
15
|
+
if (name)
|
|
16
|
+
user.name = name;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
const email = (0, node_child_process_1.execSync)('git config --get user.email', {
|
|
22
|
+
stdio: ['pipe', 'pipe', 'ignore'],
|
|
23
|
+
})
|
|
24
|
+
.toString()
|
|
25
|
+
.trim();
|
|
26
|
+
if (email)
|
|
27
|
+
user.email = email;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
}
|
|
31
|
+
return user;
|
|
32
|
+
}
|
|
33
|
+
async function initGit(dir) {
|
|
34
|
+
await (0, child_process_1.runCommand)('git', ['init', '-b', 'main'], { cwd: dir });
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":";;AASA,wCA0BC;AAED,0BAEC;AAvCD,2DAA8C;AAE9C,mDAA6C;AAO7C,SAAgB,cAAc;IAC7B,MAAM,IAAI,GAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAE9C,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,IAAA,6BAAQ,EAAC,4BAA4B,EAAE;YACnD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;SACjC,CAAC;aACA,QAAQ,EAAE;aACV,IAAI,EAAE,CAAC;QACT,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,KAAK,GAAG,IAAA,6BAAQ,EAAC,6BAA6B,EAAE;YACrD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;SACjC,CAAC;aACA,QAAQ,EAAE;aACV,IAAI,EAAE,CAAC;QACT,IAAI,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAEM,KAAK,UAAU,OAAO,CAAC,GAAW;IACxC,MAAM,IAAA,0BAAU,EAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function jsonParse<T>(data: string): T | null;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.jsonParse = jsonParse;
|
|
4
|
+
function jsonParse(data) {
|
|
5
|
+
try {
|
|
6
|
+
return JSON.parse(data);
|
|
7
|
+
}
|
|
8
|
+
catch (error) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":";;AAAA,8BAMC;AAND,SAAgB,SAAS,CAAI,IAAY;IACxC,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.detectPackageManagerFromUserAgent = detectPackageManagerFromUserAgent;
|
|
7
|
+
exports.detectPackageManager = detectPackageManager;
|
|
8
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
9
|
+
function detectPackageManagerFromUserAgent() {
|
|
10
|
+
if ('npm_config_user_agent' in process.env) {
|
|
11
|
+
const ua = process.env['npm_config_user_agent'] ?? '';
|
|
12
|
+
if (ua.includes('pnpm'))
|
|
13
|
+
return 'pnpm';
|
|
14
|
+
if (ua.includes('yarn'))
|
|
15
|
+
return 'yarn';
|
|
16
|
+
if (ua.includes('npm'))
|
|
17
|
+
return 'npm';
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
async function detectPackageManagerFromLockFiles() {
|
|
22
|
+
const lockFiles = {
|
|
23
|
+
npm: 'package-lock.json',
|
|
24
|
+
yarn: 'yarn.lock',
|
|
25
|
+
pnpm: 'pnpm-lock.yaml',
|
|
26
|
+
};
|
|
27
|
+
for (const [pm, lockFile] of Object.entries(lockFiles)) {
|
|
28
|
+
try {
|
|
29
|
+
const stats = await promises_1.default.stat(lockFile);
|
|
30
|
+
if (stats.isFile()) {
|
|
31
|
+
return pm;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
async function detectPackageManager() {
|
|
40
|
+
const fromUserAgent = detectPackageManagerFromUserAgent();
|
|
41
|
+
if (fromUserAgent)
|
|
42
|
+
return fromUserAgent;
|
|
43
|
+
const fromLockFiles = await detectPackageManagerFromLockFiles();
|
|
44
|
+
if (fromLockFiles)
|
|
45
|
+
return fromLockFiles;
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=package-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":";;;;;AAIA,8EAQC;AAsBD,oDAUC;AA5CD,gEAAkC;AAIlC,SAAgB,iCAAiC;IAChD,IAAI,uBAAuB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC5C,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;QACtD,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QACvC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QACvC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,KAAK,UAAU,iCAAiC;IAC/C,MAAM,SAAS,GAAmC;QACjD,GAAG,EAAE,mBAAmB;QACxB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,gBAAgB;KACtB,CAAC;IAEF,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,MAAM,kBAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACpB,OAAO,EAAoB,CAAC;YAC7B,CAAC;QACF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;QAEb,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAEM,KAAK,UAAU,oBAAoB;IAEzC,MAAM,aAAa,GAAG,iCAAiC,EAAE,CAAC;IAC1D,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IAGxC,MAAM,aAAa,GAAG,MAAM,iCAAiC,EAAE,CAAC;IAChE,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IAExC,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type N8nPackageJson = {
|
|
2
|
+
name: string;
|
|
3
|
+
version: string;
|
|
4
|
+
n8n?: {
|
|
5
|
+
nodes?: string[];
|
|
6
|
+
credentials?: string[];
|
|
7
|
+
strict?: boolean;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
export declare function updatePackageJson(dirPath: string, updater: (packageJson: N8nPackageJson) => N8nPackageJson): Promise<void>;
|
|
11
|
+
export declare function getPackageJson(dirPath: string): Promise<N8nPackageJson | null>;
|
|
12
|
+
export declare function isN8nNodePackage(dirPath?: string): Promise<boolean>;
|
|
13
|
+
export declare function getPackageJsonNodes(dirPath: string): Promise<string[]>;
|
|
14
|
+
export declare function setNodesPackageJson(dirPath: string, nodes: string[]): Promise<void>;
|
|
15
|
+
export declare function addCredentialPackageJson(dirPath: string, credential: string): Promise<void>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.updatePackageJson = updatePackageJson;
|
|
7
|
+
exports.getPackageJson = getPackageJson;
|
|
8
|
+
exports.isN8nNodePackage = isN8nNodePackage;
|
|
9
|
+
exports.getPackageJsonNodes = getPackageJsonNodes;
|
|
10
|
+
exports.setNodesPackageJson = setNodesPackageJson;
|
|
11
|
+
exports.addCredentialPackageJson = addCredentialPackageJson;
|
|
12
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
13
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
14
|
+
const prettier_1 = __importDefault(require("prettier"));
|
|
15
|
+
const filesystem_1 = require("./filesystem");
|
|
16
|
+
const json_1 = require("./json");
|
|
17
|
+
async function updatePackageJson(dirPath, updater) {
|
|
18
|
+
const packageJsonPath = node_path_1.default.resolve(dirPath, 'package.json');
|
|
19
|
+
const packageJson = (0, json_1.jsonParse)(await promises_1.default.readFile(packageJsonPath, 'utf-8'));
|
|
20
|
+
if (!packageJson)
|
|
21
|
+
return;
|
|
22
|
+
const updatedPackageJson = updater(packageJson);
|
|
23
|
+
await (0, filesystem_1.writeFileSafe)(packageJsonPath, await prettier_1.default.format(JSON.stringify(updatedPackageJson), { parser: 'json' }));
|
|
24
|
+
}
|
|
25
|
+
async function getPackageJson(dirPath) {
|
|
26
|
+
const packageJsonPath = node_path_1.default.resolve(dirPath, 'package.json');
|
|
27
|
+
const packageJson = (0, json_1.jsonParse)(await promises_1.default.readFile(packageJsonPath, 'utf-8'));
|
|
28
|
+
return packageJson;
|
|
29
|
+
}
|
|
30
|
+
async function isN8nNodePackage(dirPath = process.cwd()) {
|
|
31
|
+
const packageJson = await getPackageJson(dirPath).catch(() => null);
|
|
32
|
+
return Array.isArray(packageJson?.n8n?.nodes);
|
|
33
|
+
}
|
|
34
|
+
async function getPackageJsonNodes(dirPath) {
|
|
35
|
+
const packageJson = await getPackageJson(dirPath);
|
|
36
|
+
return packageJson?.n8n?.nodes ?? [];
|
|
37
|
+
}
|
|
38
|
+
async function setNodesPackageJson(dirPath, nodes) {
|
|
39
|
+
await updatePackageJson(dirPath, (packageJson) => {
|
|
40
|
+
packageJson['n8n'] ??= {};
|
|
41
|
+
packageJson['n8n'].nodes = nodes;
|
|
42
|
+
return packageJson;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
async function addCredentialPackageJson(dirPath, credential) {
|
|
46
|
+
await updatePackageJson(dirPath, (packageJson) => {
|
|
47
|
+
packageJson['n8n'] ??= {};
|
|
48
|
+
packageJson['n8n'].credentials ??= [];
|
|
49
|
+
packageJson['n8n'].credentials.push(credential);
|
|
50
|
+
return packageJson;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/utils/package.ts"],"names":[],"mappings":";;;;;AAiBA,8CAeC;AAED,wCAKC;AAED,4CAIC;AAED,kDAGC;AAED,kDAMC;AAED,4DAOC;AAnED,gEAAkC;AAClC,0DAA6B;AAC7B,wDAAgC;AAEhC,6CAA6C;AAC7C,iCAAmC;AAY5B,KAAK,UAAU,iBAAiB,CACtC,OAAe,EACf,OAAwD;IAExD,MAAM,eAAe,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAiB,MAAM,kBAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3F,IAAI,CAAC,WAAW;QAAE,OAAO;IAEzB,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEhD,MAAM,IAAA,0BAAa,EAClB,eAAe,EACf,MAAM,kBAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAC7E,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,cAAc,CAAC,OAAe;IACnD,MAAM,eAAe,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAiB,MAAM,kBAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3F,OAAO,WAAW,CAAC;AACpB,CAAC;AAEM,KAAK,UAAU,gBAAgB,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;IAC7D,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAEpE,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC;AAEM,KAAK,UAAU,mBAAmB,CAAC,OAAe;IACxD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO,WAAW,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC;AACtC,CAAC;AAEM,KAAK,UAAU,mBAAmB,CAAC,OAAe,EAAE,KAAe;IACzE,MAAM,iBAAiB,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE;QAChD,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;QACjC,OAAO,WAAW,CAAC;IACpB,CAAC,CAAC,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,wBAAwB,CAAC,OAAe,EAAE,UAAkB;IACjF,MAAM,iBAAiB,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE;QAChD,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,EAAE,CAAC;QACtC,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,OAAO,WAAW,CAAC;IACpB,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function withCancelHandler<T>(prompt: Promise<symbol | T>): Promise<T>;
|
|
2
|
+
export declare const onCancel: (message?: string, code?: number) => never;
|
|
3
|
+
export declare function ensureN8nPackage(commandName: string): Promise<void>;
|
|
4
|
+
export declare function getCommandHeader(commandName: string): Promise<string>;
|
|
5
|
+
export declare function printCommandHeader(commandName: string): Promise<void>;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.onCancel = void 0;
|
|
7
|
+
exports.withCancelHandler = withCancelHandler;
|
|
8
|
+
exports.ensureN8nPackage = ensureN8nPackage;
|
|
9
|
+
exports.getCommandHeader = getCommandHeader;
|
|
10
|
+
exports.printCommandHeader = printCommandHeader;
|
|
11
|
+
const prompts_1 = require("@clack/prompts");
|
|
12
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
13
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
14
|
+
const picocolors_1 = __importDefault(require("picocolors"));
|
|
15
|
+
const json_1 = require("./json");
|
|
16
|
+
const package_1 = require("./package");
|
|
17
|
+
async function withCancelHandler(prompt) {
|
|
18
|
+
const result = await prompt;
|
|
19
|
+
if ((0, prompts_1.isCancel)(result))
|
|
20
|
+
return (0, exports.onCancel)();
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
23
|
+
const onCancel = (message = 'Cancelled', code = 0) => {
|
|
24
|
+
(0, prompts_1.cancel)(message);
|
|
25
|
+
process.exit(code);
|
|
26
|
+
};
|
|
27
|
+
exports.onCancel = onCancel;
|
|
28
|
+
async function ensureN8nPackage(commandName) {
|
|
29
|
+
const isN8nNode = await (0, package_1.isN8nNodePackage)();
|
|
30
|
+
if (!isN8nNode) {
|
|
31
|
+
prompts_1.log.error(`Make sure you are in the root directory of your node package and your package.json contains the "n8n" field
|
|
32
|
+
|
|
33
|
+
For example:
|
|
34
|
+
{
|
|
35
|
+
"name": "n8n-nodes-my-app",
|
|
36
|
+
"version": "0.1.0",
|
|
37
|
+
"n8n": {
|
|
38
|
+
"nodes": ["dist/nodes/MyApp.node.js"]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
`);
|
|
42
|
+
(0, exports.onCancel)(`${commandName} can only be run in an n8n node package`, 1);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async function getCliVersion() {
|
|
47
|
+
try {
|
|
48
|
+
const packageJsonPath = node_path_1.default.join(__dirname, '..', '..', 'package.json');
|
|
49
|
+
const content = await promises_1.default.readFile(packageJsonPath, 'utf-8');
|
|
50
|
+
const packageJson = (0, json_1.jsonParse)(content);
|
|
51
|
+
return packageJson?.version ?? 'unknown';
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return 'unknown';
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async function getCommandHeader(commandName) {
|
|
58
|
+
const version = await getCliVersion();
|
|
59
|
+
return `${picocolors_1.default.inverse(` ${commandName} `)} ${picocolors_1.default.dim(`v${version}`)}`;
|
|
60
|
+
}
|
|
61
|
+
async function printCommandHeader(commandName) {
|
|
62
|
+
const header = await getCommandHeader(commandName);
|
|
63
|
+
process.stdout.write(`${header}\n\n`);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":";;;;;;AAQA,8CAIC;AAOD,4CAiBC;AAaD,4CAGC;AAED,gDAGC;AAzDD,4CAAuD;AACvD,gEAAkC;AAClC,0DAA6B;AAC7B,4DAAoC;AAEpC,iCAAmC;AACnC,uCAA6C;AAEtC,KAAK,UAAU,iBAAiB,CAAI,MAA2B;IACrE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;IAC5B,IAAI,IAAA,kBAAQ,EAAC,MAAM,CAAC;QAAE,OAAO,IAAA,gBAAQ,GAAE,CAAC;IACxC,OAAO,MAAM,CAAC;AACf,CAAC;AAEM,MAAM,QAAQ,GAAG,CAAC,OAAO,GAAG,WAAW,EAAE,IAAI,GAAG,CAAC,EAAE,EAAE;IAC3D,IAAA,gBAAM,EAAC,OAAO,CAAC,CAAC;IAChB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC,CAAC;AAHW,QAAA,QAAQ,YAGnB;AAEK,KAAK,UAAU,gBAAgB,CAAC,WAAmB;IACzD,MAAM,SAAS,GAAG,MAAM,IAAA,0BAAgB,GAAE,CAAC;IAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,aAAG,CAAC,KAAK,CAAC;;;;;;;;;;CAUX,CAAC,CAAC;QACD,IAAA,gBAAQ,EAAC,GAAG,WAAW,yCAAyC,EAAE,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC;AAED,KAAK,UAAU,aAAa;IAC3B,IAAI,CAAC;QACJ,MAAM,eAAe,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAsB,OAAO,CAAC,CAAC;QAC5D,OAAO,WAAW,EAAE,OAAO,IAAI,SAAS,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC;AAEM,KAAK,UAAU,gBAAgB,CAAC,WAAmB;IACzD,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;IACtC,OAAO,GAAG,oBAAU,CAAC,OAAO,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,oBAAU,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC;AACrF,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,WAAmB;IAC3D,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateNodeName = void 0;
|
|
4
|
+
exports.isNodeErrnoException = isNodeErrnoException;
|
|
5
|
+
exports.isEnoentError = isEnoentError;
|
|
6
|
+
const validateNodeName = (name) => {
|
|
7
|
+
if (!name)
|
|
8
|
+
return;
|
|
9
|
+
const regexScoped = /^@([a-z0-9]+(?:-[a-z0-9]+)*)\/n8n-nodes-([a-z0-9]+(?:-[a-z0-9]+)*)$/;
|
|
10
|
+
const regexUnscoped = /^n8n-nodes-([a-z0-9]+(?:-[a-z0-9]+)*)$/;
|
|
11
|
+
if (!regexScoped.test(name) && !regexUnscoped.test(name)) {
|
|
12
|
+
return "Must start with 'n8n-nodes-' or '@org/n8n-nodes-'. Examples: n8n-nodes-my-app, @mycompany/n8n-nodes-my-app";
|
|
13
|
+
}
|
|
14
|
+
return;
|
|
15
|
+
};
|
|
16
|
+
exports.validateNodeName = validateNodeName;
|
|
17
|
+
function isNodeErrnoException(error) {
|
|
18
|
+
return error instanceof Error && 'code' in error;
|
|
19
|
+
}
|
|
20
|
+
function isEnoentError(error) {
|
|
21
|
+
return isNodeErrnoException(error) && error.code === 'ENOENT';
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":";;;AAcA,oDAEC;AAED,sCAEC;AApBM,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAsB,EAAE;IACpE,IAAI,CAAC,IAAI;QAAE,OAAO;IAGlB,MAAM,WAAW,GAAG,qEAAqE,CAAC;IAE1F,MAAM,aAAa,GAAG,wCAAwC,CAAC;IAE/D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,OAAO,4GAA4G,CAAC;IACrH,CAAC;IACD,OAAO;AACR,CAAC,CAAC;AAZW,QAAA,gBAAgB,oBAY3B;AAEF,SAAgB,oBAAoB,CAAC,KAAc;IAClD,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AAClD,CAAC;AAED,SAAgB,aAAa,CAAC,KAAc;IAC3C,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC/D,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atom8n/node-cli",
|
|
3
|
+
"version": "0.17.0",
|
|
4
|
+
"description": "Official CLI for developing community nodes for n8n",
|
|
5
|
+
"bin": {
|
|
6
|
+
"n8n-node": "bin/n8n-node.mjs"
|
|
7
|
+
},
|
|
8
|
+
"exports": {
|
|
9
|
+
"./eslint": {
|
|
10
|
+
"types": "./dist/configs/eslint.d.js",
|
|
11
|
+
"default": "./dist/configs/eslint.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"bin",
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"clean": "rimraf dist .turbo",
|
|
20
|
+
"typecheck": "tsc --noEmit",
|
|
21
|
+
"copy-templates": "node scripts/copy-templates.mjs",
|
|
22
|
+
"dev": "tsc-watch -p tsconfig.build.json -w --onCompilationComplete \"pnpm copy-templates\"",
|
|
23
|
+
"format": "biome format --write src",
|
|
24
|
+
"format:check": "biome ci src",
|
|
25
|
+
"lint": "eslint src --quiet",
|
|
26
|
+
"lintfix": "eslint src --fix",
|
|
27
|
+
"build": "tsc -p tsconfig.build.json && pnpm copy-templates",
|
|
28
|
+
"publish:dry": "pnpm run build && pnpm pub --dry-run",
|
|
29
|
+
"test": "vitest run",
|
|
30
|
+
"test:unit": "vitest run",
|
|
31
|
+
"test:dev": "vitest --silent=false",
|
|
32
|
+
"start": "./bin/n8n-node.mjs"
|
|
33
|
+
},
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "git+https://github.com/n8n-io/n8n.git"
|
|
37
|
+
},
|
|
38
|
+
"oclif": {
|
|
39
|
+
"bin": "n8n-node",
|
|
40
|
+
"commands": {
|
|
41
|
+
"strategy": "explicit",
|
|
42
|
+
"target": "./dist/index.js",
|
|
43
|
+
"identifier": "commands"
|
|
44
|
+
},
|
|
45
|
+
"topicSeparator": " "
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"@clack/prompts": "^0.11.0",
|
|
49
|
+
"@atom8n/eslint-plugin-community-nodes": "0.7.0",
|
|
50
|
+
"@oclif/core": "^4.5.2",
|
|
51
|
+
"change-case": "^5.4.4",
|
|
52
|
+
"eslint-import-resolver-typescript": "^4.4.3",
|
|
53
|
+
"eslint-plugin-import-x": "^4.15.2",
|
|
54
|
+
"eslint-plugin-n8n-nodes-base": "1.16.3",
|
|
55
|
+
"fast-glob": "catalog:",
|
|
56
|
+
"handlebars": "4.7.8",
|
|
57
|
+
"picocolors": "catalog:",
|
|
58
|
+
"prettier": "3.6.2",
|
|
59
|
+
"prompts": "^2.4.2",
|
|
60
|
+
"rimraf": "catalog:",
|
|
61
|
+
"ts-morph": "^26.0.0",
|
|
62
|
+
"typescript-eslint": "^8.35.0"
|
|
63
|
+
},
|
|
64
|
+
"devDependencies": {
|
|
65
|
+
"@eslint/js": "^9.29.0",
|
|
66
|
+
"@atom8n/typescript-config": "1.3.0",
|
|
67
|
+
"@atom8n/vitest-config": "1.5.0",
|
|
68
|
+
"@oclif/test": "^4.1.13",
|
|
69
|
+
"eslint": "catalog:",
|
|
70
|
+
"typescript": "catalog:",
|
|
71
|
+
"vitest": "catalog:",
|
|
72
|
+
"vitest-mock-extended": "catalog:"
|
|
73
|
+
},
|
|
74
|
+
"peerDependencies": {
|
|
75
|
+
"eslint": ">= 9"
|
|
76
|
+
}
|
|
77
|
+
}
|