c34dab2cca
Build and Push Docker Container / build-and-push (push) Successful in 4m28s
- Create missing note files before running property:set. - Default date-only datetime values to midnight. - Keep property names out of path authorization checks. - Split policy, vault, daily note, and command target helpers. - Split n8n node args, description, output, and API response helpers. - Split API tests by auth, command, daily note, and property behavior. - Bump API and n8n node versions.
44 lines
1.6 KiB
TypeScript
44 lines
1.6 KiB
TypeScript
import type {
|
|
IExecuteFunctions,
|
|
INodeExecutionData,
|
|
INodeType,
|
|
INodeTypeDescription,
|
|
} from 'n8n-workflow';
|
|
|
|
import { executeObsidianCommand } from '../../shared/ObsidianApiClient';
|
|
import { buildArgs } from './argBuilders';
|
|
import { nodeDescription } from './description';
|
|
import { outputForResult } from './output';
|
|
|
|
export class ObsidianApi implements INodeType {
|
|
description: INodeTypeDescription = nodeDescription;
|
|
|
|
async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
|
|
const items = this.getInputData();
|
|
const returnData: INodeExecutionData[] = [];
|
|
|
|
for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
|
|
try {
|
|
const resource = this.getNodeParameter('resource', itemIndex) as string;
|
|
const operation = this.getNodeParameter('operation', itemIndex) as string;
|
|
const additionalFields = this.getNodeParameter('additionalFields', itemIndex, {}) as Record<string, unknown>;
|
|
const vault = String(additionalFields.vault || '');
|
|
const timeout = Number(additionalFields.timeout ?? 60);
|
|
const args = buildArgs(this, resource, operation, itemIndex, additionalFields);
|
|
const result = await executeObsidianCommand(this, itemIndex, args, { vault, timeout });
|
|
|
|
returnData.push(outputForResult(result, resource, operation, itemIndex));
|
|
} catch (error) {
|
|
if (this.continueOnFail()) {
|
|
const message = error instanceof Error ? error.message : String(error);
|
|
returnData.push({ json: { error: message }, pairedItem: { item: itemIndex } });
|
|
continue;
|
|
}
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
return [returnData];
|
|
}
|
|
}
|