@lab1095/n8n-nodes-sharepoint-excel 0.1.1 → 0.2.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 (51) hide show
  1. package/dist/credentials/MicrosoftGraphOAuth2Api.credentials.d.ts +3 -2
  2. package/dist/credentials/MicrosoftGraphOAuth2Api.credentials.js +9 -33
  3. package/dist/credentials/MicrosoftGraphOAuth2Api.credentials.js.map +1 -1
  4. package/dist/nodes/SharePointExcel/SharePointExcel.node.d.ts +4 -0
  5. package/dist/nodes/SharePointExcel/SharePointExcel.node.js +4 -0
  6. package/dist/nodes/SharePointExcel/SharePointExcel.node.js.map +1 -1
  7. package/dist/nodes/SharePointExcel/actions/router.js +12 -5
  8. package/dist/nodes/SharePointExcel/actions/router.js.map +1 -1
  9. package/dist/nodes/SharePointExcel/actions/sheet/appendRows.js +52 -29
  10. package/dist/nodes/SharePointExcel/actions/sheet/appendRows.js.map +1 -1
  11. package/dist/nodes/SharePointExcel/actions/sheet/appendRows.test.d.ts +1 -0
  12. package/dist/nodes/SharePointExcel/actions/sheet/appendRows.test.js +437 -0
  13. package/dist/nodes/SharePointExcel/actions/sheet/appendRows.test.js.map +1 -0
  14. package/dist/nodes/SharePointExcel/actions/sheet/clearSheet.js +2 -2
  15. package/dist/nodes/SharePointExcel/actions/sheet/clearSheet.js.map +1 -1
  16. package/dist/nodes/SharePointExcel/actions/sheet/clearSheet.test.d.ts +1 -0
  17. package/dist/nodes/SharePointExcel/actions/sheet/clearSheet.test.js +182 -0
  18. package/dist/nodes/SharePointExcel/actions/sheet/clearSheet.test.js.map +1 -0
  19. package/dist/nodes/SharePointExcel/actions/sheet/readRows.js +75 -20
  20. package/dist/nodes/SharePointExcel/actions/sheet/readRows.js.map +1 -1
  21. package/dist/nodes/SharePointExcel/actions/sheet/readRows.test.d.ts +1 -0
  22. package/dist/nodes/SharePointExcel/actions/sheet/readRows.test.js +251 -0
  23. package/dist/nodes/SharePointExcel/actions/sheet/readRows.test.js.map +1 -0
  24. package/dist/nodes/SharePointExcel/actions/sheet/upsertRows.js +100 -55
  25. package/dist/nodes/SharePointExcel/actions/sheet/upsertRows.js.map +1 -1
  26. package/dist/nodes/SharePointExcel/actions/table/getRows.js +69 -13
  27. package/dist/nodes/SharePointExcel/actions/table/getRows.js.map +1 -1
  28. package/dist/nodes/SharePointExcel/actions/table/getRows.test.d.ts +1 -0
  29. package/dist/nodes/SharePointExcel/actions/table/getRows.test.js +228 -0
  30. package/dist/nodes/SharePointExcel/actions/table/getRows.test.js.map +1 -0
  31. package/dist/nodes/SharePointExcel/actions/workbook/getWorkbooks.test.d.ts +1 -0
  32. package/dist/nodes/SharePointExcel/actions/workbook/getWorkbooks.test.js +151 -0
  33. package/dist/nodes/SharePointExcel/actions/workbook/getWorkbooks.test.js.map +1 -0
  34. package/dist/nodes/SharePointExcel/descriptions.d.ts +7 -0
  35. package/dist/nodes/SharePointExcel/descriptions.js +198 -13
  36. package/dist/nodes/SharePointExcel/descriptions.js.map +1 -1
  37. package/dist/nodes/SharePointExcel/listSearch.js +20 -5
  38. package/dist/nodes/SharePointExcel/listSearch.js.map +1 -1
  39. package/dist/nodes/SharePointExcel/listSearch.test.d.ts +1 -0
  40. package/dist/nodes/SharePointExcel/listSearch.test.js +302 -0
  41. package/dist/nodes/SharePointExcel/listSearch.test.js.map +1 -0
  42. package/dist/nodes/SharePointExcel/resourceMapping.d.ts +2 -0
  43. package/dist/nodes/SharePointExcel/resourceMapping.js +118 -0
  44. package/dist/nodes/SharePointExcel/resourceMapping.js.map +1 -0
  45. package/dist/nodes/SharePointExcel/test-utils/mocks.d.ts +114 -0
  46. package/dist/nodes/SharePointExcel/test-utils/mocks.js +116 -0
  47. package/dist/nodes/SharePointExcel/test-utils/mocks.js.map +1 -0
  48. package/dist/nodes/SharePointExcel/types.d.ts +25 -2
  49. package/dist/package.json +7 -3
  50. package/dist/tsconfig.tsbuildinfo +1 -1
  51. package/package.json +7 -3
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMockExecuteFunctions = createMockExecuteFunctions;
4
+ exports.createMockLoadOptionsFunctions = createMockLoadOptionsFunctions;
5
+ exports.createMockContext = createMockContext;
6
+ exports.createMockCell = createMockCell;
7
+ exports.createMockRow = createMockRow;
8
+ exports.createMockWorksheet = createMockWorksheet;
9
+ exports.createMockWorkbook = createMockWorkbook;
10
+ exports.setupSheetMocks = setupSheetMocks;
11
+ const vitest_1 = require("vitest");
12
+ function createMockExecuteFunctions(params = {}) {
13
+ const getNodeParameter = vitest_1.vi.fn((name, _index, fallback) => {
14
+ if (name in params) {
15
+ return params[name];
16
+ }
17
+ return fallback;
18
+ });
19
+ return {
20
+ getNodeParameter,
21
+ getNode: vitest_1.vi.fn(() => ({ name: 'TestNode' })),
22
+ continueOnFail: vitest_1.vi.fn(() => false),
23
+ getInputData: vitest_1.vi.fn(() => [{ json: {} }]),
24
+ };
25
+ }
26
+ function createMockLoadOptionsFunctions(params = {}) {
27
+ const getNodeParameter = vitest_1.vi.fn((name) => {
28
+ if (name in params) {
29
+ return params[name];
30
+ }
31
+ return undefined;
32
+ });
33
+ const httpRequestMock = vitest_1.vi.fn();
34
+ const httpRequestWithAuthentication = Object.assign(vitest_1.vi.fn(), { call: httpRequestMock });
35
+ return {
36
+ getNodeParameter,
37
+ getNode: vitest_1.vi.fn(() => ({ name: 'TestNode' })),
38
+ logger: {
39
+ error: vitest_1.vi.fn(),
40
+ info: vitest_1.vi.fn(),
41
+ debug: vitest_1.vi.fn(),
42
+ warn: vitest_1.vi.fn(),
43
+ },
44
+ helpers: {
45
+ httpRequestWithAuthentication,
46
+ },
47
+ _httpRequestWithAuthentication: httpRequestMock,
48
+ };
49
+ }
50
+ function createMockContext(overrides = {}) {
51
+ return {
52
+ source: 'sharepoint',
53
+ resource: 'sheet',
54
+ operation: 'readRows',
55
+ basePath: '/sites/test-site/drives/test-drive/items/test-file',
56
+ driveId: 'test-drive',
57
+ fileId: 'test-file',
58
+ ...overrides,
59
+ };
60
+ }
61
+ function createMockCell(value) {
62
+ return { value };
63
+ }
64
+ function createMockRow(cells) {
65
+ return {
66
+ eachCell: vitest_1.vi.fn((opts, callback) => {
67
+ Object.entries(cells).forEach(([col, value]) => {
68
+ if (!opts.includeEmpty && (value === null || value === undefined))
69
+ return;
70
+ callback({ value }, Number(col));
71
+ });
72
+ }),
73
+ getCell: vitest_1.vi.fn((colNumber) => { var _a; return createMockCell((_a = cells[colNumber]) !== null && _a !== void 0 ? _a : null); }),
74
+ };
75
+ }
76
+ function createMockWorksheet(data) {
77
+ var _a, _b;
78
+ const headerRow = createMockRow(data.headers);
79
+ const dataRows = data.rows.map((row) => createMockRow(row));
80
+ const rowCount = (_a = data.rowCount) !== null && _a !== void 0 ? _a : data.rows.length + 1;
81
+ const columnCount = (_b = data.columnCount) !== null && _b !== void 0 ? _b : Object.keys(data.headers).length;
82
+ return {
83
+ rowCount,
84
+ columnCount,
85
+ getRow: vitest_1.vi.fn((rowNum) => {
86
+ if (rowNum === 1)
87
+ return headerRow;
88
+ return dataRows[rowNum - 2] || createMockRow({});
89
+ }),
90
+ spliceRows: vitest_1.vi.fn(),
91
+ addRow: vitest_1.vi.fn(),
92
+ };
93
+ }
94
+ function createMockWorkbook(worksheets) {
95
+ return {
96
+ getWorksheet: vitest_1.vi.fn((name) => worksheets[name]),
97
+ xlsx: {
98
+ load: vitest_1.vi.fn(),
99
+ },
100
+ };
101
+ }
102
+ function setupSheetMocks(mocks, options) {
103
+ var _a, _b;
104
+ const worksheet = createMockWorksheet({
105
+ headers: (_a = options.headers) !== null && _a !== void 0 ? _a : {},
106
+ rows: (_b = options.rows) !== null && _b !== void 0 ? _b : [],
107
+ rowCount: options.rowCount,
108
+ columnCount: options.columnCount,
109
+ });
110
+ const workbook = createMockWorkbook({ [options.sheetName]: worksheet });
111
+ vitest_1.vi.mocked(mocks.loadWorkbook).mockResolvedValue(workbook);
112
+ vitest_1.vi.mocked(mocks.getWorksheet).mockReturnValue(worksheet);
113
+ vitest_1.vi.mocked(mocks.saveWorkbook).mockResolvedValue(undefined);
114
+ return { worksheet, workbook };
115
+ }
116
+ //# sourceMappingURL=mocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../../../nodes/SharePointExcel/test-utils/mocks.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export interface OperationContext {
15
15
  operation: Operation;
16
16
  basePath: string;
17
17
  driveId: string;
18
- fileId: string;
18
+ fileId?: string;
19
19
  siteId?: string;
20
20
  }
21
21
  export type OperationHandler = (this: IExecuteFunctions, items: INodeExecutionData[], context: OperationContext) => Promise<INodeExecutionData[]>;
@@ -48,10 +48,33 @@ export interface SheetInfo {
48
48
  export interface ReadRowsOptions {
49
49
  headerRow?: number;
50
50
  startRow?: number;
51
- maxRows?: number;
51
+ rawData?: boolean;
52
+ dataProperty?: string;
53
+ fields?: string;
54
+ }
55
+ export interface GetTableRowsOptions {
56
+ rawData?: boolean;
57
+ dataProperty?: string;
58
+ fields?: string;
52
59
  }
53
60
  export interface UpsertRowsOptions {
54
61
  headerRow?: number;
55
62
  keyColumn: string;
56
63
  }
57
64
  export type RowData = IDataObject;
65
+ export type DataMode = 'autoMap' | 'manual' | 'raw';
66
+ export interface ResourceMapperValue {
67
+ mappingMode: 'defineBelow' | 'autoMapInputData';
68
+ value: Record<string, unknown> | null;
69
+ matchingColumns?: string[];
70
+ schema?: ResourceMapperField[];
71
+ }
72
+ export interface ResourceMapperField {
73
+ id: string;
74
+ displayName: string;
75
+ required: boolean;
76
+ defaultMatch: boolean;
77
+ display: boolean;
78
+ type: 'string' | 'number' | 'boolean' | 'dateTime';
79
+ canBeUsedToMatch: boolean;
80
+ }
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lab1095/n8n-nodes-sharepoint-excel",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "n8n node to read and write Excel files stored in SharePoint (bypasses WAC token issues)",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/lab1085/n8n-nodes-sharepoint-excel",
@@ -28,7 +28,10 @@
28
28
  "lint:fix": "n8n-node lint --fix",
29
29
  "release": "n8n-node release",
30
30
  "prepublishOnly": "n8n-node prerelease",
31
- "prepare": "husky"
31
+ "prepare": "husky",
32
+ "test": "vitest run",
33
+ "test:watch": "vitest",
34
+ "test:coverage": "vitest run --coverage"
32
35
  },
33
36
  "files": [
34
37
  "dist"
@@ -52,7 +55,8 @@
52
55
  "husky": "^9.1.7",
53
56
  "prettier": "^3.3.0",
54
57
  "release-it": "^19.0.4",
55
- "typescript": "5.9.2"
58
+ "typescript": "5.9.2",
59
+ "vitest": "^4.0.18"
56
60
  },
57
61
  "peerDependencies": {
58
62
  "n8n-workflow": "*"