@nocobase/plugin-data-source-manager 2.1.0-alpha.15 → 2.1.0-alpha.17

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.
@@ -49,34 +49,34 @@ const ArgSchema = import_zod.z.object({
49
49
  filter: import_zod.z.object({}).catchall(import_zod.z.any()).describe(`# Parameters definition
50
50
  \`\`\`
51
51
  export type QueryCondition = {
52
- [field: string]: { // \`field\` key is Field name
53
- [operator: string]: any; // \`operator\` key is Query condition operator.
52
+ [field: string]: {
53
+ [operator: string]: any;
54
54
  };
55
55
  };
56
56
 
57
57
 
58
58
  export type QueryObject =
59
59
  | {
60
- [logic: string]: (QueryCondition | QueryObject)[]; // \`logic\` key is the relationship between query conditions, should be one of '$and', '$or', the value is recursion object array, item in array can be QueryCondition or QueryObject
60
+ [logic: string]: (QueryCondition | QueryObject)[];
61
61
  }
62
- | QueryCondition // QueryCondition definition above;
62
+ | QueryCondition
63
63
  \`\`\`
64
64
 
65
-
66
- // QueryCondition examples
65
+ Field names are collection field names.
66
+ Operator names are query operators such as \`$eq\`, \`$in\`, or \`$dateOn\`.
67
+ Logical keys in \`QueryObject\` should be \`$and\` or \`$or\`.
67
68
 
68
69
  \`\`\`
69
70
  const example1: QueryCondition = {
70
- age: { $gt: 18 }, // age great than 18
71
- name: { $like: '%John%' }, // name include John
71
+ age: { $gt: 18 },
72
+ name: { $like: '%John%' },
72
73
  };
73
74
 
74
75
  const example2: QueryCondition = {
75
- status: { $in: ['active', 'pending'] }, // status is active or pending
76
+ status: { $in: ['active', 'pending'] },
76
77
  };
77
78
  \`\`\`
78
79
 
79
- // QueryObject example
80
80
  \`\`\`
81
81
  const example1: QueryObject = {
82
82
  $and: [
@@ -99,6 +99,58 @@ const example2: QueryObject = {
99
99
 
100
100
  const example3: QueryObject = { age: { $lt: 50 } };
101
101
  \`\`\`
102
+
103
+ Supported scalar operators include:
104
+ \`$eq\`, \`$ne\`, \`$gt\`, \`$gte\`, \`$lt\`, \`$lte\`, \`$like\`, \`$notLike\`, \`$includes\`, \`$notIncludes\`, \`$in\`, \`$notIn\`, \`$dateOn\`, \`$dateNotOn\`, \`$dateBefore\`, \`$dateAfter\`, \`$dateNotBefore\`, \`$dateNotAfter\`, \`$dateBetween\`, \`$empty\`, \`$notEmpty\`
105
+
106
+ Frontend date filter contract:
107
+ - Always follow the same frontend-compatible date filter contract used by NocoBase filters.
108
+ - \`filter\` itself must be a structured object. Do not pass a JSON-encoded string such as \`"{\\"createdAt\\":{\\"$dateOn\\":\\"2025-11\\"}}"\`.
109
+ - For calendar-style date filtering, supported operators are exactly:
110
+ - \`$dateOn\`
111
+ - \`$dateNotOn\`
112
+ - \`$dateBefore\`
113
+ - \`$dateAfter\`
114
+ - \`$dateNotBefore\`
115
+ - \`$dateNotAfter\`
116
+ - \`$dateBetween\`
117
+ - \`$empty\`
118
+ - \`$notEmpty\`
119
+ - Do not generate \`$gte\`, \`$gt\`, \`$lte\`, \`$lt\`, or custom operator names for calendar date ranges.
120
+ - Allowed values:
121
+ - for \`$dateOn\`, \`$dateNotOn\`, \`$dateBefore\`, \`$dateAfter\`, \`$dateNotBefore\`, \`$dateNotAfter\`: \`YYYY-MM-DD\`, \`YYYY-MM\`, \`YYYY\`, a relative period object, or an exact datetime string only when the user explicitly wants timestamp comparison
122
+ - for \`$dateBetween\`: \`["YYYY-MM-DD", "YYYY-MM-DD"]\` or a relative period object
123
+ - for \`$empty\` and \`$notEmpty\`: no value
124
+ - Relative period object \`type\` values are exactly:
125
+ - \`today\`
126
+ - \`yesterday\`
127
+ - \`tomorrow\`
128
+ - \`thisWeek\`
129
+ - \`lastWeek\`
130
+ - \`nextWeek\`
131
+ - \`thisMonth\`
132
+ - \`lastMonth\`
133
+ - \`nextMonth\`
134
+ - \`thisQuarter\`
135
+ - \`lastQuarter\`
136
+ - \`nextQuarter\`
137
+ - \`thisYear\`
138
+ - \`lastYear\`
139
+ - \`nextYear\`
140
+ - \`past\`
141
+ - \`next\`
142
+ - If \`type\` is \`past\` or \`next\`, also provide:
143
+ - \`number\`: positive integer
144
+ - \`unit\`: one of \`day\`, \`week\`, \`month\`, \`quarter\`, \`year\`
145
+ - Prefer frontend-style calendar filters such as:
146
+ - \`{ createdAt: { $dateOn: "2026-04" } }\`
147
+ - \`{ createdAt: { $dateOn: { type: "thisMonth" } } }\`
148
+ - \`{ createdAt: { $dateBetween: ["2026-04-01", "2026-04-30"] } }\`
149
+ - Do not expand calendar queries into UTC month-start or day-start boundary expressions.
150
+ - If the user explicitly asks for exact timestamp comparison instead of a calendar period:
151
+ - timezone-aware datetime fields: use ISO 8601 strings such as \`2026-04-10T12:00:00.000Z\`
152
+ - \`datetimeNoTz\` fields: use local datetime strings such as \`2026-04-10 12:00:00\`
153
+ - \`dateOnly\` fields: use date-only strings without time components
102
154
  `),
103
155
  sort: import_zod.z.array(import_zod.z.string()).describe(`{{t("ai.tools.dataQuery.args.sort", { ns: "${import_package.default.name}" })}}`),
104
156
  offset: import_zod.z.number().optional().describe(`{{t("ai.tools.dataQuery.args.offset", { ns: "${import_package.default.name}" })}}`),
@@ -38,3 +38,4 @@ export declare function buildPagedToolResult<T>(params: {
38
38
  * 递归截断对象中的长字符串,保持 JSON 结构完整
39
39
  */
40
40
  export declare function truncateLongStrings(obj: any, maxLen?: number): any;
41
+ export declare function getStructuredQueryArgError(name: string, value: unknown): string | null;
@@ -29,6 +29,7 @@ __export(utils_exports, {
29
29
  MAX_QUERY_LIMIT: () => MAX_QUERY_LIMIT,
30
30
  MAX_STRING_LENGTH: () => MAX_STRING_LENGTH,
31
31
  buildPagedToolResult: () => buildPagedToolResult,
32
+ getStructuredQueryArgError: () => getStructuredQueryArgError,
32
33
  normalizeLimitOffset: () => normalizeLimitOffset,
33
34
  truncateLongStrings: () => truncateLongStrings
34
35
  });
@@ -77,11 +78,25 @@ function truncateLongStrings(obj, maxLen = MAX_STRING_LENGTH) {
77
78
  }
78
79
  return obj;
79
80
  }
81
+ function getStructuredQueryArgError(name, value) {
82
+ if (value === void 0) {
83
+ return null;
84
+ }
85
+ if (typeof value === "string") {
86
+ const example = name === "having" ? '{ "count": { "$gt": 10 } }' : '{ "createdAt": { "$dateOn": "2025-11" } }';
87
+ return `"${name}" must be an object, not a JSON string. Pass structured JSON like ${example}.`;
88
+ }
89
+ if (value === null || Array.isArray(value) || typeof value !== "object") {
90
+ return `"${name}" must be an object.`;
91
+ }
92
+ return null;
93
+ }
80
94
  // Annotate the CommonJS export names for ESM import in node:
81
95
  0 && (module.exports = {
82
96
  MAX_QUERY_LIMIT,
83
97
  MAX_STRING_LENGTH,
84
98
  buildPagedToolResult,
99
+ getStructuredQueryArgError,
85
100
  normalizeLimitOffset,
86
101
  truncateLongStrings
87
102
  });
@@ -2,6 +2,11 @@
2
2
  scope: GENERAL
3
3
  name: data-metadata
4
4
  description: helps get collection metadata (data model, like database table definition, RESTful API definition), like collection definition, field metadata
5
+ tools:
6
+ - getDataSources
7
+ - getCollectionNames
8
+ - getCollectionMetadata
9
+ - searchFieldMetadata
5
10
  introduction:
6
11
  title: '{{t("ai.skills.dataMetadata.title", { ns: "@nocobase/plugin-data-source-manager" })}}'
7
12
  about: '{{t("ai.skills.dataMetadata.about", { ns: "@nocobase/plugin-data-source-manager" })}}'
@@ -3,10 +3,10 @@ scope: GENERAL
3
3
  name: data-query
4
4
  description: Inspect schemas, retrieve records, and run aggregate queries on specified datasources
5
5
  tools:
6
- - getDataSources
7
- - getCollectionNames
8
- - getCollectionMetadata
9
- - searchFieldMetadata
6
+ - getSkill
7
+ - dataQuery
8
+ - dataSourceQuery
9
+ - dataSourceCounting
10
10
  introduction:
11
11
  title: '{{t("ai.skills.dataQuery.title", { ns: "@nocobase/plugin-data-source-manager" })}}'
12
12
  about: '{{t("ai.skills.dataQuery.about", { ns: "@nocobase/plugin-data-source-manager" })}}'
@@ -21,12 +21,18 @@ This skill focuses on safe read-only data access.
21
21
 
22
22
  ## Schema-first Querying
23
23
 
24
- When the user does not provide an exact collection or field name:
24
+ When the user does not provide an exact collection or field name, or when this is the first query against a collection in the current conversation:
25
25
 
26
- 1. Call `getDataSources` if the target data source is unclear.
27
- 2. Call `getCollectionNames` to find the right collection.
28
- 3. Call `getCollectionMetadata` or `searchFieldMetadata` to confirm field names, relation paths, and data types.
29
- 4. Only then run a data tool.
26
+ 1. If schema, field, relation path, or datasource choice is not already explicit and reliable, your first tool call must be `getSkill` with `skillName="data-metadata"`.
27
+ 2. Do not guess collection names, field names, relation paths, or data types before `data-metadata` has been loaded.
28
+ 3. Call `getDataSources` from the loaded `data-metadata` workflow if the target data source is unclear.
29
+ 4. If multiple data sources may contain relevant data, inspect each candidate before choosing the query scope.
30
+ 5. Do not silently default to `main` when other relevant data sources are available.
31
+ 6. If you intentionally limit the query to one data source, explain why that data source was chosen and why others were not used.
32
+ 7. Call `getCollectionNames` from the loaded `data-metadata` workflow to find the right collection.
33
+ 8. Call `getCollectionMetadata` or `searchFieldMetadata` from the loaded `data-metadata` workflow to confirm field names, relation paths, and data types.
34
+ 9. Only then run a data tool.
35
+ 10. Even if the user already mentions a collection name such as `date_boundary_cases` or a common field such as `createdAt`, verify them with the loaded `data-metadata` workflow before the first real query when the collection has not yet been confirmed in the current conversation.
30
36
 
31
37
  Do not guess collection names, measure aliases, or dotted relation paths.
32
38
 
@@ -66,13 +72,29 @@ Use `dataSourceCounting` only for a simple total when grouped output is unnecess
66
72
  5. Use aliases when the user clearly needs stable output keys.
67
73
  6. For dotted relation fields, prefer the exact field path confirmed from metadata, such as `createdBy.nickname`.
68
74
  7. Default row limit is 50 and the tool caps the limit at 100.
75
+ 8. Always follow the same frontend date filter contract used by NocoBase filters.
76
+ 8.1. `filter` and `having` must be structured objects, not JSON-encoded strings.
77
+ 9. Supported date operators are exactly `$dateOn`, `$dateNotOn`, `$dateBefore`, `$dateAfter`, `$dateNotBefore`, `$dateNotAfter`, `$dateBetween`, `$empty`, and `$notEmpty`.
78
+ 10. For calendar-style date filtering, do not generate `$gte`, `$gt`, `$lte`, `$lt`, or custom operator names.
79
+ 11. Allowed value shapes are:
80
+ - for `$dateOn`, `$dateNotOn`, `$dateBefore`, `$dateAfter`, `$dateNotBefore`, `$dateNotAfter`: `YYYY-MM-DD`, `YYYY-MM`, `YYYY`, a relative period object, or an exact datetime string only when the user explicitly wants timestamp comparison
81
+ - for `$dateBetween`: `["YYYY-MM-DD", "YYYY-MM-DD"]` or a relative period object
82
+ - for `$empty` and `$notEmpty`: no value
83
+ 12. Relative period objects must use exactly these `type` values: `today`, `yesterday`, `tomorrow`, `thisWeek`, `lastWeek`, `nextWeek`, `thisMonth`, `lastMonth`, `nextMonth`, `thisQuarter`, `lastQuarter`, `nextQuarter`, `thisYear`, `lastYear`, `nextYear`, `past`, `next`.
84
+ 13. If `type` is `past` or `next`, the object must also include `number` as a positive integer and `unit` as one of `day`, `week`, `month`, `quarter`, `year`.
85
+ 14. For day, week, month, quarter, year, and common relative-period queries, prefer frontend date filters such as `{ createdAt: { $dateOn: "2026-04" } }`, `{ createdAt: { $dateOn: { type: "thisMonth" } } }`, or `{ createdAt: { $dateBetween: ["2026-04-01", "2026-04-30"] } }`.
86
+ 15. Do not expand calendar queries into UTC boundary expressions such as `createdAt >= 2026-04-01T00:00:00.000Z` and `< 2026-05-01T00:00:00.000Z`.
87
+ 16. For fields such as `createdAt` and `updatedAt`, still prefer the frontend date operators above for calendar queries instead of UTC boundary expansion.
88
+ 17. Only inspect field type when the user explicitly asks for an exact timestamp comparison rather than a calendar period.
89
+ 18. If an exact timestamp comparison is required, keep the operator frontend-compatible and choose the value format that matches the field semantics:
90
+ - timezone-aware datetime fields: ISO 8601 timestamp strings such as `2026-04-10T12:00:00.000Z`
91
+ - `datetimeNoTz` fields: timezone-free local datetime strings such as `2026-04-10 12:00:00`
92
+ - `dateOnly` fields: date-only strings without time components
93
+ 19. Do not provide a timezone parameter yourself. The runtime request timezone is already supplied by the system.
69
94
 
70
95
  # Available Tools
71
96
 
72
- - `getDataSources`: Lists all available data sources.
73
- - `getCollectionNames`: Lists all collections in a data source.
74
- - `getCollectionMetadata`: Returns field metadata for collections.
75
- - `searchFieldMetadata`: Searches fields by keyword.
97
+ - `getSkill`: Load the `data-metadata` skill before metadata inspection so its schema exploration tools become available in the current conversation.
76
98
  - `dataSourceQuery`: Query data from a specified collection in a data source. Supports filtering, sorting, field selection, and pagination. Returns paged results with total count.
77
99
  - `dataQuery`: Run aggregate repository queries with measures, dimensions, orders, filter, and having.
78
100
  - `dataSourceCounting`: Get the total count of records matching the specified filter conditions in a collection.
@@ -185,9 +207,10 @@ Action: Call dataSourceCounting with collectionName="users", filter={ status: {
185
207
  ```
186
208
  User: "Show monthly revenue by salesperson"
187
209
  Action:
188
- 1. Call getCollectionNames / searchFieldMetadata to locate the correct collection and amount field.
189
- 2. Call getCollectionMetadata if date or relation paths are unclear.
190
- 3. Call dataQuery with the confirmed fields.
210
+ 1. Call getSkill with skillName="data-metadata".
211
+ 2. Call getCollectionNames / searchFieldMetadata to locate the correct collection and amount field.
212
+ 3. Call getCollectionMetadata if date or relation paths are unclear.
213
+ 4. Call dataQuery with the confirmed fields.
191
214
  ```
192
215
 
193
216
  # Notes
@@ -159,12 +159,12 @@ const AggregateQuerySchema = {
159
159
  },
160
160
  filter: {
161
161
  type: "object",
162
- description: "Filter object applied before aggregation.",
162
+ description: 'Filter object applied before aggregation. Pass a structured object, not a JSON string. Follow the frontend NocoBase date filter contract: use only $dateOn, $dateNotOn, $dateBefore, $dateAfter, $dateNotBefore, $dateNotAfter, $dateBetween, $empty, and $notEmpty for calendar-style date filtering; prefer YYYY-MM-DD, YYYY-MM, YYYY, relative period objects, or ["start","end"] date ranges; do not expand month/day queries into UTC boundary timestamps.',
163
163
  additionalProperties: true
164
164
  },
165
165
  having: {
166
166
  type: "object",
167
- description: "Having object applied after grouping.",
167
+ description: "Having object applied after grouping. Pass a structured object, not a JSON string. Reference selected measure aliases or selected field paths here, for example { count: { $gt: 10 } }.",
168
168
  additionalProperties: true
169
169
  },
170
170
  offset: {
@@ -174,10 +174,6 @@ const AggregateQuerySchema = {
174
174
  limit: {
175
175
  type: "number",
176
176
  description: `Maximum number of rows to return. Defaults to 50 and is capped at ${import_utils.MAX_QUERY_LIMIT}.`
177
- },
178
- timezone: {
179
- type: "string",
180
- description: "Optional timezone override for date formatting."
181
177
  }
182
178
  }
183
179
  };
@@ -186,15 +182,15 @@ function getDataSourceKey(args) {
186
182
  }
187
183
  function getTimezone(ctx, args) {
188
184
  var _a, _b, _c, _d, _e, _f, _g;
189
- const value = args.timezone || ((_a = ctx.get) == null ? void 0 : _a.call(ctx, "x-timezone")) || ((_c = (_b = ctx.request) == null ? void 0 : _b.get) == null ? void 0 : _c.call(_b, "x-timezone")) || ((_e = (_d = ctx.request) == null ? void 0 : _d.header) == null ? void 0 : _e["x-timezone"]) || ((_g = (_f = ctx.req) == null ? void 0 : _f.headers) == null ? void 0 : _g["x-timezone"]);
185
+ const value = ((_a = ctx.get) == null ? void 0 : _a.call(ctx, "x-timezone")) || ((_c = (_b = ctx.request) == null ? void 0 : _b.get) == null ? void 0 : _c.call(_b, "x-timezone")) || ((_e = (_d = ctx.request) == null ? void 0 : _d.header) == null ? void 0 : _e["x-timezone"]) || ((_g = (_f = ctx.req) == null ? void 0 : _f.headers) == null ? void 0 : _g["x-timezone"]);
190
186
  return Array.isArray(value) ? value[0] : value;
191
187
  }
192
188
  var dataQuery_default = (0, import_ai.defineTools)({
193
189
  scope: "SPECIFIED",
194
190
  defaultPermission: "ALLOW",
195
191
  introduction: {
196
- title: `{{t("ai.tools.dataQueryAggregate.title", { ns: "${import_package.default.name}" })}}`,
197
- about: `{{t("ai.tools.dataQueryAggregate.about", { ns: "${import_package.default.name}" })}}`
192
+ title: `{{t("ai.tools.dataQuery.title", { ns: "${import_package.default.name}" })}}`,
193
+ about: `{{t("ai.tools.dataQuery.about", { ns: "${import_package.default.name}" })}}`
198
194
  },
199
195
  definition: {
200
196
  name: "dataQuery",
@@ -203,6 +199,20 @@ var dataQuery_default = (0, import_ai.defineTools)({
203
199
  },
204
200
  invoke: async (ctx, args) => {
205
201
  var _a, _b, _c, _d, _e;
202
+ const filterError = (0, import_utils.getStructuredQueryArgError)("filter", args.filter);
203
+ if (filterError) {
204
+ return {
205
+ status: "error",
206
+ content: filterError
207
+ };
208
+ }
209
+ const havingError = (0, import_utils.getStructuredQueryArgError)("having", args.having);
210
+ if (havingError) {
211
+ return {
212
+ status: "error",
213
+ content: havingError
214
+ };
215
+ }
206
216
  const dataSourceKey = getDataSourceKey(args);
207
217
  const ds = ctx.app.dataSourceManager.get(dataSourceKey);
208
218
  if (!ds) {
@@ -41,6 +41,7 @@ __export(dataSourceCounting_exports, {
41
41
  module.exports = __toCommonJS(dataSourceCounting_exports);
42
42
  var import_ai = require("@nocobase/ai");
43
43
  var import_common = require("../../../common/common");
44
+ var import_utils = require("../../../common/utils");
44
45
  var import_package = __toESM(require("../../../../../package.json"));
45
46
  var dataSourceCounting_default = (0, import_ai.defineTools)({
46
47
  scope: "SPECIFIED",
@@ -51,10 +52,17 @@ var dataSourceCounting_default = (0, import_ai.defineTools)({
51
52
  },
52
53
  definition: {
53
54
  name: "dataSourceCounting",
54
- description: "Use dataSource, collectionName, and collection fields to query data from the database, get total count of records",
55
+ description: "Use dataSource, collectionName, and collection fields to query data from the database, get total count of records. The filter argument must be a structured object, not a JSON string.",
55
56
  schema: import_common.ArgSchema
56
57
  },
57
58
  invoke: async (ctx, args) => {
59
+ const filterError = (0, import_utils.getStructuredQueryArgError)("filter", args.filter);
60
+ if (filterError) {
61
+ return {
62
+ status: "error",
63
+ content: filterError
64
+ };
65
+ }
58
66
  const plugin = ctx.app.pm.get("ai");
59
67
  const content = await plugin.aiContextDatasourceManager.query(ctx, { ...args, offset: 0, limit: 1 });
60
68
  return {
@@ -52,10 +52,17 @@ var dataSourceQuery_default = (0, import_ai.defineTools)({
52
52
  },
53
53
  definition: {
54
54
  name: "dataSourceQuery",
55
- description: "Use dataSource, collectionName, and collection fields to query data from the database",
55
+ description: "Use dataSource, collectionName, and collection fields to query data from the database. The filter argument must be a structured object, not a JSON string.",
56
56
  schema: import_common.ArgSchema
57
57
  },
58
58
  invoke: async (ctx, args) => {
59
+ const filterError = (0, import_utils.getStructuredQueryArgError)("filter", args.filter);
60
+ if (filterError) {
61
+ return {
62
+ status: "error",
63
+ content: filterError
64
+ };
65
+ }
59
66
  const plugin = ctx.app.pm.get("ai");
60
67
  const { limit, offset } = (0, import_utils.normalizeLimitOffset)(args, { defaultLimit: 50, maxLimit: import_utils.MAX_QUERY_LIMIT });
61
68
  const content = await plugin.aiContextDatasourceManager.query(ctx, {
@@ -7,4 +7,4 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
 
10
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react-i18next"),require("@emotion/css"),require("react-router-dom"),require("@formily/antd-v5"),require("@formily/reactive"),require("@formily/react"),require("@nocobase/plugin-acl/client"),require("@dnd-kit/core"),require("@nocobase/flow-engine"),require("@ant-design/icons"),require("@formily/core"),require("@formily/shared"),require("react"),require("antd"),require("@nocobase/client"),require("antd-style"),require("@nocobase/utils/client"),require("lodash")):"function"==typeof define&&define.amd?define("@nocobase/plugin-data-source-manager",["react-i18next","@emotion/css","react-router-dom","@formily/antd-v5","@formily/reactive","@formily/react","@nocobase/plugin-acl/client","@dnd-kit/core","@nocobase/flow-engine","@ant-design/icons","@formily/core","@formily/shared","react","antd","@nocobase/client","antd-style","@nocobase/utils/client","lodash"],t):"object"==typeof exports?exports["@nocobase/plugin-data-source-manager"]=t(require("react-i18next"),require("@emotion/css"),require("react-router-dom"),require("@formily/antd-v5"),require("@formily/reactive"),require("@formily/react"),require("@nocobase/plugin-acl/client"),require("@dnd-kit/core"),require("@nocobase/flow-engine"),require("@ant-design/icons"),require("@formily/core"),require("@formily/shared"),require("react"),require("antd"),require("@nocobase/client"),require("antd-style"),require("@nocobase/utils/client"),require("lodash")):e["@nocobase/plugin-data-source-manager"]=t(e["react-i18next"],e["@emotion/css"],e["react-router-dom"],e["@formily/antd-v5"],e["@formily/reactive"],e["@formily/react"],e["@nocobase/plugin-acl/client"],e["@dnd-kit/core"],e["@nocobase/flow-engine"],e["@ant-design/icons"],e["@formily/core"],e["@formily/shared"],e.react,e.antd,e["@nocobase/client"],e["antd-style"],e["@nocobase/utils/client"],e.lodash)}(self,function(e,t,n,r,o,a,i,c,u,l,s,p,f,d,b,y,g,h){return function(){"use strict";var m,v,w,O={719:function(e,t,n){n.r(t),n.d(t,{PluginDataSourceManagerClient:function(){return M}});var r=n(342),o=n(79),a=n.n(o),i=n(768),c=n(155),u=n.n(c),l=n(135),s=n(872);function p(e,t,n,r,o,a,i){try{var c=e[a](i),u=c.value}catch(e){n(e);return}c.done?t(u):Promise.resolve(u).then(r,o)}function f(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function i(e){p(a,r,o,i,c,"next",e)}function c(e){p(a,r,o,i,c,"throw",e)}i(void 0)})}}function d(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}function b(e,t,n){return(b=O()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&v(o,n.prototype),o}).apply(null,arguments)}function y(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function g(e,t,n){return t&&y(e.prototype,t),n&&y(e,n),e}function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e){return(m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function v(e,t){return(v=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function w(e){var t="function"==typeof Map?new Map:void 0;return(w=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return b(e,arguments,m(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),v(n,e)})(e)}function O(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(O=function(){return!!e})()}function P(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),c=Object.defineProperty;return c(i,"next",{value:u(0)}),c(i,"throw",{value:u(1)}),c(i,"return",{value:u(2)}),"function"==typeof Symbol&&c(i,Symbol.iterator,{value:function(){return this}}),i;function u(c){return function(u){var l=[c,u];if(n)throw TypeError("Generator is already executing.");for(;i&&(i=0,l[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&l[0]?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return a.label++,{value:l[1],done:!1};case 5:a.label++,r=l[1],l=[0];continue;case 7:l=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){a=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){a.label=l[1];break}if(6===l[0]&&a.label<o[1]){a.label=o[1],o=l;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(l);break}o[2]&&a.ops.pop(),a.trys.pop();continue}l=t.call(e,a)}catch(e){l=[6,e],r=0}finally{n=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}var S=(0,r.lazy)(function(){return n.e("936").then(n.bind(n,35))},"DatabaseConnectionProvider").DatabaseConnectionProvider,C=(0,r.lazy)(function(){return Promise.all([n.e("936"),n.e("397")]).then(n.bind(n,620))},"BreadcumbTitle").BreadcumbTitle,j=(0,r.lazy)(function(){return Promise.all([n.e("936"),n.e("369"),n.e("420")]).then(n.bind(n,111))},"CollectionManagerPage").CollectionManagerPage,x=(0,r.lazy)(function(){return Promise.all([n.e("936"),n.e("271")]).then(n.bind(n,61))},"DatabaseConnectionManagerPane").DatabaseConnectionManagerPane,k=(0,r.lazy)(function(){return Promise.all([n.e("936"),n.e("369"),n.e("644")]).then(n.bind(n,687))},"MainDataSourceManager").MainDataSourceManager,_=(0,r.lazy)(function(){return n.e("603").then(n.bind(n,886))},"DataSourcePermissionManager").DataSourcePermissionManager,q=(0,r.lazy)(function(){return n.e("416").then(n.bind(n,819))},"CollectionMainProvider").CollectionMainProvider,T=function(){function e(t){d(this,e),h(this,"plugin",void 0),h(this,"componentRegistry",void 0),this.plugin=t,this.componentRegistry=new i.Registry}return g(e,[{key:"registerManagerAction",value:function(e){var t=e.order,n=e.component,r="managerAction";this.componentRegistry.get(r)||this.componentRegistry.register(r,[]),this.componentRegistry.get(r).push({order:null!=t?t:0,component:n})}},{key:"getManagerActions",value:function(){var e;return null!=(e=this.componentRegistry.get("managerAction"))?e:[]}}]),e}(),M=function(e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function t(){var e,n,r;return d(this,t),n=t,r=arguments,n=m(n),h(e=function(e,t){var n;if(t&&("object"==((n=t)&&"u">typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,O()?Reflect.construct(n,r||[],m(this).constructor):n.apply(this,r)),"types",new Map),h(e,"extensionManager",new T(e)),h(e,"extendedTabs",{}),e}return t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&v(t,e),g(t,[{key:"getExtendedTabs",value:function(){return this.extendedTabs}},{key:"registerPermissionTab",value:function(e){this.extendedTabs[(0,i.uid)()]=e}},{key:"load",value:function(){return f(function(){return P(this,function(e){return this.app.pm.get(a()).settingsUI.addPermissionsTab(function(e){var t=e.t,n=e.TabLayout,r=e.activeRole;return{key:"dataSource",label:t("Data sources"),sort:15,children:u().createElement(n,null,u().createElement(_,{role:r}))}}),this.app.use(S),this.app.pluginSettingsManager.add(s.CU,{title:'{{t("Data sources", { ns: "'.concat(s.CU,'" })}}'),icon:"ClusterOutlined",isPinned:!0,sort:100,showTabs:!1,aclSnippet:"pm.data-source-manager*"}),this.app.pluginSettingsManager.add("".concat(s.CU,".list"),{title:'{{t("Data sources", { ns: "'.concat(s.CU,'" })}}'),Component:x,sort:1,skipAclConfigure:!0,aclSnippet:"pm.data-source-manager"}),this.app.pluginSettingsManager.add("".concat(s.CU,"/:name"),{title:u().createElement(C,null),icon:"ClusterOutlined",isTopLevel:!1,sort:100,skipAclConfigure:!0,aclSnippet:"pm.data-source-manager"}),this.app.pluginSettingsManager.add("".concat(s.CU,"/main"),{title:u().createElement(C,null),icon:"ClusterOutlined",isTopLevel:!1,sort:100,skipAclConfigure:!0,aclSnippet:"pm.data-source-manager.data-source-main",Component:q}),this.app.pluginSettingsManager.add("".concat(s.CU,"/main.collections"),{title:'{{t("Collections", { ns: "'.concat(s.CU,'" })}}'),Component:k,topLevelName:"".concat(s.CU,"/main"),pluginKey:s.CU,skipAclConfigure:!0,aclSnippet:"pm.data-source-manager.data-source-main"}),this.app.pluginSettingsManager.add("".concat(s.CU,"/:name.collections"),{title:'{{t("Collections", { ns: "'.concat(s.CU,'" })}}'),Component:j,topLevelName:"".concat(s.CU,"/:name"),pluginKey:s.CU,skipAclConfigure:!0,aclSnippet:"pm.data-source-manager.data-source-main"}),this.app.dataSourceManager.addDataSources(this.getThirdDataSource.bind(this),l.J),[2]})}).call(this)}},{key:"setDataSources",value:function(){return f(function(){var e,t;return P(this,function(n){switch(n.label){case 0:return[4,this.app.apiClient.request({resource:"dataSources",action:"listEnabled",params:{paginate:!1}})];case 1:return[2,null==(t=n.sent())||null==(e=t.data)?void 0:e.data]}})}).call(this)}},{key:"getThirdDataSource",value:function(){return f(function(){var e,t;return P(this,function(n){switch(n.label){case 0:return[4,this.app.apiClient.request({resource:"dataSources",action:"listEnabled",params:{paginate:!1,appends:["collections"]}})];case 1:return[2,null==(t=n.sent())||null==(e=t.data)?void 0:e.data]}})}).call(this)}},{key:"registerType",value:function(e,t){this.types.set(e,t)}}]),t}(w(r.Plugin));t.default=M},135:function(e,t,n){n.d(t,{J:function(){return u}});var r=n(342);function o(e,t,n,r,o,a,i){try{var c=e[a](i),u=c.value}catch(e){n(e);return}c.done?t(u):Promise.resolve(u).then(r,o)}function a(e){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function i(e,t){return(i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function c(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(c=function(){return!!e})()}var u=function(e){var t;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function n(){var e,t;if(!(this instanceof n))throw TypeError("Cannot call a class as a function");return e=n,t=arguments,e=a(e),function(e,t){var n;if(t&&("object"==((n=t)&&"u">typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,c()?Reflect.construct(e,t||[],a(this).constructor):e.apply(this,t))}return n.prototype=Object.create(e&&e.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),e&&i(n,e),t=[{key:"getDataSource",value:function(){var e;return(e=function(){return function(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),c=Object.defineProperty;return c(i,"next",{value:u(0)}),c(i,"throw",{value:u(1)}),c(i,"return",{value:u(2)}),"function"==typeof Symbol&&c(i,Symbol.iterator,{value:function(){return this}}),i;function u(c){return function(u){var l=[c,u];if(n)throw TypeError("Generator is already executing.");for(;i&&(i=0,l[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&l[0]?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return a.label++,{value:l[1],done:!1};case 5:a.label++,r=l[1],l=[0];continue;case 7:l=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){a=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){a.label=l[1];break}if(6===l[0]&&a.label<o[1]){a.label=o[1],o=l;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(l);break}o[2]&&a.ops.pop(),a.trys.pop();continue}l=t.call(e,a)}catch(e){l=[6,e],r=0}finally{n=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}(this,function(e){switch(e.label){case 0:return[4,this.app.apiClient.request({url:"dataSources:get/".concat(this.key),params:{appends:["collections"]}})];case 1:return[2,e.sent().data.data]}})},function(){var t=this,n=arguments;return new Promise(function(r,a){var i=e.apply(t,n);function c(e){o(i,r,a,c,u,"next",e)}function u(e){o(i,r,a,c,u,"throw",e)}c(void 0)})}).call(this)}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(n.prototype,t),n}(r.DataSource)},872:function(e,t,n){n.d(t,{CU:function(){return a},VP:function(){return c},vV:function(){return i}});var r=n(342),o=n(953),a="data-source-manager";function i(e){var t,n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return r.i18n.t(e,(t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({},o),n=n={ns:a},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t))}function c(){return(0,o.useTranslation)([a,"client"],{nsMode:"fallback"})}},375:function(e){e.exports=l},799:function(e){e.exports=c},477:function(e){e.exports=t},418:function(e){e.exports=r},452:function(e){e.exports=s},230:function(e){e.exports=a},992:function(e){e.exports=o},166:function(e){e.exports=p},342:function(e){e.exports=b},694:function(e){e.exports=u},79:function(e){e.exports=i},768:function(e){e.exports=g},59:function(e){e.exports=d},235:function(e){e.exports=y},773:function(e){e.exports=h},155:function(e){e.exports=f},953:function(t){t.exports=e},442:function(e){e.exports=n},634:function(e,t,n){var r="",o="u">typeof document?document.currentScript:null;if(o&&o.src&&(r=o.src.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")),!r){var a=window.__webpack_public_path__||"";a&&("/"!==a.charAt(a.length-1)&&(a+="/"),r=a+"static/plugins/@nocobase/plugin-data-source-manager/dist/client/")}if(!r){if(!(r=window.__nocobase_public_path__||"")&&window.location&&window.location.pathname){var i=window.location.pathname||"/",c=i.indexOf("/v2/");r=c>=0?i.slice(0,c+1):"/"}r&&(r=r.replace(/\/v2\/?$/,"/")),r||(r="/"),"/"!==r.charAt(r.length-1)&&(r+="/"),r+="static/plugins/@nocobase/plugin-data-source-manager/dist/client/"}n.p=r}},P={};function S(e){var t=P[e];if(void 0!==t)return t.exports;var n=P[e]={exports:{}};return O[e](n,n.exports,S),n.exports}S.m=O,S.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return S.d(t,{a:t}),t},S.d=function(e,t){for(var n in t)S.o(t,n)&&!S.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},S.f={},S.e=function(e){return Promise.all(Object.keys(S.f).reduce(function(t,n){return S.f[n](e,t),t},[]))},S.u=function(e){return""+({271:"fa3e4378130aae67",369:"c6568af61b73d4ad",397:"acfbf29a3a591994",416:"bd5678ab7ccc4395",420:"1ee628ced380272f",603:"65f41527bfe3a32a",644:"6b850ca935afda51",936:"6052d2d233279406"})[e]+".js"},S.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),S.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},C={},S.l=function(e,t,n,r){if(C[e])return void C[e].push(t);if(void 0!==n)for(var o,a,i=document.getElementsByTagName("script"),c=0;c<i.length;c++){var u=i[c];if(u.getAttribute("src")==e||u.getAttribute("data-rspack")=="@nocobase/plugin-data-source-manager:"+n){o=u;break}}o||(a=!0,(o=document.createElement("script")).timeout=120,S.nc&&o.setAttribute("nonce",S.nc),o.setAttribute("data-rspack","@nocobase/plugin-data-source-manager:"+n),o.src=e),C[e]=[t];var l=function(t,n){o.onerror=o.onload=null,clearTimeout(s);var r=C[e];if(delete C[e],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach(function(e){return e(n)}),t)return t(n)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),a&&document.head.appendChild(o)},S.r=function(e){"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},S.g.importScripts&&(j=S.g.location+"");var C,j,x=S.g.document;if(!j&&x&&(x.currentScript&&"SCRIPT"===x.currentScript.tagName.toUpperCase()&&(j=x.currentScript.src),!j)){var k=x.getElementsByTagName("script");if(k.length)for(var _=k.length-1;_>-1&&(!j||!/^http(s?):/.test(j));)j=k[_--].src}if(!j)throw Error("Automatic publicPath is not supported in this browser");return S.p=j.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),m={889:0},S.f.j=function(e,t){var n=S.o(m,e)?m[e]:void 0;if(0!==n)if(n)t.push(n[2]);else{var r=new Promise(function(t,r){n=m[e]=[t,r]});t.push(n[2]=r);var o=S.p+S.u(e),a=Error();S.l(o,function(t){if(S.o(m,e)&&(0!==(n=m[e])&&(m[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;a.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",a.name="ChunkLoadError",a.type=r,a.request=o,n[1](a)}},"chunk-"+e,e)}},v=function(e,t){var n,r,o=t[0],a=t[1],i=t[2],c=0;if(o.some(function(e){return 0!==m[e]})){for(n in a)S.o(a,n)&&(S.m[n]=a[n]);i&&i(S)}for(e&&e(t);c<o.length;c++)r=o[c],S.o(m,r)&&m[r]&&m[r][0](),m[r]=0},(w=self.webpackChunk_nocobase_plugin_data_source_manager=self.webpackChunk_nocobase_plugin_data_source_manager||[]).forEach(v.bind(null,0)),w.push=v.bind(null,w.push.bind(w)),S(634),S(719)}()});
10
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react-i18next"),require("@emotion/css"),require("react-router-dom"),require("@formily/antd-v5"),require("@formily/reactive"),require("@formily/react"),require("@nocobase/plugin-acl/client"),require("@dnd-kit/core"),require("@nocobase/flow-engine"),require("@ant-design/icons"),require("@formily/core"),require("@formily/shared"),require("react"),require("antd"),require("@nocobase/client"),require("antd-style"),require("@nocobase/utils/client"),require("lodash")):"function"==typeof define&&define.amd?define("@nocobase/plugin-data-source-manager",["react-i18next","@emotion/css","react-router-dom","@formily/antd-v5","@formily/reactive","@formily/react","@nocobase/plugin-acl/client","@dnd-kit/core","@nocobase/flow-engine","@ant-design/icons","@formily/core","@formily/shared","react","antd","@nocobase/client","antd-style","@nocobase/utils/client","lodash"],t):"object"==typeof exports?exports["@nocobase/plugin-data-source-manager"]=t(require("react-i18next"),require("@emotion/css"),require("react-router-dom"),require("@formily/antd-v5"),require("@formily/reactive"),require("@formily/react"),require("@nocobase/plugin-acl/client"),require("@dnd-kit/core"),require("@nocobase/flow-engine"),require("@ant-design/icons"),require("@formily/core"),require("@formily/shared"),require("react"),require("antd"),require("@nocobase/client"),require("antd-style"),require("@nocobase/utils/client"),require("lodash")):e["@nocobase/plugin-data-source-manager"]=t(e["react-i18next"],e["@emotion/css"],e["react-router-dom"],e["@formily/antd-v5"],e["@formily/reactive"],e["@formily/react"],e["@nocobase/plugin-acl/client"],e["@dnd-kit/core"],e["@nocobase/flow-engine"],e["@ant-design/icons"],e["@formily/core"],e["@formily/shared"],e.react,e.antd,e["@nocobase/client"],e["antd-style"],e["@nocobase/utils/client"],e.lodash)}(self,function(e,t,n,r,o,a,i,c,u,l,s,p,f,d,b,y,g,h){return function(){"use strict";var m,v,w,O={719:function(e,t,n){n.r(t),n.d(t,{PluginDataSourceManagerClient:function(){return M}});var r=n(342),o=n(79),a=n.n(o),i=n(768),c=n(155),u=n.n(c),l=n(135),s=n(872);function p(e,t,n,r,o,a,i){try{var c=e[a](i),u=c.value}catch(e){n(e);return}c.done?t(u):Promise.resolve(u).then(r,o)}function f(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function i(e){p(a,r,o,i,c,"next",e)}function c(e){p(a,r,o,i,c,"throw",e)}i(void 0)})}}function d(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}function b(e,t,n){return(b=O()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&v(o,n.prototype),o}).apply(null,arguments)}function y(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function g(e,t,n){return t&&y(e.prototype,t),n&&y(e,n),e}function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e){return(m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function v(e,t){return(v=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function w(e){var t="function"==typeof Map?new Map:void 0;return(w=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return b(e,arguments,m(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),v(n,e)})(e)}function O(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(O=function(){return!!e})()}function P(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),c=Object.defineProperty;return c(i,"next",{value:u(0)}),c(i,"throw",{value:u(1)}),c(i,"return",{value:u(2)}),"function"==typeof Symbol&&c(i,Symbol.iterator,{value:function(){return this}}),i;function u(c){return function(u){var l=[c,u];if(n)throw TypeError("Generator is already executing.");for(;i&&(i=0,l[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&l[0]?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return a.label++,{value:l[1],done:!1};case 5:a.label++,r=l[1],l=[0];continue;case 7:l=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){a=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){a.label=l[1];break}if(6===l[0]&&a.label<o[1]){a.label=o[1],o=l;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(l);break}o[2]&&a.ops.pop(),a.trys.pop();continue}l=t.call(e,a)}catch(e){l=[6,e],r=0}finally{n=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}var S=(0,r.lazy)(function(){return n.e("936").then(n.bind(n,35))},"DatabaseConnectionProvider").DatabaseConnectionProvider,C=(0,r.lazy)(function(){return Promise.all([n.e("936"),n.e("397")]).then(n.bind(n,620))},"BreadcumbTitle").BreadcumbTitle,j=(0,r.lazy)(function(){return Promise.all([n.e("936"),n.e("369"),n.e("420")]).then(n.bind(n,111))},"CollectionManagerPage").CollectionManagerPage,x=(0,r.lazy)(function(){return Promise.all([n.e("936"),n.e("271")]).then(n.bind(n,61))},"DatabaseConnectionManagerPane").DatabaseConnectionManagerPane,k=(0,r.lazy)(function(){return Promise.all([n.e("936"),n.e("369"),n.e("644")]).then(n.bind(n,687))},"MainDataSourceManager").MainDataSourceManager,_=(0,r.lazy)(function(){return n.e("603").then(n.bind(n,886))},"DataSourcePermissionManager").DataSourcePermissionManager,q=(0,r.lazy)(function(){return n.e("416").then(n.bind(n,819))},"CollectionMainProvider").CollectionMainProvider,T=function(){function e(t){d(this,e),h(this,"plugin",void 0),h(this,"componentRegistry",void 0),this.plugin=t,this.componentRegistry=new i.Registry}return g(e,[{key:"registerManagerAction",value:function(e){var t=e.order,n=e.component,r="managerAction";this.componentRegistry.get(r)||this.componentRegistry.register(r,[]),this.componentRegistry.get(r).push({order:null!=t?t:0,component:n})}},{key:"getManagerActions",value:function(){var e;return null!=(e=this.componentRegistry.get("managerAction"))?e:[]}}]),e}(),M=function(e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function t(){var e,n,r;return d(this,t),n=t,r=arguments,n=m(n),h(e=function(e,t){var n;if(t&&("object"==((n=t)&&"u">typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,O()?Reflect.construct(n,r||[],m(this).constructor):n.apply(this,r)),"types",new Map),h(e,"extensionManager",new T(e)),h(e,"extendedTabs",{}),e}return t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&v(t,e),g(t,[{key:"getExtendedTabs",value:function(){return this.extendedTabs}},{key:"registerPermissionTab",value:function(e){this.extendedTabs[(0,i.uid)()]=e}},{key:"load",value:function(){return f(function(){return P(this,function(e){return this.app.pm.get(a()).settingsUI.addPermissionsTab(function(e){var t=e.t,n=e.TabLayout,r=e.activeRole;return{key:"dataSource",label:t("Data sources"),sort:15,children:u().createElement(n,null,u().createElement(_,{role:r}))}}),this.app.use(S),this.app.pluginSettingsManager.add(s.CU,{title:'{{t("Data sources", { ns: "'.concat(s.CU,'" })}}'),icon:"ClusterOutlined",isPinned:!0,sort:100,showTabs:!1,aclSnippet:"pm.data-source-manager*"}),this.app.pluginSettingsManager.add("".concat(s.CU,".list"),{title:'{{t("Data sources", { ns: "'.concat(s.CU,'" })}}'),Component:x,sort:1,skipAclConfigure:!0,aclSnippet:"pm.data-source-manager"}),this.app.pluginSettingsManager.add("".concat(s.CU,"/:name"),{title:u().createElement(C,null),icon:"ClusterOutlined",isTopLevel:!1,sort:100,skipAclConfigure:!0,aclSnippet:"pm.data-source-manager"}),this.app.pluginSettingsManager.add("".concat(s.CU,"/main"),{title:u().createElement(C,null),icon:"ClusterOutlined",isTopLevel:!1,sort:100,skipAclConfigure:!0,aclSnippet:"pm.data-source-manager.data-source-main",Component:q}),this.app.pluginSettingsManager.add("".concat(s.CU,"/main.collections"),{title:'{{t("Collections", { ns: "'.concat(s.CU,'" })}}'),Component:k,topLevelName:"".concat(s.CU,"/main"),pluginKey:s.CU,skipAclConfigure:!0,aclSnippet:"pm.data-source-manager.data-source-main"}),this.app.pluginSettingsManager.add("".concat(s.CU,"/:name.collections"),{title:'{{t("Collections", { ns: "'.concat(s.CU,'" })}}'),Component:j,topLevelName:"".concat(s.CU,"/:name"),pluginKey:s.CU,skipAclConfigure:!0,aclSnippet:"pm.data-source-manager.data-source-main"}),this.app.dataSourceManager.addDataSources(this.getThirdDataSource.bind(this),l.J),[2]})}).call(this)}},{key:"setDataSources",value:function(){return f(function(){var e,t;return P(this,function(n){switch(n.label){case 0:return[4,this.app.apiClient.request({resource:"dataSources",action:"listEnabled",params:{paginate:!1}})];case 1:return[2,null==(t=n.sent())||null==(e=t.data)?void 0:e.data]}})}).call(this)}},{key:"getThirdDataSource",value:function(){return f(function(){var e,t;return P(this,function(n){switch(n.label){case 0:return[4,this.app.apiClient.request({resource:"dataSources",action:"listEnabled",params:{paginate:!1,appends:["collections"]}})];case 1:return[2,null==(t=n.sent())||null==(e=t.data)?void 0:e.data]}})}).call(this)}},{key:"registerType",value:function(e,t){this.types.set(e,t)}}]),t}(w(r.Plugin));t.default=M},135:function(e,t,n){n.d(t,{J:function(){return u}});var r=n(342);function o(e,t,n,r,o,a,i){try{var c=e[a](i),u=c.value}catch(e){n(e);return}c.done?t(u):Promise.resolve(u).then(r,o)}function a(e){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function i(e,t){return(i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function c(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(c=function(){return!!e})()}var u=function(e){var t;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function n(){var e,t;if(!(this instanceof n))throw TypeError("Cannot call a class as a function");return e=n,t=arguments,e=a(e),function(e,t){var n;if(t&&("object"==((n=t)&&"u">typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,c()?Reflect.construct(e,t||[],a(this).constructor):e.apply(this,t))}return n.prototype=Object.create(e&&e.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),e&&i(n,e),t=[{key:"getDataSource",value:function(){var e;return(e=function(){return function(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),c=Object.defineProperty;return c(i,"next",{value:u(0)}),c(i,"throw",{value:u(1)}),c(i,"return",{value:u(2)}),"function"==typeof Symbol&&c(i,Symbol.iterator,{value:function(){return this}}),i;function u(c){return function(u){var l=[c,u];if(n)throw TypeError("Generator is already executing.");for(;i&&(i=0,l[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&l[0]?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return a.label++,{value:l[1],done:!1};case 5:a.label++,r=l[1],l=[0];continue;case 7:l=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){a=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){a.label=l[1];break}if(6===l[0]&&a.label<o[1]){a.label=o[1],o=l;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(l);break}o[2]&&a.ops.pop(),a.trys.pop();continue}l=t.call(e,a)}catch(e){l=[6,e],r=0}finally{n=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}(this,function(e){switch(e.label){case 0:return[4,this.app.apiClient.request({url:"dataSources:get/".concat(this.key),params:{appends:["collections"]}})];case 1:return[2,e.sent().data.data]}})},function(){var t=this,n=arguments;return new Promise(function(r,a){var i=e.apply(t,n);function c(e){o(i,r,a,c,u,"next",e)}function u(e){o(i,r,a,c,u,"throw",e)}c(void 0)})}).call(this)}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(n.prototype,t),n}(r.DataSource)},872:function(e,t,n){n.d(t,{CU:function(){return a},VP:function(){return c},vV:function(){return i}});var r=n(342),o=n(953),a="data-source-manager";function i(e){var t,n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return r.i18n.t(e,(t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({},o),n=n={ns:a},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t))}function c(){return(0,o.useTranslation)([a,"client"],{nsMode:"fallback"})}},375:function(e){e.exports=l},799:function(e){e.exports=c},477:function(e){e.exports=t},418:function(e){e.exports=r},452:function(e){e.exports=s},230:function(e){e.exports=a},992:function(e){e.exports=o},166:function(e){e.exports=p},342:function(e){e.exports=b},694:function(e){e.exports=u},79:function(e){e.exports=i},768:function(e){e.exports=g},59:function(e){e.exports=d},235:function(e){e.exports=y},773:function(e){e.exports=h},155:function(e){e.exports=f},953:function(t){t.exports=e},442:function(e){e.exports=n},634:function(e,t,n){var r="",o="u">typeof document?document.currentScript:null;if(o&&o.src&&(r=o.src.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")),!r){var a=window.__webpack_public_path__||"";a&&("/"!==a.charAt(a.length-1)&&(a+="/"),r=a+"static/plugins/@nocobase/plugin-data-source-manager/dist/client/")}if(!r){if(!(r=window.__nocobase_public_path__||"")&&window.location&&window.location.pathname){var i=window.location.pathname||"/",c=i.indexOf("/v2/");r=c>=0?i.slice(0,c+1):"/"}r&&(r=r.replace(/\/v2\/?$/,"/")),r||(r="/"),"/"!==r.charAt(r.length-1)&&(r+="/"),r+="static/plugins/@nocobase/plugin-data-source-manager/dist/client/"}n.p=r}},P={};function S(e){var t=P[e];if(void 0!==t)return t.exports;var n=P[e]={exports:{}};return O[e](n,n.exports,S),n.exports}S.m=O,S.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return S.d(t,{a:t}),t},S.d=function(e,t){for(var n in t)S.o(t,n)&&!S.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},S.f={},S.e=function(e){return Promise.all(Object.keys(S.f).reduce(function(t,n){return S.f[n](e,t),t},[]))},S.u=function(e){return""+e+"."+({271:"b3c0013cf976adf0",369:"6025f2112454fab1",397:"c8c6659cf3f7ac1c",416:"197712b8b93033c5",420:"0c3e3c9888e0ba31",603:"d6022bceb934f5b0",644:"b98e4b39058e9c32",936:"d5ab7aecb4eb6004"})[e]+".js"},S.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),S.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},C={},S.l=function(e,t,n,r){if(C[e])return void C[e].push(t);if(void 0!==n)for(var o,a,i=document.getElementsByTagName("script"),c=0;c<i.length;c++){var u=i[c];if(u.getAttribute("src")==e||u.getAttribute("data-rspack")=="@nocobase/plugin-data-source-manager:"+n){o=u;break}}o||(a=!0,(o=document.createElement("script")).timeout=120,S.nc&&o.setAttribute("nonce",S.nc),o.setAttribute("data-rspack","@nocobase/plugin-data-source-manager:"+n),o.src=e),C[e]=[t];var l=function(t,n){o.onerror=o.onload=null,clearTimeout(s);var r=C[e];if(delete C[e],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach(function(e){return e(n)}),t)return t(n)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),a&&document.head.appendChild(o)},S.r=function(e){"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},S.g.importScripts&&(j=S.g.location+"");var C,j,x=S.g.document;if(!j&&x&&(x.currentScript&&"SCRIPT"===x.currentScript.tagName.toUpperCase()&&(j=x.currentScript.src),!j)){var k=x.getElementsByTagName("script");if(k.length)for(var _=k.length-1;_>-1&&(!j||!/^http(s?):/.test(j));)j=k[_--].src}if(!j)throw Error("Automatic publicPath is not supported in this browser");return S.p=j.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),m={889:0},S.f.j=function(e,t){var n=S.o(m,e)?m[e]:void 0;if(0!==n)if(n)t.push(n[2]);else{var r=new Promise(function(t,r){n=m[e]=[t,r]});t.push(n[2]=r);var o=S.p+S.u(e),a=Error();S.l(o,function(t){if(S.o(m,e)&&(0!==(n=m[e])&&(m[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;a.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",a.name="ChunkLoadError",a.type=r,a.request=o,n[1](a)}},"chunk-"+e,e)}},v=function(e,t){var n,r,o=t[0],a=t[1],i=t[2],c=0;if(o.some(function(e){return 0!==m[e]})){for(n in a)S.o(a,n)&&(S.m[n]=a[n]);i&&i(S)}for(e&&e(t);c<o.length;c++)r=o[c],S.o(m,r)&&m[r]&&m[r][0](),m[r]=0},(w=self.webpackChunk_nocobase_plugin_data_source_manager=self.webpackChunk_nocobase_plugin_data_source_manager||[]).forEach(v.bind(null,0)),w.push=v.bind(null,w.push.bind(w)),S(634),S(719)}()});
@@ -8,27 +8,27 @@
8
8
  */
9
9
 
10
10
  module.exports = {
11
- "@nocobase/client": "2.1.0-alpha.15",
11
+ "@nocobase/client": "2.1.0-alpha.17",
12
12
  "react": "18.2.0",
13
- "@nocobase/plugin-acl": "2.1.0-alpha.15",
14
- "@nocobase/utils": "2.1.0-alpha.15",
15
- "@nocobase/ai": "2.1.0-alpha.15",
16
- "@nocobase/server": "2.1.0-alpha.15",
17
- "@nocobase/data-source-manager": "2.1.0-alpha.15",
13
+ "@nocobase/plugin-acl": "2.1.0-alpha.17",
14
+ "@nocobase/utils": "2.1.0-alpha.17",
15
+ "@nocobase/ai": "2.1.0-alpha.17",
16
+ "@nocobase/server": "2.1.0-alpha.17",
17
+ "@nocobase/data-source-manager": "2.1.0-alpha.17",
18
18
  "lodash": "4.17.21",
19
- "@nocobase/acl": "2.1.0-alpha.15",
20
- "@nocobase/database": "2.1.0-alpha.15",
19
+ "@nocobase/acl": "2.1.0-alpha.17",
20
+ "@nocobase/database": "2.1.0-alpha.17",
21
21
  "@ant-design/icons": "5.6.1",
22
22
  "antd": "5.24.2",
23
23
  "react-router-dom": "6.30.1",
24
- "@nocobase/flow-engine": "2.1.0-alpha.15",
24
+ "@nocobase/flow-engine": "2.1.0-alpha.17",
25
25
  "@formily/shared": "2.3.7",
26
26
  "@formily/react": "2.3.7",
27
27
  "react-i18next": "11.18.6",
28
28
  "@emotion/css": "11.13.0",
29
- "@nocobase/actions": "2.1.0-alpha.15",
29
+ "@nocobase/actions": "2.1.0-alpha.17",
30
30
  "sequelize": "6.35.2",
31
- "@nocobase/test": "2.1.0-alpha.15",
31
+ "@nocobase/test": "2.1.0-alpha.17",
32
32
  "@formily/antd-v5": "1.2.3",
33
33
  "@formily/core": "2.3.7",
34
34
  "@formily/reactive": "2.3.7",
@@ -57,10 +57,10 @@
57
57
  "ai.tools.intentRouter.about": "Route intents to appropriate workflow",
58
58
  "ai.tools.searchFieldMetadata.title": "Search field metadata",
59
59
  "ai.tools.searchFieldMetadata.about": "Search fields in data models by keyword (english first). Returns either search results or a suggested query.",
60
- "ai.tools.dataSourceQuery.title": "Data source query",
61
- "ai.tools.dataSourceQuery.about": "Use dataSource, collectionName, and collection fields to query data from the database",
62
- "ai.tools.dataQueryAggregate.title": "Data query",
63
- "ai.tools.dataQueryAggregate.about": "Run aggregate repository queries with measures, dimensions, orders, filter, and having",
60
+ "ai.tools.dataSourceQuery.title": "Get records",
61
+ "ai.tools.dataSourceQuery.about": "Use dataSource, collectionName, fields, filters, and sorting to get records",
62
+ "ai.tools.dataQuery.title": "Query data",
63
+ "ai.tools.dataQuery.about": "Run aggregate repository queries with measures, dimensions, orders, filter, and having",
64
64
  "ai.tools.dataSourceCounting.title": "Data source records counting",
65
65
  "ai.tools.dataSourceCounting.about": "Use dataSource, collectionName, and collection fields to query data from the database, get total count of records",
66
66
  "ai.tools.dataQuery.args.datasource": "Data source key",
@@ -57,10 +57,10 @@
57
57
  "ai.tools.intentRouter.about": "将意图路由到适当的工作流",
58
58
  "ai.tools.searchFieldMetadata.title": "搜索字段元数据",
59
59
  "ai.tools.searchFieldMetadata.about": "通过关键词搜索数据模型字段(优先英文)。返回搜索结果或建议的查询。",
60
- "ai.tools.dataSourceQuery.title": "数据源查询操作",
61
- "ai.tools.dataSourceQuery.about": "使用 dataSource、collectionName 和 collection fields 从数据库中查询数据。",
62
- "ai.tools.dataQueryAggregate.title": "数据查询",
63
- "ai.tools.dataQueryAggregate.about": "使用 measures、dimensions、orders、filter 和 having 执行聚合查询",
60
+ "ai.tools.dataSourceQuery.title": "获取数据记录",
61
+ "ai.tools.dataSourceQuery.about": "使用 dataSource、collectionName、字段、筛选和排序条件获取数据记录",
62
+ "ai.tools.dataQuery.title": "查询数据",
63
+ "ai.tools.dataQuery.about": "使用 measures、dimensions、orders、filter 和 having 执行聚合查询",
64
64
  "ai.tools.dataSourceCounting.title": "数据源记录数统计",
65
65
  "ai.tools.dataSourceCounting.about": "使用 dataSource、collectionName 和 collection fields 从数据库中获取记录总数",
66
66
  "ai.tools.dataQuery.args.datasource": "数据源标识",
@@ -1 +1 @@
1
- {"name":"zod","version":"4.3.5","type":"module","license":"MIT","author":"Colin McDonnell <zod@colinhacks.com>","description":"TypeScript-first schema declaration and validation library with static type inference","homepage":"https://zod.dev","llms":"https://zod.dev/llms.txt","llmsFull":"https://zod.dev/llms-full.txt","mcpServer":"https://mcp.inkeep.com/zod/mcp","funding":"https://github.com/sponsors/colinhacks","sideEffects":false,"files":["src","**/*.js","**/*.mjs","**/*.cjs","**/*.d.ts","**/*.d.mts","**/*.d.cts","**/package.json"],"keywords":["typescript","schema","validation","type","inference"],"main":"./index.cjs","types":"./index.d.cts","module":"./index.js","zshy":{"exports":{"./package.json":"./package.json",".":"./src/index.ts","./mini":"./src/mini/index.ts","./locales":"./src/locales/index.ts","./v3":"./src/v3/index.ts","./v4":"./src/v4/index.ts","./v4-mini":"./src/v4-mini/index.ts","./v4/mini":"./src/v4/mini/index.ts","./v4/core":"./src/v4/core/index.ts","./v4/locales":"./src/v4/locales/index.ts","./v4/locales/*":"./src/v4/locales/*"},"conditions":{"@zod/source":"src"}},"exports":{"./package.json":"./package.json",".":{"@zod/source":"./src/index.ts","types":"./index.d.cts","import":"./index.js","require":"./index.cjs"},"./mini":{"@zod/source":"./src/mini/index.ts","types":"./mini/index.d.cts","import":"./mini/index.js","require":"./mini/index.cjs"},"./locales":{"@zod/source":"./src/locales/index.ts","types":"./locales/index.d.cts","import":"./locales/index.js","require":"./locales/index.cjs"},"./v3":{"@zod/source":"./src/v3/index.ts","types":"./v3/index.d.cts","import":"./v3/index.js","require":"./v3/index.cjs"},"./v4":{"@zod/source":"./src/v4/index.ts","types":"./v4/index.d.cts","import":"./v4/index.js","require":"./v4/index.cjs"},"./v4-mini":{"@zod/source":"./src/v4-mini/index.ts","types":"./v4-mini/index.d.cts","import":"./v4-mini/index.js","require":"./v4-mini/index.cjs"},"./v4/mini":{"@zod/source":"./src/v4/mini/index.ts","types":"./v4/mini/index.d.cts","import":"./v4/mini/index.js","require":"./v4/mini/index.cjs"},"./v4/core":{"@zod/source":"./src/v4/core/index.ts","types":"./v4/core/index.d.cts","import":"./v4/core/index.js","require":"./v4/core/index.cjs"},"./v4/locales":{"@zod/source":"./src/v4/locales/index.ts","types":"./v4/locales/index.d.cts","import":"./v4/locales/index.js","require":"./v4/locales/index.cjs"},"./v4/locales/*":{"@zod/source":"./src/v4/locales/*","types":"./v4/locales/*","import":"./v4/locales/*","require":"./v4/locales/*"}},"repository":{"type":"git","url":"git+https://github.com/colinhacks/zod.git"},"bugs":{"url":"https://github.com/colinhacks/zod/issues"},"support":{"backing":{"npm-funding":true}},"scripts":{"clean":"git clean -xdf . -e node_modules","build":"zshy --project tsconfig.build.json","postbuild":"tsx ../../scripts/write-stub-package-jsons.ts && pnpm biome check --write .","test:watch":"pnpm vitest","test":"pnpm vitest run","prepublishOnly":"tsx ../../scripts/check-versions.ts"},"_lastModified":"2026-04-10T12:40:12.859Z"}
1
+ {"name":"zod","version":"4.3.5","type":"module","license":"MIT","author":"Colin McDonnell <zod@colinhacks.com>","description":"TypeScript-first schema declaration and validation library with static type inference","homepage":"https://zod.dev","llms":"https://zod.dev/llms.txt","llmsFull":"https://zod.dev/llms-full.txt","mcpServer":"https://mcp.inkeep.com/zod/mcp","funding":"https://github.com/sponsors/colinhacks","sideEffects":false,"files":["src","**/*.js","**/*.mjs","**/*.cjs","**/*.d.ts","**/*.d.mts","**/*.d.cts","**/package.json"],"keywords":["typescript","schema","validation","type","inference"],"main":"./index.cjs","types":"./index.d.cts","module":"./index.js","zshy":{"exports":{"./package.json":"./package.json",".":"./src/index.ts","./mini":"./src/mini/index.ts","./locales":"./src/locales/index.ts","./v3":"./src/v3/index.ts","./v4":"./src/v4/index.ts","./v4-mini":"./src/v4-mini/index.ts","./v4/mini":"./src/v4/mini/index.ts","./v4/core":"./src/v4/core/index.ts","./v4/locales":"./src/v4/locales/index.ts","./v4/locales/*":"./src/v4/locales/*"},"conditions":{"@zod/source":"src"}},"exports":{"./package.json":"./package.json",".":{"@zod/source":"./src/index.ts","types":"./index.d.cts","import":"./index.js","require":"./index.cjs"},"./mini":{"@zod/source":"./src/mini/index.ts","types":"./mini/index.d.cts","import":"./mini/index.js","require":"./mini/index.cjs"},"./locales":{"@zod/source":"./src/locales/index.ts","types":"./locales/index.d.cts","import":"./locales/index.js","require":"./locales/index.cjs"},"./v3":{"@zod/source":"./src/v3/index.ts","types":"./v3/index.d.cts","import":"./v3/index.js","require":"./v3/index.cjs"},"./v4":{"@zod/source":"./src/v4/index.ts","types":"./v4/index.d.cts","import":"./v4/index.js","require":"./v4/index.cjs"},"./v4-mini":{"@zod/source":"./src/v4-mini/index.ts","types":"./v4-mini/index.d.cts","import":"./v4-mini/index.js","require":"./v4-mini/index.cjs"},"./v4/mini":{"@zod/source":"./src/v4/mini/index.ts","types":"./v4/mini/index.d.cts","import":"./v4/mini/index.js","require":"./v4/mini/index.cjs"},"./v4/core":{"@zod/source":"./src/v4/core/index.ts","types":"./v4/core/index.d.cts","import":"./v4/core/index.js","require":"./v4/core/index.cjs"},"./v4/locales":{"@zod/source":"./src/v4/locales/index.ts","types":"./v4/locales/index.d.cts","import":"./v4/locales/index.js","require":"./v4/locales/index.cjs"},"./v4/locales/*":{"@zod/source":"./src/v4/locales/*","types":"./v4/locales/*","import":"./v4/locales/*","require":"./v4/locales/*"}},"repository":{"type":"git","url":"git+https://github.com/colinhacks/zod.git"},"bugs":{"url":"https://github.com/colinhacks/zod/issues"},"support":{"backing":{"npm-funding":true}},"scripts":{"clean":"git clean -xdf . -e node_modules","build":"zshy --project tsconfig.build.json","postbuild":"tsx ../../scripts/write-stub-package-jsons.ts && pnpm biome check --write .","test:watch":"pnpm vitest","test":"pnpm vitest run","prepublishOnly":"tsx ../../scripts/check-versions.ts"},"_lastModified":"2026-04-17T02:45:41.632Z"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocobase/plugin-data-source-manager",
3
- "version": "2.1.0-alpha.15",
3
+ "version": "2.1.0-alpha.17",
4
4
  "main": "dist/server/index.js",
5
5
  "displayName": "Data source manager",
6
6
  "displayName.ru-RU": "Менеджер управления источниками данных",
@@ -20,6 +20,6 @@
20
20
  "keywords": [
21
21
  "Data model tools"
22
22
  ],
23
- "gitHead": "7c86e75b0af4b9f532c8ebf5ef96a7423b0ab60e",
23
+ "gitHead": "586cb00f56557e66168b9720d0e0193a1b752067",
24
24
  "license": "Apache-2.0"
25
25
  }