n8n-nodes-feishu-message-bot 0.1.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.md +19 -0
- package/README.md +247 -0
- package/dist/icons/github.dark.svg +3 -0
- package/dist/icons/github.svg +3 -0
- package/dist/nodes/FeishuCustomBot/FeishuCustomBot.node.d.ts +5 -0
- package/dist/nodes/FeishuCustomBot/FeishuCustomBot.node.js +452 -0
- package/dist/nodes/FeishuCustomBot/FeishuCustomBot.node.js.map +1 -0
- package/dist/nodes/FeishuCustomBot/FeishuCustomBot.node.json +13 -0
- package/dist/nodes/FeishuCustomBot/feishu.svg +3 -0
- package/dist/package.json +54 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +54 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright 2022 n8n
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
+
this software and associated documentation files (the "Software"), to deal in
|
|
5
|
+
the Software without restriction, including without limitation the rights to
|
|
6
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
7
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
|
8
|
+
so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
|
11
|
+
copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
19
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
# n8n-nodes-starter
|
|
4
|
+
|
|
5
|
+
This starter repository helps you build custom integrations for [n8n](https://n8n.io). It includes example nodes, credentials, the node linter, and all the tooling you need to get started.
|
|
6
|
+
|
|
7
|
+
## Quick Start
|
|
8
|
+
|
|
9
|
+
> [!TIP]
|
|
10
|
+
> **New to building n8n nodes?** The fastest way to get started is with `npm create @n8n/node`. This command scaffolds a complete node package for you using the [@n8n/node-cli](https://www.npmjs.com/package/@n8n/node-cli).
|
|
11
|
+
|
|
12
|
+
**To create a new node package from scratch:**
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm create @n8n/node
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**Already using this starter? Start developing with:**
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm run dev
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
This starts n8n with your nodes loaded and hot reload enabled.
|
|
25
|
+
|
|
26
|
+
## What's Included
|
|
27
|
+
|
|
28
|
+
This starter repository includes two example nodes to learn from:
|
|
29
|
+
|
|
30
|
+
- **[Example Node](nodes/Example/)** - A simple starter node that shows the basic structure with a custom `execute` method
|
|
31
|
+
- **[GitHub Issues Node](nodes/GithubIssues/)** - A complete, production-ready example built using the **declarative style**:
|
|
32
|
+
- **Low-code approach** - Define operations declaratively without writing request logic
|
|
33
|
+
- Multiple resources (Issues, Comments)
|
|
34
|
+
- Multiple operations (Get, Get All, Create)
|
|
35
|
+
- Two authentication methods (OAuth2 and Personal Access Token)
|
|
36
|
+
- List search functionality for dynamic dropdowns
|
|
37
|
+
- Proper error handling and typing
|
|
38
|
+
- Ideal for HTTP API-based integrations
|
|
39
|
+
|
|
40
|
+
> [!TIP]
|
|
41
|
+
> The declarative/low-code style (used in GitHub Issues) is the recommended approach for building nodes that interact with HTTP APIs. It significantly reduces boilerplate code and handles requests automatically.
|
|
42
|
+
|
|
43
|
+
Browse these examples to understand both approaches, then modify them or create your own.
|
|
44
|
+
|
|
45
|
+
## Finding Inspiration
|
|
46
|
+
|
|
47
|
+
Looking for more examples? Check out these resources:
|
|
48
|
+
|
|
49
|
+
- **[npm Community Nodes](https://www.npmjs.com/search?q=keywords:n8n-community-node-package)** - Browse thousands of community-built nodes on npm using the `n8n-community-node-package` tag
|
|
50
|
+
- **[n8n Built-in Nodes](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes)** - Study the source code of n8n's official nodes for production-ready patterns and best practices
|
|
51
|
+
- **[n8n Credentials](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/credentials)** - See how authentication is implemented for various services
|
|
52
|
+
|
|
53
|
+
These are excellent resources to understand how to structure your nodes, handle different API patterns, and implement advanced features.
|
|
54
|
+
|
|
55
|
+
## Prerequisites
|
|
56
|
+
|
|
57
|
+
Before you begin, install the following on your development machine:
|
|
58
|
+
|
|
59
|
+
### Required
|
|
60
|
+
|
|
61
|
+
- **[Node.js](https://nodejs.org/)** (v22 or higher) and npm
|
|
62
|
+
- Linux/Mac/WSL: Install via [nvm](https://github.com/nvm-sh/nvm)
|
|
63
|
+
- Windows: Follow [Microsoft's NodeJS guide](https://learn.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-windows)
|
|
64
|
+
- **[git](https://git-scm.com/downloads)**
|
|
65
|
+
|
|
66
|
+
### Recommended
|
|
67
|
+
|
|
68
|
+
- Follow n8n's [development environment setup guide](https://docs.n8n.io/integrations/creating-nodes/build/node-development-environment/)
|
|
69
|
+
|
|
70
|
+
> [!NOTE]
|
|
71
|
+
> The `@n8n/node-cli` is included as a dev dependency and will be installed automatically when you run `npm install`. The CLI includes n8n for local development, so you don't need to install n8n globally.
|
|
72
|
+
|
|
73
|
+
## Getting Started with this Starter
|
|
74
|
+
|
|
75
|
+
Follow these steps to create your own n8n community node package:
|
|
76
|
+
|
|
77
|
+
### 1. Create Your Repository
|
|
78
|
+
|
|
79
|
+
[Generate a new repository](https://github.com/n8n-io/n8n-nodes-starter/generate) from this template, then clone it:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
git clone https://github.com/<your-organization>/<your-repo-name>.git
|
|
83
|
+
cd <your-repo-name>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 2. Install Dependencies
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npm install
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
This installs all required dependencies including the `@n8n/node-cli`.
|
|
93
|
+
|
|
94
|
+
### 3. Explore the Examples
|
|
95
|
+
|
|
96
|
+
Browse the example nodes in [nodes/](nodes/) and [credentials/](credentials/) to understand the structure:
|
|
97
|
+
|
|
98
|
+
- Start with [nodes/Example/](nodes/Example/) for a basic node
|
|
99
|
+
- Study [nodes/GithubIssues/](nodes/GithubIssues/) for a real-world implementation
|
|
100
|
+
|
|
101
|
+
### 4. Build Your Node
|
|
102
|
+
|
|
103
|
+
Edit the example nodes to fit your use case, or create new node files by copying the structure from [nodes/Example/](nodes/Example/).
|
|
104
|
+
|
|
105
|
+
> [!TIP]
|
|
106
|
+
> If you want to scaffold a completely new node package, use `npm create @n8n/node` to start fresh with the CLI's interactive generator.
|
|
107
|
+
|
|
108
|
+
### 5. Configure Your Package
|
|
109
|
+
|
|
110
|
+
Update `package.json` with your details:
|
|
111
|
+
|
|
112
|
+
- `name` - Your package name (must start with `n8n-nodes-`)
|
|
113
|
+
- `author` - Your name and email
|
|
114
|
+
- `repository` - Your repository URL
|
|
115
|
+
- `description` - What your node does
|
|
116
|
+
|
|
117
|
+
Make sure your node is registered in the `n8n.nodes` array.
|
|
118
|
+
|
|
119
|
+
### 6. Develop and Test Locally
|
|
120
|
+
|
|
121
|
+
Start n8n with your node loaded:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
npm run dev
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
This command runs `n8n-node dev` which:
|
|
128
|
+
|
|
129
|
+
- Builds your node with watch mode
|
|
130
|
+
- Starts n8n with your node available
|
|
131
|
+
- Automatically rebuilds when you make changes
|
|
132
|
+
- Opens n8n in your browser (usually http://localhost:5678)
|
|
133
|
+
|
|
134
|
+
You can now test your node in n8n workflows!
|
|
135
|
+
|
|
136
|
+
> [!NOTE]
|
|
137
|
+
> Learn more about CLI commands in the [@n8n/node-cli documentation](https://www.npmjs.com/package/@n8n/node-cli).
|
|
138
|
+
|
|
139
|
+
### 7. Lint Your Code
|
|
140
|
+
|
|
141
|
+
Check for errors:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
npm run lint
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Auto-fix issues when possible:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
npm run lint:fix
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### 8. Build for Production
|
|
154
|
+
|
|
155
|
+
When ready to publish:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
npm run build
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
This compiles your TypeScript code to the `dist/` folder.
|
|
162
|
+
|
|
163
|
+
### 9. Prepare for Publishing
|
|
164
|
+
|
|
165
|
+
Before publishing:
|
|
166
|
+
|
|
167
|
+
1. **Update documentation**: Replace this README with your node's documentation. Use [README_TEMPLATE.md](README_TEMPLATE.md) as a starting point.
|
|
168
|
+
2. **Update the LICENSE**: Add your details to the [LICENSE](LICENSE.md) file.
|
|
169
|
+
3. **Test thoroughly**: Ensure your node works in different scenarios.
|
|
170
|
+
|
|
171
|
+
### 10. Publish to npm
|
|
172
|
+
|
|
173
|
+
Publish your package to make it available to the n8n community:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
npm publish
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Learn more about [publishing to npm](https://docs.npmjs.com/packages-and-modules/contributing-packages-to-the-registry).
|
|
180
|
+
|
|
181
|
+
### 11. Submit for Verification (Optional)
|
|
182
|
+
|
|
183
|
+
Get your node verified for n8n Cloud:
|
|
184
|
+
|
|
185
|
+
1. Ensure your node meets the [requirements](https://docs.n8n.io/integrations/creating-nodes/deploy/submit-community-nodes/):
|
|
186
|
+
- Uses MIT license ✅ (included in this starter)
|
|
187
|
+
- No external package dependencies
|
|
188
|
+
- Follows n8n's design guidelines
|
|
189
|
+
- Passes quality and security review
|
|
190
|
+
|
|
191
|
+
2. Submit through the [n8n Creator Portal](https://creators.n8n.io/nodes)
|
|
192
|
+
|
|
193
|
+
**Benefits of verification:**
|
|
194
|
+
|
|
195
|
+
- Available directly in n8n Cloud
|
|
196
|
+
- Discoverable in the n8n nodes panel
|
|
197
|
+
- Verified badge for quality assurance
|
|
198
|
+
- Increased visibility in the n8n community
|
|
199
|
+
|
|
200
|
+
## Available Scripts
|
|
201
|
+
|
|
202
|
+
This starter includes several npm scripts to streamline development:
|
|
203
|
+
|
|
204
|
+
| Script | Description |
|
|
205
|
+
| --------------------- | ---------------------------------------------------------------- |
|
|
206
|
+
| `npm run dev` | Start n8n with your node and watch for changes (runs `n8n-node dev`) |
|
|
207
|
+
| `npm run build` | Compile TypeScript to JavaScript for production (runs `n8n-node build`) |
|
|
208
|
+
| `npm run build:watch` | Build in watch mode (auto-rebuild on changes) |
|
|
209
|
+
| `npm run lint` | Check your code for errors and style issues (runs `n8n-node lint`) |
|
|
210
|
+
| `npm run lint:fix` | Automatically fix linting issues when possible (runs `n8n-node lint --fix`) |
|
|
211
|
+
| `npm run release` | Create a new release (runs `n8n-node release`) |
|
|
212
|
+
|
|
213
|
+
> [!TIP]
|
|
214
|
+
> These scripts use the [@n8n/node-cli](https://www.npmjs.com/package/@n8n/node-cli) under the hood. You can also run CLI commands directly, e.g., `npx n8n-node dev`.
|
|
215
|
+
|
|
216
|
+
## Troubleshooting
|
|
217
|
+
|
|
218
|
+
### My node doesn't appear in n8n
|
|
219
|
+
|
|
220
|
+
1. Make sure you ran `npm install` to install dependencies
|
|
221
|
+
2. Check that your node is listed in `package.json` under `n8n.nodes`
|
|
222
|
+
3. Restart the dev server with `npm run dev`
|
|
223
|
+
4. Check the console for any error messages
|
|
224
|
+
|
|
225
|
+
### Linting errors
|
|
226
|
+
|
|
227
|
+
Run `npm run lint:fix` to automatically fix most common issues. For remaining errors, check the [n8n node development guidelines](https://docs.n8n.io/integrations/creating-nodes/).
|
|
228
|
+
|
|
229
|
+
### TypeScript errors
|
|
230
|
+
|
|
231
|
+
Make sure you're using Node.js v22 or higher and have run `npm install` to get all type definitions.
|
|
232
|
+
|
|
233
|
+
## Resources
|
|
234
|
+
|
|
235
|
+
- **[n8n Node Documentation](https://docs.n8n.io/integrations/creating-nodes/)** - Complete guide to building nodes
|
|
236
|
+
- **[n8n Community Forum](https://community.n8n.io/)** - Get help and share your nodes
|
|
237
|
+
- **[@n8n/node-cli Documentation](https://www.npmjs.com/package/@n8n/node-cli)** - CLI tool reference
|
|
238
|
+
- **[n8n Creator Portal](https://creators.n8n.io/nodes)** - Submit your node for verification
|
|
239
|
+
- **[Submit Community Nodes Guide](https://docs.n8n.io/integrations/creating-nodes/deploy/submit-community-nodes/)** - Verification requirements and process
|
|
240
|
+
|
|
241
|
+
## Contributing
|
|
242
|
+
|
|
243
|
+
Have suggestions for improving this starter? [Open an issue](https://github.com/n8n-io/n8n-nodes-starter/issues) or submit a pull request!
|
|
244
|
+
|
|
245
|
+
## License
|
|
246
|
+
|
|
247
|
+
[MIT](https://github.com/n8n-io/n8n-nodes-starter/blob/master/LICENSE.md)
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.0165 0C8.94791 0 0 9.01388 0 20.1653C0 29.0792 5.73324 36.6246 13.6868 39.2952C14.6812 39.496 15.0454 38.8613 15.0454 38.3274C15.0454 37.8599 15.0126 36.2575 15.0126 34.5879C9.4445 35.79 8.28498 32.1841 8.28498 32.1841C7.39015 29.847 6.06429 29.2463 6.06429 29.2463C4.24185 28.011 6.19704 28.011 6.19704 28.011C8.21861 28.1446 9.27938 30.081 9.27938 30.081C11.0686 33.1522 13.9518 32.2844 15.1118 31.7502C15.2773 30.4481 15.8079 29.5467 16.3713 29.046C11.9303 28.5785 7.25781 26.8425 7.25781 19.0967C7.25781 16.8932 8.05267 15.0905 9.31216 13.6884C9.11344 13.1877 8.41732 11.1174 9.51128 8.34644C9.51128 8.34644 11.2014 7.81217 15.0122 10.4164C16.6438 9.97495 18.3263 9.7504 20.0165 9.74851C21.7067 9.74851 23.4295 9.98246 25.0205 10.4164C28.8317 7.81217 30.5218 8.34644 30.5218 8.34644C31.6158 11.1174 30.9192 13.1877 30.7205 13.6884C32.0132 15.0905 32.7753 16.8932 32.7753 19.0967C32.7753 26.8425 28.1028 28.5449 23.6287 29.046C24.358 29.6802 24.9873 30.882 24.9873 32.7851C24.9873 35.4893 24.9545 37.6596 24.9545 38.327C24.9545 38.8613 25.3192 39.496 26.3132 39.2956C34.2667 36.6242 39.9999 29.0792 39.9999 20.1653C40.0327 9.01388 31.052 0 20.0165 0Z" fill="white"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.0165 0C8.94791 0 0 9.01388 0 20.1653C0 29.0792 5.73324 36.6246 13.6868 39.2952C14.6812 39.496 15.0454 38.8613 15.0454 38.3274C15.0454 37.8599 15.0126 36.2575 15.0126 34.5879C9.4445 35.79 8.28498 32.1841 8.28498 32.1841C7.39015 29.847 6.06429 29.2463 6.06429 29.2463C4.24185 28.011 6.19704 28.011 6.19704 28.011C8.21861 28.1446 9.27938 30.081 9.27938 30.081C11.0686 33.1522 13.9518 32.2844 15.1118 31.7502C15.2773 30.4481 15.8079 29.5467 16.3713 29.046C11.9303 28.5785 7.25781 26.8425 7.25781 19.0967C7.25781 16.8932 8.05267 15.0905 9.31216 13.6884C9.11344 13.1877 8.41732 11.1174 9.51128 8.34644C9.51128 8.34644 11.2014 7.81217 15.0122 10.4164C16.6438 9.97495 18.3263 9.7504 20.0165 9.74851C21.7067 9.74851 23.4295 9.98246 25.0205 10.4164C28.8317 7.81217 30.5218 8.34644 30.5218 8.34644C31.6158 11.1174 30.9192 13.1877 30.7205 13.6884C32.0132 15.0905 32.7753 16.8932 32.7753 19.0967C32.7753 26.8425 28.1028 28.5449 23.6287 29.046C24.358 29.6802 24.9873 30.882 24.9873 32.7851C24.9873 35.4893 24.9545 37.6596 24.9545 38.327C24.9545 38.8613 25.3192 39.496 26.3132 39.2956C34.2667 36.6242 39.9999 29.0792 39.9999 20.1653C40.0327 9.01388 31.052 0 20.0165 0Z" fill="#24292F"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class FeishuCustomBot implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,452 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FeishuCustomBot = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const node_crypto_1 = require("node:crypto");
|
|
6
|
+
const messageTypeOptions = [
|
|
7
|
+
{ name: '文本 (Text)', value: 'text' },
|
|
8
|
+
{ name: '富文本 (Post)', value: 'post' },
|
|
9
|
+
{ name: '群名片 (Share Chat)', value: 'share_chat' },
|
|
10
|
+
{ name: '图片 (Image)', value: 'image' },
|
|
11
|
+
{ name: '消息卡片 (Interactive Card)', value: 'interactive' },
|
|
12
|
+
];
|
|
13
|
+
const showForText = { messageType: ['text'] };
|
|
14
|
+
const showForPost = { messageType: ['post'] };
|
|
15
|
+
const showForShareChat = { messageType: ['share_chat'] };
|
|
16
|
+
const showForImage = { messageType: ['image'] };
|
|
17
|
+
const showForInteractive = { messageType: ['interactive'] };
|
|
18
|
+
const postElementTypeOptions = [
|
|
19
|
+
{ name: '文本', value: 'text' },
|
|
20
|
+
{ name: '超链接', value: 'a' },
|
|
21
|
+
{ name: '@用户', value: 'at' },
|
|
22
|
+
{ name: '图片', value: 'img' },
|
|
23
|
+
];
|
|
24
|
+
const cardModeOptions = [
|
|
25
|
+
{ name: '简单模式(标题 + 正文 + 按钮)', value: 'simple' },
|
|
26
|
+
{ name: '高级模式(完整 JSON)', value: 'raw' },
|
|
27
|
+
];
|
|
28
|
+
function toArray(v) {
|
|
29
|
+
if (!v)
|
|
30
|
+
return [];
|
|
31
|
+
if (Array.isArray(v))
|
|
32
|
+
return v;
|
|
33
|
+
return Object.keys(v)
|
|
34
|
+
.sort((a, b) => Number(a) - Number(b))
|
|
35
|
+
.map((k) => v[k]);
|
|
36
|
+
}
|
|
37
|
+
function buildPostContent(paragraphs) {
|
|
38
|
+
if (!paragraphs || !Array.isArray(paragraphs))
|
|
39
|
+
return [[]];
|
|
40
|
+
return paragraphs.map((para) => {
|
|
41
|
+
const elements = toArray(para.elements);
|
|
42
|
+
if (!elements.length)
|
|
43
|
+
return [];
|
|
44
|
+
return elements
|
|
45
|
+
.filter((el) => el === null || el === void 0 ? void 0 : el.elementType)
|
|
46
|
+
.map((el) => {
|
|
47
|
+
var _a, _b, _c, _d, _e, _f;
|
|
48
|
+
const tag = el.elementType;
|
|
49
|
+
if (tag === 'text') {
|
|
50
|
+
return { tag: 'text', text: (_a = el.text) !== null && _a !== void 0 ? _a : '' };
|
|
51
|
+
}
|
|
52
|
+
if (tag === 'a') {
|
|
53
|
+
return {
|
|
54
|
+
tag: 'a',
|
|
55
|
+
text: (_b = el.linkText) !== null && _b !== void 0 ? _b : '',
|
|
56
|
+
href: (_c = el.href) !== null && _c !== void 0 ? _c : '',
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
if (tag === 'at') {
|
|
60
|
+
const atEl = { tag: 'at', user_id: (_d = el.userId) !== null && _d !== void 0 ? _d : 'all' };
|
|
61
|
+
if (el.userName)
|
|
62
|
+
atEl.user_name = el.userName;
|
|
63
|
+
return atEl;
|
|
64
|
+
}
|
|
65
|
+
if (tag === 'img') {
|
|
66
|
+
return { tag: 'img', image_key: (_e = el.imageKey) !== null && _e !== void 0 ? _e : '' };
|
|
67
|
+
}
|
|
68
|
+
return { tag: 'text', text: String((_f = el.text) !== null && _f !== void 0 ? _f : '') };
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function buildRequestBody(messageType, params) {
|
|
73
|
+
var _a, _b, _c;
|
|
74
|
+
if (messageType === 'text') {
|
|
75
|
+
return {
|
|
76
|
+
msg_type: 'text',
|
|
77
|
+
content: { text: (_a = params.text) !== null && _a !== void 0 ? _a : '' },
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (messageType === 'share_chat') {
|
|
81
|
+
return {
|
|
82
|
+
msg_type: 'share_chat',
|
|
83
|
+
content: { share_chat_id: (_b = params.shareChatId) !== null && _b !== void 0 ? _b : '' },
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
if (messageType === 'image') {
|
|
87
|
+
return {
|
|
88
|
+
msg_type: 'image',
|
|
89
|
+
content: { image_key: (_c = params.imageKey) !== null && _c !== void 0 ? _c : '' },
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
if (messageType === 'post') {
|
|
93
|
+
const lang = params.postLanguage || 'zh_cn';
|
|
94
|
+
const title = params.postTitle || '';
|
|
95
|
+
const rawParagraphs = params.postParagraphs;
|
|
96
|
+
const paragraphs = toArray(Array.isArray(rawParagraphs)
|
|
97
|
+
? rawParagraphs
|
|
98
|
+
: rawParagraphs && typeof rawParagraphs === 'object'
|
|
99
|
+
? rawParagraphs
|
|
100
|
+
: []);
|
|
101
|
+
const content = buildPostContent(paragraphs);
|
|
102
|
+
const postBlock = { title, content };
|
|
103
|
+
const post = {};
|
|
104
|
+
if (lang === 'zh_cn' || lang === 'both')
|
|
105
|
+
post.zh_cn = postBlock;
|
|
106
|
+
if (lang === 'en_us' || lang === 'both')
|
|
107
|
+
post.en_us = { ...postBlock };
|
|
108
|
+
return {
|
|
109
|
+
msg_type: 'post',
|
|
110
|
+
content: { post },
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
if (messageType === 'interactive') {
|
|
114
|
+
const cardMode = params.cardMode || 'simple';
|
|
115
|
+
if (cardMode === 'raw') {
|
|
116
|
+
const rawCard = params.cardJson;
|
|
117
|
+
let card;
|
|
118
|
+
try {
|
|
119
|
+
card = typeof rawCard === 'string' ? JSON.parse(rawCard) : rawCard;
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
card = {};
|
|
123
|
+
}
|
|
124
|
+
return { msg_type: 'interactive', card };
|
|
125
|
+
}
|
|
126
|
+
const headerTitle = params.cardHeaderTitle || '';
|
|
127
|
+
const bodyMarkdown = params.cardBodyMarkdown || '';
|
|
128
|
+
const buttonText = params.cardButtonText || '';
|
|
129
|
+
const buttonUrl = params.cardButtonUrl || '';
|
|
130
|
+
const elements = [];
|
|
131
|
+
if (bodyMarkdown) {
|
|
132
|
+
elements.push({
|
|
133
|
+
tag: 'div',
|
|
134
|
+
text: { tag: 'lark_md', content: bodyMarkdown },
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
if (buttonText && buttonUrl) {
|
|
138
|
+
elements.push({
|
|
139
|
+
tag: 'action',
|
|
140
|
+
actions: [
|
|
141
|
+
{
|
|
142
|
+
tag: 'button',
|
|
143
|
+
text: { content: buttonText, tag: 'plain_text' },
|
|
144
|
+
url: buttonUrl,
|
|
145
|
+
type: 'default',
|
|
146
|
+
value: {},
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
msg_type: 'interactive',
|
|
153
|
+
card: {
|
|
154
|
+
header: headerTitle
|
|
155
|
+
? { title: { tag: 'plain_text', content: headerTitle } }
|
|
156
|
+
: undefined,
|
|
157
|
+
elements: elements.length ? elements : [{ tag: 'div', text: { tag: 'plain_text', content: ' ' } }],
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
return {};
|
|
162
|
+
}
|
|
163
|
+
function genSign(secret, timestamp) {
|
|
164
|
+
const stringToSign = `${timestamp}\n${secret}`;
|
|
165
|
+
const hmac = (0, node_crypto_1.createHmac)('sha256', stringToSign);
|
|
166
|
+
hmac.update('');
|
|
167
|
+
return hmac.digest('base64');
|
|
168
|
+
}
|
|
169
|
+
const properties = [
|
|
170
|
+
{
|
|
171
|
+
displayName: 'Webhook 地址',
|
|
172
|
+
name: 'webhookUrl',
|
|
173
|
+
type: 'string',
|
|
174
|
+
default: '',
|
|
175
|
+
required: true,
|
|
176
|
+
placeholder: 'https://open.feishu.cn/open-apis/bot/v2/hook/xxxx',
|
|
177
|
+
description: '自定义机器人的 Webhook 地址,从群设置 → 群机器人 → 自定义机器人中获取',
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
displayName: '签名密钥',
|
|
181
|
+
name: 'signSecret',
|
|
182
|
+
type: 'string',
|
|
183
|
+
typeOptions: { password: true },
|
|
184
|
+
default: '',
|
|
185
|
+
description: '若在飞书中开启了「签名校验」安全设置,请填写此处,请求将自动携带 timestamp 与 sign',
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
displayName: '消息类型',
|
|
189
|
+
name: 'messageType',
|
|
190
|
+
type: 'options',
|
|
191
|
+
options: messageTypeOptions,
|
|
192
|
+
default: 'text',
|
|
193
|
+
description: '要发送的消息类型',
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
displayName: '文本内容',
|
|
197
|
+
name: 'text',
|
|
198
|
+
type: 'string',
|
|
199
|
+
typeOptions: { rows: 4 },
|
|
200
|
+
default: '',
|
|
201
|
+
required: true,
|
|
202
|
+
displayOptions: { show: showForText },
|
|
203
|
+
description: '支持 <at user_id="ou_xxx">名字</at> @人,<at user_id="all">所有人</at> @所有人',
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
displayName: '语言',
|
|
207
|
+
name: 'postLanguage',
|
|
208
|
+
type: 'options',
|
|
209
|
+
options: [
|
|
210
|
+
{ name: '中文', value: 'zh_cn' },
|
|
211
|
+
{ name: 'English', value: 'en_us' },
|
|
212
|
+
{ name: '中英双语', value: 'both' },
|
|
213
|
+
],
|
|
214
|
+
default: 'zh_cn',
|
|
215
|
+
displayOptions: { show: showForPost },
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
displayName: '标题',
|
|
219
|
+
name: 'postTitle',
|
|
220
|
+
type: 'string',
|
|
221
|
+
default: '',
|
|
222
|
+
displayOptions: { show: showForPost },
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
displayName: '段落与内容',
|
|
226
|
+
name: 'postParagraphs',
|
|
227
|
+
type: 'collection',
|
|
228
|
+
typeOptions: {
|
|
229
|
+
multipleValues: true,
|
|
230
|
+
multipleValueButtonText: '添加段落',
|
|
231
|
+
},
|
|
232
|
+
displayOptions: { show: showForPost },
|
|
233
|
+
default: {},
|
|
234
|
+
options: [
|
|
235
|
+
{
|
|
236
|
+
displayName: '本段元素',
|
|
237
|
+
name: 'elements',
|
|
238
|
+
type: 'collection',
|
|
239
|
+
typeOptions: {
|
|
240
|
+
multipleValues: true,
|
|
241
|
+
multipleValueButtonText: '添加元素',
|
|
242
|
+
},
|
|
243
|
+
default: {},
|
|
244
|
+
options: [
|
|
245
|
+
{
|
|
246
|
+
displayName: '链接地址',
|
|
247
|
+
name: 'href',
|
|
248
|
+
type: 'string',
|
|
249
|
+
default: '',
|
|
250
|
+
displayOptions: { show: { elementType: ['a'] } },
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
displayName: '链接文字',
|
|
254
|
+
name: 'linkText',
|
|
255
|
+
type: 'string',
|
|
256
|
+
default: '',
|
|
257
|
+
displayOptions: { show: { elementType: ['a'] } },
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
displayName: '图片 Key',
|
|
261
|
+
name: 'imageKey',
|
|
262
|
+
type: 'string',
|
|
263
|
+
default: '',
|
|
264
|
+
description: '通过上传图片接口获取',
|
|
265
|
+
displayOptions: { show: { elementType: ['img'] } },
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
displayName: '文本内容',
|
|
269
|
+
name: 'text',
|
|
270
|
+
type: 'string',
|
|
271
|
+
default: '',
|
|
272
|
+
displayOptions: { show: { elementType: ['text'] } },
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
displayName: '用户 Open ID',
|
|
276
|
+
name: 'userId',
|
|
277
|
+
type: 'string',
|
|
278
|
+
default: 'all',
|
|
279
|
+
description: '填 all 表示 @所有人',
|
|
280
|
+
displayOptions: { show: { elementType: ['at'] } },
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
displayName: '用户名称(展示用)',
|
|
284
|
+
name: 'userName',
|
|
285
|
+
type: 'string',
|
|
286
|
+
default: '',
|
|
287
|
+
displayOptions: { show: { elementType: ['at'] } },
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
displayName: '元素类型',
|
|
291
|
+
name: 'elementType',
|
|
292
|
+
type: 'options',
|
|
293
|
+
options: postElementTypeOptions,
|
|
294
|
+
default: 'text',
|
|
295
|
+
},
|
|
296
|
+
],
|
|
297
|
+
},
|
|
298
|
+
],
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
displayName: '群 ID',
|
|
302
|
+
name: 'shareChatId',
|
|
303
|
+
type: 'string',
|
|
304
|
+
default: '',
|
|
305
|
+
required: true,
|
|
306
|
+
displayOptions: { show: showForShareChat },
|
|
307
|
+
description: '要分享的群聊 ID(如 oc_xxx)',
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
displayName: '图片 Key',
|
|
311
|
+
name: 'imageKey',
|
|
312
|
+
type: 'string',
|
|
313
|
+
default: '',
|
|
314
|
+
required: true,
|
|
315
|
+
displayOptions: { show: showForImage },
|
|
316
|
+
description: '通过上传图片接口获取的 image_key',
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
displayName: '卡片配置方式',
|
|
320
|
+
name: 'cardMode',
|
|
321
|
+
type: 'options',
|
|
322
|
+
options: cardModeOptions,
|
|
323
|
+
default: 'simple',
|
|
324
|
+
displayOptions: { show: showForInteractive },
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
displayName: '卡片标题',
|
|
328
|
+
name: 'cardHeaderTitle',
|
|
329
|
+
type: 'string',
|
|
330
|
+
default: '',
|
|
331
|
+
displayOptions: {
|
|
332
|
+
show: { messageType: ['interactive'], cardMode: ['simple'] },
|
|
333
|
+
},
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
displayName: '卡片正文(Lark 语法)',
|
|
337
|
+
name: 'cardBodyMarkdown',
|
|
338
|
+
type: 'string',
|
|
339
|
+
typeOptions: { rows: 5 },
|
|
340
|
+
default: '',
|
|
341
|
+
placeholder: '**粗体**、[链接](url)、<at ID=ou_xxx></at>',
|
|
342
|
+
displayOptions: {
|
|
343
|
+
show: { messageType: ['interactive'], cardMode: ['simple'] },
|
|
344
|
+
},
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
displayName: '按钮文字',
|
|
348
|
+
name: 'cardButtonText',
|
|
349
|
+
type: 'string',
|
|
350
|
+
default: '',
|
|
351
|
+
displayOptions: {
|
|
352
|
+
show: { messageType: ['interactive'], cardMode: ['simple'] },
|
|
353
|
+
},
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
displayName: '按钮链接',
|
|
357
|
+
name: 'cardButtonUrl',
|
|
358
|
+
type: 'string',
|
|
359
|
+
default: '',
|
|
360
|
+
displayOptions: {
|
|
361
|
+
show: { messageType: ['interactive'], cardMode: ['simple'] },
|
|
362
|
+
},
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
displayName: '卡片 JSON',
|
|
366
|
+
name: 'cardJson',
|
|
367
|
+
type: 'string',
|
|
368
|
+
typeOptions: { rows: 10 },
|
|
369
|
+
default: '{\n "header": { "title": { "tag": "plain_text", "content": "标题" } },\n "elements": []\n}',
|
|
370
|
+
displayOptions: {
|
|
371
|
+
show: { messageType: ['interactive'], cardMode: ['raw'] },
|
|
372
|
+
},
|
|
373
|
+
description: '与请求体中 card 字段对应的完整 JSON,可使用消息卡片搭建工具生成',
|
|
374
|
+
},
|
|
375
|
+
];
|
|
376
|
+
class FeishuCustomBot {
|
|
377
|
+
constructor() {
|
|
378
|
+
this.description = {
|
|
379
|
+
displayName: '飞书自定义机器人',
|
|
380
|
+
name: 'feishuCustomBot',
|
|
381
|
+
icon: 'file:feishu.svg',
|
|
382
|
+
group: ['transform'],
|
|
383
|
+
version: 1,
|
|
384
|
+
subtitle: '={{$parameter["messageType"]}}',
|
|
385
|
+
description: '通过 Webhook 向飞书群发送文本、富文本、图片、群名片或消息卡片',
|
|
386
|
+
defaults: { name: '飞书自定义机器人' },
|
|
387
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
388
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
389
|
+
properties,
|
|
390
|
+
usableAsTool: true,
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
async execute() {
|
|
394
|
+
const items = this.getInputData();
|
|
395
|
+
const results = [];
|
|
396
|
+
for (let i = 0; i < items.length; i++) {
|
|
397
|
+
try {
|
|
398
|
+
const webhookUrl = this.getNodeParameter('webhookUrl', i);
|
|
399
|
+
const signSecret = this.getNodeParameter('signSecret', i, '');
|
|
400
|
+
const messageType = this.getNodeParameter('messageType', i);
|
|
401
|
+
const params = {
|
|
402
|
+
text: this.getNodeParameter('text', i, ''),
|
|
403
|
+
shareChatId: this.getNodeParameter('shareChatId', i, ''),
|
|
404
|
+
imageKey: this.getNodeParameter('imageKey', i, ''),
|
|
405
|
+
postLanguage: this.getNodeParameter('postLanguage', i, 'zh_cn'),
|
|
406
|
+
postTitle: this.getNodeParameter('postTitle', i, ''),
|
|
407
|
+
postParagraphs: this.getNodeParameter('postParagraphs', i, []),
|
|
408
|
+
cardMode: this.getNodeParameter('cardMode', i, 'simple'),
|
|
409
|
+
cardHeaderTitle: this.getNodeParameter('cardHeaderTitle', i, ''),
|
|
410
|
+
cardBodyMarkdown: this.getNodeParameter('cardBodyMarkdown', i, ''),
|
|
411
|
+
cardButtonText: this.getNodeParameter('cardButtonText', i, ''),
|
|
412
|
+
cardButtonUrl: this.getNodeParameter('cardButtonUrl', i, ''),
|
|
413
|
+
cardJson: this.getNodeParameter('cardJson', i, ''),
|
|
414
|
+
};
|
|
415
|
+
let body = buildRequestBody(messageType, params);
|
|
416
|
+
if (signSecret) {
|
|
417
|
+
const timestamp = Math.floor(Date.now() / 1000);
|
|
418
|
+
body = {
|
|
419
|
+
timestamp: String(timestamp),
|
|
420
|
+
sign: genSign(signSecret, timestamp),
|
|
421
|
+
...body,
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
const response = await this.helpers.httpRequest({
|
|
425
|
+
method: 'POST',
|
|
426
|
+
url: webhookUrl,
|
|
427
|
+
headers: { 'Content-Type': 'application/json' },
|
|
428
|
+
body,
|
|
429
|
+
json: true,
|
|
430
|
+
});
|
|
431
|
+
results.push({
|
|
432
|
+
json: response,
|
|
433
|
+
pairedItem: { item: i },
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
catch (error) {
|
|
437
|
+
if (this.continueOnFail()) {
|
|
438
|
+
results.push({
|
|
439
|
+
json: { error: error.message },
|
|
440
|
+
pairedItem: { item: i },
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
else {
|
|
444
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex: i });
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
return [results];
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
exports.FeishuCustomBot = FeishuCustomBot;
|
|
452
|
+
//# sourceMappingURL=FeishuCustomBot.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeishuCustomBot.node.js","sourceRoot":"","sources":["../../../nodes/FeishuCustomBot/FeishuCustomBot.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"node": "n8n-nodes-feishu-custom-bot",
|
|
3
|
+
"nodeVersion": "1.0",
|
|
4
|
+
"codexVersion": "1.0",
|
|
5
|
+
"categories": ["Communication", "Productivity"],
|
|
6
|
+
"resources": {
|
|
7
|
+
"primaryDocumentation": [
|
|
8
|
+
{
|
|
9
|
+
"url": "https://open.feishu.cn/document/client-docs/bot-v3/add-custom-bot"
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "n8n-nodes-feishu-message-bot",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "n8n 节点:飞书自定义机器人 Webhook 消息推送",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"homepage": "https://github.com/n8n-io/n8n-nodes-starter",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"n8n-community-node-package",
|
|
9
|
+
"n8n",
|
|
10
|
+
"feishu",
|
|
11
|
+
"lark",
|
|
12
|
+
"飞书",
|
|
13
|
+
"webhook"
|
|
14
|
+
],
|
|
15
|
+
"author": {
|
|
16
|
+
"name": "n8n-nodes-feishu-message-bot",
|
|
17
|
+
"email": "community@n8n.io"
|
|
18
|
+
},
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "https://github.com/n8n-io/n8n-nodes-starter.git"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "n8n-node build",
|
|
25
|
+
"build:watch": "tsc --watch",
|
|
26
|
+
"dev": "n8n-node dev",
|
|
27
|
+
"lint": "n8n-node lint",
|
|
28
|
+
"lint:fix": "n8n-node lint --fix",
|
|
29
|
+
"release": "n8n-node release",
|
|
30
|
+
"prepublishOnly": "n8n-node prerelease"
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist"
|
|
34
|
+
],
|
|
35
|
+
"n8n": {
|
|
36
|
+
"n8nNodesApiVersion": 1,
|
|
37
|
+
"strict": true,
|
|
38
|
+
"nodes": [
|
|
39
|
+
"dist/nodes/Example/Example.node.js",
|
|
40
|
+
"dist/nodes/FeishuCustomBot/FeishuCustomBot.node.js"
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@n8n/node-cli": "*",
|
|
45
|
+
"@types/node": "^20.0.0",
|
|
46
|
+
"eslint": "9.32.0",
|
|
47
|
+
"prettier": "3.6.2",
|
|
48
|
+
"release-it": "^19.0.4",
|
|
49
|
+
"typescript": "5.9.2"
|
|
50
|
+
},
|
|
51
|
+
"peerDependencies": {
|
|
52
|
+
"n8n-workflow": "*"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/@types/node/compatibility/disposable.d.ts","../node_modules/@types/node/compatibility/indexable.d.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/compatibility/index.d.ts","../node_modules/@types/node/globals.typedarray.d.ts","../node_modules/@types/node/buffer.buffer.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/web-globals/abortcontroller.d.ts","../node_modules/@types/node/web-globals/domexception.d.ts","../node_modules/@types/node/web-globals/events.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/undici-types/retry-handler.d.ts","../node_modules/undici-types/retry-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/util.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/eventsource.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/web-globals/fetch.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.generated.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/form-data/index.d.ts","../node_modules/n8n-workflow/dist/esm/constants.d.ts","../node_modules/n8n-workflow/dist/esm/data-table.types.d.ts","../node_modules/n8n-workflow/dist/esm/deferred-promise.d.ts","../node_modules/@n8n/errors/dist/types.d.ts","../node_modules/@n8n/errors/dist/application.error.d.ts","../node_modules/@n8n/errors/dist/index.d.ts","../node_modules/n8n-workflow/dist/esm/errors/base/base.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/base/operational.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/base/unexpected.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/base/user.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/abstract/execution-base.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/expression.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/execution-cancelled.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/abstract/node.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/node-api.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/node-operation.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/workflow-configuration.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/node-ssl.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/workflow-activation.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/webhook-taken.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/workflow-deactivation.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/workflow-operation.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/subworkflow-operation.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/cli-subworkflow-operation.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/trigger-close.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/expression-extension.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/db-connection-timeout-error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/ensure-error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/index.d.ts","../node_modules/n8n-workflow/dist/esm/execution-status.d.ts","../node_modules/n8n-workflow/dist/esm/result.d.ts","../node_modules/n8n-workflow/dist/esm/expression.d.ts","../node_modules/n8n-workflow/dist/esm/workflow.d.ts","../node_modules/n8n-workflow/dist/esm/workflow-data-proxy-env-provider.d.ts","../node_modules/n8n-workflow/dist/esm/interfaces.d.ts","../node_modules/n8n-workflow/dist/esm/logger-proxy.d.ts","../node_modules/n8n-workflow/dist/esm/node-helpers.d.ts","../node_modules/n8n-workflow/dist/esm/observable-object.d.ts","../node_modules/n8n-workflow/dist/esm/telemetry-helpers.d.ts","../node_modules/n8n-workflow/dist/esm/common/get-child-nodes.d.ts","../node_modules/n8n-workflow/dist/esm/common/get-connected-nodes.d.ts","../node_modules/n8n-workflow/dist/esm/common/get-node-by-name.d.ts","../node_modules/n8n-workflow/dist/esm/common/get-parent-nodes.d.ts","../node_modules/n8n-workflow/dist/esm/common/map-connections-by-destination.d.ts","../node_modules/n8n-workflow/dist/esm/common/index.d.ts","../node_modules/n8n-workflow/dist/esm/cron.d.ts","../node_modules/n8n-workflow/dist/esm/global-state.d.ts","../node_modules/n8n-workflow/dist/esm/message-event-bus.d.ts","../node_modules/n8n-workflow/dist/esm/expressions/expression-helpers.d.ts","../node_modules/zod/dist/types/v3/helpers/typealiases.d.ts","../node_modules/zod/dist/types/v3/helpers/util.d.ts","../node_modules/zod/dist/types/v3/zoderror.d.ts","../node_modules/zod/dist/types/v3/locales/en.d.ts","../node_modules/zod/dist/types/v3/errors.d.ts","../node_modules/zod/dist/types/v3/helpers/parseutil.d.ts","../node_modules/zod/dist/types/v3/helpers/enumutil.d.ts","../node_modules/zod/dist/types/v3/helpers/errorutil.d.ts","../node_modules/zod/dist/types/v3/helpers/partialutil.d.ts","../node_modules/zod/dist/types/v3/standard-schema.d.ts","../node_modules/zod/dist/types/v3/types.d.ts","../node_modules/zod/dist/types/v3/external.d.ts","../node_modules/zod/dist/types/v3/index.d.ts","../node_modules/zod/dist/types/index.d.ts","../node_modules/n8n-workflow/dist/esm/from-ai-parse-utils.d.ts","../node_modules/n8n-workflow/dist/esm/tool-helpers.d.ts","../node_modules/n8n-workflow/dist/esm/node-reference-parser-utils.d.ts","../node_modules/n8n-workflow/dist/esm/metadata-utils.d.ts","../node_modules/n8n-workflow/dist/esm/workflow-data-proxy.d.ts","../node_modules/n8n-workflow/dist/esm/versioned-node-type.d.ts","../node_modules/n8n-workflow/dist/esm/type-validation.d.ts","../node_modules/n8n-workflow/dist/esm/utils.d.ts","../node_modules/n8n-workflow/dist/esm/type-guards.d.ts","../node_modules/n8n-workflow/dist/esm/graph/graph-utils.d.ts","../node_modules/n8n-workflow/dist/esm/extensions/extensions.d.ts","../node_modules/n8n-workflow/dist/esm/extensions/expression-extension.d.ts","../node_modules/n8n-workflow/dist/esm/extensions/index.d.ts","../node_modules/n8n-workflow/dist/esm/extensions/expression-parser.d.ts","../node_modules/n8n-workflow/dist/esm/native-methods/index.d.ts","../node_modules/n8n-workflow/dist/esm/node-parameters/filter-parameter.d.ts","../node_modules/n8n-workflow/dist/esm/node-parameters/parameter-type-validation.d.ts","../node_modules/n8n-workflow/dist/esm/node-parameters/path-utils.d.ts","../node_modules/n8n-workflow/dist/esm/evaluation-helpers.d.ts","../node_modules/n8n-workflow/dist/esm/index.d.ts","../nodes/feishucustombot/feishucustombot.node.ts","../nodes/feishucustombot/feishucustombot.node.json","../package.json","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/parse-path/index.d.ts","../node_modules/@types/semver/functions/inc.d.ts","../node_modules/@types/semver/classes/semver.d.ts","../node_modules/@types/semver/functions/parse.d.ts","../node_modules/@types/semver/functions/valid.d.ts","../node_modules/@types/semver/functions/clean.d.ts","../node_modules/@types/semver/functions/diff.d.ts","../node_modules/@types/semver/functions/major.d.ts","../node_modules/@types/semver/functions/minor.d.ts","../node_modules/@types/semver/functions/patch.d.ts","../node_modules/@types/semver/functions/prerelease.d.ts","../node_modules/@types/semver/functions/compare.d.ts","../node_modules/@types/semver/functions/rcompare.d.ts","../node_modules/@types/semver/functions/compare-loose.d.ts","../node_modules/@types/semver/functions/compare-build.d.ts","../node_modules/@types/semver/functions/sort.d.ts","../node_modules/@types/semver/functions/rsort.d.ts","../node_modules/@types/semver/functions/gt.d.ts","../node_modules/@types/semver/functions/lt.d.ts","../node_modules/@types/semver/functions/eq.d.ts","../node_modules/@types/semver/functions/neq.d.ts","../node_modules/@types/semver/functions/gte.d.ts","../node_modules/@types/semver/functions/lte.d.ts","../node_modules/@types/semver/functions/cmp.d.ts","../node_modules/@types/semver/functions/coerce.d.ts","../node_modules/@types/semver/classes/comparator.d.ts","../node_modules/@types/semver/classes/range.d.ts","../node_modules/@types/semver/functions/satisfies.d.ts","../node_modules/@types/semver/ranges/max-satisfying.d.ts","../node_modules/@types/semver/ranges/min-satisfying.d.ts","../node_modules/@types/semver/ranges/to-comparators.d.ts","../node_modules/@types/semver/ranges/min-version.d.ts","../node_modules/@types/semver/ranges/valid.d.ts","../node_modules/@types/semver/ranges/outside.d.ts","../node_modules/@types/semver/ranges/gtr.d.ts","../node_modules/@types/semver/ranges/ltr.d.ts","../node_modules/@types/semver/ranges/intersects.d.ts","../node_modules/@types/semver/ranges/simplify.d.ts","../node_modules/@types/semver/ranges/subset.d.ts","../node_modules/@types/semver/internals/identifiers.d.ts","../node_modules/@types/semver/index.d.ts"],"fileIdsList":[[53,99,152],[53,99,152,153],[53,99],[53,96,99],[53,98,99],[99],[53,99,104,132],[53,99,100,105,110,118,129,140],[53,99,100,101,110,118],[48,49,50,53,99],[53,99,102,141],[53,99,103,104,111,119],[53,99,104,129,137],[53,99,105,107,110,118],[53,98,99,106],[53,99,107,108],[53,99,109,110],[53,98,99,110],[53,99,110,111,112,129,140],[53,99,110,111,112,125,129,132],[53,99,107,110,113,118,129,140,231],[53,99,110,111,113,114,118,129,137,140],[53,99,113,115,129,137,140],[51,52,53,54,55,56,57,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146],[53,99,110,116],[53,99,117,140,145],[53,99,107,110,118,129],[53,99,119],[53,99,120],[53,98,99,121],[53,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,231],[53,99,123],[53,99,124],[53,99,110,125,126],[53,99,125,127,141,143],[53,99,110,129,130,132],[53,99,131,132],[53,99,129,130],[53,99,132],[53,99,133],[53,96,99,129,134],[53,99,110,135,136],[53,99,135,136],[53,99,104,118,129,137],[53,99,138],[53,99,118,139],[53,99,113,124,140],[53,99,104,141],[53,99,129,142],[53,99,117,143],[53,99,144],[53,94,99],[53,94,99,110,112,121,129,132,140,143,145],[53,99,129,146],[53,99,239,277],[53,99,239,262,277],[53,99,238,277],[53,99,277],[53,99,239],[53,99,239,263,277],[53,99,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276],[53,99,263,277],[53,99,113,129,147,231],[53,99,183],[53,99,188,189,190,191,192],[53,99,154,183],[53,99,159,183],[53,99,154],[53,99,155],[53,99,171],[53,99,159],[53,99,160],[53,99,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176],[53,99,154,162,183],[53,99,162,163,183],[53,99,170],[53,99,167],[53,99,154,159,183],[53,99,164],[53,99,181,183],[53,99,222],[53,99,222,223],[53,99,211],[53,99,113,149,150,151,177,178,179,180,181,182,183,184,185,186,187,193,194,195,196,197,212,213,214,215,216,217,218,219,220,221,224,225,226,227,228,229,230],[53,99,111,113,129,137,140,148,149,150,151,160,163,164,167,170,177,178,179,181,182,231],[53,99,231],[53,99,181,182,183],[53,99,180,183],[53,66,70,99,140],[53,66,99,129,140],[53,61,99],[53,63,66,99,137,140],[53,99,118,137],[53,99,147],[53,61,99,147],[53,63,66,99,118,140],[53,58,59,62,65,99,110,129,140],[53,66,73,99],[53,58,64,99],[53,66,87,88,99],[53,62,66,99,132,140,147],[53,87,99,147],[53,60,61,99,147],[53,66,99],[53,60,61,62,63,64,65,66,67,68,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,88,89,90,91,92,93,99],[53,66,81,99],[53,66,73,74,99],[53,64,66,74,75,99],[53,65,99],[53,58,61,66,99],[53,66,70,74,75,99],[53,70,99],[53,64,66,69,99,140],[53,58,63,66,73,99],[53,99,129],[53,61,66,87,99,145,147],[53,99,210],[53,99,200,201],[53,99,198,199,200,202,203,208],[53,99,199,200],[53,99,208],[53,99,209],[53,99,200],[53,99,198,199,200,203,204,205,206,207],[53,99,198,199,210],[53,99,104,231]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"2fd4c143eff88dabb57701e6a40e02a4dbc36d5eb1362e7964d32028056a782b","impliedFormat":1},{"version":"714435130b9015fae551788df2a88038471a5a11eb471f27c4ede86552842bc9","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"27fdb0da0daf3b337c5530c5f266efe046a6ceb606e395b346974e4360c36419","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e456fd5b101271183d99a9087875a282323e3a3ff0d7bcf1881537eaa8b8e63","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"47ab634529c5955b6ad793474ae188fce3e6163e3a3fb5edd7e0e48f14435333","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"0225ecb9ed86bdb7a2c7fd01f1556906902929377b44483dc4b83e03b3ef227d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"ddc734b4fae82a01d247e9e342d020976640b5e93b4e9b3a1e30e5518883a060","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"05db535df8bdc30d9116fe754a3473d1b6479afbc14ae8eb18b605c62677d518","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1},{"version":"736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","impliedFormat":1},{"version":"0d5f371d676acc073f0166b7fd967adeb6afa5f0967b9821d83c106f66cc458d","impliedFormat":1},{"version":"a588d1f897adf938963ef3d90c8038c3c5cd19ef88fbedda4cb1a77b8b7ba3e6","impliedFormat":1},{"version":"a0981ee0c7ac06bdb575558bd09bac190e1c0c7888ddcb63d8bf648f23a30e8c","impliedFormat":1},{"version":"00f11c3ec667314eaa2adfe253b5ebebbbdbb82510e04460c2f09d1c3b521d31","impliedFormat":1},{"version":"5c7a516e25a2fd1dc5e054c6161fe3c8ba46364f3784ef98f3fca48ab685231c","impliedFormat":1},{"version":"3ff739b7f819cfc12b330f9adcc4c3abbbd5e9f9ca68f53243222a049a8361a2","impliedFormat":1},{"version":"d762b92c1af47b7b3c4eef92fe9a3806194d9edc5dae6901342fc87ef21d7f4a","impliedFormat":1},{"version":"41d14b690d8d8c2a9b7395e8c36de6ca981010736723216ab9f35eb598e09ad9","impliedFormat":1},{"version":"3fdcca6b893ffd38b61b792772f649c82ae28077c360802cec25360eabca24c0","impliedFormat":1},{"version":"299924f7545be254b02278e4dcff7038611f2325d30f0e5ae4bcac906847c164","impliedFormat":1},{"version":"be1d650f04c9f472f0ad0ead3e1b7059dd1e0ff918f7bcb707786d27c3bbeadd","impliedFormat":1},{"version":"1e16c1b1c4d8600a146b15a933f9a880cc275c01f39dc436625f22d3cca46272","impliedFormat":1},{"version":"a631639d7f79f49f68a0ef6553baa1b977e06b230e768511812952709fe5c1f0","impliedFormat":1},{"version":"bf2aefef15e0b4d6bc8f4e19f967494b59b5f90a834de503c373df042513d924","impliedFormat":1},{"version":"4085248a1c89ee865cf9498402c90611d16920a6c9929f701ddc0b963ddad230","impliedFormat":1},{"version":"1a1acd3311ff1794be8401ee394efc3beeb1746068244eb0ee1d51d08e457401","impliedFormat":1},{"version":"ce0b4440a3dd75e14ca94b6d6b27fa26ca89e776d91b8803b3c86c4e8f06ed1a","impliedFormat":1},{"version":"37020cf15e16fa6e1c6e2485cd51d6cbe74adee3b860ab49fb7528ca7e8e518e","impliedFormat":1},{"version":"b6b1a3ff9ba1ddf1a908cfd1bcd471334ecd218a366460fc64c4561d6d0467a4","impliedFormat":1},{"version":"1950d2a49c05c7aa6decfe409b552c4ea5fb156894cf0541b34999819bd778ea","impliedFormat":1},{"version":"32fe829960ff7120843f6dd20197e863aee3e81ecded415641a7500654d1bda7","impliedFormat":1},{"version":"da73778888d41d0abe7d28a24529ba13ff0a9311d55e1902feee7ab97dc6a67d","impliedFormat":1},{"version":"393b1ed0dca4f0aac333e65f2e40dfedfa8b37ac60571e02b152d32d8c84d340","impliedFormat":1},{"version":"f46d50c283425bcc59d68ccf067b3672fb727f802652dc7d60d2e470fb956370","impliedFormat":1},{"version":"0e10fd1d283b4ba7b94f5abb1bc30a2070ccb16c22f86a2780bea8ddc48f3bf7","impliedFormat":1},{"version":"0b4b6ca509cdb152e18ceeed526d17bb416e7e518508d859a0174977195f9a35","impliedFormat":1},{"version":"79b9e661f99d6d01ad0031fbffbb20a8570ca526125a1b01ef5643c00348a8c4","impliedFormat":1},{"version":"deb85dff5a350bd77f24fb5665b7a3c95aa0d4556a0d45ab423ebf3ffcbc70ce","impliedFormat":1},{"version":"f3e1a9f8c28c949f8432b0ef8f0d2686ccc3e38dcc338bbc8a02f956bc7a0725","impliedFormat":1},{"version":"3226c2a2af36d14aa551babd4154ad18042c0deb1509a61058c6b066cfddc30a","impliedFormat":1},{"version":"64c9811ebae7d6bdd3749155911ca473017944d6e9787cec3d11549b05b19de9","impliedFormat":1},{"version":"9de23b9733565858ecfb3971e409970aaf7ec3bd2567aea9373c3b7cfd62f053","impliedFormat":1},{"version":"18c4c5d4069ae6ddce9443a6057fcf333688556b0d644813a78e604812f82bb3","impliedFormat":1},{"version":"6481b29f54e19becbeb7236c60043e2daa47b45cb4fd7e88f287df09250f2405","impliedFormat":1},{"version":"9c65acc70d6beb5cc45fcc39d211a34f686d39aaf3e33a10d28a3df9e6267ec7","impliedFormat":1},{"version":"01658146c02cba2e49ee7beaa0b90864e7a17c3d02cc39cd8b643b5be3a1a438","impliedFormat":1},{"version":"fcbfe8a05b4b1d990aaf289b951ca3fb16bd5aa18004f576283576069be59939","impliedFormat":1},{"version":"db18ec88a0f1512b153a28a0ed1e19f34530885bca1d00e5f17a6e9b3184697f","impliedFormat":1},{"version":"21f166065c0725ca16281aa2f05f5ee9fb556795c8426049bf44ee36bdca9afd","impliedFormat":1},{"version":"36cd04c9f4116122a3545fcc6da5e522861d739718ab3a3cb7ff2268612531aa","impliedFormat":1},{"version":"9ae86dde42766df895cde73c60dc13347cc30829c6696de3cc54036b3120a5ba","impliedFormat":1},{"version":"6823cce79c10482d0860d40ebbfc29f00ddf7f99bca0aa23330599ddd8baead4","impliedFormat":1},{"version":"30ed6587fb249cc1b0585bab7ce2ca81ef193bfe2934241b6f06ffefdaaf4bf9","impliedFormat":1},{"version":"aa18fcf8ad877a9eb0c357c247708f019e25c4d906e3025d73604b66de8d7f11","impliedFormat":1},{"version":"cfc5482e113e44dae9712ae0a4e412788622221ae5eb1327fb69a13a0f5af662","impliedFormat":1},{"version":"5e620d0ed3eeb9a9a767355547123c85aea7e8f26d90e94d0cc3fa457f1c2035","impliedFormat":1},{"version":"304b0d21771513c0a36ed7179a9d1069bfa776e95f50b789ce898f3ef2b71514","impliedFormat":1},{"version":"4904d7124f9731d2368b613523070ca594cbc82f172023b4b5678018be7b6022","impliedFormat":1},{"version":"18c078c2b34901a328c1fc3e5a2f5bd51aa0fef06a548418198955e0af5eaf39","impliedFormat":1},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"54f6ec6ea75acea6eb23635617252d249145edbc7bcd9d53f2d70280d2aef953","impliedFormat":1},{"version":"c25ce98cca43a3bfa885862044be0d59557be4ecd06989b2001a83dcf69620fd","impliedFormat":1},{"version":"8e71e53b02c152a38af6aec45e288cc65bede077b92b9b43b3cb54a37978bb33","impliedFormat":1},{"version":"754a9396b14ca3a4241591afb4edc644b293ccc8a3397f49be4dfd520c08acb3","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"de2316e90fc6d379d83002f04ad9698bc1e5285b4d52779778f454dd12ce9f44","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"2da997a01a6aa5c5c09de5d28f0f4407b597c5e1aecfd32f1815809c532650a2","impliedFormat":1},{"version":"5d26d2e47e2352def36f89a3e8bf8581da22b7f857e07ef3114cd52cf4813445","impliedFormat":1},{"version":"3db2efd285e7328d8014b54a7fce3f4861ebcdc655df40517092ed0050983617","impliedFormat":1},{"version":"d5d39a24c759df40480a4bfc0daffd364489702fdbcbdfc1711cde34f8739995","impliedFormat":1},{"version":"581b97f369056070fafbe168120a192e918e67763116dfbbb2782bbca5f32111","impliedFormat":1},{"version":"74f9797560463a8c9070dd72c04b38cc17b79759b841e2a4175a11742f2ecd11","impliedFormat":1},{"version":"ce22b96ece23ecc9bc1f2a445afefa0a487f299986a1584887e4e4217e196963","impliedFormat":1},{"version":"4788f58342a67af140858e23a24cdf62457ec1ff79af68ac71b9d3c0c89bb53b","impliedFormat":1},{"version":"be19e5bce1b45d5c0ef87d46c3a95a991a3cd8b6c7cb4d756791756e69cc3568","impliedFormat":1},{"version":"e9634e0306920990ddca8f667e3cb624597ea7a4cd25d557a599c0e175419879","impliedFormat":1},{"version":"d4866c666180e89bdc142940cb2986a8fa9f3d2a363cc757bb61cef698b6e976","impliedFormat":1},{"version":"e73799489c16d7281d0466925ba620e9f804bb78400e0dbe04997b98407b1ab5","impliedFormat":1},{"version":"cb279466d8f2d95f3ee0a24637506b18d18d9b1cb869b4dbb534b7597b06daec","impliedFormat":1},{"version":"b33057a3c7ea75948a207a5b784726118ec60f882eeb875bd64e932b4cd41041","impliedFormat":1},{"version":"b773bcdaeda86c0f58910cecd6c77a0bd60be763127c42cad5a64fe66799b1f6","impliedFormat":1},{"version":"9e2e0b4711f1efef5c3c488616334ba2e5b911648a8784fd77fc8beb1e5047c9","impliedFormat":1},{"version":"ca1c4f7d0c786d90ab15a363d59d0e18269b393191ed7b2841547c0e187a8d35","impliedFormat":1},{"version":"0494f89b64c5e8906ce5284194e09bad42b56837757d79cb9e62ce16aae88ab4","impliedFormat":1},{"version":"28f1497962f8853339b46d766384abe7a907900998f551cf43cd793cdcb98e3d","impliedFormat":1},{"version":"e4cce0b510957aab4b12a0dc21a3b4857b8f8a85bbded2b8b81f836ca3c83dbc","impliedFormat":1},{"version":"79a0953f85a27dcaab70dd0e3791a3564631dfd5d85c637513027747c6844357","impliedFormat":1},{"version":"678c7436b7aa03dad934a96850ea395c018637013aa0b52a65898f502b4d6e2a","impliedFormat":1},{"version":"1c18a09d1deaf0e9906100ab54592f256f87fc94c67cce61bfc1c2ea44ac3d13","impliedFormat":1},{"version":"8a4470294a22dd13943cf7b946548fc302b79a10c618abae42a1bd6b2836df2d","impliedFormat":1},{"version":"f772bc6ba48352cdc719c5f14410d094d58669e8effbab50ea06daac1e3f952c","signature":"dff113f09c09d19cfa49c81292ad9d29c39361f6f13ec3e902007c7509045ed3"},"c798075d6208c5bfe5e2e733075088fce08fd2a4b9770ca9c1519a3eb34dcabb","159b232fb87b25565b896fe7d575be761b0a37d7d2c75e5d160ddba9882a42c9",{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"e72bcd16c134dae5a840b1d5d0e8b87e1d07fbbff01d66e9a7b913da3cd39b8e","impliedFormat":1},{"version":"ce6a3f09b8db73a7e9701aca91a04b4fabaf77436dd35b24482f9ee816016b17","impliedFormat":1},{"version":"20e086e5b64fdd52396de67761cc0e94693494deadb731264aac122adf08de3f","impliedFormat":1},{"version":"6e78f75403b3ec65efb41c70d392aeda94360f11cedc9fb2c039c9ea23b30962","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"eefd2bbc8edb14c3bd1246794e5c070a80f9b8f3730bd42efb80df3cc50b9039","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"a56fe175741cc8841835eb72e61fa5a34adcbc249ede0e3494c229f0750f6b85","impliedFormat":1}],"root":[[232,234]],"options":{"declaration":true,"esModuleInterop":true,"module":1,"noImplicitAny":true,"noImplicitReturns":true,"noUnusedLocals":true,"outDir":"./","preserveConstEnums":true,"removeComments":true,"skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"target":6,"useUnknownInCatchVariables":false},"referencedMap":[[153,1],[154,2],[152,3],[235,3],[236,3],[96,4],[97,4],[98,5],[53,6],[99,7],[100,8],[101,9],[48,3],[51,10],[49,3],[50,3],[102,11],[103,12],[104,13],[105,14],[106,15],[107,16],[108,16],[109,17],[110,18],[111,19],[112,20],[54,3],[52,3],[113,21],[114,22],[115,23],[147,24],[116,25],[117,26],[118,27],[119,28],[120,29],[121,30],[122,31],[123,32],[124,33],[125,34],[126,34],[127,35],[128,3],[129,36],[131,37],[130,38],[132,39],[133,40],[134,41],[135,42],[136,43],[137,44],[138,45],[139,46],[140,47],[141,48],[142,49],[143,50],[144,51],[55,3],[56,3],[57,3],[95,52],[145,53],[146,54],[237,3],[262,55],[263,56],[239,57],[242,58],[260,55],[261,55],[251,55],[250,59],[248,55],[243,55],[256,55],[254,55],[258,55],[238,55],[255,55],[259,55],[244,55],[245,55],[257,55],[240,55],[246,55],[247,55],[249,55],[253,55],[264,60],[252,55],[241,55],[277,61],[276,3],[271,60],[273,62],[272,60],[265,60],[266,60],[268,60],[270,60],[274,62],[275,62],[267,62],[269,62],[148,63],[188,64],[189,64],[190,64],[191,64],[193,65],[192,64],[149,3],[194,64],[150,3],[151,3],[159,66],[162,67],[155,68],[156,69],[157,69],[158,69],[172,70],[175,68],[176,3],[161,71],[174,72],[160,71],[177,73],[163,74],[164,75],[166,71],[171,76],[173,66],[168,77],[167,78],[165,79],[169,77],[170,67],[230,3],[178,3],[180,80],[197,3],[223,81],[225,3],[222,3],[224,82],[212,83],[195,3],[221,64],[231,84],[183,85],[184,64],[196,64],[215,86],[226,81],[185,80],[227,66],[228,64],[229,3],[214,64],[186,64],[179,3],[187,64],[213,64],[220,64],[218,64],[219,64],[217,64],[182,3],[216,87],[181,88],[46,3],[47,3],[9,3],[8,3],[2,3],[10,3],[11,3],[12,3],[13,3],[14,3],[15,3],[16,3],[17,3],[3,3],[18,3],[19,3],[4,3],[20,3],[24,3],[21,3],[22,3],[23,3],[25,3],[26,3],[27,3],[5,3],[28,3],[29,3],[30,3],[31,3],[6,3],[35,3],[32,3],[33,3],[34,3],[36,3],[7,3],[37,3],[42,3],[43,3],[38,3],[39,3],[40,3],[41,3],[44,3],[45,3],[1,3],[73,89],[83,90],[72,89],[93,91],[64,92],[63,93],[92,94],[86,95],[91,96],[66,97],[80,98],[65,99],[89,100],[61,101],[60,94],[90,102],[62,103],[67,104],[68,3],[71,104],[58,3],[94,105],[84,106],[75,107],[76,108],[78,109],[74,110],[77,111],[87,94],[69,112],[70,113],[79,114],[59,115],[82,106],[81,104],[85,3],[88,116],[211,117],[202,118],[209,119],[204,3],[205,3],[203,120],[206,121],[198,3],[199,3],[210,122],[201,123],[207,3],[208,124],[200,125],[233,3],[232,126],[234,3]],"version":"5.9.2"}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "n8n-nodes-feishu-message-bot",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "n8n 节点:飞书自定义机器人 Webhook 消息推送",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"homepage": "https://github.com/n8n-io/n8n-nodes-starter",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"n8n-community-node-package",
|
|
9
|
+
"n8n",
|
|
10
|
+
"feishu",
|
|
11
|
+
"lark",
|
|
12
|
+
"飞书",
|
|
13
|
+
"webhook"
|
|
14
|
+
],
|
|
15
|
+
"author": {
|
|
16
|
+
"name": "n8n-nodes-feishu-message-bot",
|
|
17
|
+
"email": "community@n8n.io"
|
|
18
|
+
},
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "https://github.com/n8n-io/n8n-nodes-starter.git"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "n8n-node build",
|
|
25
|
+
"build:watch": "tsc --watch",
|
|
26
|
+
"dev": "n8n-node dev",
|
|
27
|
+
"lint": "n8n-node lint",
|
|
28
|
+
"lint:fix": "n8n-node lint --fix",
|
|
29
|
+
"release": "n8n-node release",
|
|
30
|
+
"prepublishOnly": "n8n-node prerelease"
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist"
|
|
34
|
+
],
|
|
35
|
+
"n8n": {
|
|
36
|
+
"n8nNodesApiVersion": 1,
|
|
37
|
+
"strict": true,
|
|
38
|
+
"nodes": [
|
|
39
|
+
"dist/nodes/Example/Example.node.js",
|
|
40
|
+
"dist/nodes/FeishuCustomBot/FeishuCustomBot.node.js"
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@n8n/node-cli": "*",
|
|
45
|
+
"@types/node": "^20.0.0",
|
|
46
|
+
"eslint": "9.32.0",
|
|
47
|
+
"prettier": "3.6.2",
|
|
48
|
+
"release-it": "^19.0.4",
|
|
49
|
+
"typescript": "5.9.2"
|
|
50
|
+
},
|
|
51
|
+
"peerDependencies": {
|
|
52
|
+
"n8n-workflow": "*"
|
|
53
|
+
}
|
|
54
|
+
}
|