n8n-nodes-msdefender 1.0.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/LICENSE +21 -0
- package/README.md +83 -0
- package/dist/credentials/MsdefenderOAuth2Api.credentials.d.ts +9 -0
- package/dist/credentials/MsdefenderOAuth2Api.credentials.js +49 -0
- package/dist/credentials/MsdefenderOAuth2Api.credentials.js.map +1 -0
- package/dist/icons/ms-defender.dark.svg +1 -0
- package/dist/icons/ms-defender.svg +1 -0
- package/dist/images/app-permissions.png +0 -0
- package/dist/nodes/Msdefender/Msdefender.node.d.ts +4 -0
- package/dist/nodes/Msdefender/Msdefender.node.js +99 -0
- package/dist/nodes/Msdefender/Msdefender.node.js.map +1 -0
- package/dist/nodes/Msdefender/Msdefender.node.json +20 -0
- package/dist/nodes/Msdefender/resources/advancedQuery/index.d.ts +2 -0
- package/dist/nodes/Msdefender/resources/advancedQuery/index.js +35 -0
- package/dist/nodes/Msdefender/resources/advancedQuery/index.js.map +1 -0
- package/dist/nodes/Msdefender/resources/advancedQuery/run.d.ts +2 -0
- package/dist/nodes/Msdefender/resources/advancedQuery/run.js +29 -0
- package/dist/nodes/Msdefender/resources/advancedQuery/run.js.map +1 -0
- package/dist/nodes/Msdefender/resources/exposure/index.d.ts +2 -0
- package/dist/nodes/Msdefender/resources/exposure/index.js +45 -0
- package/dist/nodes/Msdefender/resources/exposure/index.js.map +1 -0
- package/dist/nodes/Msdefender/resources/machine/addOrRemoveTag.d.ts +2 -0
- package/dist/nodes/Msdefender/resources/machine/addOrRemoveTag.js +80 -0
- package/dist/nodes/Msdefender/resources/machine/addOrRemoveTag.js.map +1 -0
- package/dist/nodes/Msdefender/resources/machine/findByTag.d.ts +2 -0
- package/dist/nodes/Msdefender/resources/machine/findByTag.js +47 -0
- package/dist/nodes/Msdefender/resources/machine/findByTag.js.map +1 -0
- package/dist/nodes/Msdefender/resources/machine/getAll.d.ts +2 -0
- package/dist/nodes/Msdefender/resources/machine/getAll.js +116 -0
- package/dist/nodes/Msdefender/resources/machine/getAll.js.map +1 -0
- package/dist/nodes/Msdefender/resources/machine/getSecurityRecommendations.d.ts +2 -0
- package/dist/nodes/Msdefender/resources/machine/getSecurityRecommendations.js +29 -0
- package/dist/nodes/Msdefender/resources/machine/getSecurityRecommendations.js.map +1 -0
- package/dist/nodes/Msdefender/resources/machine/index.d.ts +2 -0
- package/dist/nodes/Msdefender/resources/machine/index.js +67 -0
- package/dist/nodes/Msdefender/resources/machine/index.js.map +1 -0
- package/dist/nodes/Msdefender/resources/machine/listSoftware.d.ts +2 -0
- package/dist/nodes/Msdefender/resources/machine/listSoftware.js +29 -0
- package/dist/nodes/Msdefender/resources/machine/listSoftware.js.map +1 -0
- package/dist/nodes/Msdefender/resources/machineAction/cancelMachineAction.d.ts +2 -0
- package/dist/nodes/Msdefender/resources/machineAction/cancelMachineAction.js +27 -0
- package/dist/nodes/Msdefender/resources/machineAction/cancelMachineAction.js.map +1 -0
- package/dist/nodes/Msdefender/resources/machineAction/index.d.ts +2 -0
- package/dist/nodes/Msdefender/resources/machineAction/index.js +75 -0
- package/dist/nodes/Msdefender/resources/machineAction/index.js.map +1 -0
- package/dist/nodes/Msdefender/resources/machineAction/isolateDevice.d.ts +2 -0
- package/dist/nodes/Msdefender/resources/machineAction/isolateDevice.js +37 -0
- package/dist/nodes/Msdefender/resources/machineAction/isolateDevice.js.map +1 -0
- package/dist/nodes/Msdefender/resources/machineAction/listMachineActions.d.ts +2 -0
- package/dist/nodes/Msdefender/resources/machineAction/listMachineActions.js +116 -0
- package/dist/nodes/Msdefender/resources/machineAction/listMachineActions.js.map +1 -0
- package/dist/nodes/Msdefender/resources/machineAction/offboardMachine.d.ts +2 -0
- package/dist/nodes/Msdefender/resources/machineAction/offboardMachine.js +29 -0
- package/dist/nodes/Msdefender/resources/machineAction/offboardMachine.js.map +1 -0
- package/dist/nodes/Msdefender/resources/machineAction/releaseFromIsolation.d.ts +2 -0
- package/dist/nodes/Msdefender/resources/machineAction/releaseFromIsolation.js +37 -0
- package/dist/nodes/Msdefender/resources/machineAction/releaseFromIsolation.js.map +1 -0
- package/dist/nodes/Msdefender/resources/machineAction/runAntivirusScan.d.ts +2 -0
- package/dist/nodes/Msdefender/resources/machineAction/runAntivirusScan.js +73 -0
- package/dist/nodes/Msdefender/resources/machineAction/runAntivirusScan.js.map +1 -0
- package/dist/nodes/Msdefender/shared/odataProperties.d.ts +2 -0
- package/dist/nodes/Msdefender/shared/odataProperties.js +91 -0
- package/dist/nodes/Msdefender/shared/odataProperties.js.map +1 -0
- package/dist/nodes/Msdefender/shared/utils.d.ts +1 -0
- package/dist/nodes/Msdefender/shared/utils.js +20 -0
- package/dist/nodes/Msdefender/shared/utils.js.map +1 -0
- package/dist/nodes/Msdefender/vulnerability/getAll.d.ts +2 -0
- package/dist/nodes/Msdefender/vulnerability/getAll.js +78 -0
- package/dist/nodes/Msdefender/vulnerability/getAll.js.map +1 -0
- package/dist/nodes/Msdefender/vulnerability/getByCve.d.ts +2 -0
- package/dist/nodes/Msdefender/vulnerability/getByCve.js +30 -0
- package/dist/nodes/Msdefender/vulnerability/getByCve.js.map +1 -0
- package/dist/nodes/Msdefender/vulnerability/getByMachineAndSoftware.d.ts +2 -0
- package/dist/nodes/Msdefender/vulnerability/getByMachineAndSoftware.js +116 -0
- package/dist/nodes/Msdefender/vulnerability/getByMachineAndSoftware.js.map +1 -0
- package/dist/nodes/Msdefender/vulnerability/getMachinesByCve.d.ts +2 -0
- package/dist/nodes/Msdefender/vulnerability/getMachinesByCve.js +30 -0
- package/dist/nodes/Msdefender/vulnerability/getMachinesByCve.js.map +1 -0
- package/dist/nodes/Msdefender/vulnerability/index.d.ts +2 -0
- package/dist/nodes/Msdefender/vulnerability/index.js +65 -0
- package/dist/nodes/Msdefender/vulnerability/index.js.map +1 -0
- package/dist/package.json +50 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +50 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Frode Hus
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# n8n-nodes-msdefender
|
|
2
|
+
|
|
3
|
+
[](https://github.com/FrodeHus/n8n-nodes-msdefender/actions/workflows/ci.yml)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
This is an n8n community node. It lets you use Microsoft Defender in your n8n workflows.
|
|
7
|
+
|
|
8
|
+
Microsoft Defender is a comprehensive security solution that helps protect your devices and data from threats.
|
|
9
|
+
This node allows you to interact with the Microsoft Defender API to perform various security operations, such as managing devices, retrieving threat intelligence, and more.
|
|
10
|
+
|
|
11
|
+
[n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.
|
|
12
|
+
|
|
13
|
+
[Installation](#installation)
|
|
14
|
+
[Operations](#operations)
|
|
15
|
+
[Credentials](#credentials)
|
|
16
|
+
[Compatibility](#compatibility)
|
|
17
|
+
[Usage](#usage)
|
|
18
|
+
[Resources](#resources)
|
|
19
|
+
[Version history](#version-history)
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
|
|
24
|
+
|
|
25
|
+
## Operations
|
|
26
|
+
|
|
27
|
+
- Advanced Query: Run advanced queries against Microsoft Defender.
|
|
28
|
+
- Machine: Manage and retrieve information about devices.
|
|
29
|
+
- Add Or Remove Tag For Machine
|
|
30
|
+
- Find By Tag
|
|
31
|
+
- Get Many: Retrieve many machines.
|
|
32
|
+
- Get Security Recommendations For Machine
|
|
33
|
+
- List Installed Software For Machine
|
|
34
|
+
- Exposure
|
|
35
|
+
- Get Current Exposure Score
|
|
36
|
+
- Get Exposure Score By Machine Groups.
|
|
37
|
+
- Machine Actions
|
|
38
|
+
- Isolate Machine
|
|
39
|
+
- Release Machine from Isolation
|
|
40
|
+
- List Machine Actions
|
|
41
|
+
- Offboard Machine
|
|
42
|
+
- Cancel Machine Action
|
|
43
|
+
- Run Antivirus Scan
|
|
44
|
+
- Vulnerability
|
|
45
|
+
- Get All Vulnerabilities
|
|
46
|
+
- Get Machines By CVE
|
|
47
|
+
- Get By Machine And Software
|
|
48
|
+
|
|
49
|
+
## Credentials
|
|
50
|
+
|
|
51
|
+
To use this node, you need to set up an Entra ID (Azure AD) application and obtain the necessary credentials to access the Microsoft Defender API.
|
|
52
|
+
|
|
53
|
+
1. Register an application in the [Azure Portal](https://portal.azure.com/).
|
|
54
|
+
2. Assign the required API permissions to the application for Microsoft Defender.
|
|
55
|
+
- Application permissions: `AdvancedQuery.Read.All`, `Machine.Read.All`, `Score.Read.All`, `Machine.Isolate`
|
|
56
|
+
3. Grant admin consent for the permissions.
|
|
57
|
+
4. Generate a client secret for the application.
|
|
58
|
+
5. Note down the Application (client) ID, Directory (tenant) ID, and client secret.
|
|
59
|
+
|
|
60
|
+

|
|
61
|
+
|
|
62
|
+
When configuring the Microsoft Defender node in n8n, use the following credentials:
|
|
63
|
+
- **Client ID**: The Application (client) ID from your Azure AD application.
|
|
64
|
+
- **Client Secret**: The client secret generated for your Azure AD application.
|
|
65
|
+
- **Access Token URL**: https://login.microsoftonline.com/<your-tenant-id>/oauth2/v2.0/token
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
## Compatibility
|
|
70
|
+
|
|
71
|
+
This node is compatible with latest n8n versions.
|
|
72
|
+
|
|
73
|
+
## Usage
|
|
74
|
+
|
|
75
|
+
[Try it out](https://docs.n8n.io/try-it-out/)
|
|
76
|
+
|
|
77
|
+
## Resources
|
|
78
|
+
|
|
79
|
+
* [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
|
|
80
|
+
|
|
81
|
+
## Version history
|
|
82
|
+
|
|
83
|
+
- 0.1.0 Initial release with Advanced Query and Machine operations.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Icon, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class MsdefenderOAuth2Api implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
extends: string[];
|
|
5
|
+
displayName: string;
|
|
6
|
+
icon: Icon;
|
|
7
|
+
documentationUrl: string;
|
|
8
|
+
properties: INodeProperties[];
|
|
9
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MsdefenderOAuth2Api = void 0;
|
|
4
|
+
class MsdefenderOAuth2Api {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'msdefenderOAuth2Api';
|
|
7
|
+
this.extends = ['oAuth2Api'];
|
|
8
|
+
this.displayName = 'Microsoft Defender OAuth2 API';
|
|
9
|
+
this.icon = {
|
|
10
|
+
light: 'file:../icons/ms-defender.svg',
|
|
11
|
+
dark: 'file:../icons/ms-defender.dark.svg',
|
|
12
|
+
};
|
|
13
|
+
this.documentationUrl = 'https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-client-creds-grant-flow';
|
|
14
|
+
this.properties = [
|
|
15
|
+
{
|
|
16
|
+
displayName: 'Grant Type',
|
|
17
|
+
name: 'grantType',
|
|
18
|
+
type: 'hidden',
|
|
19
|
+
default: 'clientCredentials',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
displayName: 'Access Token URL',
|
|
23
|
+
name: 'accessTokenUrl',
|
|
24
|
+
type: 'string',
|
|
25
|
+
default: 'https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
displayName: 'Auth URI Query Parameters',
|
|
29
|
+
name: 'authQueryParameters',
|
|
30
|
+
type: 'hidden',
|
|
31
|
+
default: '',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
displayName: 'Scope',
|
|
35
|
+
name: 'scope',
|
|
36
|
+
type: 'hidden',
|
|
37
|
+
default: 'https://api.securitycenter.microsoft.com/.default',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
displayName: 'Authentication',
|
|
41
|
+
name: 'authentication',
|
|
42
|
+
type: 'hidden',
|
|
43
|
+
default: 'body',
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.MsdefenderOAuth2Api = MsdefenderOAuth2Api;
|
|
49
|
+
//# sourceMappingURL=MsdefenderOAuth2Api.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MsdefenderOAuth2Api.credentials.js","sourceRoot":"","sources":["../../credentials/MsdefenderOAuth2Api.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,mBAAmB;IAAhC;QACC,SAAI,GAAG,qBAAqB,CAAC;QAE7B,YAAO,GAAG,CAAC,WAAW,CAAC,CAAC;QAExB,gBAAW,GAAG,+BAA+B,CAAC;QAC9C,SAAI,GAAS;YACZ,KAAK,EAAE,+BAA+B;YACtC,IAAI,EAAE,oCAAoC;SAC1C,CAAC;QAGF,qBAAgB,GACf,6FAA6F,CAAC;QAE/F,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,mBAAmB;aAC5B;YACD;gBACC,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,8DAA8D;aACvE;YACD;gBACC,WAAW,EAAE,2BAA2B;gBACxC,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,mDAAmD;aAC5D;YACD;gBACC,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,MAAM;aACf;SACD,CAAC;IACH,CAAC;CAAA;AA/CD,kDA+CC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="240px" height="240px"><path fill="#0370c8" d="M24,44c-0.552,0-1-0.448-1-1s0.448-1,1-1V44z"/><path fill="#0f5094" d="M25,43c0,0.552-0.448,1-1,1v-2C24.552,42,25,42.448,25,43z"/><circle cx="42" cy="11" r="1" fill="#0883d9"/><circle cx="6" cy="11" r="1" fill="#33bff0"/><path fill="#0f5094" d="M24,43l0.427,0.907c0,0,15.144-7.9,18.08-19.907H24V43z"/><path fill="#0883d9" d="M43,11l-1-1c-11.122,0-11.278-6-18-6v20h18.507C42.822,22.712,43,21.378,43,20C43,16.856,43,11,43,11 z"/><path fill="#0370c8" d="M24,43l-0.427,0.907c0,0-15.144-7.9-18.08-19.907H24V43z"/><path fill="#33bff0" d="M5,11l1-1c11.122,0,11.278-6,18-6v20H5.493C5.178,22.712,5,21.378,5,20C5,16.856,5,11,5,11z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="240px" height="240px"><path fill="#0370c8" d="M24,44c-0.552,0-1-0.448-1-1s0.448-1,1-1V44z"/><path fill="#0f5094" d="M25,43c0,0.552-0.448,1-1,1v-2C24.552,42,25,42.448,25,43z"/><circle cx="42" cy="11" r="1" fill="#0883d9"/><circle cx="6" cy="11" r="1" fill="#33bff0"/><path fill="#0f5094" d="M24,43l0.427,0.907c0,0,15.144-7.9,18.08-19.907H24V43z"/><path fill="#0883d9" d="M43,11l-1-1c-11.122,0-11.278-6-18-6v20h18.507C42.822,22.712,43,21.378,43,20C43,16.856,43,11,43,11 z"/><path fill="#0370c8" d="M24,43l-0.427,0.907c0,0-15.144-7.9-18.08-19.907H24V43z"/><path fill="#33bff0" d="M5,11l1-1c11.122,0,11.278-6,18-6v20H5.493C5.178,22.712,5,21.378,5,20C5,16.856,5,11,5,11z"/></svg>
|
|
Binary file
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Msdefender = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const machine_1 = require("./resources/machine");
|
|
6
|
+
const advancedQuery_1 = require("./resources/advancedQuery");
|
|
7
|
+
const exposure_1 = require("./resources/exposure");
|
|
8
|
+
const machineAction_1 = require("./resources/machineAction");
|
|
9
|
+
const vulnerability_1 = require("./vulnerability");
|
|
10
|
+
class Msdefender {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.description = {
|
|
13
|
+
displayName: 'Microsoft Defender API',
|
|
14
|
+
name: 'msdefender',
|
|
15
|
+
icon: {
|
|
16
|
+
light: 'file:../../icons/ms-defender.svg',
|
|
17
|
+
dark: 'file:../../icons/ms-defender.dark.svg',
|
|
18
|
+
},
|
|
19
|
+
group: ['transform'],
|
|
20
|
+
version: 1,
|
|
21
|
+
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
|
22
|
+
description: 'Interact with the Microsoft Defender API',
|
|
23
|
+
defaults: {
|
|
24
|
+
name: 'Microsoft Defender API',
|
|
25
|
+
},
|
|
26
|
+
usableAsTool: true,
|
|
27
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
28
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
29
|
+
credentials: [
|
|
30
|
+
{
|
|
31
|
+
name: 'msdefenderOAuth2Api',
|
|
32
|
+
required: true,
|
|
33
|
+
displayOptions: {
|
|
34
|
+
show: {
|
|
35
|
+
authentication: ['oAuth2'],
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
requestDefaults: {
|
|
41
|
+
baseURL: 'https://api.securitycenter.microsoft.com/',
|
|
42
|
+
headers: {
|
|
43
|
+
Accept: 'application/json',
|
|
44
|
+
'Content-Type': 'application/json',
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
properties: [
|
|
48
|
+
{
|
|
49
|
+
displayName: 'Authentication',
|
|
50
|
+
name: 'authentication',
|
|
51
|
+
type: 'options',
|
|
52
|
+
options: [
|
|
53
|
+
{
|
|
54
|
+
name: 'OAuth2',
|
|
55
|
+
value: 'oAuth2',
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
default: 'oAuth2',
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
displayName: 'Resource',
|
|
62
|
+
name: 'resource',
|
|
63
|
+
type: 'options',
|
|
64
|
+
noDataExpression: true,
|
|
65
|
+
options: [
|
|
66
|
+
{
|
|
67
|
+
name: 'Advanced Query',
|
|
68
|
+
value: 'advancedQuery',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'Exposure Score',
|
|
72
|
+
value: 'exposure',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: 'Machine',
|
|
76
|
+
value: 'machine',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: 'Machine Action',
|
|
80
|
+
value: 'machineAction',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: 'Vulnerability',
|
|
84
|
+
value: 'vulnerability',
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
default: 'advancedQuery',
|
|
88
|
+
},
|
|
89
|
+
...machine_1.machineDescription,
|
|
90
|
+
...advancedQuery_1.advancedQueryDescription,
|
|
91
|
+
...exposure_1.exposureDescription,
|
|
92
|
+
...machineAction_1.machineActionsDescription,
|
|
93
|
+
...vulnerability_1.vulnerabilityDescription,
|
|
94
|
+
],
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.Msdefender = Msdefender;
|
|
99
|
+
//# sourceMappingURL=Msdefender.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Msdefender.node.js","sourceRoot":"","sources":["../../../nodes/Msdefender/Msdefender.node.ts"],"names":[],"mappings":";;;AAAA,+CAA8F;AAC9F,iDAAyD;AACzD,6DAAqE;AACrE,mDAA2D;AAC3D,6DAAsE;AACtE,mDAA2D;AAE3D,MAAa,UAAU;IAAvB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,wBAAwB;YACrC,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE;gBACL,KAAK,EAAE,kCAAkC;gBACzC,IAAI,EAAE,uCAAuC;aAC7C;YACD,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,8DAA8D;YACxE,WAAW,EAAE,0CAA0C;YACvD,QAAQ,EAAE;gBACT,IAAI,EAAE,wBAAwB;aAC9B;YACD,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YACnC,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,qBAAqB;oBAC3B,QAAQ,EAAE,IAAI;oBACd,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,cAAc,EAAE,CAAC,QAAQ,CAAC;yBAC1B;qBACD;iBACD;aACD;YACD,eAAe,EAAE;gBAChB,OAAO,EAAE,2CAA2C;gBACpD,OAAO,EAAE;oBACR,MAAM,EAAE,kBAAkB;oBAC1B,cAAc,EAAE,kBAAkB;iBAClC;aACD;YACD,UAAU,EAAE;gBACX;oBACC,WAAW,EAAE,gBAAgB;oBAC7B,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,QAAQ;yBACf;qBACD;oBACD,OAAO,EAAE,QAAQ;iBACjB;gBACD;oBACC,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,SAAS;oBACf,gBAAgB,EAAE,IAAI;oBACtB,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,gBAAgB;4BACtB,KAAK,EAAE,eAAe;yBACtB;wBACD;4BACC,IAAI,EAAE,gBAAgB;4BACtB,KAAK,EAAE,UAAU;yBACjB;wBACD;4BACC,IAAI,EAAE,SAAS;4BACf,KAAK,EAAE,SAAS;yBAChB;wBACD;4BACC,IAAI,EAAE,gBAAgB;4BACtB,KAAK,EAAE,eAAe;yBACtB;wBACD;4BACC,IAAI,EAAE,eAAe;4BACrB,KAAK,EAAE,eAAe;yBACtB;qBACD;oBACD,OAAO,EAAE,eAAe;iBACxB;gBACD,GAAG,4BAAkB;gBACrB,GAAG,wCAAwB;gBAC3B,GAAG,8BAAmB;gBACtB,GAAG,yCAAyB;gBAC5B,GAAG,wCAAwB;aAC3B;SACD,CAAC;IACH,CAAC;CAAA;AArFD,gCAqFC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"node": "n8n-nodes-msdefender",
|
|
3
|
+
"nodeVersion": "1.0",
|
|
4
|
+
"codexVersion": "1.0",
|
|
5
|
+
"categories": [
|
|
6
|
+
"Development"
|
|
7
|
+
],
|
|
8
|
+
"resources": {
|
|
9
|
+
"credentialDocumentation": [
|
|
10
|
+
{
|
|
11
|
+
"url": "https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-client-creds-grant-flow"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"primaryDocumentation": [
|
|
15
|
+
{
|
|
16
|
+
"url": "https://github.com/frodehus/n8n-nodes-msdefender"
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.advancedQueryDescription = void 0;
|
|
4
|
+
const run_1 = require("./run");
|
|
5
|
+
const showOnlyForAdvancedQuery = {
|
|
6
|
+
resource: ['advancedQuery'],
|
|
7
|
+
};
|
|
8
|
+
exports.advancedQueryDescription = [
|
|
9
|
+
{
|
|
10
|
+
displayName: 'Operation',
|
|
11
|
+
name: 'operation',
|
|
12
|
+
type: 'options',
|
|
13
|
+
noDataExpression: true,
|
|
14
|
+
displayOptions: {
|
|
15
|
+
show: showOnlyForAdvancedQuery,
|
|
16
|
+
},
|
|
17
|
+
options: [
|
|
18
|
+
{
|
|
19
|
+
name: 'Run',
|
|
20
|
+
value: 'run',
|
|
21
|
+
action: 'Run advanced query',
|
|
22
|
+
description: 'Run advanced query using KQL',
|
|
23
|
+
routing: {
|
|
24
|
+
request: {
|
|
25
|
+
method: 'POST',
|
|
26
|
+
url: '/api/advancedqueries/run',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
default: 'run',
|
|
32
|
+
},
|
|
33
|
+
...run_1.advancedQueryRunDescription,
|
|
34
|
+
];
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../nodes/Msdefender/resources/advancedQuery/index.ts"],"names":[],"mappings":";;;AACA,+BAAoD;AAEpD,MAAM,wBAAwB,GAAG;IAChC,QAAQ,EAAE,CAAC,eAAe,CAAC;CAC3B,CAAC;AAEW,QAAA,wBAAwB,GAAsB;IAC1D;QACC,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE;YACf,IAAI,EAAE,wBAAwB;SAC9B;QACD,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,oBAAoB;gBAC5B,WAAW,EAAE,8BAA8B;gBAC3C,OAAO,EAAE;oBACR,OAAO,EAAE;wBACR,MAAM,EAAE,MAAM;wBACd,GAAG,EAAE,0BAA0B;qBAC/B;iBACD;aACD;SACD;QACD,OAAO,EAAE,KAAK;KACd;IACD,GAAG,iCAA2B;CAC9B,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.advancedQueryRunDescription = void 0;
|
|
4
|
+
const showOnlyForAdvancedQueryRun = {
|
|
5
|
+
operation: ['run'],
|
|
6
|
+
resource: ['advancedQuery'],
|
|
7
|
+
};
|
|
8
|
+
exports.advancedQueryRunDescription = [
|
|
9
|
+
{
|
|
10
|
+
displayName: 'KQL Query',
|
|
11
|
+
name: 'kqlQuery',
|
|
12
|
+
required: true,
|
|
13
|
+
type: 'string',
|
|
14
|
+
displayOptions: {
|
|
15
|
+
show: {
|
|
16
|
+
...showOnlyForAdvancedQueryRun,
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
default: 'DeviceInfo | take 5',
|
|
20
|
+
routing: {
|
|
21
|
+
send: {
|
|
22
|
+
type: 'body',
|
|
23
|
+
property: 'Query',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
description: 'KQL query to run',
|
|
27
|
+
},
|
|
28
|
+
];
|
|
29
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../../nodes/Msdefender/resources/advancedQuery/run.ts"],"names":[],"mappings":";;;AAEA,MAAM,2BAA2B,GAAG;IACnC,SAAS,EAAE,CAAC,KAAK,CAAC;IAClB,QAAQ,EAAE,CAAC,eAAe,CAAC;CAC3B,CAAC;AAEW,QAAA,2BAA2B,GAAsB;IAC7D;QACC,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,GAAG,2BAA2B;aAC9B;SACD;QACD,OAAO,EAAE,qBAAqB;QAC9B,OAAO,EAAE;YACR,IAAI,EAAE;gBACL,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,OAAO;aACjB;SACD;QACD,WAAW,EAAE,kBAAkB;KAC/B;CACD,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.exposureDescription = void 0;
|
|
4
|
+
const showOnlyForExposure = {
|
|
5
|
+
resource: ['exposure'],
|
|
6
|
+
};
|
|
7
|
+
exports.exposureDescription = [
|
|
8
|
+
{
|
|
9
|
+
displayName: 'Operation',
|
|
10
|
+
name: 'operation',
|
|
11
|
+
type: 'options',
|
|
12
|
+
noDataExpression: true,
|
|
13
|
+
displayOptions: {
|
|
14
|
+
show: showOnlyForExposure,
|
|
15
|
+
},
|
|
16
|
+
options: [
|
|
17
|
+
{
|
|
18
|
+
name: 'Current Exposure Score',
|
|
19
|
+
value: 'currentExposureScore',
|
|
20
|
+
action: 'Get current exposure score',
|
|
21
|
+
description: 'Get the exposure score',
|
|
22
|
+
routing: {
|
|
23
|
+
request: {
|
|
24
|
+
method: 'GET',
|
|
25
|
+
url: '/api/exposureScore',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'Get By Machine Groups',
|
|
31
|
+
value: 'getByMachineGroups',
|
|
32
|
+
action: 'Get many exposure scores',
|
|
33
|
+
description: 'Retrieve exposure scores by machine groups',
|
|
34
|
+
routing: {
|
|
35
|
+
request: {
|
|
36
|
+
method: 'GET',
|
|
37
|
+
url: '/api/exposureScore/ByMachineGroups',
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
default: 'currentExposureScore',
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../nodes/Msdefender/resources/exposure/index.ts"],"names":[],"mappings":";;;AAEA,MAAM,mBAAmB,GAAG;IACxB,QAAQ,EAAE,CAAC,UAAU,CAAC;CACzB,CAAC;AAEW,QAAA,mBAAmB,GAAsB;IACrD;QACC,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE;YACf,IAAI,EAAE,mBAAmB;SACzB;QACD,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,wBAAwB;gBAC9B,KAAK,EAAE,sBAAsB;gBAC7B,MAAM,EAAE,4BAA4B;gBACpC,WAAW,EAAE,wBAAwB;gBACrC,OAAO,EAAE;oBACR,OAAO,EAAE;wBACR,MAAM,EAAE,KAAK;wBACb,GAAG,EAAE,oBAAoB;qBACzB;iBACD;aACD;YACD;gBACC,IAAI,EAAE,uBAAuB;gBAC7B,KAAK,EAAE,oBAAoB;gBAC3B,MAAM,EAAE,0BAA0B;gBAClC,WAAW,EAAE,4CAA4C;gBACzD,OAAO,EAAE;oBACR,OAAO,EAAE;wBACR,MAAM,EAAE,KAAK;wBACb,GAAG,EAAE,oCAAoC;qBACzC;iBACD;aACD;SACD;QACD,OAAO,EAAE,sBAAsB;KAC/B;CACD,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addOrRemoveTagDescription = void 0;
|
|
4
|
+
const showOnlyForAddOrRemoveTags = {
|
|
5
|
+
operation: ['addOrRemoveTag'],
|
|
6
|
+
resource: ['machine'],
|
|
7
|
+
};
|
|
8
|
+
exports.addOrRemoveTagDescription = [
|
|
9
|
+
{
|
|
10
|
+
displayName: 'Machine ID',
|
|
11
|
+
name: 'machineId',
|
|
12
|
+
type: 'string',
|
|
13
|
+
displayOptions: {
|
|
14
|
+
show: {
|
|
15
|
+
...showOnlyForAddOrRemoveTags,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
default: '',
|
|
19
|
+
required: true,
|
|
20
|
+
description: 'The ID of the machine to add or remove tags for',
|
|
21
|
+
routing: {
|
|
22
|
+
request: {
|
|
23
|
+
method: 'POST',
|
|
24
|
+
url: '=/api/machines/{{ $parameter.machineId }}/tags',
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
displayName: 'Tag',
|
|
30
|
+
name: 'tag',
|
|
31
|
+
type: 'string',
|
|
32
|
+
displayOptions: {
|
|
33
|
+
show: {
|
|
34
|
+
...showOnlyForAddOrRemoveTags,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
default: '',
|
|
38
|
+
required: true,
|
|
39
|
+
description: 'Tag to add or remove from the machine',
|
|
40
|
+
routing: {
|
|
41
|
+
send: {
|
|
42
|
+
type: 'body',
|
|
43
|
+
property: 'Value',
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
displayName: 'Action',
|
|
49
|
+
name: 'action',
|
|
50
|
+
type: 'options',
|
|
51
|
+
displayOptions: {
|
|
52
|
+
show: {
|
|
53
|
+
...showOnlyForAddOrRemoveTags,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
options: [
|
|
57
|
+
{
|
|
58
|
+
name: 'Add',
|
|
59
|
+
action: 'Add tag to machine',
|
|
60
|
+
value: 'add',
|
|
61
|
+
description: 'Add the tag to the machine',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: 'Remove',
|
|
65
|
+
action: 'Remove tag from machine',
|
|
66
|
+
value: 'remove',
|
|
67
|
+
description: 'Remove the tag from the machine',
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
default: 'add',
|
|
71
|
+
description: 'Whether to add or remove the tag from the machine',
|
|
72
|
+
routing: {
|
|
73
|
+
send: {
|
|
74
|
+
type: 'body',
|
|
75
|
+
property: 'Action',
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
}
|
|
79
|
+
];
|
|
80
|
+
//# sourceMappingURL=addOrRemoveTag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addOrRemoveTag.js","sourceRoot":"","sources":["../../../../../nodes/Msdefender/resources/machine/addOrRemoveTag.ts"],"names":[],"mappings":";;;AAEA,MAAM,0BAA0B,GAAG;IAC/B,SAAS,EAAE,CAAC,gBAAgB,CAAC;IAC7B,QAAQ,EAAE,CAAC,SAAS,CAAC;CACxB,CAAC;AAEW,QAAA,yBAAyB,GAAsB;IACxD;QACI,WAAW,EAAE,YAAY;QACzB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE;YACZ,IAAI,EAAE;gBACF,GAAG,0BAA0B;aAChC;SACJ;QACD,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,iDAAiD;QAC9D,OAAO,EAAE;YACL,OAAO,EAAE;gBACL,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,gDAAgD;aACxD;SACJ;KACJ;IACD;QACI,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE;YACZ,IAAI,EAAE;gBACF,GAAG,0BAA0B;aAChC;SACJ;QACD,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,uCAAuC;QACpD,OAAO,EAAE;YACL,IAAI,EAAE;gBACF,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,OAAO;aACpB;SACJ;KACJ;IACD;QACI,WAAW,EAAE,QAAQ;QACrB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,SAAS;QACf,cAAc,EAAE;YACZ,IAAI,EAAE;gBACF,GAAG,0BAA0B;aAChC;SACJ;QACD,OAAO,EAAE;YACL;gBACI,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,oBAAoB;gBAC5B,KAAK,EAAE,KAAK;gBACZ,WAAW,EAAE,4BAA4B;aAC5C;YACD;gBACI,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,yBAAyB;gBACjC,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,iCAAiC;aACjD;SACJ;QACD,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,mDAAmD;QAChE,OAAO,EAAE;YACL,IAAI,EAAE;gBACF,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,QAAQ;aACrB;SACJ;KACJ;CACJ,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findByTagDescription = void 0;
|
|
4
|
+
const showOnlyForFindByTag = {
|
|
5
|
+
operation: ['findByTag'],
|
|
6
|
+
resource: ['machine'],
|
|
7
|
+
};
|
|
8
|
+
exports.findByTagDescription = [
|
|
9
|
+
{
|
|
10
|
+
displayName: 'Tag Name',
|
|
11
|
+
name: 'tagName',
|
|
12
|
+
type: 'string',
|
|
13
|
+
displayOptions: {
|
|
14
|
+
show: {
|
|
15
|
+
...showOnlyForFindByTag,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
default: '',
|
|
19
|
+
required: true,
|
|
20
|
+
description: 'The name of the tag to find machines by',
|
|
21
|
+
routing: {
|
|
22
|
+
request: {
|
|
23
|
+
method: 'GET',
|
|
24
|
+
url: '=/api/machines/findByTag/?tag={{ $parameter.tagName }}',
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
displayName: 'Use StartsWith Filter',
|
|
30
|
+
name: 'useStartsWithFilter',
|
|
31
|
+
type: 'boolean',
|
|
32
|
+
displayOptions: {
|
|
33
|
+
show: {
|
|
34
|
+
...showOnlyForFindByTag,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
default: false,
|
|
38
|
+
description: 'Whether to use a startsWith filter for the tag name',
|
|
39
|
+
routing: {
|
|
40
|
+
send: {
|
|
41
|
+
type: 'query',
|
|
42
|
+
property: 'useStartsWithFilter',
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
//# sourceMappingURL=findByTag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findByTag.js","sourceRoot":"","sources":["../../../../../nodes/Msdefender/resources/machine/findByTag.ts"],"names":[],"mappings":";;;AAEA,MAAM,oBAAoB,GAAG;IACzB,SAAS,EAAE,CAAC,WAAW,CAAC;IACxB,QAAQ,EAAE,CAAC,SAAS,CAAC;CACxB,CAAC;AAEW,QAAA,oBAAoB,GAAsB;IACtD;QACC,WAAW,EAAE,UAAU;QACvB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,GAAG,oBAAoB;aACvB;SACD;QACD,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,yCAAyC;QACtD,OAAO,EAAE;YACR,OAAO,EAAE;gBACR,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,wDAAwD;aAC7D;SACD;KACD;IACD;QACC,WAAW,EAAE,uBAAuB;QACpC,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,SAAS;QACf,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,GAAG,oBAAoB;aACvB;SACD;QACD,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,qDAAqD;QAClE,OAAO,EAAE;YACR,IAAI,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,qBAAqB;aAC/B;SACD;KACD;CACD,CAAC"}
|