@cryozerolabs/n8n-nodes-dingtalk 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.
Files changed (74) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +259 -0
  3. package/dist/credentials/DingtalkApi.credentials.d.ts +14 -0
  4. package/dist/credentials/DingtalkApi.credentials.js +97 -0
  5. package/dist/credentials/DingtalkApi.credentials.js.map +1 -0
  6. package/dist/credentials/icon.png +0 -0
  7. package/dist/nodes/DingtalkNode/DingtalkNode.node.d.ts +5 -0
  8. package/dist/nodes/DingtalkNode/DingtalkNode.node.js +133 -0
  9. package/dist/nodes/DingtalkNode/DingtalkNode.node.js.map +1 -0
  10. package/dist/nodes/DingtalkNode/DingtalkNode.node.json +18 -0
  11. package/dist/nodes/DingtalkNode/icon.png +0 -0
  12. package/dist/nodes/DingtalkNode/resources/auth/index.d.ts +2 -0
  13. package/dist/nodes/DingtalkNode/resources/auth/index.js +9 -0
  14. package/dist/nodes/DingtalkNode/resources/auth/index.js.map +1 -0
  15. package/dist/nodes/DingtalkNode/resources/auth/tokenGet.d.ts +3 -0
  16. package/dist/nodes/DingtalkNode/resources/auth/tokenGet.js +26 -0
  17. package/dist/nodes/DingtalkNode/resources/auth/tokenGet.js.map +1 -0
  18. package/dist/nodes/DingtalkNode/resources/notable/index.d.ts +2 -0
  19. package/dist/nodes/DingtalkNode/resources/notable/index.js +9 -0
  20. package/dist/nodes/DingtalkNode/resources/notable/index.js.map +1 -0
  21. package/dist/nodes/DingtalkNode/resources/notable/parseUrl.d.ts +3 -0
  22. package/dist/nodes/DingtalkNode/resources/notable/parseUrl.js +63 -0
  23. package/dist/nodes/DingtalkNode/resources/notable/parseUrl.js.map +1 -0
  24. package/dist/nodes/DingtalkNode/resources/notable/recordDelete.d.ts +3 -0
  25. package/dist/nodes/DingtalkNode/resources/notable/recordDelete.js +69 -0
  26. package/dist/nodes/DingtalkNode/resources/notable/recordDelete.js.map +1 -0
  27. package/dist/nodes/DingtalkNode/resources/notable/recordGet.d.ts +3 -0
  28. package/dist/nodes/DingtalkNode/resources/notable/recordGet.js +64 -0
  29. package/dist/nodes/DingtalkNode/resources/notable/recordGet.js.map +1 -0
  30. package/dist/nodes/DingtalkNode/resources/notable/recordInsert.d.ts +3 -0
  31. package/dist/nodes/DingtalkNode/resources/notable/recordInsert.js +75 -0
  32. package/dist/nodes/DingtalkNode/resources/notable/recordInsert.js.map +1 -0
  33. package/dist/nodes/DingtalkNode/resources/notable/recordList.d.ts +3 -0
  34. package/dist/nodes/DingtalkNode/resources/notable/recordList.js +77 -0
  35. package/dist/nodes/DingtalkNode/resources/notable/recordList.js.map +1 -0
  36. package/dist/nodes/DingtalkNode/resources/notable/recordUpdate.d.ts +3 -0
  37. package/dist/nodes/DingtalkNode/resources/notable/recordUpdate.js +74 -0
  38. package/dist/nodes/DingtalkNode/resources/notable/recordUpdate.js.map +1 -0
  39. package/dist/nodes/DingtalkNode/resources/notable/sheetCreate.d.ts +3 -0
  40. package/dist/nodes/DingtalkNode/resources/notable/sheetCreate.js +59 -0
  41. package/dist/nodes/DingtalkNode/resources/notable/sheetCreate.js.map +1 -0
  42. package/dist/nodes/DingtalkNode/resources/notable/sheetDelete.d.ts +3 -0
  43. package/dist/nodes/DingtalkNode/resources/notable/sheetDelete.js +54 -0
  44. package/dist/nodes/DingtalkNode/resources/notable/sheetDelete.js.map +1 -0
  45. package/dist/nodes/DingtalkNode/resources/notable/sheetGet.d.ts +3 -0
  46. package/dist/nodes/DingtalkNode/resources/notable/sheetGet.js +54 -0
  47. package/dist/nodes/DingtalkNode/resources/notable/sheetGet.js.map +1 -0
  48. package/dist/nodes/DingtalkNode/resources/notable/sheetGetAll.d.ts +3 -0
  49. package/dist/nodes/DingtalkNode/resources/notable/sheetGetAll.js +45 -0
  50. package/dist/nodes/DingtalkNode/resources/notable/sheetGetAll.js.map +1 -0
  51. package/dist/nodes/DingtalkNode/resources/notable/sheetUpdate.d.ts +3 -0
  52. package/dist/nodes/DingtalkNode/resources/notable/sheetUpdate.js +69 -0
  53. package/dist/nodes/DingtalkNode/resources/notable/sheetUpdate.js.map +1 -0
  54. package/dist/nodes/DingtalkNode/resources/user/get.d.ts +3 -0
  55. package/dist/nodes/DingtalkNode/resources/user/get.js +37 -0
  56. package/dist/nodes/DingtalkNode/resources/user/get.js.map +1 -0
  57. package/dist/nodes/DingtalkNode/resources/user/index.d.ts +2 -0
  58. package/dist/nodes/DingtalkNode/resources/user/index.js +9 -0
  59. package/dist/nodes/DingtalkNode/resources/user/index.js.map +1 -0
  60. package/dist/nodes/shared/operation.d.ts +9 -0
  61. package/dist/nodes/shared/operation.js +3 -0
  62. package/dist/nodes/shared/operation.js.map +1 -0
  63. package/dist/nodes/shared/request.d.ts +5 -0
  64. package/dist/nodes/shared/request.js +91 -0
  65. package/dist/nodes/shared/request.js.map +1 -0
  66. package/dist/nodes/shared/resource.d.ts +15 -0
  67. package/dist/nodes/shared/resource.js +119 -0
  68. package/dist/nodes/shared/resource.js.map +1 -0
  69. package/dist/nodes/shared/validation.d.ts +2 -0
  70. package/dist/nodes/shared/validation.js +20 -0
  71. package/dist/nodes/shared/validation.js.map +1 -0
  72. package/dist/package.json +59 -0
  73. package/dist/tsconfig.tsbuildinfo +1 -0
  74. package/package.json +58 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 CryoZero Labs
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,259 @@
1
+ # 钉钉 n8n 节点 (DingTalk n8n Node)
2
+
3
+ [![npm version](https://badge.fury.io/js/@cryozerolabs%2Fn8n-nodes-dingtalk.svg)](https://badge.fury.io/js/@cryozerolabs%2Fn8n-nodes-dingtalk)
4
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
5
+
6
+ 这是一个钉钉(DingTalk)的 n8n 社区节点,让你可以在 n8n 工作流中集成钉钉开放平台的各种 API。
7
+
8
+ 钉钉是阿里巴巴集团打造的企业级智能移动办公平台,为全球企业组织提供一站式的数字化办公解决方案。本节点基于钉钉开放平台 API 开发,支持 AI 表格、用户管理、身份验证等核心功能。
9
+
10
+ ## 📖 目录
11
+ - [支持的功能](#-支持的功能)
12
+ - [安装指南](#-安装指南)
13
+ - [身份验证配置](#-身份验证配置)
14
+ - [使用方法](#-使用方法)
15
+ - [示例工作流](#-示例工作流)
16
+ - [兼容性](#-兼容性)
17
+ - [相关资源](#-相关资源)
18
+ - [版本历史](#-版本历史)
19
+ - [贡献指南](#-贡献指南)
20
+
21
+ ## ✨ 支持的功能
22
+
23
+ ### 🤖 身份验证 (Auth)
24
+ - **获取访问令牌** - 自动获取和刷新 access_token
25
+
26
+ ### 📊 AI 表格 (Notable)
27
+ - **解析 URL** - 从钉钉 AI 表格 URL 提取 baseId、sheetId、viewId
28
+ - **数据表管理**:
29
+ - 新建数据表
30
+ - 获取数据表信息
31
+ - 获取所有数据表
32
+ - 更新数据表
33
+ - 删除数据表
34
+ - **记录操作**:
35
+ - 新增记录
36
+ - 获取单条记录
37
+ - 获取记录列表
38
+ - 更新记录
39
+ - 删除记录
40
+
41
+ ### 👥 用户管理 (User)
42
+ - **获取用户详情** - 根据 userId 获取用户信息
43
+
44
+ ## 🚀 安装指南
45
+
46
+ ### 通过 n8n 社区节点安装(推荐)
47
+
48
+ 1. 打开你的 n8n 实例
49
+ 2. 进入 **设置** → **社区节点**
50
+ 3. 选择 **安装社区节点**
51
+ 4. 输入包名:`@cryozerolabs/n8n-nodes-dingtalk`
52
+ 5. 点击 **安装**
53
+
54
+ 更多安装详情请参考 [n8n 社区节点安装指南](https://docs.n8n.io/integrations/community-nodes/installation/)。
55
+
56
+ ## 🔐 身份验证配置
57
+
58
+ 本节点使用钉钉开放平台的企业内部应用认证方式。你需要准备以下信息:
59
+
60
+ ### 1. 创建钉钉企业内部应用
61
+
62
+ 1. 登录 [钉钉开放平台开发者后台](https://open-dev.dingtalk.com/)
63
+ 2. 创建企业内部应用
64
+ 3. 在基础信息 - 凭证与基础信息 - 应用凭证 中,获取应用的 `Client ID` 和 `Client Secret`
65
+
66
+ ### 2. 配置 n8n 凭据
67
+
68
+ 在 n8n 中创建 **钉钉 API** 凭据:
69
+ - **Corp ID**: 你的钉钉应用运行的组织ID,在[钉钉开放平台开发者后台](https://open-dev.dingtalk.com/)获取
70
+ - **Client ID**: 你的钉钉应用 ClientId
71
+ - **Client Secret**: 你的钉钉应用 ClientSecret
72
+
73
+ ### 3. 权限配置
74
+
75
+ 确保你的钉钉应用具有相应的权限,在 应用详情 - 开发配置 - 权限管理 中进行配置。
76
+ 具体权限请详细阅读官方相关API文档或者运行时的报错信息。
77
+
78
+ 详细的身份验证流程请参考:[钉钉 API 调用指南](https://open.dingtalk.com/document/development/how-to-call-apis) 和 [获取访问令牌](https://open.dingtalk.com/document/development/api-gettoken)。
79
+
80
+ ## 📝 使用方法
81
+
82
+ ### 基本步骤
83
+
84
+ 1. **配置凭据**:按照上述步骤配置钉钉 API 凭据
85
+ 2. **添加节点**:在工作流中添加 "DingTalk Node"
86
+ 3. **选择资源**:选择要使用的功能模块(AI表格、用户管理等)
87
+ 4. **选择操作**:选择具体的操作类型
88
+ 5. **配置参数**:填写必要的参数(如表格ID、用户ID等)
89
+
90
+ ### 获取必要参数
91
+
92
+ #### AI 表格参数
93
+ - **baseId**: 通过 "解析URL" 操作从钉钉表格分享链接中提取
94
+ - **sheetId**: 同样可以通过 "解析URL" 操作获取
95
+ - **operatorId**: 操作人的 unionId,可通过 "用户管理" → "获取用户详情" 获取
96
+
97
+ #### 用户参数
98
+ - **userId**: 钉钉用户的唯一标识符
99
+
100
+ ### 扩展功能 - 调用其他钉钉 API
101
+
102
+ 本节点目前已实现钉钉开放平台的核心功能。对于尚未开发的 API 接口,你可以通过以下方式扩展使用:
103
+
104
+ #### 1. 获取统一访问令牌
105
+
106
+ 使用本节点的 **身份验证** → **获取访问令牌** 操作来获取 `access_token`:
107
+
108
+ ```json
109
+ {
110
+ "resource": "auth",
111
+ "operation": "auth.tokenGet"
112
+ }
113
+ ```
114
+
115
+ #### 2. 使用 HTTP Request 节点
116
+
117
+ 将获取的 `access_token` 用于 n8n 的 **HTTP Request** 节点来调用任何钉钉 API:
118
+
119
+ **基本配置示例:**
120
+ - **方法**: POST/GET(根据 API 要求)
121
+ - **URL**: `https://api.dingtalk.com/v1.0/[API路径]`
122
+ - **Headers**:
123
+ ```json
124
+ {
125
+ "x-acs-dingtalk-access-token": "{{ $('获取访问令牌').first().json.accessToken }}",
126
+ "Content-Type": "application/json"
127
+ }
128
+ ```
129
+ - **Body**: 根据具体 API 要求配置
130
+
131
+ **实际应用示例:**
132
+ 1. 先运行 "获取访问令牌" 节点
133
+ 2. 在 HTTP Request 节点中引用上一步的 token
134
+ 3. 调用你需要的钉钉 API
135
+
136
+ 这种方式让你可以使用钉钉开放平台的任何 API,而不受本节点当前功能的限制。所有的身份验证和令牌管理都由本节点自动处理。
137
+
138
+ ## 🎯 示例工作流
139
+
140
+ 我们提供了完整的示例工作流供你参考和使用:
141
+
142
+ ### 下载示例
143
+
144
+ 所有示例工作流都存放在 `examples/` 目录中,你可以:
145
+
146
+ 1. **直接下载单个文件**:访问 [examples 目录](https://github.com/cryozerolabs/n8n-nodes-dingtalk/tree/main/examples) 下载需要的 JSON 文件
147
+ 2. **克隆整个仓库**:
148
+ ```bash
149
+ git clone https://github.com/cryozerolabs/n8n-nodes-dingtalk.git
150
+ cd n8n-nodes-dingtalk/examples
151
+ ```
152
+
153
+ ### 示例内容
154
+
155
+ - **基础-AI表格操作** (`基础-AI表格操作.json`) - 完整演示:
156
+ - 用户信息获取(获取 unionId)
157
+ - AI 表格 URL 解析
158
+ - 数据表完整 CRUD 操作
159
+ - 记录完整 CRUD 操作
160
+ - 访问令牌获取
161
+ - **更多示例正在开发中** - 用户管理、身份验证、扩展功能等
162
+
163
+ ### 导入工作流
164
+
165
+ 1. 在 n8n 中点击 **Import from URL** 或 **Import from File**
166
+ 2. 选择对应的示例 JSON 文件
167
+ 3. 配置你的钉钉 API 凭据
168
+ 4. 运行测试
169
+
170
+ ### 已知问题
171
+
172
+ - 暂无已知的版本兼容性问题
173
+ - 如遇到问题,请提交 [GitHub Issue](https://github.com/cryozerolabs/n8n-nodes-dingtalk/issues)
174
+
175
+ ## 📚 相关资源
176
+
177
+ ### 官方文档
178
+ - [钉钉开放平台](https://open.dingtalk.com/)
179
+ - [钉钉 API 调用指南](https://open.dingtalk.com/document/development/how-to-call-apis)
180
+ - [钉钉访问令牌获取](https://open.dingtalk.com/document/development/api-gettoken)
181
+ - [AI 表格 API 文档](https://open.dingtalk.com/document/orgapp/overview-ai-form)
182
+
183
+ ### n8n 相关
184
+ - [n8n 官方文档](https://docs.n8n.io/)
185
+ - [n8n 社区节点文档](https://docs.n8n.io/integrations/community-nodes/)
186
+ - [n8n 入门指南](https://docs.n8n.io/try-it-out/)
187
+
188
+ ### 社区支持
189
+ - [GitHub 仓库](https://github.com/cryozerolabs/n8n-nodes-dingtalk)
190
+ - [问题反馈](https://github.com/cryozerolabs/n8n-nodes-dingtalk/issues)
191
+ - [功能请求](https://github.com/cryozerolabs/n8n-nodes-dingtalk/discussions)
192
+
193
+ ## 📋 版本历史
194
+
195
+ ### v0.1.0 (当前版本)
196
+ - ✅ 实现钉钉身份验证
197
+ - ✅ 自动刷新access_token
198
+ - ✅ AI表格数据表、记录的操作
199
+ - ✅ 获取用户详情(拿unionId)
200
+ - ✅ 额外支持对AI表格URL解析获取baseId、sheetId、viewId
201
+ - ✅ Resource + Operation 自动聚合
202
+
203
+ ## 🤝 贡献指南
204
+
205
+ 我们欢迎社区贡献!如果你想为这个项目贡献代码:
206
+
207
+ 1. Fork 本仓库
208
+ 2. 创建你的特性分支 (`git checkout -b feature/AmazingFeature`)
209
+ 3. 提交你的更改 (`git commit -m 'Add some AmazingFeature'`)
210
+ 4. 推送到分支 (`git push origin feature/AmazingFeature`)
211
+ 5. 打开一个 Pull Request
212
+
213
+ ### 开发环境设置
214
+
215
+ ```bash
216
+ # 1. 克隆仓库
217
+ git clone https://github.com/cryozerolabs/n8n-nodes-dingtalk.git
218
+ cd n8n-nodes-dingtalk
219
+
220
+ # 2. 安装依赖
221
+ npm install
222
+
223
+ # 3. 安装 n8n-node 开发工具(如果尚未安装)
224
+ npm install -g n8n-node
225
+
226
+ # 4. 构建项目
227
+ n8n-node build
228
+
229
+ # 5. 设置开发环境变量(可选,用于调试)
230
+ export NODE_ENV=development
231
+ export N8N_LOG_LEVEL=debug
232
+
233
+ # 6. 启动 n8n 开发服务器(自动加载当前节点)
234
+ n8n-node dev
235
+
236
+ # 7. 代码格式化和检查
237
+ npm run format
238
+ npm run lint
239
+ ```
240
+
241
+ **开发提示:**
242
+ - **`n8n-node dev`** 会自动启动一个包含当前节点的 n8n 测试环境
243
+ - **测试环境**默认运行在 `http://localhost:5678`
244
+ - 详细的开发文档请参考 [n8n 社区节点开发指南](https://docs.n8n.io/integrations/creating-nodes/)
245
+
246
+ ## 📄 许可证
247
+
248
+ 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
249
+
250
+ ## 🏷️ 关键词
251
+
252
+ 钉钉, DingTalk, n8n, workflow, automation, 工作流, 自动化, AI表格, 企业应用, API, 集成, 阿里巴巴
253
+
254
+ ---
255
+
256
+ **开发者**: [CryoZero Labs](https://github.com/cryozerolabs)
257
+ **维护状态**: ✅ 积极维护
258
+
259
+ 如果这个节点对你有帮助,请给我们一个 ⭐ Star!
@@ -0,0 +1,14 @@
1
+ import type { ICredentialDataDecryptedObject, ICredentialTestRequest, ICredentialType, IHttpRequestHelper, INodeProperties } from 'n8n-workflow';
2
+ import { IHttpRequestOptions } from 'n8n-workflow/dist/Interfaces';
3
+ export declare class DingtalkApi implements ICredentialType {
4
+ name: string;
5
+ displayName: string;
6
+ icon: "file:icon.png";
7
+ documentationUrl: string;
8
+ properties: INodeProperties[];
9
+ preAuthentication(this: IHttpRequestHelper, credentials: ICredentialDataDecryptedObject): Promise<{
10
+ accessToken: any;
11
+ }>;
12
+ authenticate(credentials: ICredentialDataDecryptedObject, requestOptions: IHttpRequestOptions): Promise<IHttpRequestOptions>;
13
+ test: ICredentialTestRequest;
14
+ }
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DingtalkApi = void 0;
4
+ class DingtalkApi {
5
+ constructor() {
6
+ this.name = 'dingtalkApi';
7
+ this.displayName = 'Dingtalk API';
8
+ this.icon = 'file:icon.png';
9
+ this.documentationUrl = 'https://github.com/org/@cryozerolabs/-dingtalk?tab=readme-ov-file#credentials';
10
+ this.properties = [
11
+ {
12
+ displayName: '组织ID (Corp ID)',
13
+ name: 'corpId',
14
+ type: 'string',
15
+ required: true,
16
+ default: '',
17
+ description: '钉钉组织ID,应用运行在哪个组织就填写哪个组织的corpId',
18
+ },
19
+ {
20
+ displayName: '应用ID (Client ID)',
21
+ name: 'clientId',
22
+ type: 'string',
23
+ required: true,
24
+ default: '',
25
+ description: '应用的ClientID',
26
+ },
27
+ {
28
+ displayName: '应用密钥 (Client Secret)',
29
+ name: 'clientSecret',
30
+ type: 'string',
31
+ typeOptions: { password: true },
32
+ required: true,
33
+ default: '',
34
+ description: '应用的ClientSecret',
35
+ },
36
+ {
37
+ displayName: 'AccessToken',
38
+ name: 'accessToken',
39
+ type: 'hidden',
40
+ default: '',
41
+ typeOptions: {
42
+ password: true,
43
+ expirable: true,
44
+ },
45
+ description: '自动获取的AccessToken',
46
+ },
47
+ ];
48
+ this.test = {
49
+ request: {
50
+ baseURL: 'https://api.dingtalk.com/v1.0',
51
+ url: '=/oauth2/{{$credentials.corpId}}/token',
52
+ method: 'POST',
53
+ body: {
54
+ client_id: '={{$credentials.clientId}}',
55
+ client_secret: '={{$credentials.clientSecret}}',
56
+ grant_type: 'client_credentials',
57
+ },
58
+ },
59
+ };
60
+ }
61
+ async preAuthentication(credentials) {
62
+ const res = await this.helpers.httpRequest({
63
+ method: 'POST',
64
+ url: `https://api.dingtalk.com/v1.0/oauth2/${credentials.corpId}/token`,
65
+ body: {
66
+ client_id: credentials.clientId,
67
+ client_secret: credentials.clientSecret,
68
+ grant_type: 'client_credentials',
69
+ },
70
+ });
71
+ if (res.code || !res.access_token) {
72
+ throw new Error(`授权失败: ${res.message}`);
73
+ }
74
+ return { accessToken: res.access_token };
75
+ }
76
+ async authenticate(credentials, requestOptions) {
77
+ var _a, _b, _c, _d;
78
+ const baseURL = (_a = requestOptions.baseURL) !== null && _a !== void 0 ? _a : '';
79
+ const url = (_b = requestOptions.url) !== null && _b !== void 0 ? _b : '';
80
+ const full = url.startsWith('http') ? url : `${baseURL}${url}`;
81
+ if (full.includes('oapi.dingtalk.com')) {
82
+ requestOptions.qs = {
83
+ ...((_c = requestOptions.qs) !== null && _c !== void 0 ? _c : {}),
84
+ access_token: credentials.accessToken,
85
+ };
86
+ }
87
+ else {
88
+ requestOptions.headers = {
89
+ ...((_d = requestOptions.headers) !== null && _d !== void 0 ? _d : {}),
90
+ 'x-acs-dingtalk-access-token': credentials.accessToken,
91
+ };
92
+ }
93
+ return requestOptions;
94
+ }
95
+ }
96
+ exports.DingtalkApi = DingtalkApi;
97
+ //# sourceMappingURL=DingtalkApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DingtalkApi.credentials.js","sourceRoot":"","sources":["../../credentials/DingtalkApi.credentials.ts"],"names":[],"mappings":"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"}
Binary file
@@ -0,0 +1,5 @@
1
+ import { type INodeType, type INodeTypeDescription, type INodeExecutionData, type IExecuteFunctions } from 'n8n-workflow';
2
+ export declare class DingtalkNode implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.DingtalkNode = void 0;
37
+ const fs = __importStar(require("node:fs"));
38
+ const path = __importStar(require("node:path"));
39
+ const n8n_workflow_1 = require("n8n-workflow");
40
+ function loadAllResourceBundles(resourcesDir) {
41
+ var _a, _b, _c;
42
+ const bundles = [];
43
+ if (!fs.existsSync(resourcesDir))
44
+ return bundles;
45
+ const entries = fs.readdirSync(resourcesDir, { withFileTypes: true });
46
+ for (const e of entries) {
47
+ if (!e.isDirectory())
48
+ continue;
49
+ const idx = path.join(resourcesDir, e.name, 'index.js');
50
+ if (!fs.existsSync(idx))
51
+ continue;
52
+ const mod = require(idx);
53
+ const def = (_b = (_a = mod.default) !== null && _a !== void 0 ? _a : mod.bundle) !== null && _b !== void 0 ? _b : mod.resource;
54
+ if (!def || typeof def !== 'object')
55
+ continue;
56
+ const rb = def;
57
+ if (typeof rb.value === 'string' &&
58
+ typeof rb.name === 'string' &&
59
+ Array.isArray(rb.operations)) {
60
+ bundles.push(rb);
61
+ }
62
+ }
63
+ const seen = {};
64
+ for (const b of bundles)
65
+ seen[b.value] = ((_c = seen[b.value]) !== null && _c !== void 0 ? _c : 0) + 1;
66
+ const dups = Object.entries(seen).filter(([, c]) => c > 1);
67
+ if (dups.length)
68
+ throw new n8n_workflow_1.ApplicationError(`Duplicate resource detected: ${dups.map(([v]) => v).join(', ')}`);
69
+ bundles.sort((a, b) => a.value.localeCompare(b.value, 'zh-Hans-CN'));
70
+ return bundles;
71
+ }
72
+ const resourcesDir = path.join(__dirname, 'resources');
73
+ const bundles = loadAllResourceBundles(resourcesDir);
74
+ const resourceProperty = {
75
+ displayName: 'Resource',
76
+ name: 'resource',
77
+ type: 'options',
78
+ noDataExpression: true,
79
+ options: bundles.map((b) => ({ name: b.name, value: b.value })),
80
+ default: '',
81
+ };
82
+ const resourceOperationProps = bundles.map((b) => b.operationProperty);
83
+ const aggregatedParams = bundles.flatMap((b) => b.properties);
84
+ const allOps = bundles.flatMap((b) => b.operations);
85
+ const opMap = new Map(allOps.map((o) => [o.value, o]));
86
+ class DingtalkNode {
87
+ constructor() {
88
+ this.description = {
89
+ displayName: 'Dingtalk Node',
90
+ name: 'dingtalkNode',
91
+ icon: 'file:icon.png',
92
+ group: ['transform'],
93
+ version: 1,
94
+ subtitle: '={{$parameter["operation"]}}',
95
+ description: 'Interact with the Dingtalk API',
96
+ defaults: { name: 'Dingtalk Node' },
97
+ usableAsTool: true,
98
+ inputs: ["main"],
99
+ outputs: ["main"],
100
+ credentials: [{ name: 'dingtalkApi', required: true }],
101
+ properties: [resourceProperty, ...resourceOperationProps, ...aggregatedParams],
102
+ };
103
+ }
104
+ async execute() {
105
+ const items = this.getInputData();
106
+ const results = [];
107
+ const opValue = this.getNodeParameter('operation', 0);
108
+ const op = opMap.get(opValue);
109
+ if (!op) {
110
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Operation "${opValue || '<empty>'}" not found`, { itemIndex: 0 });
111
+ }
112
+ for (let i = 0; i < items.length; i++) {
113
+ try {
114
+ const out = await op.run.call(this, i);
115
+ results.push(out);
116
+ }
117
+ catch (error) {
118
+ if (this.continueOnFail()) {
119
+ results.push({ json: { error: error.message }, pairedItem: { item: i } });
120
+ }
121
+ else {
122
+ if (error.context) {
123
+ error.context.itemIndex = i;
124
+ }
125
+ throw error;
126
+ }
127
+ }
128
+ }
129
+ return this.prepareOutputData(results);
130
+ }
131
+ }
132
+ exports.DingtalkNode = DingtalkNode;
133
+ //# sourceMappingURL=DingtalkNode.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DingtalkNode.node.js","sourceRoot":"","sources":["../../../nodes/DingtalkNode/DingtalkNode.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ {
2
+ "node": "@cryozerolabs/n8n-nodes-dingtalk",
3
+ "nodeVersion": "1.0",
4
+ "codexVersion": "1.0",
5
+ "categories": ["Development", "Developer Tools"],
6
+ "resources": {
7
+ "credentialDocumentation": [
8
+ {
9
+ "url": "https://github.com/org/repo?tab=readme-ov-file#credentials"
10
+ }
11
+ ],
12
+ "primaryDocumentation": [
13
+ {
14
+ "url": "https://github.com/org/repo?tab=readme-ov-file"
15
+ }
16
+ ]
17
+ }
18
+ }
Binary file
@@ -0,0 +1,2 @@
1
+ declare const _default: import("../../../shared/resource").ResourceBundle;
2
+ export default _default;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resource_1 = require("../../../shared/resource");
4
+ exports.default = (0, resource_1.makeResourceBundle)({
5
+ value: 'auth',
6
+ name: '应用授权',
7
+ dir: __dirname,
8
+ });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../nodes/DingtalkNode/resources/auth/index.ts"],"names":[],"mappings":";;AAAA,uDAA8D;AAE9D,kBAAe,IAAA,6BAAkB,EAAC;IACjC,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,SAAS;CACd,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { OperationDef } from '../../../shared/operation';
2
+ declare const op: OperationDef;
3
+ export default op;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const n8n_workflow_1 = require("n8n-workflow");
4
+ const OP = 'auth.token.get';
5
+ const properties = [];
6
+ const op = {
7
+ value: OP,
8
+ name: '获取当前应用的 Access Token',
9
+ description: '直接从凭据(运行期)读取当前 access_token,不发起任何网络请求',
10
+ properties,
11
+ async run(itemIndex) {
12
+ var _a, _b, _c;
13
+ const creds = (await this.getCredentials('dingtalkApi'));
14
+ const token = ((_a = creds === null || creds === void 0 ? void 0 : creds.accessToken) !== null && _a !== void 0 ? _a : '').trim();
15
+ if (!token)
16
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), '当前凭据没有 access_token', { itemIndex });
17
+ const json = {
18
+ corpId: (_b = creds.corpId) !== null && _b !== void 0 ? _b : '',
19
+ clientId: (_c = creds.clientId) !== null && _c !== void 0 ? _c : '',
20
+ accessToken: token,
21
+ };
22
+ return { json, pairedItem: { item: itemIndex } };
23
+ },
24
+ };
25
+ exports.default = op;
26
+ //# sourceMappingURL=tokenGet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenGet.js","sourceRoot":"","sources":["../../../../../nodes/DingtalkNode/resources/auth/tokenGet.ts"],"names":[],"mappings":";;AACA,+CAAkD;AAGlD,MAAM,EAAE,GAAG,gBAAgB,CAAC;AAK5B,MAAM,UAAU,GAAsB,EAAE,CAAC;AAEzC,MAAM,EAAE,GAAiB;IACvB,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,uCAAuC;IACpD,UAAU;IAEV,KAAK,CAAC,GAAG,CAA0B,SAAiB;;QAClD,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAItD,CAAC;QACF,MAAM,KAAK,GAAG,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,mCAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,KAAK;YACR,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAErF,MAAM,IAAI,GAAgB;YACxB,MAAM,EAAE,MAAA,KAAK,CAAC,MAAM,mCAAI,EAAE;YAC1B,QAAQ,EAAE,MAAA,KAAK,CAAC,QAAQ,mCAAI,EAAE;YAC9B,WAAW,EAAE,KAAK;SACnB,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;IACnD,CAAC;CACF,CAAC;AAEF,kBAAe,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const _default: import("../../../shared/resource").ResourceBundle;
2
+ export default _default;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resource_1 = require("../../../shared/resource");
4
+ exports.default = (0, resource_1.makeResourceBundle)({
5
+ value: 'notable',
6
+ name: 'AI表格',
7
+ dir: __dirname,
8
+ });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../nodes/DingtalkNode/resources/notable/index.ts"],"names":[],"mappings":";;AAAA,uDAA8D;AAE9D,kBAAe,IAAA,6BAAkB,EAAC;IACjC,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,SAAS;CACd,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { OperationDef } from '../../../shared/operation';
2
+ declare const op: OperationDef;
3
+ export default op;