Files
daniel156161 c34dab2cca
Build and Push Docker Container / build-and-push (push) Successful in 4m28s
feat(properties): prepare property commands before execution
- 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.
2026-06-24 14:31:42 +02:00

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];
}
}