n8n-nodes-sqlaccounting 1.0.0 → 1.1.1

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 (91) hide show
  1. package/README.md +119 -93
  2. package/dist/credentials/SqlAccountingApi.credentials.d.ts.map +1 -1
  3. package/dist/credentials/SqlAccountingApi.credentials.js +32 -27
  4. package/dist/nodes/SqlAccounting/SqlAccounting.node.d.ts +3 -0
  5. package/dist/nodes/SqlAccounting/SqlAccounting.node.d.ts.map +1 -1
  6. package/dist/nodes/SqlAccounting/SqlAccounting.node.js +23 -318
  7. package/dist/nodes/SqlAccounting/config.d.ts +8 -0
  8. package/dist/nodes/SqlAccounting/config.d.ts.map +1 -0
  9. package/dist/nodes/SqlAccounting/config.js +12 -0
  10. package/dist/nodes/SqlAccounting/contractTypes.d.ts +48 -0
  11. package/dist/nodes/SqlAccounting/contractTypes.d.ts.map +1 -0
  12. package/dist/nodes/SqlAccounting/contractTypes.js +12 -0
  13. package/dist/nodes/SqlAccounting/errors.d.ts +17 -0
  14. package/dist/nodes/SqlAccounting/errors.d.ts.map +1 -0
  15. package/dist/nodes/SqlAccounting/errors.js +47 -0
  16. package/dist/nodes/SqlAccounting/execute/readBody.d.ts +6 -0
  17. package/dist/nodes/SqlAccounting/execute/readBody.d.ts.map +1 -0
  18. package/dist/nodes/SqlAccounting/execute/readBody.js +67 -0
  19. package/dist/nodes/SqlAccounting/execute/readFilters.d.ts +4 -0
  20. package/dist/nodes/SqlAccounting/execute/readFilters.d.ts.map +1 -0
  21. package/dist/nodes/SqlAccounting/execute/readFilters.js +11 -0
  22. package/dist/nodes/SqlAccounting/execute/runOperation.d.ts +13 -0
  23. package/dist/nodes/SqlAccounting/execute/runOperation.d.ts.map +1 -0
  24. package/dist/nodes/SqlAccounting/execute/runOperation.js +68 -0
  25. package/dist/nodes/SqlAccounting/lookups.d.ts +6 -0
  26. package/dist/nodes/SqlAccounting/lookups.d.ts.map +1 -0
  27. package/dist/nodes/SqlAccounting/lookups.js +53 -0
  28. package/dist/nodes/SqlAccounting/normalize.d.ts +5 -0
  29. package/dist/nodes/SqlAccounting/normalize.d.ts.map +1 -0
  30. package/dist/nodes/SqlAccounting/normalize.js +18 -0
  31. package/dist/nodes/SqlAccounting/pagination.d.ts +10 -0
  32. package/dist/nodes/SqlAccounting/pagination.d.ts.map +1 -0
  33. package/dist/nodes/SqlAccounting/pagination.js +29 -0
  34. package/dist/nodes/SqlAccounting/registry.d.ts +30 -0
  35. package/dist/nodes/SqlAccounting/registry.d.ts.map +1 -0
  36. package/dist/nodes/SqlAccounting/registry.generated.d.ts +17 -0
  37. package/dist/nodes/SqlAccounting/registry.generated.d.ts.map +1 -0
  38. package/dist/nodes/SqlAccounting/registry.generated.js +1251 -0
  39. package/dist/nodes/SqlAccounting/registry.js +61 -0
  40. package/dist/nodes/SqlAccounting/request.d.ts +9 -0
  41. package/dist/nodes/SqlAccounting/request.d.ts.map +1 -0
  42. package/dist/nodes/SqlAccounting/request.js +44 -0
  43. package/dist/nodes/SqlAccounting/schema/assets.d.ts +3 -0
  44. package/dist/nodes/SqlAccounting/schema/assets.d.ts.map +1 -0
  45. package/dist/nodes/SqlAccounting/schema/assets.js +34 -0
  46. package/dist/nodes/SqlAccounting/schema/cast.d.ts +5 -0
  47. package/dist/nodes/SqlAccounting/schema/cast.d.ts.map +1 -0
  48. package/dist/nodes/SqlAccounting/schema/cast.js +99 -0
  49. package/dist/nodes/SqlAccounting/schema/documents.d.ts +3 -0
  50. package/dist/nodes/SqlAccounting/schema/documents.d.ts.map +1 -0
  51. package/dist/nodes/SqlAccounting/schema/documents.js +93 -0
  52. package/dist/nodes/SqlAccounting/schema/finance.d.ts +3 -0
  53. package/dist/nodes/SqlAccounting/schema/finance.d.ts.map +1 -0
  54. package/dist/nodes/SqlAccounting/schema/finance.js +81 -0
  55. package/dist/nodes/SqlAccounting/schema/index.d.ts +8 -0
  56. package/dist/nodes/SqlAccounting/schema/index.d.ts.map +1 -0
  57. package/dist/nodes/SqlAccounting/schema/index.js +48 -0
  58. package/dist/nodes/SqlAccounting/schema/parties.d.ts +3 -0
  59. package/dist/nodes/SqlAccounting/schema/parties.d.ts.map +1 -0
  60. package/dist/nodes/SqlAccounting/schema/parties.js +64 -0
  61. package/dist/nodes/SqlAccounting/schema/simple.d.ts +11 -0
  62. package/dist/nodes/SqlAccounting/schema/simple.d.ts.map +1 -0
  63. package/dist/nodes/SqlAccounting/schema/simple.js +41 -0
  64. package/dist/nodes/SqlAccounting/schema/stock.d.ts +3 -0
  65. package/dist/nodes/SqlAccounting/schema/stock.d.ts.map +1 -0
  66. package/dist/nodes/SqlAccounting/schema/stock.js +46 -0
  67. package/dist/nodes/SqlAccounting/schema/types.d.ts +31 -0
  68. package/dist/nodes/SqlAccounting/schema/types.d.ts.map +1 -0
  69. package/dist/nodes/SqlAccounting/schema/types.js +3 -0
  70. package/dist/nodes/SqlAccounting/templates.d.ts +2 -0
  71. package/dist/nodes/SqlAccounting/templates.d.ts.map +1 -0
  72. package/dist/nodes/SqlAccounting/templates.js +50 -0
  73. package/dist/nodes/SqlAccounting/transport.d.ts +6 -0
  74. package/dist/nodes/SqlAccounting/transport.d.ts.map +1 -0
  75. package/dist/nodes/SqlAccounting/transport.js +30 -0
  76. package/dist/nodes/SqlAccounting/ui/fieldProps.d.ts +5 -0
  77. package/dist/nodes/SqlAccounting/ui/fieldProps.d.ts.map +1 -0
  78. package/dist/nodes/SqlAccounting/ui/fieldProps.js +35 -0
  79. package/dist/nodes/SqlAccounting/ui/names.d.ts +15 -0
  80. package/dist/nodes/SqlAccounting/ui/names.d.ts.map +1 -0
  81. package/dist/nodes/SqlAccounting/ui/names.js +28 -0
  82. package/dist/nodes/SqlAccounting/ui/properties.d.ts +3 -0
  83. package/dist/nodes/SqlAccounting/ui/properties.d.ts.map +1 -0
  84. package/dist/nodes/SqlAccounting/ui/properties.js +296 -0
  85. package/dist/nodes/SqlAccounting/validation.d.ts +7 -0
  86. package/dist/nodes/SqlAccounting/validation.d.ts.map +1 -0
  87. package/dist/nodes/SqlAccounting/validation.js +74 -0
  88. package/package.json +22 -8
  89. package/dist/nodes/SqlAccounting/operations.d.ts +0 -34
  90. package/dist/nodes/SqlAccounting/operations.d.ts.map +0 -1
  91. package/dist/nodes/SqlAccounting/operations.js +0 -177
