mirror of
https://github.com/n8n-io/n8n.git
synced 2025-03-05 20:50:17 -08:00
Added Azure Cosmos DB node
This commit is contained in:
parent
9e65e853f4
commit
d28af0f96a
|
@ -58,6 +58,7 @@
|
||||||
"jest-mock": "^29.6.2",
|
"jest-mock": "^29.6.2",
|
||||||
"jest-mock-extended": "^3.0.4",
|
"jest-mock-extended": "^3.0.4",
|
||||||
"lefthook": "^1.7.15",
|
"lefthook": "^1.7.15",
|
||||||
|
"loader": "^2.1.1",
|
||||||
"nock": "^13.3.2",
|
"nock": "^13.3.2",
|
||||||
"nodemon": "^3.0.1",
|
"nodemon": "^3.0.1",
|
||||||
"npm-run-all2": "^7.0.2",
|
"npm-run-all2": "^7.0.2",
|
||||||
|
@ -69,7 +70,7 @@
|
||||||
"tsc-alias": "^1.8.10",
|
"tsc-alias": "^1.8.10",
|
||||||
"tsc-watch": "^6.2.0",
|
"tsc-watch": "^6.2.0",
|
||||||
"turbo": "2.3.3",
|
"turbo": "2.3.3",
|
||||||
"typescript": "*",
|
"typescript": "^5.6.2",
|
||||||
"zx": "^8.1.4"
|
"zx": "^8.1.4"
|
||||||
},
|
},
|
||||||
"pnpm": {
|
"pnpm": {
|
||||||
|
|
|
@ -0,0 +1,113 @@
|
||||||
|
import {
|
||||||
|
ApplicationError,
|
||||||
|
type ICredentialDataDecryptedObject,
|
||||||
|
type ICredentialType,
|
||||||
|
type IHttpRequestOptions,
|
||||||
|
type INodeProperties,
|
||||||
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
|
import { getAuthorizationTokenUsingMasterKey } from '../nodes/Microsoft/AzureCosmosDB/GenericFunctions';
|
||||||
|
|
||||||
|
export class AzureCosmosDbSharedKeyApi implements ICredentialType {
|
||||||
|
name = 'azureCosmosDbSharedKeyApi';
|
||||||
|
|
||||||
|
displayName = 'Azure Cosmos DB API';
|
||||||
|
|
||||||
|
documentationUrl = 'azureCosmosDb';
|
||||||
|
|
||||||
|
properties: INodeProperties[] = [
|
||||||
|
{
|
||||||
|
displayName: 'Database',
|
||||||
|
name: 'databaseAccount',
|
||||||
|
description: 'Database account',
|
||||||
|
type: 'string',
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Key',
|
||||||
|
name: 'key',
|
||||||
|
description: 'Account key',
|
||||||
|
type: 'string',
|
||||||
|
typeOptions: {
|
||||||
|
password: true,
|
||||||
|
},
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
async authenticate(
|
||||||
|
credentials: ICredentialDataDecryptedObject,
|
||||||
|
requestOptions: IHttpRequestOptions,
|
||||||
|
): Promise<IHttpRequestOptions> {
|
||||||
|
if (requestOptions.qs) {
|
||||||
|
for (const [key, value] of Object.entries(requestOptions.qs)) {
|
||||||
|
if (value === undefined) {
|
||||||
|
delete requestOptions.qs[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requestOptions.headers ??= {};
|
||||||
|
const date = new Date().toUTCString();
|
||||||
|
requestOptions.headers = {
|
||||||
|
...requestOptions.headers,
|
||||||
|
'x-ms-date': date,
|
||||||
|
'x-ms-version': '2020-04-08',
|
||||||
|
};
|
||||||
|
|
||||||
|
if (credentials.sessionToken) {
|
||||||
|
requestOptions.headers['x-ms-session-token'] = credentials.sessionToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
let resourceType = '';
|
||||||
|
let resourceLink = '';
|
||||||
|
if (requestOptions.body && typeof requestOptions.body === 'object') {
|
||||||
|
const isCollectionRequest = 'colls' in requestOptions.body;
|
||||||
|
const isDocumentRequest = 'docs' in requestOptions.body;
|
||||||
|
|
||||||
|
if (isCollectionRequest) {
|
||||||
|
resourceType = 'dbs';
|
||||||
|
resourceLink = `dbs/${credentials.database}/colls`;
|
||||||
|
} else if (isDocumentRequest) {
|
||||||
|
resourceType = 'colls';
|
||||||
|
const collId = requestOptions.qs?.collId || '';
|
||||||
|
if (!collId) {
|
||||||
|
throw new ApplicationError('Collection ID (collId) is required for document requests.');
|
||||||
|
}
|
||||||
|
resourceLink = `dbs/${credentials.database}/colls/${collId}/docs`;
|
||||||
|
}
|
||||||
|
} else if (requestOptions.qs && typeof requestOptions.qs === 'object') {
|
||||||
|
const queryType = requestOptions.qs.queryType;
|
||||||
|
|
||||||
|
if (queryType === 'colls') {
|
||||||
|
resourceType = 'dbs';
|
||||||
|
resourceLink = `dbs/${credentials.database}/colls`;
|
||||||
|
} else if (queryType === 'docs') {
|
||||||
|
resourceType = 'colls';
|
||||||
|
const collId = requestOptions.qs.collId || '';
|
||||||
|
if (!collId) {
|
||||||
|
throw new ApplicationError('Collection ID (collId) is required for document queries.');
|
||||||
|
}
|
||||||
|
resourceLink = `dbs/${credentials.database}/colls/${collId}/docs`;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new ApplicationError(
|
||||||
|
'Invalid requestOptions: Either body or query string (qs) is required.',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (requestOptions.method) {
|
||||||
|
const authToken = getAuthorizationTokenUsingMasterKey(
|
||||||
|
requestOptions.method,
|
||||||
|
resourceType,
|
||||||
|
resourceLink,
|
||||||
|
date,
|
||||||
|
credentials.key as string,
|
||||||
|
);
|
||||||
|
|
||||||
|
requestOptions.headers.authorization = authToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
return requestOptions;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,84 @@
|
||||||
|
import type { INodeType, INodeTypeDescription } from 'n8n-workflow';
|
||||||
|
import { NodeConnectionType } from 'n8n-workflow';
|
||||||
|
|
||||||
|
import { containerFields, containerOperations } from './descriptions/ContainerDescription';
|
||||||
|
import { itemFields, itemOperations } from '../../Aws/DynamoDB/ItemDescription';
|
||||||
|
|
||||||
|
export class AzureCosmosDb implements INodeType {
|
||||||
|
description: INodeTypeDescription = {
|
||||||
|
displayName: 'Azure Cosmos DB',
|
||||||
|
name: 'azureCosmosDb',
|
||||||
|
icon: {
|
||||||
|
light: 'file:CosmosDB.svg',
|
||||||
|
dark: 'file:CosmosDB.svg',
|
||||||
|
},
|
||||||
|
group: ['transform'],
|
||||||
|
version: 1,
|
||||||
|
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
||||||
|
description: 'Interact with Azure Cosmos DB API',
|
||||||
|
defaults: {
|
||||||
|
name: 'Azure Cosmos Db',
|
||||||
|
},
|
||||||
|
inputs: [NodeConnectionType.Main],
|
||||||
|
outputs: [NodeConnectionType.Main],
|
||||||
|
credentials: [
|
||||||
|
{
|
||||||
|
name: 'azureCosmosDbSharedKeyApi',
|
||||||
|
required: true,
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
authentication: ['sharedKey'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
requestDefaults: {
|
||||||
|
baseURL: '=https://{$credentials.databaseAccount}.documents.azure.com',
|
||||||
|
headers: {
|
||||||
|
Accept: 'application/json',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
properties: [
|
||||||
|
{
|
||||||
|
displayName: 'Authentication',
|
||||||
|
name: 'authentication',
|
||||||
|
type: 'options',
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
name: 'Shared Key',
|
||||||
|
value: 'sharedKey',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
default: 'sharedKey',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Resource',
|
||||||
|
name: 'resource',
|
||||||
|
type: 'options',
|
||||||
|
noDataExpression: true,
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
name: 'Container',
|
||||||
|
value: 'container',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Item',
|
||||||
|
value: 'item',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
default: 'container',
|
||||||
|
},
|
||||||
|
...itemFields,
|
||||||
|
...itemOperations,
|
||||||
|
...containerOperations,
|
||||||
|
...containerFields,
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
methods = {
|
||||||
|
listSearch: {
|
||||||
|
// searchCollections,
|
||||||
|
// searchDatabases,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,212 @@
|
||||||
|
import * as crypto from 'crypto';
|
||||||
|
import type {
|
||||||
|
IDataObject,
|
||||||
|
IHttpRequestOptions,
|
||||||
|
ILoadOptionsFunctions,
|
||||||
|
INodeListSearchItems,
|
||||||
|
INodeListSearchResult,
|
||||||
|
} from 'n8n-workflow';
|
||||||
|
import { ApplicationError } from 'n8n-workflow';
|
||||||
|
import * as querystring from 'querystring';
|
||||||
|
|
||||||
|
export const HeaderConstants = {
|
||||||
|
// Required
|
||||||
|
AUTHORIZATION: 'Authorization',
|
||||||
|
CONTENT_TYPE: 'Content-Type',
|
||||||
|
X_MS_DATE: 'x-ms-date',
|
||||||
|
X_MS_VERSION: 'x-ms-version',
|
||||||
|
|
||||||
|
//Required - for session consistency only
|
||||||
|
X_MS_SESSION_TOKEN: 'x-ms-session-token',
|
||||||
|
|
||||||
|
// Optional
|
||||||
|
IF_MATCH: 'If-Match',
|
||||||
|
IF_NONE_MATCH: 'If-None-Match',
|
||||||
|
IF_MODIFIED_SINCE: 'If-Modified-Since',
|
||||||
|
USER_AGENT: 'User-Agent',
|
||||||
|
X_MS_ACTIVITY_ID: 'x-ms-activity-id',
|
||||||
|
X_MS_CONSISTENCY_LEVEL: 'x-ms-consistency-level',
|
||||||
|
X_MS_CONTINUATION: 'x-ms-continuation',
|
||||||
|
X_MS_MAX_ITEM_COUNT: 'x-ms-max-item-count',
|
||||||
|
X_MS_DOCUMENTDB_PARTITIONKEY: 'x-ms-documentdb-partitionkey',
|
||||||
|
X_MS_DOCUMENTDB_QUERY_ENABLECROSSPARTITION: 'x-ms-documentdb-query-enablecrosspartition',
|
||||||
|
A_IM: 'A-IM',
|
||||||
|
X_MS_DOCUMENTDB_PARTITIONKEYRANGEID: 'x-ms-documentdb-partitionkeyrangeid',
|
||||||
|
X_MS_COSMOS_ALLOW_TENTATIVE_WRITES: 'x-ms-cosmos-allow-tentative-writes',
|
||||||
|
|
||||||
|
PREFIX_FOR_STORAGE: 'x-ms-',
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getAuthorizationTokenUsingMasterKey(
|
||||||
|
verb: string,
|
||||||
|
resourceType: string,
|
||||||
|
resourceLink: string,
|
||||||
|
date: string,
|
||||||
|
masterKey: string,
|
||||||
|
): string {
|
||||||
|
const key = Buffer.from(masterKey, 'base64');
|
||||||
|
|
||||||
|
const payload =
|
||||||
|
`${verb.toLowerCase()}\n` +
|
||||||
|
`${resourceType.toLowerCase()}\n` +
|
||||||
|
`${resourceLink}\n` +
|
||||||
|
`${date.toLowerCase()}\n` +
|
||||||
|
'\n';
|
||||||
|
|
||||||
|
const hmacSha256 = crypto.createHmac('sha256', key);
|
||||||
|
const hashPayload = hmacSha256.update(payload, 'utf8').digest('base64');
|
||||||
|
|
||||||
|
const authorizationString = querystring.escape(`type=master&ver=1.0&sig=${hashPayload}`);
|
||||||
|
|
||||||
|
return authorizationString;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function azureCosmosDbRequest(
|
||||||
|
this: ILoadOptionsFunctions,
|
||||||
|
opts: IHttpRequestOptions,
|
||||||
|
): Promise<IDataObject> {
|
||||||
|
const credentials = await this.getCredentials('azureCosmosDb');
|
||||||
|
const databaseAccount = credentials?.database;
|
||||||
|
|
||||||
|
if (!databaseAccount) {
|
||||||
|
throw new ApplicationError('Database account not found in credentials!', { level: 'error' });
|
||||||
|
}
|
||||||
|
|
||||||
|
const requestOptions: IHttpRequestOptions = {
|
||||||
|
...opts,
|
||||||
|
baseURL: `https://${databaseAccount}.documents.azure.com`,
|
||||||
|
json: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
const errorMapping: Record<number, Record<string, string>> = {
|
||||||
|
403: {
|
||||||
|
'The security token included in the request is invalid.':
|
||||||
|
'The Cosmos DB credentials are not valid!',
|
||||||
|
'The request signature we calculated does not match the signature you provided':
|
||||||
|
'The Cosmos DB credentials are not valid!',
|
||||||
|
},
|
||||||
|
404: {
|
||||||
|
'The specified resource does not exist.': 'The requested resource was not found!',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
return (await this.helpers.requestWithAuthentication.call(
|
||||||
|
this,
|
||||||
|
'azureCosmosDb',
|
||||||
|
requestOptions,
|
||||||
|
)) as IDataObject;
|
||||||
|
} catch (error) {
|
||||||
|
const statusCode = (error.statusCode || error.cause?.statusCode) as number;
|
||||||
|
let errorMessage = (error.response?.body?.message ||
|
||||||
|
error.response?.body?.Message ||
|
||||||
|
error.message) as string;
|
||||||
|
|
||||||
|
if (statusCode in errorMapping && errorMessage in errorMapping[statusCode]) {
|
||||||
|
throw new ApplicationError(errorMapping[statusCode][errorMessage], {
|
||||||
|
level: 'error',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (error.cause?.error) {
|
||||||
|
try {
|
||||||
|
errorMessage = error.cause?.error?.message as string;
|
||||||
|
} catch (ex) {
|
||||||
|
throw new ApplicationError(
|
||||||
|
`Failed to extract error details: ${ex.message || 'Unknown error'}`,
|
||||||
|
{ level: 'error' },
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new ApplicationError(`Cosmos DB error response [${statusCode}]: ${errorMessage}`, {
|
||||||
|
level: 'error',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function searchCollections(
|
||||||
|
this: ILoadOptionsFunctions,
|
||||||
|
filter?: string,
|
||||||
|
paginationToken?: string,
|
||||||
|
): Promise<INodeListSearchResult> {
|
||||||
|
const dbId = this.getNodeParameter('dbId') as string;
|
||||||
|
if (!dbId) {
|
||||||
|
throw new ApplicationError('Database ID is required');
|
||||||
|
}
|
||||||
|
|
||||||
|
const credentials = await this.getCredentials('azureCosmosDb');
|
||||||
|
const databaseAccount = credentials?.databaseAccount;
|
||||||
|
|
||||||
|
if (!databaseAccount) {
|
||||||
|
throw new ApplicationError('Database account not found in credentials!', { level: 'error' });
|
||||||
|
}
|
||||||
|
|
||||||
|
const opts: IHttpRequestOptions = {
|
||||||
|
method: 'GET',
|
||||||
|
url: `/dbs/${dbId}/colls`,
|
||||||
|
baseURL: `https://${databaseAccount}.documents.azure.com`,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const responseData: IDataObject = await azureCosmosDbRequest.call(this, opts);
|
||||||
|
|
||||||
|
const responseBody = responseData as {
|
||||||
|
Collections: IDataObject[];
|
||||||
|
};
|
||||||
|
const collections = responseBody.Collections;
|
||||||
|
|
||||||
|
if (!collections) {
|
||||||
|
return { results: [] };
|
||||||
|
}
|
||||||
|
|
||||||
|
const results: INodeListSearchItems[] = collections
|
||||||
|
.map((collection) => ({
|
||||||
|
name: String(collection.id),
|
||||||
|
value: String(collection.id),
|
||||||
|
}))
|
||||||
|
.filter((collection) => !filter || collection.name.includes(filter))
|
||||||
|
.sort((a, b) => a.name.localeCompare(b.name));
|
||||||
|
|
||||||
|
return {
|
||||||
|
results,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function searchDatabases(
|
||||||
|
this: ILoadOptionsFunctions,
|
||||||
|
filter?: string,
|
||||||
|
): Promise<INodeListSearchResult> {
|
||||||
|
const opts: IHttpRequestOptions = {
|
||||||
|
method: 'GET',
|
||||||
|
url: '/dbs',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const responseData: IDataObject = await azureCosmosDbRequest.call(this, opts);
|
||||||
|
|
||||||
|
const responseBody = responseData as {
|
||||||
|
Databases: IDataObject[];
|
||||||
|
};
|
||||||
|
const databases = responseBody.Databases;
|
||||||
|
|
||||||
|
if (!databases) {
|
||||||
|
return { results: [] };
|
||||||
|
}
|
||||||
|
|
||||||
|
const results: INodeListSearchItems[] = databases
|
||||||
|
.map((database) => ({
|
||||||
|
name: String(database.id),
|
||||||
|
value: String(database.id),
|
||||||
|
}))
|
||||||
|
.filter((database) => !filter || database.name.includes(filter))
|
||||||
|
.sort((a, b) => a.name.localeCompare(b.name));
|
||||||
|
|
||||||
|
return {
|
||||||
|
results,
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,429 @@
|
||||||
|
import type { INodeProperties } from 'n8n-workflow';
|
||||||
|
|
||||||
|
export const containerOperations: INodeProperties[] = [
|
||||||
|
{
|
||||||
|
displayName: 'Operation',
|
||||||
|
name: 'operation',
|
||||||
|
type: 'options',
|
||||||
|
noDataExpression: true,
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['container'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
name: 'Create',
|
||||||
|
value: 'create',
|
||||||
|
description: 'Create a container',
|
||||||
|
routing: {
|
||||||
|
request: {
|
||||||
|
ignoreHttpStatusErrors: true,
|
||||||
|
method: 'POST',
|
||||||
|
url: '=/dbs/{{ $parameter["dbId"] }}/colls',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
action: 'Create container',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Delete',
|
||||||
|
value: 'delete',
|
||||||
|
description: 'Delete a container',
|
||||||
|
routing: {
|
||||||
|
request: {
|
||||||
|
ignoreHttpStatusErrors: true,
|
||||||
|
method: 'DELETE',
|
||||||
|
url: '=/dbs/{{ $parameter["dbId"] }}/colls/{{ $parameter["collId"] }}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
action: 'Delete container',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Get',
|
||||||
|
value: 'get',
|
||||||
|
description: 'Retrieve a container',
|
||||||
|
routing: {
|
||||||
|
request: {
|
||||||
|
ignoreHttpStatusErrors: true,
|
||||||
|
method: 'GET',
|
||||||
|
url: '=/dbs/{{ $parameter["dbId"] }}/colls/{{ $parameter["collId"] }}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
action: 'Get item',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Get Many',
|
||||||
|
value: 'getAll',
|
||||||
|
description: 'Retrieve a list of containers',
|
||||||
|
routing: {
|
||||||
|
request: {
|
||||||
|
ignoreHttpStatusErrors: true,
|
||||||
|
method: 'GET',
|
||||||
|
url: '=/dbs/{{ $parameter["dbId"] }}/colls',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
action: 'Get many containers',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
default: 'getAll',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export const createFields: INodeProperties[] = [
|
||||||
|
{
|
||||||
|
displayName: 'Database ID',
|
||||||
|
name: 'dbId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the database you want to use',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['container'],
|
||||||
|
operation: ['create'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchDatabases',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By Name',
|
||||||
|
name: 'databaseName',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the database name',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The database name must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. UsersDB',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'ID',
|
||||||
|
name: 'id',
|
||||||
|
type: 'string',
|
||||||
|
default: '',
|
||||||
|
placeholder: 'e.g. AndersenFamily',
|
||||||
|
description: "Container's ID",
|
||||||
|
required: true,
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['container'],
|
||||||
|
operation: ['create'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
routing: {
|
||||||
|
send: {
|
||||||
|
type: 'body',
|
||||||
|
property: 'id',
|
||||||
|
value: '={{$value}}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Partition Key',
|
||||||
|
name: 'partitionKey',
|
||||||
|
type: 'json',
|
||||||
|
default: '{}',
|
||||||
|
placeholder: '"paths": ["/AccountNumber"],"kind": "Hash", "Version": 2',
|
||||||
|
description: 'User-defined JSON object representing the partition key',
|
||||||
|
required: true,
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['container'],
|
||||||
|
operation: ['create'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
routing: {
|
||||||
|
send: {
|
||||||
|
type: 'body',
|
||||||
|
property: 'partitionKey',
|
||||||
|
value: '={{$value}}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Additional Keys',
|
||||||
|
name: 'additionalKeys',
|
||||||
|
type: 'fixedCollection',
|
||||||
|
default: {},
|
||||||
|
placeholder: '"paths": ["/AccountNumber"],"kind": "Hash", "Version": 2',
|
||||||
|
description: 'User-defined JSON object representing the document properties',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['container'],
|
||||||
|
operation: ['create'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
displayName: 'Indexing Policy',
|
||||||
|
name: 'indexingPolicy',
|
||||||
|
type: 'json',
|
||||||
|
default: '{}',
|
||||||
|
placeholder:
|
||||||
|
'"automatic": true, "indexingMode": "Consistent", "includedPaths": [{ "path": "/*", "indexes": [{ "dataType": "String", "precision": -1, "kind": "Range" }]}]',
|
||||||
|
description: 'This value is used to configure indexing policy',
|
||||||
|
routing: {
|
||||||
|
send: {
|
||||||
|
type: 'body',
|
||||||
|
property: 'indexingPolicy',
|
||||||
|
value: '={{$value}}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export const getFields: INodeProperties[] = [
|
||||||
|
{
|
||||||
|
displayName: 'Database ID',
|
||||||
|
name: 'dbId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the database you want to use',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['container'],
|
||||||
|
operation: ['get'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchDatabases',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By Name',
|
||||||
|
name: 'databaseName',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the database name',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The database name must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. UsersDB',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Container ID',
|
||||||
|
name: 'collId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the container you want to retrieve',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['container'],
|
||||||
|
operation: ['get'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchCollections',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By ID',
|
||||||
|
name: 'containerId',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the container ID',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The container ID must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. AndersenFamily',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export const getAllFields: INodeProperties[] = [
|
||||||
|
{
|
||||||
|
displayName: 'Database ID',
|
||||||
|
name: 'dbId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the database you want to use',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['container'],
|
||||||
|
operation: ['getAll'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchDatabases',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By Name',
|
||||||
|
name: 'databaseName',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the database name',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The database name must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. UsersDB',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export const deleteFields: INodeProperties[] = [
|
||||||
|
{
|
||||||
|
displayName: 'Database ID',
|
||||||
|
name: 'dbId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the database you want to use',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['container'],
|
||||||
|
operation: ['delete'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchDatabases',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By Name',
|
||||||
|
name: 'databaseName',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the database name',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The database name must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. UsersDB',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Container ID',
|
||||||
|
name: 'collId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the container you want to delete',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['container'],
|
||||||
|
operation: ['delete'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchCollections',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By ID',
|
||||||
|
name: 'containerId',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the container ID',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The container ID must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. AndersenFamily',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export const containerFields: INodeProperties[] = [
|
||||||
|
...createFields,
|
||||||
|
...deleteFields,
|
||||||
|
...getFields,
|
||||||
|
...getAllFields,
|
||||||
|
];
|
|
@ -0,0 +1,807 @@
|
||||||
|
import type { INodeProperties } from 'n8n-workflow';
|
||||||
|
|
||||||
|
export const itemOperations: INodeProperties[] = [
|
||||||
|
{
|
||||||
|
displayName: 'Operation',
|
||||||
|
name: 'operation',
|
||||||
|
type: 'options',
|
||||||
|
noDataExpression: true,
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
name: 'Create',
|
||||||
|
value: 'create',
|
||||||
|
description: 'Create an item',
|
||||||
|
routing: {
|
||||||
|
request: {
|
||||||
|
ignoreHttpStatusErrors: true,
|
||||||
|
method: 'POST',
|
||||||
|
url: '=/dbs/{{ $parameter["dbId"] }}/colls/{{ $parameter["collId"] }}/item',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
action: 'Create item',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Delete',
|
||||||
|
value: 'delete',
|
||||||
|
description: 'Delete an item',
|
||||||
|
routing: {
|
||||||
|
request: {
|
||||||
|
ignoreHttpStatusErrors: true,
|
||||||
|
method: 'DELETE',
|
||||||
|
url: '=/dbs/{{ $parameter["dbId"] }}/colls/{{ $parameter["collId"] }}/item/{{ $parameter["id"] }}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
action: 'Delete item',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Get',
|
||||||
|
value: 'get',
|
||||||
|
description: 'Retrieve an item',
|
||||||
|
routing: {
|
||||||
|
request: {
|
||||||
|
ignoreHttpStatusErrors: true,
|
||||||
|
method: 'GET',
|
||||||
|
url: '=/dbs/{{ $parameter["dbId"] }}/colls/{{ $parameter["collId"] }}/item/{{ $parameter["id"] }}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
action: 'Get item',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Get Many',
|
||||||
|
value: 'getAll',
|
||||||
|
description: 'Retrieve a list of items',
|
||||||
|
routing: {
|
||||||
|
request: {
|
||||||
|
ignoreHttpStatusErrors: true,
|
||||||
|
method: 'GET',
|
||||||
|
url: '=/dbs/{{ $parameter["dbId"] }}/colls/{{ $parameter["collId"] }}/docs',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
action: 'Get many items',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Query',
|
||||||
|
value: 'query',
|
||||||
|
description: 'Query items',
|
||||||
|
routing: {
|
||||||
|
request: {
|
||||||
|
ignoreHttpStatusErrors: true,
|
||||||
|
method: 'POST',
|
||||||
|
url: '=/dbs/{{ $parameter["dbId"] }}/colls/{{ $parameter["collId"] }}/item',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
action: 'Query items',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Update',
|
||||||
|
value: 'update',
|
||||||
|
description: 'Update an item',
|
||||||
|
routing: {
|
||||||
|
request: {
|
||||||
|
ignoreHttpStatusErrors: true,
|
||||||
|
method: 'PATCH',
|
||||||
|
url: '=/dbs/{{ $parameter["dbId"] }}/colls/{{ $parameter["collId"] }}/item/{{ $parameter["id"] }}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
action: 'Create item',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
default: 'getAll',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export const createFields: INodeProperties[] = [
|
||||||
|
{
|
||||||
|
displayName: 'Database ID',
|
||||||
|
name: 'dbId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the database you want to use',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['create'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchDatabases',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By Name',
|
||||||
|
name: 'databaseName',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the database name',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The database name must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. UsersDB',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Collection ID',
|
||||||
|
name: 'collId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the collection you want to use',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['create'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchCollections',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By Name',
|
||||||
|
name: 'collectionName',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the collection name',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The collection name must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. UsersCollection',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'ID',
|
||||||
|
name: 'id',
|
||||||
|
type: 'string',
|
||||||
|
default: '',
|
||||||
|
placeholder: 'e.g. AndersenFamily',
|
||||||
|
description: "Item's ID",
|
||||||
|
required: true,
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['create'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
routing: {
|
||||||
|
send: {
|
||||||
|
type: 'body',
|
||||||
|
property: 'id',
|
||||||
|
value: '={{$value}}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Custom Properties',
|
||||||
|
name: 'customProperties',
|
||||||
|
type: 'json',
|
||||||
|
default: '{}',
|
||||||
|
placeholder: '{ "LastName": "Andersen", "Address": { "State": "WA", "City": "Seattle" } }',
|
||||||
|
description: 'User-defined JSON object representing the document properties',
|
||||||
|
required: true,
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['create'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
routing: {
|
||||||
|
send: {
|
||||||
|
type: 'body',
|
||||||
|
property: '',
|
||||||
|
value: '={{$value}}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export const deleteFields: INodeProperties[] = [
|
||||||
|
{
|
||||||
|
displayName: 'Database ID',
|
||||||
|
name: 'dbId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the database you want to use',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['delete'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchDatabases',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By Name',
|
||||||
|
name: 'databaseName',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the database name',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The database name must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. UsersDB',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Collection ID',
|
||||||
|
name: 'collId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the collection you want to use',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['delete'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchCollections',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By Name',
|
||||||
|
name: 'collectionName',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the collection name',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The collection name must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. UsersCollection',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'ID',
|
||||||
|
name: 'id',
|
||||||
|
type: 'string',
|
||||||
|
default: '',
|
||||||
|
placeholder: 'e.g. AndersenFamily',
|
||||||
|
description: 'Unique ID for the item',
|
||||||
|
required: true,
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['delete'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export const getFields: INodeProperties[] = [
|
||||||
|
{
|
||||||
|
displayName: 'Database ID',
|
||||||
|
name: 'dbId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the database you want to use',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['get'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchDatabases',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By Name',
|
||||||
|
name: 'databaseName',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the database name',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The database name must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. UsersDB',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Collection ID',
|
||||||
|
name: 'collId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the collection you want to use',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['get'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchCollections',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By Name',
|
||||||
|
name: 'collectionName',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the collection name',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The collection name must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. UsersCollection',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'ID',
|
||||||
|
name: 'id',
|
||||||
|
type: 'string',
|
||||||
|
default: '',
|
||||||
|
placeholder: 'e.g. AndersenFamily',
|
||||||
|
description: "Item's ID",
|
||||||
|
required: true,
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['get'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
routing: {
|
||||||
|
send: {
|
||||||
|
type: 'body',
|
||||||
|
property: 'id',
|
||||||
|
value: '={{$value}}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export const getAllFields: INodeProperties[] = [
|
||||||
|
{
|
||||||
|
displayName: 'Database ID',
|
||||||
|
name: 'dbId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the database you want to use',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['getAll'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchDatabases',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By Name',
|
||||||
|
name: 'databaseName',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the database name',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The database name must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. UsersDB',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Collection ID',
|
||||||
|
name: 'collId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the collection you want to use',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['getAll'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchCollections',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By Name',
|
||||||
|
name: 'collectionName',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the collection name',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The collection name must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. UsersCollection',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
//TO-DO-check-fields
|
||||||
|
export const queryFields: INodeProperties[] = [
|
||||||
|
{
|
||||||
|
displayName: 'Database ID',
|
||||||
|
name: 'dbId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the database you want to use',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['query'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchDatabases',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By Name',
|
||||||
|
name: 'databaseName',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the database name',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The database name must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. UsersDB',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Collection ID',
|
||||||
|
name: 'collId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the collection you want to use',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['query'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchCollections',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By Name',
|
||||||
|
name: 'collectionName',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the collection name',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The collection name must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. UsersCollection',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'ID',
|
||||||
|
name: 'id',
|
||||||
|
type: 'string',
|
||||||
|
default: '',
|
||||||
|
placeholder: 'e.g. AndersenFamily',
|
||||||
|
description: "Item's ID",
|
||||||
|
required: true,
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['query'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
routing: {
|
||||||
|
send: {
|
||||||
|
type: 'body',
|
||||||
|
property: 'id',
|
||||||
|
value: '={{$value}}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export const updateFields: INodeProperties[] = [
|
||||||
|
{
|
||||||
|
displayName: 'Database ID',
|
||||||
|
name: 'dbId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the database you want to use',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['update'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchDatabases',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By Name',
|
||||||
|
name: 'databaseName',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the database name',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The database name must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. UsersDB',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Collection ID',
|
||||||
|
name: 'collId',
|
||||||
|
type: 'resourceLocator',
|
||||||
|
required: true,
|
||||||
|
default: {
|
||||||
|
mode: 'list',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
description: 'Select the collection you want to use',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['update'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
modes: [
|
||||||
|
{
|
||||||
|
displayName: 'From list',
|
||||||
|
name: 'list',
|
||||||
|
type: 'list',
|
||||||
|
typeOptions: {
|
||||||
|
searchListMethod: 'searchCollections',
|
||||||
|
searchable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'By Name',
|
||||||
|
name: 'collectionName',
|
||||||
|
type: 'string',
|
||||||
|
hint: 'Enter the collection name',
|
||||||
|
validation: [
|
||||||
|
{
|
||||||
|
type: 'regex',
|
||||||
|
properties: {
|
||||||
|
regex: '^[\\w+=,.@-]+$',
|
||||||
|
errorMessage: 'The collection name must follow the allowed pattern.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
placeholder: 'e.g. UsersCollection',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: 'ID',
|
||||||
|
name: 'id',
|
||||||
|
type: 'string',
|
||||||
|
default: '',
|
||||||
|
placeholder: 'e.g. AndersenFamily',
|
||||||
|
description: 'Unique ID for the document',
|
||||||
|
required: true,
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['update'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
//TO-DO-check-this
|
||||||
|
{
|
||||||
|
displayName: 'Operations',
|
||||||
|
name: 'operations',
|
||||||
|
type: 'resourceMapper',
|
||||||
|
default: {
|
||||||
|
mappingMode: 'defineBelow',
|
||||||
|
value: null,
|
||||||
|
},
|
||||||
|
required: true,
|
||||||
|
typeOptions: {
|
||||||
|
resourceMapper: {
|
||||||
|
resourceMapperMethod: 'getMappingColumns',
|
||||||
|
mode: 'update',
|
||||||
|
fieldWords: {
|
||||||
|
singular: 'operation',
|
||||||
|
plural: 'operations',
|
||||||
|
},
|
||||||
|
addAllFields: true,
|
||||||
|
multiKeyMatch: false,
|
||||||
|
supportAutoMap: true,
|
||||||
|
matchingFieldsLabels: {
|
||||||
|
title: 'Custom Matching Operations',
|
||||||
|
description: 'Define the operations to perform, such as "set", "delete", or "add".',
|
||||||
|
hint: 'Map input data to the expected structure of the operations array.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
description: 'Define the operations to perform, such as setting or updating document fields',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['item'],
|
||||||
|
operation: ['update'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
//TO-DO-presend-function
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export const itemFields: INodeProperties[] = [
|
||||||
|
...createFields,
|
||||||
|
...deleteFields,
|
||||||
|
...getFields,
|
||||||
|
...getAllFields,
|
||||||
|
...queryFields,
|
||||||
|
...updateFields,
|
||||||
|
];
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "n8n-nodes-base",
|
"name": "n8n-nodes-base",
|
||||||
"version": "1.74.0",
|
"version": "1.75.0",
|
||||||
"description": "Base nodes of n8n",
|
"description": "Base nodes of n8n",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -39,6 +39,7 @@
|
||||||
"dist/credentials/AutomizyApi.credentials.js",
|
"dist/credentials/AutomizyApi.credentials.js",
|
||||||
"dist/credentials/AutopilotApi.credentials.js",
|
"dist/credentials/AutopilotApi.credentials.js",
|
||||||
"dist/credentials/Aws.credentials.js",
|
"dist/credentials/Aws.credentials.js",
|
||||||
|
"dist/credentials/AzureCosmosDbSharedKeyApi.credentials.js",
|
||||||
"dist/credentials/BambooHrApi.credentials.js",
|
"dist/credentials/BambooHrApi.credentials.js",
|
||||||
"dist/credentials/BannerbearApi.credentials.js",
|
"dist/credentials/BannerbearApi.credentials.js",
|
||||||
"dist/credentials/BaserowApi.credentials.js",
|
"dist/credentials/BaserowApi.credentials.js",
|
||||||
|
@ -625,6 +626,7 @@
|
||||||
"dist/nodes/Merge/Merge.node.js",
|
"dist/nodes/Merge/Merge.node.js",
|
||||||
"dist/nodes/MessageBird/MessageBird.node.js",
|
"dist/nodes/MessageBird/MessageBird.node.js",
|
||||||
"dist/nodes/Metabase/Metabase.node.js",
|
"dist/nodes/Metabase/Metabase.node.js",
|
||||||
|
"dist/nodes/Microsoft/AzureCosmosDB/AzureCosmosDb.node.js",
|
||||||
"dist/nodes/Microsoft/Dynamics/MicrosoftDynamicsCrm.node.js",
|
"dist/nodes/Microsoft/Dynamics/MicrosoftDynamicsCrm.node.js",
|
||||||
"dist/nodes/Microsoft/Entra/MicrosoftEntra.node.js",
|
"dist/nodes/Microsoft/Entra/MicrosoftEntra.node.js",
|
||||||
"dist/nodes/Microsoft/Excel/MicrosoftExcel.node.js",
|
"dist/nodes/Microsoft/Excel/MicrosoftExcel.node.js",
|
||||||
|
|
|
@ -180,6 +180,9 @@ importers:
|
||||||
lefthook:
|
lefthook:
|
||||||
specifier: ^1.7.15
|
specifier: ^1.7.15
|
||||||
version: 1.7.15
|
version: 1.7.15
|
||||||
|
loader:
|
||||||
|
specifier: ^2.1.1
|
||||||
|
version: 2.1.1
|
||||||
nock:
|
nock:
|
||||||
specifier: ^13.3.2
|
specifier: ^13.3.2
|
||||||
version: 13.3.2
|
version: 13.3.2
|
||||||
|
@ -440,7 +443,7 @@ importers:
|
||||||
version: 3.666.0(@aws-sdk/client-sts@3.666.0)
|
version: 3.666.0(@aws-sdk/client-sts@3.666.0)
|
||||||
'@getzep/zep-cloud':
|
'@getzep/zep-cloud':
|
||||||
specifier: 1.0.12
|
specifier: 1.0.12
|
||||||
version: 1.0.12(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(langchain@0.3.6(e4rnrwhosnp2xiru36mqgdy2bu))
|
version: 1.0.12(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(langchain@0.3.6(4axcxpjbcq5bce7ff6ajxrpp4i))
|
||||||
'@getzep/zep-js':
|
'@getzep/zep-js':
|
||||||
specifier: 0.9.0
|
specifier: 0.9.0
|
||||||
version: 0.9.0
|
version: 0.9.0
|
||||||
|
@ -467,7 +470,7 @@ importers:
|
||||||
version: 0.3.1(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)
|
version: 0.3.1(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)
|
||||||
'@langchain/community':
|
'@langchain/community':
|
||||||
specifier: 0.3.15
|
specifier: 0.3.15
|
||||||
version: 0.3.15(vc5hvyy27o4cmm4jplsptc2fqm)
|
version: 0.3.15(v4qhcw25bevfr6xzz4fnsvjiqe)
|
||||||
'@langchain/core':
|
'@langchain/core':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8))
|
version: 0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8))
|
||||||
|
@ -554,7 +557,7 @@ importers:
|
||||||
version: 23.0.1
|
version: 23.0.1
|
||||||
langchain:
|
langchain:
|
||||||
specifier: 0.3.6
|
specifier: 0.3.6
|
||||||
version: 0.3.6(e4rnrwhosnp2xiru36mqgdy2bu)
|
version: 0.3.6(4axcxpjbcq5bce7ff6ajxrpp4i)
|
||||||
lodash:
|
lodash:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 4.17.21
|
version: 4.17.21
|
||||||
|
@ -9734,6 +9737,9 @@ packages:
|
||||||
enquirer:
|
enquirer:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
loader@2.1.1:
|
||||||
|
resolution: {integrity: sha512-Z6nHbyKiECMexVUmpIAVXp+f+8okRtfiMAQ9j0eTtImCghxSqQwrbeSiAyCYKBnfvRlgXLdQt0tPuaZmcBQzpw==}
|
||||||
|
|
||||||
local-pkg@0.5.0:
|
local-pkg@0.5.0:
|
||||||
resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
|
resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
|
@ -9788,6 +9794,7 @@ packages:
|
||||||
|
|
||||||
lodash.isequal@4.5.0:
|
lodash.isequal@4.5.0:
|
||||||
resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
|
resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
|
||||||
|
deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead.
|
||||||
|
|
||||||
lodash.isinteger@4.0.4:
|
lodash.isinteger@4.0.4:
|
||||||
resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==}
|
resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==}
|
||||||
|
@ -15764,7 +15771,7 @@ snapshots:
|
||||||
'@gar/promisify@1.1.3':
|
'@gar/promisify@1.1.3':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@getzep/zep-cloud@1.0.12(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(langchain@0.3.6(e4rnrwhosnp2xiru36mqgdy2bu))':
|
'@getzep/zep-cloud@1.0.12(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(langchain@0.3.6(4axcxpjbcq5bce7ff6ajxrpp4i))':
|
||||||
dependencies:
|
dependencies:
|
||||||
form-data: 4.0.0
|
form-data: 4.0.0
|
||||||
node-fetch: 2.7.0(encoding@0.1.13)
|
node-fetch: 2.7.0(encoding@0.1.13)
|
||||||
|
@ -15773,7 +15780,7 @@ snapshots:
|
||||||
zod: 3.23.8
|
zod: 3.23.8
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@langchain/core': 0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8))
|
'@langchain/core': 0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8))
|
||||||
langchain: 0.3.6(e4rnrwhosnp2xiru36mqgdy2bu)
|
langchain: 0.3.6(4axcxpjbcq5bce7ff6ajxrpp4i)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- encoding
|
- encoding
|
||||||
|
|
||||||
|
@ -16237,7 +16244,7 @@ snapshots:
|
||||||
- aws-crt
|
- aws-crt
|
||||||
- encoding
|
- encoding
|
||||||
|
|
||||||
'@langchain/community@0.3.15(vc5hvyy27o4cmm4jplsptc2fqm)':
|
'@langchain/community@0.3.15(v4qhcw25bevfr6xzz4fnsvjiqe)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@ibm-cloud/watsonx-ai': 1.1.2
|
'@ibm-cloud/watsonx-ai': 1.1.2
|
||||||
'@langchain/core': 0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8))
|
'@langchain/core': 0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8))
|
||||||
|
@ -16247,7 +16254,7 @@ snapshots:
|
||||||
flat: 5.0.2
|
flat: 5.0.2
|
||||||
ibm-cloud-sdk-core: 5.1.0
|
ibm-cloud-sdk-core: 5.1.0
|
||||||
js-yaml: 4.1.0
|
js-yaml: 4.1.0
|
||||||
langchain: 0.3.6(e4rnrwhosnp2xiru36mqgdy2bu)
|
langchain: 0.3.6(4axcxpjbcq5bce7ff6ajxrpp4i)
|
||||||
langsmith: 0.2.3(openai@4.73.1(encoding@0.1.13)(zod@3.23.8))
|
langsmith: 0.2.3(openai@4.73.1(encoding@0.1.13)(zod@3.23.8))
|
||||||
uuid: 10.0.0
|
uuid: 10.0.0
|
||||||
zod: 3.23.8
|
zod: 3.23.8
|
||||||
|
@ -16260,7 +16267,7 @@ snapshots:
|
||||||
'@aws-sdk/client-s3': 3.666.0
|
'@aws-sdk/client-s3': 3.666.0
|
||||||
'@aws-sdk/credential-provider-node': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0)
|
'@aws-sdk/credential-provider-node': 3.666.0(@aws-sdk/client-sso-oidc@3.666.0(@aws-sdk/client-sts@3.666.0))(@aws-sdk/client-sts@3.666.0)
|
||||||
'@azure/storage-blob': 12.18.0(encoding@0.1.13)
|
'@azure/storage-blob': 12.18.0(encoding@0.1.13)
|
||||||
'@getzep/zep-cloud': 1.0.12(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(langchain@0.3.6(e4rnrwhosnp2xiru36mqgdy2bu))
|
'@getzep/zep-cloud': 1.0.12(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)(langchain@0.3.6(4axcxpjbcq5bce7ff6ajxrpp4i))
|
||||||
'@getzep/zep-js': 0.9.0
|
'@getzep/zep-js': 0.9.0
|
||||||
'@google-ai/generativelanguage': 2.6.0(encoding@0.1.13)
|
'@google-ai/generativelanguage': 2.6.0(encoding@0.1.13)
|
||||||
'@google-cloud/storage': 7.12.1(encoding@0.1.13)
|
'@google-cloud/storage': 7.12.1(encoding@0.1.13)
|
||||||
|
@ -19553,14 +19560,6 @@ snapshots:
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- debug
|
- debug
|
||||||
|
|
||||||
axios@1.7.4(debug@4.3.7):
|
|
||||||
dependencies:
|
|
||||||
follow-redirects: 1.15.6(debug@4.3.7)
|
|
||||||
form-data: 4.0.0
|
|
||||||
proxy-from-env: 1.1.0
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- debug
|
|
||||||
|
|
||||||
axios@1.7.7:
|
axios@1.7.7:
|
||||||
dependencies:
|
dependencies:
|
||||||
follow-redirects: 1.15.6(debug@4.3.6)
|
follow-redirects: 1.15.6(debug@4.3.6)
|
||||||
|
@ -21284,7 +21283,7 @@ snapshots:
|
||||||
|
|
||||||
eslint-import-resolver-node@0.3.9:
|
eslint-import-resolver-node@0.3.9:
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 3.2.7(supports-color@5.5.0)
|
debug: 3.2.7(supports-color@8.1.1)
|
||||||
is-core-module: 2.13.1
|
is-core-module: 2.13.1
|
||||||
resolve: 1.22.8
|
resolve: 1.22.8
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
|
@ -21309,7 +21308,7 @@ snapshots:
|
||||||
|
|
||||||
eslint-module-utils@2.8.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0):
|
eslint-module-utils@2.8.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 3.2.7(supports-color@5.5.0)
|
debug: 3.2.7(supports-color@8.1.1)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.7.2)
|
'@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.7.2)
|
||||||
eslint: 8.57.0
|
eslint: 8.57.0
|
||||||
|
@ -21329,7 +21328,7 @@ snapshots:
|
||||||
array.prototype.findlastindex: 1.2.3
|
array.prototype.findlastindex: 1.2.3
|
||||||
array.prototype.flat: 1.3.2
|
array.prototype.flat: 1.3.2
|
||||||
array.prototype.flatmap: 1.3.2
|
array.prototype.flatmap: 1.3.2
|
||||||
debug: 3.2.7(supports-color@5.5.0)
|
debug: 3.2.7(supports-color@8.1.1)
|
||||||
doctrine: 2.1.0
|
doctrine: 2.1.0
|
||||||
eslint: 8.57.0
|
eslint: 8.57.0
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
|
@ -22108,7 +22107,7 @@ snapshots:
|
||||||
array-parallel: 0.1.3
|
array-parallel: 0.1.3
|
||||||
array-series: 0.1.5
|
array-series: 0.1.5
|
||||||
cross-spawn: 4.0.2
|
cross-spawn: 4.0.2
|
||||||
debug: 3.2.7(supports-color@5.5.0)
|
debug: 3.2.7(supports-color@8.1.1)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
@ -22414,7 +22413,7 @@ snapshots:
|
||||||
'@types/debug': 4.1.12
|
'@types/debug': 4.1.12
|
||||||
'@types/node': 18.16.16
|
'@types/node': 18.16.16
|
||||||
'@types/tough-cookie': 4.0.2
|
'@types/tough-cookie': 4.0.2
|
||||||
axios: 1.7.4(debug@4.3.7)
|
axios: 1.7.4
|
||||||
camelcase: 6.3.0
|
camelcase: 6.3.0
|
||||||
debug: 4.3.7
|
debug: 4.3.7
|
||||||
dotenv: 16.4.5
|
dotenv: 16.4.5
|
||||||
|
@ -22424,7 +22423,7 @@ snapshots:
|
||||||
isstream: 0.1.2
|
isstream: 0.1.2
|
||||||
jsonwebtoken: 9.0.2
|
jsonwebtoken: 9.0.2
|
||||||
mime-types: 2.1.35
|
mime-types: 2.1.35
|
||||||
retry-axios: 2.6.0(axios@1.7.4)
|
retry-axios: 2.6.0(axios@1.7.4(debug@4.3.7))
|
||||||
tough-cookie: 4.1.3
|
tough-cookie: 4.1.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
@ -23429,7 +23428,7 @@ snapshots:
|
||||||
|
|
||||||
kuler@2.0.0: {}
|
kuler@2.0.0: {}
|
||||||
|
|
||||||
langchain@0.3.6(e4rnrwhosnp2xiru36mqgdy2bu):
|
langchain@0.3.6(4axcxpjbcq5bce7ff6ajxrpp4i):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@langchain/core': 0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8))
|
'@langchain/core': 0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8))
|
||||||
'@langchain/openai': 0.3.14(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)
|
'@langchain/openai': 0.3.14(@langchain/core@0.3.19(openai@4.73.1(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)
|
||||||
|
@ -23594,6 +23593,8 @@ snapshots:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
enquirer: 2.3.6
|
enquirer: 2.3.6
|
||||||
|
|
||||||
|
loader@2.1.1: {}
|
||||||
|
|
||||||
local-pkg@0.5.0:
|
local-pkg@0.5.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
mlly: 1.4.2
|
mlly: 1.4.2
|
||||||
|
@ -24999,7 +25000,7 @@ snapshots:
|
||||||
|
|
||||||
pdf-parse@1.1.1:
|
pdf-parse@1.1.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 3.2.7(supports-color@5.5.0)
|
debug: 3.2.7(supports-color@8.1.1)
|
||||||
node-ensure: 0.0.0
|
node-ensure: 0.0.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
@ -25821,7 +25822,7 @@ snapshots:
|
||||||
|
|
||||||
ret@0.1.15: {}
|
ret@0.1.15: {}
|
||||||
|
|
||||||
retry-axios@2.6.0(axios@1.7.4):
|
retry-axios@2.6.0(axios@1.7.4(debug@4.3.7)):
|
||||||
dependencies:
|
dependencies:
|
||||||
axios: 1.7.4
|
axios: 1.7.4
|
||||||
|
|
||||||
|
@ -25848,7 +25849,7 @@ snapshots:
|
||||||
|
|
||||||
rhea@1.0.24:
|
rhea@1.0.24:
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 3.2.7(supports-color@5.5.0)
|
debug: 3.2.7(supports-color@8.1.1)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue