@blackswampai/n8n-nodes-openmart 0.1.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.
Files changed (30) hide show
  1. package/LICENSE.md +19 -0
  2. package/README.md +84 -0
  3. package/dist/credentials/OpenmartApi.credentials.d.ts +10 -0
  4. package/dist/credentials/OpenmartApi.credentials.js +41 -0
  5. package/dist/credentials/OpenmartApi.credentials.js.map +1 -0
  6. package/dist/nodes/Openmart/Openmart.node.d.ts +4 -0
  7. package/dist/nodes/Openmart/Openmart.node.js +673 -0
  8. package/dist/nodes/Openmart/Openmart.node.js.map +1 -0
  9. package/dist/nodes/Openmart/Openmart.node.json +18 -0
  10. package/dist/nodes/Openmart/actions/routing.d.ts +22 -0
  11. package/dist/nodes/Openmart/actions/routing.js +300 -0
  12. package/dist/nodes/Openmart/actions/routing.js.map +1 -0
  13. package/dist/nodes/Openmart/openmart.dark.png +0 -0
  14. package/dist/nodes/Openmart/openmart.png +0 -0
  15. package/dist/nodes/Openmart/shared/creation.d.ts +24 -0
  16. package/dist/nodes/Openmart/shared/creation.js +150 -0
  17. package/dist/nodes/Openmart/shared/creation.js.map +1 -0
  18. package/dist/nodes/Openmart/shared/prospecting.d.ts +5 -0
  19. package/dist/nodes/Openmart/shared/prospecting.js +137 -0
  20. package/dist/nodes/Openmart/shared/prospecting.js.map +1 -0
  21. package/dist/nodes/Openmart/shared/request.d.ts +15 -0
  22. package/dist/nodes/Openmart/shared/request.js +89 -0
  23. package/dist/nodes/Openmart/shared/request.js.map +1 -0
  24. package/dist/nodes/Openmart/shared/search.d.ts +13 -0
  25. package/dist/nodes/Openmart/shared/search.js +69 -0
  26. package/dist/nodes/Openmart/shared/search.js.map +1 -0
  27. package/dist/nodes/Openmart/shared/tasks.d.ts +7 -0
  28. package/dist/nodes/Openmart/shared/tasks.js +63 -0
  29. package/dist/nodes/Openmart/shared/tasks.js.map +1 -0
  30. package/package.json +73 -0
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildCompanySearchBody = buildCompanySearchBody;
4
+ exports.parseCompanySearch = parseCompanySearch;
5
+ exports.buildCompanyEnrichBody = buildCompanyEnrichBody;
6
+ exports.parseCompanyEnrich = parseCompanyEnrich;
7
+ const request_1 = require("./request");
8
+ const search_1 = require("./search");
9
+ function record(value) {
10
+ return typeof value === 'object' && value !== null && !Array.isArray(value)
11
+ ? value
12
+ : undefined;
13
+ }
14
+ function error(operation, message) {
15
+ return new request_1.OpenmartRequestError(`Openmart ${operation} validation failed: ${message}.`, undefined, 'validation');
16
+ }
17
+ function optional(value, label, operation) {
18
+ if (value === undefined || value === null || value === '')
19
+ return undefined;
20
+ if (typeof value !== 'string')
21
+ throw error(operation, `${label} must be a string`);
22
+ return value.trim() || undefined;
23
+ }
24
+ function integer(value, label, minimum, maximum, operation) {
25
+ if (typeof value !== 'number' || !Number.isInteger(value) || value < minimum || value > maximum) {
26
+ throw error(operation, `${label} must be an integer from ${minimum} through ${maximum}`);
27
+ }
28
+ return value;
29
+ }
30
+ function location(value, operation, defaultCountry) {
31
+ var _a, _b;
32
+ const values = record((_a = record(value)) === null || _a === void 0 ? void 0 : _a.locationValues);
33
+ const country = (_b = optional(values === null || values === void 0 ? void 0 : values.country, 'Country', operation)) !== null && _b !== void 0 ? _b : defaultCountry;
34
+ const state = optional(values === null || values === void 0 ? void 0 : values.state, 'State', operation);
35
+ const city = optional(values === null || values === void 0 ? void 0 : values.city, 'City', operation);
36
+ if (!country && !state && !city)
37
+ return undefined;
38
+ if (!country)
39
+ throw error(operation, 'Country is required when location is provided');
40
+ return { country, ...(state ? { state } : {}), ...(city ? { city } : {}) };
41
+ }
42
+ function triState(value, label, operation) {
43
+ if (value === '' || value === undefined || value === null)
44
+ return undefined;
45
+ if (value === true || value === false)
46
+ return value;
47
+ throw error(operation, `${label} must be Any, Yes, or No`);
48
+ }
49
+ function buildCompanySearchBody(input) {
50
+ const operation = 'Company Search';
51
+ const searchTerm = optional(input.companySearchTerm, 'Search Term', operation);
52
+ const place = location(input.companySearchLocation, operation, 'US');
53
+ const ownership = input.ownershipType;
54
+ if (!Array.isArray(ownership) ||
55
+ ownership.some((v) => !['INDEPENDENT', 'FAMILY', 'FRANCHISE', 'CHAIN'].includes(String(v)))) {
56
+ throw error(operation, 'Ownership Type contains an unsupported value');
57
+ }
58
+ const storeCount = record(input.storeCount);
59
+ const optionalStoreCount = (value) => value === '' || value === undefined || value === null ? undefined : value;
60
+ const minimum = optionalStoreCount(storeCount === null || storeCount === void 0 ? void 0 : storeCount.minimumStores);
61
+ const maximum = optionalStoreCount(storeCount === null || storeCount === void 0 ? void 0 : storeCount.maximumStores);
62
+ if (minimum !== undefined)
63
+ integer(minimum, 'Minimum Store Count', 0, Number.MAX_SAFE_INTEGER, operation);
64
+ if (maximum !== undefined)
65
+ integer(maximum, 'Maximum Store Count', 0, Number.MAX_SAFE_INTEGER, operation);
66
+ if (typeof minimum === 'number' && typeof maximum === 'number' && minimum > maximum) {
67
+ throw error(operation, 'Minimum Store Count must not exceed Maximum Store Count');
68
+ }
69
+ const tri = {
70
+ has_staff_info: triState(input.hasStaffInfo, 'Has Staff Info', operation),
71
+ has_business_email: triState(input.hasBusinessEmail, 'Has Business Email', operation),
72
+ has_business_phone_number: triState(input.hasBusinessPhone, 'Has Business Phone', operation),
73
+ };
74
+ const narrowed = Boolean(searchTerm ||
75
+ ownership.length ||
76
+ minimum !== undefined ||
77
+ maximum !== undefined ||
78
+ Object.values(tri).some((v) => v !== undefined) ||
79
+ place.country !== 'US' ||
80
+ place.state ||
81
+ place.city);
82
+ if (!narrowed)
83
+ throw error(operation, 'enter a Search Term or at least one narrowing filter beyond the default country');
84
+ const searchParam = { location: [place] };
85
+ if (searchTerm)
86
+ searchParam.search_term = searchTerm;
87
+ if (ownership.length)
88
+ searchParam.ownership_type = ownership;
89
+ if (minimum !== undefined || maximum !== undefined)
90
+ searchParam.num_stores = [
91
+ {
92
+ ...(minimum !== undefined ? { ge: minimum } : {}),
93
+ ...(maximum !== undefined ? { le: maximum } : {}),
94
+ },
95
+ ];
96
+ for (const [key, value] of Object.entries(tri))
97
+ if (value !== undefined)
98
+ searchParam[key] = value;
99
+ return {
100
+ search_param: searchParam,
101
+ pagination: { limit: integer(input.companySearchLimit, 'Limit', 1, 100, operation) },
102
+ estimate_total: false,
103
+ };
104
+ }
105
+ function parseCompanySearch(value) {
106
+ const wrapper = record(value);
107
+ if (!wrapper ||
108
+ !Array.isArray(wrapper.data) ||
109
+ (wrapper.encoded_cursor !== undefined && typeof wrapper.encoded_cursor !== 'string')) {
110
+ throw new request_1.OpenmartRequestError('Openmart Company Search returned an invalid response: expected an object with data array and optional encoded_cursor string.', undefined, 'invalid-response');
111
+ }
112
+ if (wrapper.data.some((entry) => !record(entry)))
113
+ throw new request_1.OpenmartRequestError('Openmart Company Search returned an invalid response: every data item must be an object.', undefined, 'invalid-response');
114
+ return wrapper.data.map((entry) => ({
115
+ ...entry,
116
+ ...(wrapper.encoded_cursor ? { openmart_next_cursor: wrapper.encoded_cursor } : {}),
117
+ }));
118
+ }
119
+ function buildCompanyEnrichBody(input) {
120
+ const operation = 'Company Enrich';
121
+ const website = optional(input.website, 'Website', operation);
122
+ const social = optional(input.socialMediaLink, 'Social Media Link', operation);
123
+ if (!website && !social)
124
+ throw error(operation, 'Website or Social Media Link is required');
125
+ const place = location(input.companyEnrichLocation, operation);
126
+ return {
127
+ ...(website ? { website } : {}),
128
+ ...(social ? { social_media_link: social } : {}),
129
+ ...(place ? { location: [place] } : {}),
130
+ limit: integer(input.companyEnrichLimit, 'Limit', 1, 50, operation),
131
+ estimate_total: false,
132
+ };
133
+ }
134
+ function parseCompanyEnrich(value) {
135
+ return (0, search_1.parseSearchResults)(value);
136
+ }
137
+ //# sourceMappingURL=prospecting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prospecting.js","sourceRoot":"","sources":["../../../../nodes/Openmart/shared/prospecting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { IDataObject } from 'n8n-workflow';
2
+ export declare const OPENMART_API_ORIGIN = "https://api.openmart.ai";
3
+ export interface OpenmartBalance extends IDataObject {
4
+ period_start: string;
5
+ period_end: string;
6
+ balance: number;
7
+ }
8
+ export declare class OpenmartRequestError extends Error {
9
+ readonly statusCode?: number | undefined;
10
+ readonly category: string;
11
+ constructor(message: string, statusCode?: number | undefined, category?: string);
12
+ }
13
+ export declare function getErrorStatus(error: unknown): number | undefined;
14
+ export declare function mapOpenmartError(error: unknown, operation: string): OpenmartRequestError;
15
+ export declare function parseCreditBalance(value: unknown): OpenmartBalance;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenmartRequestError = exports.OPENMART_API_ORIGIN = void 0;
4
+ exports.getErrorStatus = getErrorStatus;
5
+ exports.mapOpenmartError = mapOpenmartError;
6
+ exports.parseCreditBalance = parseCreditBalance;
7
+ exports.OPENMART_API_ORIGIN = 'https://api.openmart.ai';
8
+ class OpenmartRequestError extends Error {
9
+ constructor(message, statusCode, category = 'request') {
10
+ super(message);
11
+ this.statusCode = statusCode;
12
+ this.category = category;
13
+ this.name = 'OpenmartRequestError';
14
+ }
15
+ }
16
+ exports.OpenmartRequestError = OpenmartRequestError;
17
+ function record(value) {
18
+ return typeof value === 'object' && value !== null
19
+ ? value
20
+ : undefined;
21
+ }
22
+ function numericStatus(value) {
23
+ if (typeof value === 'number' && Number.isInteger(value))
24
+ return value;
25
+ if (typeof value === 'string' && /^\d{3}$/.test(value))
26
+ return Number(value);
27
+ return undefined;
28
+ }
29
+ function getErrorStatus(error) {
30
+ var _a, _b, _c, _d;
31
+ const top = record(error);
32
+ const response = record(top === null || top === void 0 ? void 0 : top.response);
33
+ return ((_d = (_c = (_b = (_a = numericStatus(top === null || top === void 0 ? void 0 : top.httpCode)) !== null && _a !== void 0 ? _a : numericStatus(top === null || top === void 0 ? void 0 : top.statusCode)) !== null && _b !== void 0 ? _b : numericStatus(top === null || top === void 0 ? void 0 : top.status)) !== null && _c !== void 0 ? _c : numericStatus(response === null || response === void 0 ? void 0 : response.statusCode)) !== null && _d !== void 0 ? _d : numericStatus(response === null || response === void 0 ? void 0 : response.status));
34
+ }
35
+ function isNetworkOrTimeout(error) {
36
+ const top = record(error);
37
+ const code = typeof (top === null || top === void 0 ? void 0 : top.code) === 'string' ? top.code.toUpperCase() : '';
38
+ return [
39
+ 'EAI_AGAIN',
40
+ 'ECONNRESET',
41
+ 'ECONNREFUSED',
42
+ 'ENOTFOUND',
43
+ 'ENETUNREACH',
44
+ 'EHOSTUNREACH',
45
+ 'ETIMEDOUT',
46
+ 'ESOCKETTIMEDOUT',
47
+ ].includes(code);
48
+ }
49
+ function mapOpenmartError(error, operation) {
50
+ if (error instanceof OpenmartRequestError)
51
+ return error;
52
+ const status = getErrorStatus(error);
53
+ const prefix = `Openmart ${operation} failed`;
54
+ const messages = {
55
+ 400: ['The request was invalid', 'validation'],
56
+ 401: ['The API key is missing or invalid', 'authentication'],
57
+ 402: ['The account credit limit prevents this request', 'credit-limit'],
58
+ 403: ['The account does not have permission or entitlement for this request', 'permission'],
59
+ 404: ['The API route or version is unavailable', 'not-found'],
60
+ 422: ['The request failed Openmart validation', 'validation'],
61
+ 429: ['The API rate limit was reached', 'rate-limit'],
62
+ };
63
+ if (status !== undefined && messages[status]) {
64
+ const [message, category] = messages[status];
65
+ return new OpenmartRequestError(`${prefix} (HTTP ${status}): ${message}.`, status, category);
66
+ }
67
+ if (status !== undefined && status >= 500 && status <= 504) {
68
+ return new OpenmartRequestError(`${prefix} (HTTP ${status}): Openmart is temporarily unavailable.`, status, 'transient');
69
+ }
70
+ if (isNetworkOrTimeout(error)) {
71
+ return new OpenmartRequestError(`${prefix}: A network or timeout failure occurred.`, undefined, 'network');
72
+ }
73
+ return new OpenmartRequestError(`${prefix}: The request could not be completed safely.`, status, 'unknown');
74
+ }
75
+ const RFC3339 = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/;
76
+ function isRfc3339(value) {
77
+ return typeof value === 'string' && RFC3339.test(value) && !Number.isNaN(Date.parse(value));
78
+ }
79
+ function parseCreditBalance(value) {
80
+ const response = record(value);
81
+ if (!response ||
82
+ !Number.isInteger(response.balance) ||
83
+ !isRfc3339(response.period_start) ||
84
+ !isRfc3339(response.period_end)) {
85
+ throw new OpenmartRequestError('Openmart Get Credit Balance returned an invalid response: expected an integer balance and RFC3339 period_start and period_end strings.', undefined, 'invalid-response');
86
+ }
87
+ return response;
88
+ }
89
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../../nodes/Openmart/shared/request.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { IDataObject } from 'n8n-workflow';
2
+ export interface SearchInput {
3
+ query: unknown;
4
+ limit: unknown;
5
+ location: unknown;
6
+ filters: unknown;
7
+ }
8
+ export interface OpenmartSearchResult extends IDataObject {
9
+ id: string;
10
+ content: IDataObject;
11
+ }
12
+ export declare function buildSearchBody({ query, limit, location, filters }: SearchInput): IDataObject;
13
+ export declare function parseSearchResults(value: unknown): OpenmartSearchResult[];
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildSearchBody = buildSearchBody;
4
+ exports.parseSearchResults = parseSearchResults;
5
+ const request_1 = require("./request");
6
+ const MAX_QUERY_LENGTH = 500;
7
+ function record(value) {
8
+ return typeof value === 'object' && value !== null && !Array.isArray(value)
9
+ ? value
10
+ : undefined;
11
+ }
12
+ function trimmedOptional(value) {
13
+ return typeof value === 'string' && value.trim() ? value.trim() : undefined;
14
+ }
15
+ function validationError(message) {
16
+ return new request_1.OpenmartRequestError(`Openmart Search validation failed: ${message}.`, undefined, 'validation');
17
+ }
18
+ function buildSearchBody({ query, limit, location, filters }) {
19
+ var _a;
20
+ if (typeof query !== 'string' || !query.trim())
21
+ throw validationError('Query is required');
22
+ const normalizedQuery = query.trim();
23
+ if (normalizedQuery.length > MAX_QUERY_LENGTH)
24
+ throw validationError(`Query must contain at most ${MAX_QUERY_LENGTH} characters`);
25
+ if (typeof limit !== 'number' || !Number.isInteger(limit) || limit < 1 || limit > 100)
26
+ throw validationError('Limit must be an integer from 1 through 100');
27
+ const body = { query: normalizedQuery, limit, estimate_total: false };
28
+ const locationValues = record((_a = record(location)) === null || _a === void 0 ? void 0 : _a.locationValues);
29
+ if (locationValues) {
30
+ const normalizedLocation = {};
31
+ for (const key of ['country', 'state', 'city']) {
32
+ const value = trimmedOptional(locationValues[key]);
33
+ if (value)
34
+ normalizedLocation[key] = value;
35
+ }
36
+ if (Object.keys(normalizedLocation).length)
37
+ body.location = [normalizedLocation];
38
+ }
39
+ const filterValues = record(filters);
40
+ if (filterValues) {
41
+ const normalizedFilters = {};
42
+ for (const key of ['has_website', 'has_valid_website', 'has_contact_info']) {
43
+ if (typeof filterValues[key] === 'boolean')
44
+ normalizedFilters[key] = filterValues[key];
45
+ }
46
+ if (filterValues.min_locations !== undefined) {
47
+ if (typeof filterValues.min_locations !== 'number' ||
48
+ !Number.isInteger(filterValues.min_locations) ||
49
+ filterValues.min_locations < 1)
50
+ throw validationError('Minimum Locations must be a positive integer');
51
+ normalizedFilters.min_locations = filterValues.min_locations;
52
+ }
53
+ Object.assign(body, normalizedFilters);
54
+ }
55
+ return body;
56
+ }
57
+ function parseSearchResults(value) {
58
+ if (!Array.isArray(value))
59
+ throw new request_1.OpenmartRequestError('Openmart Search returned an invalid response: expected a top-level array.', undefined, 'invalid-response');
60
+ const results = value.map((candidate) => {
61
+ const result = record(candidate);
62
+ if (!result || typeof result.id !== 'string' || !result.id.trim() || !record(result.content)) {
63
+ throw new request_1.OpenmartRequestError('Openmart Search returned an invalid response: every result must have a non-empty string id and non-null object content.', undefined, 'invalid-response');
64
+ }
65
+ return result;
66
+ });
67
+ return results;
68
+ }
69
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../nodes/Openmart/shared/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { IDataObject } from 'n8n-workflow';
2
+ export declare function requiredId(value: unknown, label: string): string;
3
+ export declare function encodedId(value: unknown, label: string): string;
4
+ export declare function optionalStatus(value: unknown): string | undefined;
5
+ export declare function parseBatchStatus(value: unknown): IDataObject;
6
+ export declare function parseTaskIds(value: unknown): string[];
7
+ export declare function parseTask(value: unknown): IDataObject;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requiredId = requiredId;
4
+ exports.encodedId = encodedId;
5
+ exports.optionalStatus = optionalStatus;
6
+ exports.parseBatchStatus = parseBatchStatus;
7
+ exports.parseTaskIds = parseTaskIds;
8
+ exports.parseTask = parseTask;
9
+ const request_1 = require("./request");
10
+ function record(value) {
11
+ return typeof value === 'object' && value !== null && !Array.isArray(value)
12
+ ? value
13
+ : undefined;
14
+ }
15
+ function requiredId(value, label) {
16
+ if (typeof value !== 'string' || value.trim() === '') {
17
+ throw new request_1.OpenmartRequestError(`${label} is required and must be a nonblank string.`, undefined, 'validation');
18
+ }
19
+ return value.trim();
20
+ }
21
+ function encodedId(value, label) {
22
+ return encodeURIComponent(requiredId(value, label));
23
+ }
24
+ function optionalStatus(value) {
25
+ if (value === undefined || value === null)
26
+ return undefined;
27
+ if (typeof value !== 'string') {
28
+ throw new request_1.OpenmartRequestError('Status must be a string when provided.', undefined, 'validation');
29
+ }
30
+ return value.trim() || undefined;
31
+ }
32
+ function parseBatchStatus(value) {
33
+ const response = record(value);
34
+ const countNames = ['processing', 'completed', 'errored', 'total'];
35
+ if (!response ||
36
+ typeof response.batch_ready !== 'boolean' ||
37
+ countNames.some((name) => !Number.isInteger(response[name]) || response[name] < 0)) {
38
+ throw new request_1.OpenmartRequestError('Openmart Get Batch Status returned an invalid response: expected batch_ready as a boolean and nonnegative integer processing, completed, errored, and total counts.', undefined, 'invalid-response');
39
+ }
40
+ return response;
41
+ }
42
+ function parseTaskIds(value) {
43
+ if (!Array.isArray(value) ||
44
+ value.some((taskId) => typeof taskId !== 'string' || taskId.trim() === '')) {
45
+ throw new request_1.OpenmartRequestError('Openmart Get Task IDs returned an invalid response: expected a top-level array of nonblank task ID strings.', undefined, 'invalid-response');
46
+ }
47
+ return value.map((taskId) => taskId.trim());
48
+ }
49
+ function parseTask(value) {
50
+ const response = record(value);
51
+ if (!response ||
52
+ typeof response.task_id !== 'string' ||
53
+ response.task_id.trim() === '' ||
54
+ typeof response.status !== 'string' ||
55
+ response.status.trim() === '' ||
56
+ (response.tracking_id !== undefined &&
57
+ response.tracking_id !== null &&
58
+ typeof response.tracking_id !== 'string')) {
59
+ throw new request_1.OpenmartRequestError('Openmart Get Task returned an invalid response: expected nonblank task_id and status strings and an optional string or null tracking_id.', undefined, 'invalid-response');
60
+ }
61
+ return response;
62
+ }
63
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../../nodes/Openmart/shared/tasks.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "@blackswampai/n8n-nodes-openmart",
3
+ "version": "0.1.0",
4
+ "packageManager": "npm@11.19.0",
5
+ "description": "n8n community node for the Openmart API",
6
+ "license": "MIT",
7
+ "homepage": "https://blackswampai.com/n8n-nodes/openmart/",
8
+ "keywords": [
9
+ "n8n-community-node-package"
10
+ ],
11
+ "author": {
12
+ "name": "Christopher J. Nelson",
13
+ "email": "christopherjnelson@proton.me"
14
+ },
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/BlackSwampAI/n8n-nodes-openmart.git"
18
+ },
19
+ "scripts": {
20
+ "build": "n8n-node build",
21
+ "build:watch": "tsc --watch",
22
+ "dev": "n8n-node dev",
23
+ "format": "prettier --write .",
24
+ "format:check": "prettier --check .",
25
+ "lint": "n8n-node lint",
26
+ "lint:fix": "n8n-node lint --fix",
27
+ "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.test.json",
28
+ "test": "vitest run",
29
+ "test:unit": "vitest run",
30
+ "scan:source": "node scripts/scan-source.mjs",
31
+ "scan:published": "node scripts/scan-published.mjs",
32
+ "smoke:load": "node scripts/node-load-smoke.mjs",
33
+ "smoke:install": "node scripts/package-install-smoke.mjs",
34
+ "release:check": "node scripts/release-check.mjs",
35
+ "package:check": "npm run release:check && npm pack --dry-run --json --cache .npm-cache | node scripts/validate-pack.mjs",
36
+ "release": "n8n-node release",
37
+ "prepublishOnly": "n8n-node prerelease"
38
+ },
39
+ "files": [
40
+ "dist"
41
+ ],
42
+ "n8n": {
43
+ "n8nNodesApiVersion": 1,
44
+ "strict": true,
45
+ "credentials": [
46
+ "dist/credentials/OpenmartApi.credentials.js"
47
+ ],
48
+ "nodes": [
49
+ "dist/nodes/Openmart/Openmart.node.js"
50
+ ]
51
+ },
52
+ "devDependencies": {
53
+ "@n8n/node-cli": "0.46.4",
54
+ "@n8n/scan-community-package": "0.34.0",
55
+ "eslint": "9.39.4",
56
+ "prettier": "3.8.3",
57
+ "release-it": "20.2.0",
58
+ "typescript": "5.9.3",
59
+ "vitest": "4.1.11"
60
+ },
61
+ "allowScripts": {
62
+ "eslint-plugin-n8n-nodes-base": false
63
+ },
64
+ "peerDependencies": {
65
+ "n8n-workflow": "*"
66
+ },
67
+ "engines": {
68
+ "node": ">=22.22.0"
69
+ },
70
+ "publishConfig": {
71
+ "access": "public"
72
+ }
73
+ }