n8n-nodes-azuredevops-advanced 0.2.0 → 0.3.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.
@@ -3,7 +3,7 @@ import { ICredentialType, INodeProperties } from 'n8n-workflow';
3
3
  export class AzureDevOpsAdvancedApi implements ICredentialType {
4
4
  name = 'azureDevOpsAdvancedApi';
5
5
  displayName = 'Azure DevOps Advanced API';
6
- // Belgelendirme linkine doğrudan PAT nasıl alınır yönlendirilebilir
6
+ // Documentation link explaining how to obtain a Personal Access Token
7
7
  documentationUrl = 'https://n8n.io/integrations/azure-devops';
8
8
  properties: INodeProperties[] = [
9
9
  {
@@ -21,7 +21,7 @@ export class AzureDevOpsAdvancedApi implements ICredentialType {
21
21
  typeOptions: { password: true },
22
22
  default: '',
23
23
  required: true,
24
- description: 'Tüm repolara Read/Write yetkilendirmesi olan Azure DevOps PAT anahtarınız',
24
+ description: 'Your Azure DevOps Personal Access Token with Read/Write access to all required resources',
25
25
  },
26
26
  ];
27
27
  }
@@ -5,7 +5,7 @@ class AzureDevOpsAdvancedApi {
5
5
  constructor() {
6
6
  this.name = 'azureDevOpsAdvancedApi';
7
7
  this.displayName = 'Azure DevOps Advanced API';
8
- // Belgelendirme linkine doğrudan PAT nasıl alınır yönlendirilebilir
8
+ // Documentation link explaining how to obtain a Personal Access Token
9
9
  this.documentationUrl = 'https://n8n.io/integrations/azure-devops';
10
10
  this.properties = [
11
11
  {
@@ -23,7 +23,7 @@ class AzureDevOpsAdvancedApi {
23
23
  typeOptions: { password: true },
24
24
  default: '',
25
25
  required: true,
26
- description: 'Tüm repolara Read/Write yetkilendirmesi olan Azure DevOps PAT anahtarınız',
26
+ description: 'Your Azure DevOps Personal Access Token with Read/Write access to all required resources',
27
27
  },
28
28
  ];
29
29
  }
@@ -243,7 +243,7 @@ class AzureDevOpsAdvanced {
243
243
  });
244
244
  }
245
245
  else if (operation === 'listUsers') {
246
- // Azure Graph API / Core API üzerinden user listesi çekilir
246
+ // Users are fetched via the Azure Graph API (vssps endpoint)
247
247
  const endpoint = `_apis/graph/users?api-version=7.1-preview.1`;
248
248
  const credentials = await this.getCredentials('azureDevOpsAdvancedApi');
249
249
  const baseUrl = `https://vssps.dev.azure.com/${credentials.organization}`;
@@ -260,7 +260,7 @@ class AzureDevOpsAdvanced {
260
260
  responseData = (responseData === null || responseData === void 0 ? void 0 : responseData.value) || responseData;
261
261
  }
262
262
  else if (operation === 'listTags') {
263
- // Project bazlı tag listesi
263
+ // Retrieve all work item tags scoped to the project
264
264
  const endpoint = `${project}/_apis/wit/tags?api-version=7.1-preview.1`;
265
265
  responseData = await GenericFunctions_1.azureApiRequest.call(this, 'GET', endpoint);
266
266
  responseData = (responseData === null || responseData === void 0 ? void 0 : responseData.value) || responseData;
@@ -522,7 +522,7 @@ class AzureDevOpsAdvanced {
522
522
  });
523
523
  }
524
524
  }
525
- // Sonuçların işlenmesi
525
+ // Process and return results
526
526
  if (Array.isArray(responseData)) {
527
527
  returnData.push.apply(returnData, responseData.map(item => ({ json: item })));
528
528
  }
@@ -257,7 +257,7 @@ export class AzureDevOpsAdvanced implements INodeType {
257
257
  });
258
258
  }
259
259
  else if (operation === 'listUsers') {
260
- // Azure Graph API / Core API üzerinden user listesi çekilir
260
+ // Users are fetched via the Azure Graph API (vssps endpoint)
261
261
  const endpoint = `_apis/graph/users?api-version=7.1-preview.1`;
262
262
  const credentials = await this.getCredentials('azureDevOpsAdvancedApi');
263
263
  const baseUrl = `https://vssps.dev.azure.com/${(credentials as any).organization}`;
@@ -275,7 +275,7 @@ export class AzureDevOpsAdvanced implements INodeType {
275
275
  responseData = responseData?.value || responseData;
276
276
  }
277
277
  else if (operation === 'listTags') {
278
- // Project bazlı tag listesi
278
+ // Retrieve all work item tags scoped to the project
279
279
  const endpoint = `${project}/_apis/wit/tags?api-version=7.1-preview.1`;
280
280
  responseData = await azureApiRequest.call(this, 'GET', endpoint);
281
281
  responseData = responseData?.value || responseData;
@@ -540,7 +540,7 @@ export class AzureDevOpsAdvanced implements INodeType {
540
540
  }
541
541
  }
542
542
 
543
- // Sonuçların işlenmesi
543
+ // Process and return results
544
544
  if (Array.isArray(responseData)) {
545
545
  returnData.push.apply(returnData, responseData.map(item => ({ json: item })));
546
546
  } else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-azuredevops-advanced",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Comprehensive Azure DevOps custom node for n8n",
5
5
  "main": "dist/nodes/AzureDevOpsAdvanced/AzureDevOpsAdvanced.node.js",
6
6
  "license": "MIT",
@@ -38,14 +38,18 @@
38
38
  },
39
39
  "scripts": {
40
40
  "build": "tsc",
41
- "dev": "tsc --watch"
41
+ "dev": "tsc --watch",
42
+ "test": "jest --forceExit"
42
43
  },
43
44
  "dependencies": {
44
45
  "n8n-core": "^1.x",
45
46
  "n8n-workflow": "^1.x"
46
47
  },
47
48
  "devDependencies": {
49
+ "@types/jest": "^30.0.0",
48
50
  "@types/node": "^18.x",
51
+ "jest": "^30.4.2",
52
+ "ts-jest": "^29.4.11",
49
53
  "typescript": "^5.x"
50
54
  },
51
55
  "publishConfig": {