@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.
- package/dist/credentials/MicrosoftGraphOAuth2Api.credentials.d.ts +3 -2
- package/dist/credentials/MicrosoftGraphOAuth2Api.credentials.js +9 -33
- package/dist/credentials/MicrosoftGraphOAuth2Api.credentials.js.map +1 -1
- package/dist/nodes/SharePointExcel/SharePointExcel.node.d.ts +4 -0
- package/dist/nodes/SharePointExcel/SharePointExcel.node.js +4 -0
- package/dist/nodes/SharePointExcel/SharePointExcel.node.js.map +1 -1
- package/dist/nodes/SharePointExcel/actions/router.js +12 -5
- package/dist/nodes/SharePointExcel/actions/router.js.map +1 -1
- package/dist/nodes/SharePointExcel/actions/sheet/appendRows.js +52 -29
- package/dist/nodes/SharePointExcel/actions/sheet/appendRows.js.map +1 -1
- package/dist/nodes/SharePointExcel/actions/sheet/appendRows.test.d.ts +1 -0
- package/dist/nodes/SharePointExcel/actions/sheet/appendRows.test.js +437 -0
- package/dist/nodes/SharePointExcel/actions/sheet/appendRows.test.js.map +1 -0
- package/dist/nodes/SharePointExcel/actions/sheet/clearSheet.js +2 -2
- package/dist/nodes/SharePointExcel/actions/sheet/clearSheet.js.map +1 -1
- package/dist/nodes/SharePointExcel/actions/sheet/clearSheet.test.d.ts +1 -0
- package/dist/nodes/SharePointExcel/actions/sheet/clearSheet.test.js +182 -0
- package/dist/nodes/SharePointExcel/actions/sheet/clearSheet.test.js.map +1 -0
- package/dist/nodes/SharePointExcel/actions/sheet/readRows.js +75 -20
- package/dist/nodes/SharePointExcel/actions/sheet/readRows.js.map +1 -1
- package/dist/nodes/SharePointExcel/actions/sheet/readRows.test.d.ts +1 -0
- package/dist/nodes/SharePointExcel/actions/sheet/readRows.test.js +251 -0
- package/dist/nodes/SharePointExcel/actions/sheet/readRows.test.js.map +1 -0
- package/dist/nodes/SharePointExcel/actions/sheet/upsertRows.js +100 -55
- package/dist/nodes/SharePointExcel/actions/sheet/upsertRows.js.map +1 -1
- package/dist/nodes/SharePointExcel/actions/table/getRows.js +69 -13
- package/dist/nodes/SharePointExcel/actions/table/getRows.js.map +1 -1
- package/dist/nodes/SharePointExcel/actions/table/getRows.test.d.ts +1 -0
- package/dist/nodes/SharePointExcel/actions/table/getRows.test.js +228 -0
- package/dist/nodes/SharePointExcel/actions/table/getRows.test.js.map +1 -0
- package/dist/nodes/SharePointExcel/actions/workbook/getWorkbooks.test.d.ts +1 -0
- package/dist/nodes/SharePointExcel/actions/workbook/getWorkbooks.test.js +151 -0
- package/dist/nodes/SharePointExcel/actions/workbook/getWorkbooks.test.js.map +1 -0
- package/dist/nodes/SharePointExcel/descriptions.d.ts +7 -0
- package/dist/nodes/SharePointExcel/descriptions.js +198 -13
- package/dist/nodes/SharePointExcel/descriptions.js.map +1 -1
- package/dist/nodes/SharePointExcel/listSearch.js +20 -5
- package/dist/nodes/SharePointExcel/listSearch.js.map +1 -1
- package/dist/nodes/SharePointExcel/listSearch.test.d.ts +1 -0
- package/dist/nodes/SharePointExcel/listSearch.test.js +302 -0
- package/dist/nodes/SharePointExcel/listSearch.test.js.map +1 -0
- package/dist/nodes/SharePointExcel/resourceMapping.d.ts +2 -0
- package/dist/nodes/SharePointExcel/resourceMapping.js +118 -0
- package/dist/nodes/SharePointExcel/resourceMapping.js.map +1 -0
- package/dist/nodes/SharePointExcel/test-utils/mocks.d.ts +114 -0
- package/dist/nodes/SharePointExcel/test-utils/mocks.js +116 -0
- package/dist/nodes/SharePointExcel/test-utils/mocks.js.map +1 -0
- package/dist/nodes/SharePointExcel/types.d.ts +25 -2
- package/dist/package.json +7 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- 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":";;AAWA,gEAcC;AAKD,wEAkCC;AAKD,8CAUC;AAKD,wCAEC;AAKD,sCAUC;AAeD,kDAiBC;AAKD,gDAOC;AAkCD,0CAsBC;AAzMD,mCAA4B;AAW5B,SAAgB,0BAA0B,CAAC,SAAkC,EAAE;IAC9E,MAAM,gBAAgB,GAAG,WAAE,CAAC,EAAE,CAAC,CAAC,IAAY,EAAE,MAAc,EAAE,QAAkB,EAAE,EAAE;QACnF,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,QAAQ,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,OAAO;QACN,gBAAgB;QAChB,OAAO,EAAE,WAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5C,cAAc,EAAE,WAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;QAClC,YAAY,EAAE,WAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAyB,CAAC;KACjC,CAAC;AACnC,CAAC;AAKD,SAAgB,8BAA8B,CAAC,SAAkC,EAAE;IAClF,MAAM,gBAAgB,GAAG,WAAE,CAAC,EAAE,CAAC,CAAC,IAAY,EAAE,EAAE;QAC/C,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC,CAAC,CAAC;IAGH,MAAM,eAAe,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;IAGhC,MAAM,6BAA6B,GAAG,MAAM,CAAC,MAAM,CAClD,WAAE,CAAC,EAAE,EAAE,EACP,EAAE,IAAI,EAAE,eAAe,EAAE,CACzB,CAAC;IAEF,OAAO;QACN,gBAAgB;QAChB,OAAO,EAAE,WAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5C,MAAM,EAAE;YACP,KAAK,EAAE,WAAE,CAAC,EAAE,EAAE;YACd,IAAI,EAAE,WAAE,CAAC,EAAE,EAAE;YACb,KAAK,EAAE,WAAE,CAAC,EAAE,EAAE;YACd,IAAI,EAAE,WAAE,CAAC,EAAE,EAAE;SACb;QACD,OAAO,EAAE;YACR,6BAA6B;SAC7B;QAED,8BAA8B,EAAE,eAAe;KAG/C,CAAC;AACH,CAAC;AAKD,SAAgB,iBAAiB,CAAC,YAAuC,EAAE;IAC1E,OAAO;QACN,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,UAAU;QACrB,QAAQ,EAAE,oDAAoD;QAC9D,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,WAAW;QACnB,GAAG,SAAS;KACZ,CAAC;AACH,CAAC;AAKD,SAAgB,cAAc,CAAC,KAAuC;IACrE,OAAO,EAAE,KAAK,EAAE,CAAC;AAClB,CAAC;AAKD,SAAgB,aAAa,CAAC,KAAuD;IACpF,OAAO;QACN,QAAQ,EAAE,WAAE,CAAC,EAAE,CAAC,CAAC,IAA+B,EAAE,QAA+D,EAAE,EAAE;YACpH,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC9C,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;oBAAE,OAAO;gBAC1E,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC;QACF,OAAO,EAAE,WAAE,CAAC,EAAE,CAAC,CAAC,SAAiB,EAAE,EAAE,WAAC,OAAA,cAAc,CAAC,MAAA,KAAK,CAAC,SAAS,CAAC,mCAAI,IAAI,CAAC,CAAA,EAAA,CAAC;KAC/E,CAAC;AACH,CAAC;AAeD,SAAgB,mBAAmB,CAAC,IAA0B;;IAC7D,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAE5D,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,QAAQ,mCAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,WAAW,mCAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAEzE,OAAO;QACN,QAAQ;QACR,WAAW;QACX,MAAM,EAAE,WAAE,CAAC,EAAE,CAAC,CAAC,MAAc,EAAE,EAAE;YAChC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC;YACnC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC;QACF,UAAU,EAAE,WAAE,CAAC,EAAE,EAAE;QACnB,MAAM,EAAE,WAAE,CAAC,EAAE,EAAE;KACf,CAAC;AACH,CAAC;AAKD,SAAgB,kBAAkB,CAAC,UAAkE;IACpG,OAAO;QACN,YAAY,EAAE,WAAE,CAAC,EAAE,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,EAAE;YACL,IAAI,EAAE,WAAE,CAAC,EAAE,EAAE;SACb;KACD,CAAC;AACH,CAAC;AAkCD,SAAgB,eAAe,CAC9B,KAIC,EACD,OAA+B;;IAE/B,MAAM,SAAS,GAAG,mBAAmB,CAAC;QACrC,OAAO,EAAE,MAAA,OAAO,CAAC,OAAO,mCAAI,EAAE;QAC9B,IAAI,EAAE,MAAA,OAAO,CAAC,IAAI,mCAAI,EAAE;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;KAChC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAExE,WAAE,CAAC,MAAM,CAAC,KAAK,CAAC,YAAwC,CAAC,CAAC,iBAAiB,CAAC,QAAiB,CAAC,CAAC;IAC/F,WAAE,CAAC,MAAM,CAAC,KAAK,CAAC,YAAwC,CAAC,CAAC,eAAe,CAAC,SAAkB,CAAC,CAAC;IAC9F,WAAE,CAAC,MAAM,CAAC,KAAK,CAAC,YAAwC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAEvF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -15,7 +15,7 @@ export interface OperationContext {
|
|
|
15
15
|
operation: Operation;
|
|
16
16
|
basePath: string;
|
|
17
17
|
driveId: string;
|
|
18
|
-
fileId
|
|
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
|
-
|
|
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.
|
|
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": "*"
|