@@ -0,0 +1,296 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildProperties = buildProperties;
4
+ const config_1 = require("../config");
5
+ const registry_1 = require("../registry");
6
+ const schema_1 = require("../schema");
7
+ const templates_1 = require("../templates");
8
+ const fieldProps_1 = require("./fieldProps");
9
+ const names_1 = require("./names");
10
+ // Evaluated when n8n loads the node description (restart reloads it), which is good enough for a template date.
11
+ const TODAY = new Date().toISOString().slice(0, 10);
12
+ const FILTER_HINT = 'Supports wildcards (*term*) and ranges (2025-01-01~2025-01-31) on SQL Account 5.2025.1061.890 and later.';
13
+ const KIND_ORDER = { master: 0, transactional: 1, report: 2 };
14
+ const KIND_LABEL = { master: 'Master data', transactional: 'Document', report: 'Report' };
15
+ const showOp = (operation, extra = {}) => ({
16
+ show: { operation, ...extra },
17
+ });
18
+ function resourceProperty() {
19
+ const sorted = [...registry_1.RESOURCE_DEFS].sort((a, b) => KIND_ORDER[a.kind] - KIND_ORDER[b.kind] || a.name.localeCompare(b.name));
20
+ return {
21
+ displayName: 'Resource',
22
+ name: 'resource',
23
+ type: 'options',
24
+ noDataExpression: true,
25
+ options: sorted.map((r) => ({ name: r.name, value: r.value, description: KIND_LABEL[r.kind] })),
26
+ default: 'profile',
27
+ required: true,
28
+ };
29
+ }
30
+ function operationProperties() {
31
+ // Defaults are computed from the registry; the lint rule cannot evaluate them.
32
+ // eslint-disable-next-line n8n-nodes-base/node-param-default-missing
33
+ return registry_1.RESOURCE_DEFS.map((resource) => {
34
+ var _a, _b;
35
+ return ({
36
+ displayName: 'Operation',
37
+ name: 'operation',
38
+ type: 'options',
39
+ noDataExpression: true,
40
+ displayOptions: { show: { resource: [resource.value] } },
41
+ options: resource.operations.map((op) => ({
42
+ name: op.name,
43
+ value: op.key,
44
+ description: op.description,
45
+ action: op.description,
46
+ })),
47
+ default: (_b = (_a = resource.operations[0]) === null || _a === void 0 ? void 0 : _a.key) !== null && _b !== void 0 ? _b : '',
48
+ });
49
+ });
50
+ }
51
+ function pathParamProperties() {
52
+ const defs = [
53
+ { kind: 'CODE', label: 'Code', help: 'The record code, for example USD or CUS-01.' },
54
+ {
55
+ kind: 'DOCKEY',
56
+ label: 'DocKey',
57
+ help: "SQL Account's internal numeric ID (not the document number). Find it with the List operation and a filter such as code=X.",
58
+ },
59
+ {
60
+ kind: 'AUTOKEY',
61
+ label: 'AutoKey',
62
+ help: "SQL Account's internal numeric ID (not the code). Find it with the List operation and a filter such as code=X.",
63
+ },
64
+ ];
65
+ return defs.map((d) => ({
66
+ displayName: d.label,
67
+ name: names_1.PATH_PARAM_NAME[d.kind],
68
+ type: 'string',
69
+ default: '',
70
+ required: true,
71
+ description: d.help,
72
+ displayOptions: showOp(Object.values(registry_1.OPERATION_MAP)
73
+ .filter((o) => o.pathParam === d.kind)
74
+ .map((o) => o.key)),
75
+ }));
76
+ }
77
+ function paginationProperties() {
78
+ return [
79
+ {
80
+ displayName: 'Offset',
81
+ name: 'offset',
82
+ type: 'number',
83
+ default: 0,
84
+ description: `Start position. The API returns up to ${registry_1.PAGE_SIZE} records per request.`,
85
+ displayOptions: showOp(registry_1.OPS_PAGINATED),
86
+ },
87
+ {
88
+ displayName: 'Return All',
89
+ name: 'returnAll',
90
+ type: 'boolean',
91
+ default: false,
92
+ description: 'Whether to return all results or only up to a given limit',
93
+ displayOptions: showOp(registry_1.OPS_PAGINATED),
94
+ },
95
+ {
96
+ displayName: 'Limit',
97
+ name: 'limit',
98
+ type: 'number',
99
+ default: 50, // equals PAGE_SIZE: the API returns at most 50 records per request
100
+ typeOptions: { minValue: 1, maxValue: registry_1.PAGE_SIZE },
101
+ description: 'Max number of results to return',
102
+ displayOptions: showOp(registry_1.OPS_PAGINATED, { returnAll: [false] }),
103
+ },
104
+ {
105
+ displayName: 'Max Pages',
106
+ name: 'maxPages',
107
+ type: 'number',
108
+ default: config_1.MAX_PAGES_DEFAULT,
109
+ typeOptions: { minValue: 1 },
110
+ description: `Safety cap on the number of ${registry_1.PAGE_SIZE}-record pages fetched when Return All is on`,
111
+ displayOptions: showOp(registry_1.OPS_PAGINATED, { returnAll: [true] }),
112
+ },
113
+ ];
114
+ }
115
+ function filterCollection(name, displayName, operation, fieldProp) {
116
+ return {
117
+ displayName,
118
+ name,
119
+ type: 'fixedCollection',
120
+ typeOptions: { multipleValues: true },
121
+ default: {},
122
+ placeholder: 'Add Filter',
123
+ description: FILTER_HINT,
124
+ displayOptions: showOp(operation),
125
+ options: [
126
+ {
127
+ name: 'filter',
128
+ displayName: 'Filter',
129
+ values: [fieldProp, { displayName: 'Value', name: 'value', type: 'string', default: '', description: FILTER_HINT }],
130
+ },
131
+ ],
132
+ };
133
+ }
134
+ function filterProperties() {
135
+ var _a, _b;
136
+ const typed = [];
137
+ for (const resource of registry_1.RESOURCE_DEFS) {
138
+ const schema = (0, schema_1.getSchema)(resource.value);
139
+ const list = resource.operations.find((o) => o.op === 'list');
140
+ if (!schema || !list)
141
+ continue;
142
+ const options = schema.fields.filter((f) => f.filterable !== false).map((f) => ({ name: f.label, value: f.name }));
143
+ typed.push(
144
+ // eslint-disable-next-line n8n-nodes-base/node-param-default-missing
145
+ filterCollection((0, names_1.filtersParam)(resource.value), 'Filters', [list.key], {
146
+ displayName: 'Field',
147
+ name: 'field',
148
+ type: 'options',
149
+ options,
150
+ default: (_b = (_a = options[0]) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : '',
151
+ description: 'Field to filter on',
152
+ }));
153
+ }
154
+ const custom = filterCollection('customFilters', 'Custom Filters', registry_1.OPS_PAGINATED, {
155
+ displayName: 'Field',
156
+ name: 'field',
157
+ type: 'string',
158
+ default: '',
159
+ placeholder: 'e.g. code, description, isactive',
160
+ description: 'API field name to filter on',
161
+ });
162
+ return [...typed, custom];
163
+ }
164
+ function extraJsonProperty(resource, operations) {
165
+ return {
166
+ displayName: 'Extra Fields (JSON)',
167
+ name: (0, names_1.extraJsonParam)(resource),
168
+ type: 'json',
169
+ default: '{}',
170
+ description: 'Advanced: fields not listed above or sub-arrays (for example sdsbranch). Values set above take precedence.',
171
+ displayOptions: showOp(operations),
172
+ };
173
+ }
174
+ function masterProperties(resource, schema) {
175
+ const create = (0, registry_1.opKey)(resource, 'create');
176
+ const update = (0, registry_1.opKey)(resource, 'update');
177
+ const out = [];
178
+ if (!registry_1.OPERATION_MAP[create])
179
+ return out;
180
+ for (const f of schema.fields.filter((x) => x.required)) {
181
+ out.push({ ...(0, fieldProps_1.baseProperty)(f), name: (0, names_1.fieldParam)(resource, f.name), required: true, displayOptions: showOp([create]) });
182
+ }
183
+ out.push({
184
+ displayName: 'Additional Fields',
185
+ name: (0, names_1.additionalParam)(resource),
186
+ type: 'collection',
187
+ placeholder: 'Add Field',
188
+ default: {},
189
+ displayOptions: showOp([create]),
190
+ options: schema.fields.filter((f) => !f.required).map(fieldProps_1.baseProperty),
191
+ });
192
+ if (registry_1.OPERATION_MAP[update]) {
193
+ out.push({
194
+ displayName: 'Fields to Update',
195
+ name: (0, names_1.updateParam)(resource),
196
+ type: 'collection',
197
+ placeholder: 'Add Field',
198
+ default: {},
199
+ displayOptions: showOp([update]),
200
+ options: schema.fields.filter((f) => !f.createOnly).map(fieldProps_1.baseProperty),
201
+ });
202
+ }
203
+ out.push(extraJsonProperty(resource, registry_1.OPERATION_MAP[update] ? [create, update] : [create]));
204
+ return out;
205
+ }
206
+ function rawBodyProperty(resource, mode, extra = {}) {
207
+ // The create default is a per-resource template, which the lint rule cannot evaluate statically.
208
+ // eslint-disable-next-line n8n-nodes-base/node-param-default-missing
209
+ return {
210
+ displayName: 'Request Body (JSON)',
211
+ name: (0, names_1.rawBodyParam)(resource, mode),
212
+ type: 'json',
213
+ default: mode === 'create' ? (0, templates_1.templateFor)(resource, TODAY) : '{}',
214
+ description: mode === 'create'
215
+ ? 'Full JSON body. Fill in the empty values; include at least one line in sdsdocdetail.'
216
+ : 'Only the fields you want to change.',
217
+ displayOptions: showOp([(0, registry_1.opKey)(resource, mode)], extra),
218
+ };
219
+ }
220
+ function documentProperties(resource) {
221
+ const schema = (0, schema_1.getSchema)(resource);
222
+ const create = (0, registry_1.opKey)(resource, 'create');
223
+ const update = (0, registry_1.opKey)(resource, 'update');
224
+ const out = [];
225
+ if (!schema) {
226
+ out.push(rawBodyProperty(resource, 'create'));
227
+ }
228
+ else {
229
+ const typedMode = { [(0, names_1.useRawParam)(resource)]: [false] };
230
+ out.push({
231
+ displayName: 'Use Raw JSON Instead',
232
+ name: (0, names_1.useRawParam)(resource),
233
+ type: 'boolean',
234
+ default: false,
235
+ description: 'Whether to type the whole document as JSON instead of using the fields below',
236
+ displayOptions: showOp([create]),
237
+ });
238
+ for (const f of schema.fields.filter((x) => x.required)) {
239
+ out.push({ ...(0, fieldProps_1.baseProperty)(f), name: (0, names_1.fieldParam)(resource, f.name), required: true, displayOptions: showOp([create], typedMode) });
240
+ }
241
+ out.push({
242
+ displayName: 'Additional Fields',
243
+ name: (0, names_1.additionalParam)(resource),
244
+ type: 'collection',
245
+ placeholder: 'Add Field',
246
+ default: {},
247
+ displayOptions: showOp([create], typedMode),
248
+ options: schema.fields.filter((f) => !f.required).map(fieldProps_1.baseProperty),
249
+ });
250
+ if (schema.lineFields) {
251
+ out.push({
252
+ displayName: 'Line Items',
253
+ name: (0, names_1.linesParam)(resource),
254
+ type: 'fixedCollection',
255
+ typeOptions: { multipleValues: true },
256
+ default: {},
257
+ placeholder: 'Add Line',
258
+ displayOptions: showOp([create], typedMode),
259
+ options: [
260
+ {
261
+ name: 'line',
262
+ displayName: 'Line',
263
+ values: schema.lineFields.map((f) => (f.required ? { ...(0, fieldProps_1.baseProperty)(f), required: true } : (0, fieldProps_1.baseProperty)(f))),
264
+ },
265
+ ],
266
+ });
267
+ }
268
+ out.push(extraJsonProperty(resource, [create]));
269
+ out.push(rawBodyProperty(resource, 'create', { [(0, names_1.useRawParam)(resource)]: [true] }));
270
+ }
271
+ if (registry_1.OPERATION_MAP[update])
272
+ out.push(rawBodyProperty(resource, 'update'));
273
+ return out;
274
+ }
275
+ function buildProperties() {
276
+ const generated = [];
277
+ for (const resource of registry_1.RESOURCE_DEFS) {
278
+ if (resource.kind === 'master') {
279
+ const schema = (0, schema_1.getSchema)(resource.value);
280
+ if (schema)
281
+ generated.push(...masterProperties(resource.value, schema));
282
+ }
283
+ else if (resource.kind === 'transactional') {
284
+ generated.push(...documentProperties(resource.value));
285
+ }
286
+ }
287
+ return [
288
+ resourceProperty(),
289
+ ...operationProperties(),
290
+ ...pathParamProperties(),
291
+ ...paginationProperties(),
292
+ ...filterProperties(),
293
+ ...generated,
294
+ ];
295
+ }
296
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVzL1NxbEFjY291bnRpbmcvdWkvcHJvcGVydGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWtUQSwwQ0FrQkM7QUFuVUQsc0NBQThDO0FBQzlDLDBDQU9xQjtBQUNyQixzQ0FBc0M7QUFFdEMsNENBQTJDO0FBQzNDLDZDQUE0QztBQUM1QyxtQ0FVaUI7QUFFakIsZ0hBQWdIO0FBQ2hILE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUVwRCxNQUFNLFdBQVcsR0FDaEIsMEdBQTBHLENBQUM7QUFFNUcsTUFBTSxVQUFVLEdBQTJCLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUN0RixNQUFNLFVBQVUsR0FBMkIsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBRWxILE1BQU0sTUFBTSxHQUFHLENBQUMsU0FBbUIsRUFBRSxRQUEwRCxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEcsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxFQUFFO0NBQzdCLENBQUMsQ0FBQztBQUVILFNBQVMsZ0JBQWdCO0lBQ3hCLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyx3QkFBYSxDQUFDLENBQUMsSUFBSSxDQUNyQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENB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
@@ -0,0 +1,7 @@
1
+ export declare const PARTY_CODE_GROUPS: string[];
2
+ export declare const LINES_OPTIONAL: string[];
3
+ export declare const PAYMENT_METHOD_RESOURCES: string[];
4
+ export declare const DEPOSIT_RESOURCES: string[];
5
+ export declare function validateDocument(resource: string, body: Record<string, unknown>, mode: 'create' | 'update'): string[];
6
+ export declare function assertValidDocument(resource: string, body: Record<string, unknown>, mode: 'create' | 'update'): void;
7
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../nodes/SqlAccounting/validation.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,UAAoC,CAAC;AACnE,eAAO,MAAM,cAAc,UAAyC,CAAC;AACrE,eAAO,MAAM,wBAAwB,UAA6E,CAAC;AACnH,eAAO,MAAM,iBAAiB,UAAyC,CAAC;AA6CxE,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GACvB,MAAM,EAAE,CAaV;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAGpH"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEPOSIT_RESOURCES = exports.PAYMENT_METHOD_RESOURCES = exports.LINES_OPTIONAL = exports.PARTY_CODE_GROUPS = void 0;
4
+ exports.validateDocument = validateDocument;
5
+ exports.assertValidDocument = assertValidDocument;
6
+ const errors_1 = require("./errors");
7
+ const registry_1 = require("./registry");
8
+ exports.PARTY_CODE_GROUPS = ['sales', 'purchase', 'ar', 'ap'];
9
+ exports.LINES_OPTIONAL = ['customerdeposit', 'supplierdeposit'];
10
+ exports.PAYMENT_METHOD_RESOURCES = ['customerpayment', 'customerrefund', 'supplierpayment', 'supplierrefund'];
11
+ exports.DEPOSIT_RESOURCES = ['customerdeposit', 'supplierdeposit'];
12
+ const DATE = /^\d{4}-\d{2}-\d{2}$/;
13
+ const isBlank = (v) => v === undefined || v === null || String(v).trim() === '';
14
+ const cents = (v) => Math.round(Number(v) * 100);
15
+ function checkJournal(lines, issues) {
16
+ let debit = 0;
17
+ let credit = 0;
18
+ lines.forEach((line, i) => {
19
+ var _a, _b, _c;
20
+ const n = i + 1;
21
+ if (isBlank(line.code))
22
+ issues.push(`Line ${n}: account code is required.`);
23
+ for (const side of ['dr', 'cr']) {
24
+ if (Number.isNaN(Number((_a = line[side]) !== null && _a !== void 0 ? _a : 0)))
25
+ issues.push(`Line ${n}: ${side} must be a number.`);
26
+ }
27
+ debit += cents((_b = line.dr) !== null && _b !== void 0 ? _b : 0);
28
+ credit += cents((_c = line.cr) !== null && _c !== void 0 ? _c : 0);
29
+ });
30
+ if (debit !== credit) {
31
+ issues.push(`Journal is unbalanced: total debits ${(debit / 100).toFixed(2)} must equal total credits ${(credit / 100).toFixed(2)}.`);
32
+ }
33
+ }
34
+ function checkCreate(resource, body, issues) {
35
+ const lines = body.sdsdocdetail;
36
+ const group = (0, registry_1.getOperation)(`${resource}.create`).group;
37
+ if (group && exports.PARTY_CODE_GROUPS.includes(group) && isBlank(body.code)) {
38
+ issues.push('code (customer/supplier code) is required.');
39
+ }
40
+ if (!exports.LINES_OPTIONAL.includes(resource) && (!Array.isArray(lines) || lines.length === 0)) {
41
+ issues.push('At least one line in sdsdocdetail is required.');
42
+ }
43
+ if (exports.PAYMENT_METHOD_RESOURCES.includes(resource) && isBlank(body.paymentmethod)) {
44
+ issues.push('paymentmethod (bank/cash account code) is required.');
45
+ }
46
+ if (exports.DEPOSIT_RESOURCES.includes(resource) && isBlank(body.depositaccount)) {
47
+ issues.push('depositaccount (bank account code) is required.');
48
+ }
49
+ if (resource === 'journalentry' && Array.isArray(lines) && lines.length > 0) {
50
+ checkJournal(lines, issues);
51
+ }
52
+ }
53
+ function validateDocument(resource, body, mode) {
54
+ if (Object.keys(body).length === 0) {
55
+ return ['Request body is empty; the SQL Account API crashes on an empty body.'];
56
+ }
57
+ const issues = [];
58
+ for (const key of ['docdate', 'postdate']) {
59
+ if (!isBlank(body[key]) && !DATE.test(String(body[key])))
60
+ issues.push(`${key} must be YYYY-MM-DD.`);
61
+ }
62
+ if (body.sdsdocdetail !== undefined && !Array.isArray(body.sdsdocdetail)) {
63
+ issues.push('sdsdocdetail must be an array of line objects.');
64
+ }
65
+ if (mode === 'create')
66
+ checkCreate(resource, body, issues);
67
+ return issues;
68
+ }
69
+ function assertValidDocument(resource, body, mode) {
70
+ const issues = validateDocument(resource, body, mode);
71
+ if (issues.length > 0)
72
+ throw new errors_1.ValidationError(issues);
73
+ }
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVzL1NxbEFjY291bnRpbmcvdmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFtREEsNENBaUJDO0FBRUQsa0RBR0M7QUF6RUQscUNBQTJDO0FBQzNDLHlDQUEwQztBQUU3QixRQUFBLGlCQUFpQixHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEQsUUFBQSxjQUFjLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3hELFFBQUEsd0JBQXdCLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3RHLFFBQUEsaUJBQWlCLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBRXhFLE1BQU0sSUFBSSxHQUFHLHFCQUFxQixDQUFDO0FBQ25DLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBVSxFQUFXLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUNsRyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQVUsRUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFFbEUsU0FBUyxZQUFZLENBQUMsS0FBZ0MsRUFBRSxNQUFnQjtJQUN2RSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDZCxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDZixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFOztRQUN6QixNQUFNLENBQUMsR0FB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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "n8n-nodes-sqlaccounting",
3
- "version": "1.0.0",
4
- "description": "n8n community node for SQL Accounting REST API (Malaysia). Credit-based usage via the SQL Accounting n8n Node platform.",
3
+ "version": "1.1.1",
4
+ "description": "n8n community node for the SQL Accounting REST API (Malaysia), via the SQL Accounting n8n Node subscription service.",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",
7
7
  "sql-accounting",
@@ -13,21 +13,26 @@
13
13
  "license": "MIT",
14
14
  "homepage": "https://github.com/laurentyew/n8n-nodes-sqlaccounting",
15
15
  "author": {
16
- "name": "Your Name",
17
- "email": "your@email.com"
16
+ "name": "laurentyew",
17
+ "url": "https://github.com/laurentyew"
18
18
  },
19
19
  "repository": {
20
20
  "type": "git",
21
21
  "url": "https://github.com/laurentyew/n8n-nodes-sqlaccounting.git"
22
22
  },
23
- "main": "index.js",
24
23
  "scripts": {
25
24
  "build": "tsc && gulp build:icons",
26
25
  "dev": "tsc --watch",
27
26
  "format": "prettier nodes credentials --write",
28
27
  "lint": "eslint nodes/**/*.ts credentials/**/*.ts",
29
28
  "lintfix": "eslint nodes/**/*.ts credentials/**/*.ts --fix",
30
- "prepublishOnly": "npm run build && npm run lint"
29
+ "prepublishOnly": "npm run build && npm run lint && npm test",
30
+ "test": "jest",
31
+ "test:cov": "jest --coverage",
32
+ "gen:registry": "node scripts/gen-registry.js",
33
+ "contract:hash": "node scripts/contract-hash.js write",
34
+ "mock-proxy": "ts-node scripts/run-mock-proxy.ts",
35
+ "prebuild": "node scripts/gen-registry.js"
31
36
  },
32
37
  "files": [
33
38
  "dist"
@@ -42,17 +47,26 @@
42
47
  ]
43
48
  },
44
49
  "devDependencies": {
50
+ "@types/jest": "^29.5.14",
45
51
  "@types/node": "^18.16.16",
46
- "@typescript-eslint/parser": "^6.0.0",
47
52
  "@typescript-eslint/eslint-plugin": "^6.0.0",
53
+ "@typescript-eslint/parser": "^6.0.0",
48
54
  "eslint": "^8.0.0",
49
55
  "eslint-plugin-n8n-nodes-base": "^1.16.1",
50
56
  "gulp": "^4.0.2",
57
+ "jest": "^29.7.0",
51
58
  "prettier": "^3.0.0",
59
+ "ts-jest": "^29.4.14",
60
+ "ts-node": "^10.9.2",
52
61
  "typescript": "^5.1.3"
53
62
  },
54
63
  "peerDependencies": {
55
64
  "n8n-workflow": "*"
56
65
  },
57
- "dependencies": {}
66
+ "engines": {
67
+ "node": ">=18"
68
+ },
69
+ "bugs": {
70
+ "url": "https://github.com/laurentyew/n8n-nodes-sqlaccounting/issues"
71
+ }
58
72
  }
@@ -1,34 +0,0 @@
1
- /**
2
- * operations.ts
3
- * Static operation definitions for all 81 SQL Accounting endpoints.
4
- * Maps exactly to the operations table seeded in Supabase.
5
- *
6
- * body_mode:
7
- * 'none' → GET / DELETE (no body, no guided fields)
8
- * 'guided' → master data writes (flat guided fields shown in UI)
9
- * 'raw_json' → transactional writes (raw JSON body editor)
10
- */
11
- export interface OperationDef {
12
- key: string;
13
- name: string;
14
- value: string;
15
- description: string;
16
- method: 'GET' | 'POST' | 'PUT' | 'DELETE';
17
- path: string;
18
- pathParam: 'CODE' | 'DOCKEY' | 'AUTOKEY' | null;
19
- bodyMode: 'none' | 'guided' | 'raw_json';
20
- docType: 'master' | 'transactional' | 'report';
21
- }
22
- export interface ResourceDef {
23
- name: string;
24
- value: string;
25
- operations: OperationDef[];
26
- }
27
- export declare const RESOURCES: ResourceDef[];
28
- export declare const OPERATION_MAP: Record<string, OperationDef>;
29
- export declare const OPS_WITH_PATH_PARAM: string[];
30
- export declare const OPS_LIST: string[];
31
- export declare const OPS_GET_NO_PARAM: string[];
32
- export declare const OPS_RAW_JSON: string[];
33
- export declare const OPS_GUIDED: string[];
34
- //# sourceMappingURL=operations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../nodes/SqlAccounting/operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;IAChD,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;IACzC,OAAO,EAAE,QAAQ,GAAG,eAAe,GAAG,QAAQ,CAAC;CAC/C;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,YAAY,EAAE,CAAC;CAC3B;AAiED,eAAO,MAAM,SAAS,EAAE,WAAW,EA+FlC,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAM,CAAC;AAQ9D,eAAO,MAAM,mBAAmB,UAEX,CAAC;AAGtB,eAAO,MAAM,QAAQ,UAEA,CAAC;AAGtB,eAAO,MAAM,gBAAgB,UAER,CAAC;AAGtB,eAAO,MAAM,YAAY,UAEJ,CAAC;AAGtB,eAAO,MAAM,UAAU,UAEF,CAAC"}