@taruvi/sdk 1.5.0-beta.2 → 1.5.0-beta.3

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 (169) hide show
  1. package/dist/client.d.ts +27 -0
  2. package/dist/client.d.ts.map +1 -0
  3. package/dist/client.js +70 -0
  4. package/dist/client.js.map +1 -0
  5. package/dist/index.d.ts +28 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +20 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/lib/analytics/AnalyticsClient.d.ts +9 -0
  10. package/dist/lib/analytics/AnalyticsClient.d.ts.map +1 -0
  11. package/dist/lib/analytics/AnalyticsClient.js +17 -0
  12. package/dist/lib/analytics/AnalyticsClient.js.map +1 -0
  13. package/dist/lib/analytics/types.d.ts +6 -0
  14. package/dist/lib/analytics/types.d.ts.map +1 -0
  15. package/dist/lib/analytics/types.js +2 -0
  16. package/dist/lib/analytics/types.js.map +1 -0
  17. package/dist/lib/app/AppClient.d.ts +15 -0
  18. package/dist/lib/app/AppClient.d.ts.map +1 -0
  19. package/dist/lib/app/AppClient.js +41 -0
  20. package/dist/lib/app/AppClient.js.map +1 -0
  21. package/dist/lib/app/types.d.ts +41 -0
  22. package/dist/lib/app/types.d.ts.map +1 -0
  23. package/dist/lib/app/types.js +2 -0
  24. package/dist/lib/app/types.js.map +1 -0
  25. package/dist/lib/auth/AuthClient.d.ts +38 -0
  26. package/dist/lib/auth/AuthClient.d.ts.map +1 -0
  27. package/dist/lib/auth/AuthClient.js +105 -0
  28. package/dist/lib/auth/AuthClient.js.map +1 -0
  29. package/dist/lib/database/DatabaseClient.d.ts +76 -0
  30. package/dist/lib/database/DatabaseClient.d.ts.map +1 -0
  31. package/dist/lib/database/DatabaseClient.js +250 -0
  32. package/dist/lib/database/DatabaseClient.js.map +1 -0
  33. package/dist/lib/database/types.d.ts +66 -0
  34. package/dist/lib/database/types.d.ts.map +1 -0
  35. package/dist/lib/database/types.js +20 -0
  36. package/dist/lib/database/types.js.map +1 -0
  37. package/dist/lib/functions/FunctionsClient.d.ts +9 -0
  38. package/dist/lib/functions/FunctionsClient.d.ts.map +1 -0
  39. package/dist/lib/functions/FunctionsClient.js +20 -0
  40. package/dist/lib/functions/FunctionsClient.js.map +1 -0
  41. package/dist/lib/functions/types.d.ts +25 -0
  42. package/dist/lib/functions/types.d.ts.map +1 -0
  43. package/dist/lib/functions/types.js +2 -0
  44. package/dist/lib/functions/types.js.map +1 -0
  45. package/dist/lib/policy/PolicyClient.d.ts +25 -0
  46. package/dist/lib/policy/PolicyClient.d.ts.map +1 -0
  47. package/dist/lib/policy/PolicyClient.js +65 -0
  48. package/dist/lib/policy/PolicyClient.js.map +1 -0
  49. package/dist/lib/policy/types.d.ts +32 -0
  50. package/dist/lib/policy/types.d.ts.map +1 -0
  51. package/dist/lib/policy/types.js +2 -0
  52. package/dist/lib/policy/types.js.map +1 -0
  53. package/dist/lib/secrets/SecretsClient.d.ts +29 -0
  54. package/dist/lib/secrets/SecretsClient.d.ts.map +1 -0
  55. package/dist/lib/secrets/SecretsClient.js +66 -0
  56. package/dist/lib/secrets/SecretsClient.js.map +1 -0
  57. package/dist/lib/secrets/types.d.ts +43 -0
  58. package/dist/lib/secrets/types.d.ts.map +1 -0
  59. package/dist/lib/secrets/types.js +2 -0
  60. package/dist/lib/secrets/types.js.map +1 -0
  61. package/dist/lib/settings/SettingsClient.d.ts +9 -0
  62. package/dist/lib/settings/SettingsClient.d.ts.map +1 -0
  63. package/dist/lib/settings/SettingsClient.js +17 -0
  64. package/dist/lib/settings/SettingsClient.js.map +1 -0
  65. package/dist/lib/settings/types.d.ts +6 -0
  66. package/dist/lib/settings/types.d.ts.map +1 -0
  67. package/dist/lib/settings/types.js +2 -0
  68. package/dist/lib/settings/types.js.map +1 -0
  69. package/dist/lib/storage/StorageClient.d.ts +38 -0
  70. package/dist/lib/storage/StorageClient.d.ts.map +1 -0
  71. package/dist/lib/storage/StorageClient.js +102 -0
  72. package/dist/lib/storage/StorageClient.js.map +1 -0
  73. package/dist/lib/storage/types.d.ts +73 -0
  74. package/dist/lib/storage/types.d.ts.map +1 -0
  75. package/dist/lib/storage/types.js +2 -0
  76. package/dist/lib/storage/types.js.map +1 -0
  77. package/dist/lib/users/UserClient.d.ts +17 -0
  78. package/dist/lib/users/UserClient.d.ts.map +1 -0
  79. package/dist/lib/users/UserClient.js +40 -0
  80. package/dist/lib/users/UserClient.js.map +1 -0
  81. package/dist/lib/users/types.d.ts +108 -0
  82. package/dist/lib/users/types.d.ts.map +1 -0
  83. package/dist/lib/users/types.js +2 -0
  84. package/dist/lib/users/types.js.map +1 -0
  85. package/dist/lib-internal/errors/ErrorClient.d.ts +42 -0
  86. package/dist/lib-internal/errors/ErrorClient.d.ts.map +1 -0
  87. package/dist/lib-internal/errors/ErrorClient.js +102 -0
  88. package/dist/lib-internal/errors/ErrorClient.js.map +1 -0
  89. package/dist/lib-internal/errors/index.d.ts +4 -0
  90. package/dist/lib-internal/errors/index.d.ts.map +1 -0
  91. package/dist/lib-internal/errors/index.js +3 -0
  92. package/dist/lib-internal/errors/index.js.map +1 -0
  93. package/dist/lib-internal/errors/types.d.ts +29 -0
  94. package/dist/lib-internal/errors/types.d.ts.map +1 -0
  95. package/dist/lib-internal/errors/types.js +18 -0
  96. package/dist/lib-internal/errors/types.js.map +1 -0
  97. package/dist/lib-internal/http/HttpClient.d.ts +24 -0
  98. package/dist/lib-internal/http/HttpClient.d.ts.map +1 -0
  99. package/dist/lib-internal/http/HttpClient.js +103 -0
  100. package/dist/lib-internal/http/HttpClient.js.map +1 -0
  101. package/dist/lib-internal/http/types.d.ts +12 -0
  102. package/dist/lib-internal/http/types.d.ts.map +1 -0
  103. package/dist/lib-internal/http/types.js +11 -0
  104. package/dist/lib-internal/http/types.js.map +1 -0
  105. package/dist/lib-internal/routes/AnalyticsRoutes.d.ts +4 -0
  106. package/dist/lib-internal/routes/AnalyticsRoutes.d.ts.map +1 -0
  107. package/dist/lib-internal/routes/AnalyticsRoutes.js +4 -0
  108. package/dist/lib-internal/routes/AnalyticsRoutes.js.map +1 -0
  109. package/dist/lib-internal/routes/AppRoutes.d.ts +10 -0
  110. package/dist/lib-internal/routes/AppRoutes.d.ts.map +1 -0
  111. package/dist/lib-internal/routes/AppRoutes.js +6 -0
  112. package/dist/lib-internal/routes/AppRoutes.js.map +1 -0
  113. package/dist/lib-internal/routes/AuthRoutes.d.ts +2 -0
  114. package/dist/lib-internal/routes/AuthRoutes.d.ts.map +1 -0
  115. package/dist/lib-internal/routes/AuthRoutes.js +2 -0
  116. package/dist/lib-internal/routes/AuthRoutes.js.map +1 -0
  117. package/dist/lib-internal/routes/DatabaseRoutes.d.ts +11 -0
  118. package/dist/lib-internal/routes/DatabaseRoutes.d.ts.map +1 -0
  119. package/dist/lib-internal/routes/DatabaseRoutes.js +7 -0
  120. package/dist/lib-internal/routes/DatabaseRoutes.js.map +1 -0
  121. package/dist/lib-internal/routes/FunctionRoutes.d.ts +4 -0
  122. package/dist/lib-internal/routes/FunctionRoutes.d.ts.map +1 -0
  123. package/dist/lib-internal/routes/FunctionRoutes.js +4 -0
  124. package/dist/lib-internal/routes/FunctionRoutes.js.map +1 -0
  125. package/dist/lib-internal/routes/PolicyRoutes.d.ts +5 -0
  126. package/dist/lib-internal/routes/PolicyRoutes.d.ts.map +1 -0
  127. package/dist/lib-internal/routes/PolicyRoutes.js +5 -0
  128. package/dist/lib-internal/routes/PolicyRoutes.js.map +1 -0
  129. package/dist/lib-internal/routes/SecretsRoutes.d.ts +6 -0
  130. package/dist/lib-internal/routes/SecretsRoutes.d.ts.map +1 -0
  131. package/dist/lib-internal/routes/SecretsRoutes.js +6 -0
  132. package/dist/lib-internal/routes/SecretsRoutes.js.map +1 -0
  133. package/dist/lib-internal/routes/SettingsRoutes.d.ts +5 -0
  134. package/dist/lib-internal/routes/SettingsRoutes.d.ts.map +1 -0
  135. package/dist/lib-internal/routes/SettingsRoutes.js +5 -0
  136. package/dist/lib-internal/routes/SettingsRoutes.js.map +1 -0
  137. package/dist/lib-internal/routes/StorageRoutes.d.ts +11 -0
  138. package/dist/lib-internal/routes/StorageRoutes.d.ts.map +1 -0
  139. package/dist/lib-internal/routes/StorageRoutes.js +8 -0
  140. package/dist/lib-internal/routes/StorageRoutes.js.map +1 -0
  141. package/dist/lib-internal/routes/UserRoutes.d.ts +13 -0
  142. package/dist/lib-internal/routes/UserRoutes.d.ts.map +1 -0
  143. package/dist/lib-internal/routes/UserRoutes.js +13 -0
  144. package/dist/lib-internal/routes/UserRoutes.js.map +1 -0
  145. package/dist/lib-internal/routes/index.d.ts +2 -0
  146. package/dist/lib-internal/routes/index.d.ts.map +1 -0
  147. package/dist/lib-internal/routes/index.js +2 -0
  148. package/dist/lib-internal/routes/index.js.map +1 -0
  149. package/dist/lib-internal/token/TokenClient.d.ts +38 -0
  150. package/dist/lib-internal/token/TokenClient.d.ts.map +1 -0
  151. package/dist/lib-internal/token/TokenClient.js +93 -0
  152. package/dist/lib-internal/token/TokenClient.js.map +1 -0
  153. package/dist/lib-internal/token/types.d.ts +2 -0
  154. package/dist/lib-internal/token/types.d.ts.map +1 -0
  155. package/dist/lib-internal/token/types.js +2 -0
  156. package/dist/lib-internal/token/types.js.map +1 -0
  157. package/dist/types.d.ts +74 -0
  158. package/dist/types.d.ts.map +1 -0
  159. package/dist/types.js +2 -0
  160. package/dist/types.js.map +1 -0
  161. package/dist/utils/enums.d.ts +31 -0
  162. package/dist/utils/enums.d.ts.map +1 -0
  163. package/dist/utils/enums.js +26 -0
  164. package/dist/utils/enums.js.map +1 -0
  165. package/dist/utils/utils.d.ts +6 -0
  166. package/dist/utils/utils.d.ts.map +1 -0
  167. package/dist/utils/utils.js +38 -0
  168. package/dist/utils/utils.js.map +1 -0
  169. package/package.json +2 -1
@@ -0,0 +1,250 @@
1
+ import { DatabaseRoutes } from "../../lib-internal/routes/DatabaseRoutes.js";
2
+ import { HttpMethod } from "../../lib-internal/http/types.js";
3
+ import { isBackendFilterTreeRoot } from "./types.js";
4
+ import { buildQueryString } from "../../utils/utils.js";
5
+ // Used to access app data
6
+ export class Database {
7
+ client;
8
+ urlParams;
9
+ config;
10
+ operation;
11
+ body;
12
+ queryParams;
13
+ graphParams;
14
+ isEdges;
15
+ isUpsert;
16
+ constructor(client, urlParams = {}, operation, body, queryParams, graphParams = {}, isEdges = false, isUpsert = false) {
17
+ this.client = client;
18
+ this.urlParams = urlParams;
19
+ this.operation = operation;
20
+ this.body = body;
21
+ this.config = this.client.getConfig();
22
+ this.queryParams = queryParams;
23
+ this.graphParams = graphParams;
24
+ this.isEdges = isEdges;
25
+ this.isUpsert = isUpsert;
26
+ }
27
+ from(dataTables) {
28
+ return new Database(this.client, { ...this.urlParams, dataTables }, undefined, undefined, undefined, {}, this.isEdges);
29
+ }
30
+ edges() {
31
+ return new Database(this.client, { ...this.urlParams }, undefined, undefined, this.queryParams, { ...this.graphParams }, true);
32
+ }
33
+ // Graph traversal methods
34
+ include(direction) {
35
+ return new Database(this.client, { ...this.urlParams }, this.operation, this.body, this.queryParams, { ...this.graphParams, include: direction }, this.isEdges);
36
+ }
37
+ depth(n) {
38
+ return new Database(this.client, { ...this.urlParams }, this.operation, this.body, this.queryParams, { ...this.graphParams, depth: n }, this.isEdges);
39
+ }
40
+ format(fmt) {
41
+ return new Database(this.client, { ...this.urlParams }, this.operation, this.body, this.queryParams, { ...this.graphParams, format: fmt }, this.isEdges);
42
+ }
43
+ types(types) {
44
+ return new Database(this.client, { ...this.urlParams }, this.operation, this.body, this.queryParams, { ...this.graphParams, relationship_type: types }, this.isEdges);
45
+ }
46
+ filters(arg0, arg1, arg2) {
47
+ if (typeof arg0 === 'string' && arg1 !== undefined && arg2 !== undefined) {
48
+ const field = arg0;
49
+ const operator = arg1;
50
+ const value = arg2;
51
+ const filterKey = operator === 'eq' ? field : `${field}__${operator}`;
52
+ const filterValue = Array.isArray(value) ? value.join(',') : value;
53
+ return new Database(this.client, { ...this.urlParams }, undefined, undefined, {
54
+ ...this.queryParams,
55
+ [filterKey]: filterValue
56
+ }, { ...this.graphParams }, this.isEdges);
57
+ }
58
+ if (arg1 === undefined && arg2 === undefined && isBackendFilterTreeRoot(arg0)) {
59
+ return new Database(this.client, { ...this.urlParams }, undefined, undefined, {
60
+ ...this.queryParams,
61
+ filters: JSON.stringify(arg0)
62
+ }, { ...this.graphParams }, this.isEdges);
63
+ }
64
+ throw new TypeError('Database.filters: use filters(tree) with a root array of { operator: "and"|"or", value: [...] }, or filters(field, operator, value).');
65
+ }
66
+ /**
67
+ * Sets the `ordering` query param (DRF-style: `-field` for desc, comma-separated for multiple).
68
+ * - `orderBy('created_at', 'desc')` — one column (optional second arg defaults to `'asc'`)
69
+ * - `orderBy([{ field: 'salary', order: 'desc' }, { field: 'hire_date' }])` — multiple columns
70
+ * - `orderBy('-salary,hire_date')` — raw string (e.g. from `convertRefineSorters`); omit the second arg
71
+ */
72
+ orderBy(fieldOrFields, order) {
73
+ let newOrdering;
74
+ if (typeof fieldOrFields === 'string') {
75
+ const o = order ?? 'asc';
76
+ newOrdering = o === 'desc' ? `-${fieldOrFields}` : fieldOrFields;
77
+ }
78
+ else {
79
+ newOrdering = fieldOrFields
80
+ .map(({ field, order: o = 'asc' }) => (o === 'desc' ? `-${field}` : field))
81
+ .join(',');
82
+ }
83
+ const existing = this.queryParams?.ordering;
84
+ const ordering = existing ? `${existing},${newOrdering}` : newOrdering;
85
+ return new Database(this.client, { ...this.urlParams }, undefined, undefined, {
86
+ ...this.queryParams,
87
+ ordering
88
+ }, { ...this.graphParams }, this.isEdges);
89
+ }
90
+ pageSize(size) {
91
+ return new Database(this.client, { ...this.urlParams }, undefined, undefined, {
92
+ ...this.queryParams,
93
+ page_size: size
94
+ }, { ...this.graphParams }, this.isEdges);
95
+ }
96
+ page(num) {
97
+ return new Database(this.client, { ...this.urlParams }, undefined, undefined, {
98
+ ...this.queryParams,
99
+ page: num
100
+ }, { ...this.graphParams }, this.isEdges);
101
+ }
102
+ populate(populate) {
103
+ return new Database(this.client, { ...this.urlParams }, undefined, undefined, {
104
+ ...this.queryParams,
105
+ populate: populate.join(',')
106
+ }, { ...this.graphParams }, this.isEdges);
107
+ }
108
+ /** Populate all first-level relations (`?populate=*`). */
109
+ populateAll() {
110
+ return this.populate(['*']);
111
+ }
112
+ search(query) {
113
+ return new Database(this.client, { ...this.urlParams }, undefined, undefined, {
114
+ ...this.queryParams,
115
+ search: query
116
+ }, { ...this.graphParams }, this.isEdges);
117
+ }
118
+ /** Restrict SELECT to named columns (`?fields=a,b,c`). */
119
+ fields(columns) {
120
+ return new Database(this.client, { ...this.urlParams }, undefined, undefined, {
121
+ ...this.queryParams,
122
+ fields: columns
123
+ }, { ...this.graphParams }, this.isEdges);
124
+ }
125
+ allowedActions(actions) {
126
+ const newValue = actions.join(',');
127
+ const existing = this.queryParams?.allowed_actions;
128
+ const allowed_actions = existing ? `${existing},${newValue}` : newValue;
129
+ return new Database(this.client, { ...this.urlParams }, undefined, undefined, {
130
+ ...this.queryParams,
131
+ allowed_actions
132
+ }, { ...this.graphParams }, this.isEdges);
133
+ }
134
+ aggregate(...expressions) {
135
+ const newValue = expressions.join(',');
136
+ const existing = this.queryParams?._aggregate;
137
+ const _aggregate = existing ? `${existing},${newValue}` : newValue;
138
+ return new Database(this.client, { ...this.urlParams }, undefined, undefined, {
139
+ ...this.queryParams,
140
+ _aggregate
141
+ }, { ...this.graphParams }, this.isEdges);
142
+ }
143
+ groupBy(...fields) {
144
+ const newValue = fields.join(',');
145
+ const existing = this.queryParams?._group_by;
146
+ const _group_by = existing ? `${existing},${newValue}` : newValue;
147
+ return new Database(this.client, { ...this.urlParams }, undefined, undefined, {
148
+ ...this.queryParams,
149
+ _group_by
150
+ }, { ...this.graphParams }, this.isEdges);
151
+ }
152
+ having(condition) {
153
+ const existing = this.queryParams?._having;
154
+ const _having = existing ? `${existing},${condition}` : condition;
155
+ return new Database(this.client, { ...this.urlParams }, undefined, undefined, {
156
+ ...this.queryParams,
157
+ _having
158
+ }, { ...this.graphParams }, this.isEdges);
159
+ }
160
+ // CRUD methods
161
+ get(recordId) {
162
+ return new Database(this.client, { ...this.urlParams, recordId }, HttpMethod.GET, undefined, this.queryParams, { ...this.graphParams }, this.isEdges);
163
+ }
164
+ create(body) {
165
+ return new Database(this.client, { ...this.urlParams }, HttpMethod.POST, body, this.queryParams, { ...this.graphParams }, this.isEdges);
166
+ }
167
+ upsert(body, uniqueFields) {
168
+ const qp = uniqueFields?.length ? { ...this.queryParams, unique_fields: uniqueFields.join(',') } : this.queryParams;
169
+ return new Database(this.client, { ...this.urlParams }, HttpMethod.POST, body, qp, { ...this.graphParams }, this.isEdges, true);
170
+ }
171
+ update(body) {
172
+ return new Database(this.client, { ...this.urlParams }, HttpMethod.PATCH, body, this.queryParams, { ...this.graphParams }, this.isEdges);
173
+ }
174
+ bulkUpdate(body) {
175
+ return new Database(this.client, { ...this.urlParams }, HttpMethod.PATCH, body, this.queryParams, { ...this.graphParams }, this.isEdges);
176
+ }
177
+ delete(recordIdOrEdgeIds) {
178
+ if (Array.isArray(recordIdOrEdgeIds)) {
179
+ const body = { edge_ids: recordIdOrEdgeIds };
180
+ return new Database(this.client, { ...this.urlParams }, HttpMethod.DELETE, body, this.queryParams, { ...this.graphParams }, this.isEdges);
181
+ }
182
+ return new Database(this.client, { ...this.urlParams, recordId: recordIdOrEdgeIds }, HttpMethod.DELETE, undefined, this.queryParams, { ...this.graphParams }, this.isEdges);
183
+ }
184
+ bulkDelete(ids) {
185
+ return new Database(this.client, { ...this.urlParams }, HttpMethod.DELETE, undefined, {
186
+ ...this.queryParams,
187
+ ids: ids.join(',')
188
+ }, { ...this.graphParams }, this.isEdges);
189
+ }
190
+ deleteFiltered() {
191
+ return new Database(this.client, { ...this.urlParams }, HttpMethod.DELETE, undefined, this.queryParams, { ...this.graphParams }, this.isEdges);
192
+ }
193
+ async first() {
194
+ const response = await this.execute();
195
+ const data = response.data;
196
+ if (Array.isArray(data)) {
197
+ return data[0] ?? null;
198
+ }
199
+ return data ?? null;
200
+ }
201
+ async count() {
202
+ const response = await this.execute();
203
+ if (response.total !== undefined) {
204
+ return response.total;
205
+ }
206
+ return Array.isArray(response.data) ? response.data.length : 0;
207
+ }
208
+ getTableName() {
209
+ const table = this.urlParams.dataTables;
210
+ if (!table)
211
+ throw new Error('Table name is required. Call .from(tableName) first.');
212
+ return this.isEdges ? `${table}_edges` : table;
213
+ }
214
+ buildRoute() {
215
+ const tableName = this.getTableName();
216
+ const base = DatabaseRoutes.baseUrl(this.config.appSlug) +
217
+ DatabaseRoutes.dataTables(tableName) +
218
+ (this.urlParams.recordId ? DatabaseRoutes.recordId(this.urlParams.recordId) : '') +
219
+ (this.isUpsert ? DatabaseRoutes.upsert() : '') +
220
+ '/';
221
+ // Merge database filters and graph params into one query string
222
+ const allParams = { ...this.queryParams, ...this.graphParams };
223
+ return base + buildQueryString(allParams);
224
+ }
225
+ async execute() {
226
+ if (!this.urlParams.dataTables) {
227
+ throw new Error('Table name is required. Call .from(tableName) first.');
228
+ }
229
+ const url = this.buildRoute();
230
+ const operation = this.operation || HttpMethod.GET;
231
+ switch (operation) {
232
+ case HttpMethod.POST:
233
+ return await this.client.httpClient.post(url, this.body);
234
+ case HttpMethod.PATCH:
235
+ if (!this.urlParams.recordId && !Array.isArray(this.body)) {
236
+ throw new Error('PATCH operation requires a record ID.');
237
+ }
238
+ return await this.client.httpClient.patch(url, this.body);
239
+ case HttpMethod.DELETE:
240
+ if (this.body) {
241
+ return await this.client.httpClient.delete(url, this.body);
242
+ }
243
+ return await this.client.httpClient.delete(url);
244
+ case HttpMethod.GET:
245
+ default:
246
+ return await this.client.httpClient.get(url);
247
+ }
248
+ }
249
+ }
250
+ //# sourceMappingURL=DatabaseClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseClient.js","sourceRoot":"","sources":["../../../src/lib/database/DatabaseClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import type { Client } from "../../client.js";
2
+ import { HttpMethod } from "../../lib-internal/http/types.js";
3
+ import type { TaruviResponse } from "../../types.js";
4
+ import type { SortOrder, GraphInclude } from "../../utils/enums.js";
5
+ export type { SortOrder, GraphInclude };
6
+ export type { DataFormat } from "../../utils/enums.js";
7
+ export type DatabaseOperation = HttpMethod;
8
+ export type FilterOperator = 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'nin' | 'ina' | 'nina' | 'contains' | 'ncontains' | 'containss' | 'ncontainss' | 'icontains' | 'nicontains' | 'startswith' | 'nstartswith' | 'startswiths' | 'nstartswiths' | 'endswith' | 'nendswith' | 'endswiths' | 'nendswiths' | 'between' | 'nbetween' | 'null' | 'nnull' | 'search' | 'like' | 'ilike' | 'acontains' | 'nacontains' | 'acontainedby' | 'nacontainedby' | 'aoverlap' | 'naoverlap' | 'aelement' | 'naelement' | 'rcontains' | 'rcontainedby' | 'roverlaps' | 'radjacent' | 'rstrictleft' | 'rstrictright';
9
+ export interface UrlParams {
10
+ appSlug?: string;
11
+ dataTables?: string;
12
+ recordId?: string;
13
+ }
14
+ export interface DatabaseClientInterface {
15
+ client: Client;
16
+ urlParams?: UrlParams;
17
+ }
18
+ export interface DatabaseRequest {
19
+ [key: string]: unknown;
20
+ }
21
+ export type DatabaseResponse<T = unknown> = TaruviResponse<T[]>;
22
+ export type DatabaseSingleResponse<T = unknown> = TaruviResponse<T>;
23
+ export type GraphFormat = 'flat' | 'tree' | 'graph';
24
+ export interface EdgeRequest {
25
+ from_id: number | string;
26
+ to_id: number | string;
27
+ type: string;
28
+ metadata?: Record<string, unknown>;
29
+ }
30
+ export interface EdgeResponse {
31
+ id: number;
32
+ from_id: number | string;
33
+ to_id: number | string;
34
+ type: string;
35
+ metadata?: Record<string, unknown>;
36
+ }
37
+ export interface EdgeDeleteRequest {
38
+ edge_ids: number[];
39
+ }
40
+ export interface PgRangeValue {
41
+ lower: string | number | null;
42
+ upper: string | number | null;
43
+ bounds: '()' | '(]' | '[)' | '[]';
44
+ empty: boolean;
45
+ }
46
+ /**
47
+ * Leaf node for the backend `filters` JSON query param.
48
+ * Leaf `operator` strings are platform tokens (see taruvi-platform `FIELD_OPERATORS` /
49
+ * `filter_translator`). `contains` = case-insensitive substring; `containss` = case-sensitive.
50
+ */
51
+ export interface BackendFilterLeafNode {
52
+ field: string;
53
+ operator: string;
54
+ value: unknown;
55
+ }
56
+ /** Logical `and` / `or` group for the backend `filters` JSON query param. */
57
+ export interface BackendFilterLogicalNode {
58
+ operator: 'and' | 'or';
59
+ value: BackendFilterNode[];
60
+ }
61
+ export type BackendFilterNode = BackendFilterLogicalNode | BackendFilterLeafNode;
62
+ /** Top level of the `filters` JSON payload: an array of logical nodes. */
63
+ export type BackendFilterTreeRoot = BackendFilterLogicalNode[];
64
+ /** Runtime check for the single-arg `filters(tree)` overload. */
65
+ export declare function isBackendFilterTreeRoot(x: unknown): x is BackendFilterTreeRoot;
66
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/database/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { HttpMethod } from "../../lib-internal/http/types.js";
2
+ function isPlainObject(x) {
3
+ return typeof x === 'object' && x !== null && !Array.isArray(x);
4
+ }
5
+ function isBackendFilterLogicalNode(x) {
6
+ if (!isPlainObject(x))
7
+ return false;
8
+ if (x.operator !== 'and' && x.operator !== 'or')
9
+ return false;
10
+ if (!Array.isArray(x.value))
11
+ return false;
12
+ if ('field' in x)
13
+ return false;
14
+ return true;
15
+ }
16
+ /** Runtime check for the single-arg `filters(tree)` overload. */
17
+ export function isBackendFilterTreeRoot(x) {
18
+ return Array.isArray(x) && x.every(isBackendFilterLogicalNode);
19
+ }
20
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/database/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AA4I7D,SAAS,aAAa,CAAC,CAAU;IAC7B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,SAAS,0BAA0B,CAAC,CAAU;IAC1C,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACnC,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACzC,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IAC9B,OAAO,IAAI,CAAA;AACf,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,uBAAuB,CAAC,CAAU;IAC9C,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;AAClE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Client } from "../../client.js";
2
+ import type { FunctionRequest, FunctionResponse } from "./types.js";
3
+ export declare class Functions {
4
+ private client;
5
+ private config;
6
+ constructor(client: Client);
7
+ execute<T = unknown>(functionSlug: string, options?: FunctionRequest): Promise<FunctionResponse<T>>;
8
+ }
9
+ //# sourceMappingURL=FunctionsClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FunctionsClient.d.ts","sourceRoot":"","sources":["../../../src/lib/functions/FunctionsClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGpE,qBAAa,SAAS;IAClB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,MAAM;IAKpB,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAYhH"}
@@ -0,0 +1,20 @@
1
+ import { FunctionRoutes } from "../../lib-internal/routes/FunctionRoutes.js";
2
+ export class Functions {
3
+ client;
4
+ config;
5
+ constructor(client) {
6
+ this.client = client;
7
+ this.config = this.client.getConfig();
8
+ }
9
+ async execute(functionSlug, options = {}) {
10
+ const url = `${FunctionRoutes.baseUrl(this.config.appSlug, functionSlug)}/execute/`;
11
+ const body = {
12
+ async: options.async ?? false,
13
+ params: {
14
+ ...options.params
15
+ }
16
+ };
17
+ return await this.client.httpClient.post(url, body);
18
+ }
19
+ }
20
+ //# sourceMappingURL=FunctionsClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FunctionsClient.js","sourceRoot":"","sources":["../../../src/lib/functions/FunctionsClient.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAE7E,MAAM,OAAO,SAAS;IACV,MAAM,CAAQ;IACd,MAAM,CAAc;IAE5B,YAAY,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,OAAO,CAAc,YAAoB,EAAE,UAA2B,EAAE;QAC1E,MAAM,GAAG,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,WAAW,CAAA;QAEnF,MAAM,IAAI,GAAG;YACT,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;YAC7B,MAAM,EAAE;gBACJ,GAAG,OAAO,CAAC,MAAM;aACpB;SACJ,CAAA;QAED,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAsB,GAAG,EAAE,IAAI,CAAC,CAAA;IAC5E,CAAC;CACJ"}
@@ -0,0 +1,25 @@
1
+ export interface FunctionRequest {
2
+ async?: boolean;
3
+ params?: Record<string, unknown>;
4
+ }
5
+ export interface FunctionInvocation {
6
+ id: number;
7
+ celery_task_id: string;
8
+ function: number;
9
+ function_name: string;
10
+ function_slug: string;
11
+ user_id: string | null;
12
+ user_username: string;
13
+ user_email: string;
14
+ task_status: string;
15
+ trigger_type: string;
16
+ created_at: string;
17
+ updated_at?: string;
18
+ }
19
+ export interface FunctionResponse<T = unknown> {
20
+ status: "success" | "error";
21
+ message: string;
22
+ data: T | null;
23
+ invocation: FunctionInvocation;
24
+ }
25
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/functions/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,kBAAkB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB;AAGD,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,OAAO;IACzC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IACd,UAAU,EAAE,kBAAkB,CAAA;CACjC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/functions/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import type { Client } from "../../client.js";
2
+ import type { Resources, Resource, PolicyCheckBatchResult, GetAllowedActionsOptions } from "./types.js";
3
+ export declare class Policy {
4
+ private client;
5
+ private config;
6
+ constructor(client: Client);
7
+ checkResource(resources: Resources): Promise<PolicyCheckBatchResult>;
8
+ /**
9
+ * Get list of allowed actions for a specific resource.
10
+ *
11
+ * @param resource - Resource with kind and id
12
+ * @param options - Optional actions list, principal override, and aux data
13
+ * @returns List of action names that are allowed
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const allowed = await client.policy.getAllowedActions(
18
+ * { kind: 'datatable:users', id: '123', attr: {} }
19
+ * )
20
+ * // Returns: ['read', 'write', 'update'] // 'delete' not allowed
21
+ * ```
22
+ */
23
+ getAllowedActions(resource: Resource, options?: GetAllowedActionsOptions): Promise<string[]>;
24
+ }
25
+ //# sourceMappingURL=PolicyClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolicyClient.d.ts","sourceRoot":"","sources":["../../../src/lib/policy/PolicyClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAG7C,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAEvG,qBAAa,MAAM;IACf,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,MAAM,CAAc;gBAChB,MAAM,EAAE,MAAM;IAKpB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAgB1E;;;;;;;;;;;;;;OAcG;IACG,iBAAiB,CACnB,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,wBAA6B,GACvC,OAAO,CAAC,MAAM,EAAE,CAAC;CA+BvB"}
@@ -0,0 +1,65 @@
1
+ import { PolicyRoutes } from "../../lib-internal/routes/PolicyRoutes.js";
2
+ export class Policy {
3
+ client;
4
+ config;
5
+ constructor(client) {
6
+ this.client = client;
7
+ this.config = this.client.getConfig();
8
+ }
9
+ async checkResource(resources) {
10
+ const url = PolicyRoutes.baseUrl(this.config.appSlug) + PolicyRoutes.checkResource;
11
+ const body = {
12
+ resources: resources.map(r => ({
13
+ resource: {
14
+ kind: r.resource,
15
+ id: r.recordId,
16
+ attr: r.attributes || {}
17
+ },
18
+ actions: r.actions
19
+ }))
20
+ };
21
+ return await this.client.httpClient.post(url, body);
22
+ }
23
+ /**
24
+ * Get list of allowed actions for a specific resource.
25
+ *
26
+ * @param resource - Resource with kind and id
27
+ * @param options - Optional actions list, principal override, and aux data
28
+ * @returns List of action names that are allowed
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const allowed = await client.policy.getAllowedActions(
33
+ * { kind: 'datatable:users', id: '123', attr: {} }
34
+ * )
35
+ * // Returns: ['read', 'write', 'update'] // 'delete' not allowed
36
+ * ```
37
+ */
38
+ async getAllowedActions(resource, options = {}) {
39
+ const { actions = ['read', 'write', 'create', 'update', 'delete'], principal, auxData } = options;
40
+ const url = PolicyRoutes.baseUrl(this.config.appSlug) + PolicyRoutes.checkResource;
41
+ const body = {
42
+ resources: [{
43
+ resource: resource,
44
+ actions: actions
45
+ }]
46
+ };
47
+ if (principal) {
48
+ body.principal = principal;
49
+ }
50
+ if (auxData) {
51
+ body.auxData = auxData;
52
+ }
53
+ const result = await this.client.httpClient.post(url, body);
54
+ // Extract allowed actions
55
+ if (result.results && result.results.length > 0) {
56
+ const firstResult = result.results[0];
57
+ const actionResults = firstResult?.actions || {};
58
+ return Object.entries(actionResults)
59
+ .filter(([_, effect]) => effect === 'EFFECT_ALLOW')
60
+ .map(([action, _]) => action);
61
+ }
62
+ return [];
63
+ }
64
+ }
65
+ //# sourceMappingURL=PolicyClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolicyClient.js","sourceRoot":"","sources":["../../../src/lib/policy/PolicyClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAA;AAIxE,MAAM,OAAO,MAAM;IACP,MAAM,CAAQ;IACd,MAAM,CAAc;IAC5B,YAAY,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAoB;QACpC,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,aAAa,CAAA;QAClF,MAAM,IAAI,GAAG;YACT,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC3B,QAAQ,EAAE;oBACN,IAAI,EAAE,CAAC,CAAC,QAAQ;oBAChB,EAAE,EAAE,CAAC,CAAC,QAAQ;oBACd,IAAI,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE;iBAC3B;gBACD,OAAO,EAAE,CAAC,CAAC,OAAO;aACrB,CAAC,CAAC;SACN,CAAA;QAED,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAyB,GAAG,EAAE,IAAI,CAAC,CAAA;IAC/E,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,iBAAiB,CACnB,QAAkB,EAClB,UAAoC,EAAE;QAEtC,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;QAEjG,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,aAAa,CAAA;QAClF,MAAM,IAAI,GAA4B;YAClC,SAAS,EAAE,CAAC;oBACR,QAAQ,EAAE,QAAQ;oBAClB,OAAO,EAAE,OAAO;iBACnB,CAAC;SACL,CAAA;QAED,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC9B,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAC1B,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAyB,GAAG,EAAE,IAAI,CAAC,CAAA;QAEnF,0BAA0B;QAC1B,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YACrC,MAAM,aAAa,GAAG,WAAW,EAAE,OAAO,IAAI,EAAE,CAAA;YAChD,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;iBAC/B,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,cAAc,CAAC;iBAClD,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAA;QACrC,CAAC;QAED,OAAO,EAAE,CAAA;IACb,CAAC;CACJ"}
@@ -0,0 +1,32 @@
1
+ import type { TaruviResponse } from "../../types.js";
2
+ export interface Principal {
3
+ id: string;
4
+ roles: string[];
5
+ attr: Record<string, unknown>;
6
+ }
7
+ export type Resource = {
8
+ kind: string;
9
+ id: string;
10
+ attr: Record<string, unknown>;
11
+ };
12
+ export type Resources = {
13
+ resource: string;
14
+ recordId: string;
15
+ attributes: Record<string, unknown>;
16
+ actions: string[];
17
+ }[];
18
+ export interface PolicyCheckResult {
19
+ resource: Resource;
20
+ actions: Record<string, string>;
21
+ }
22
+ export interface PolicyCheckBatchResult {
23
+ requestId: string;
24
+ results: PolicyCheckResult[];
25
+ }
26
+ export type GetAllowedActionsOptions = {
27
+ actions?: string[];
28
+ principal?: Principal;
29
+ auxData?: Record<string, unknown>;
30
+ };
31
+ export type ResourceCheckResponse = TaruviResponse<PolicyCheckBatchResult>;
32
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/policy/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED,MAAM,MAAM,QAAQ,GAAG;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,OAAO,EAAE,MAAM,EAAE,CAAA;CACpB,EAAE,CAAA;AAEH,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,QAAQ,CAAA;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,sBAAsB;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,iBAAiB,EAAE,CAAA;CAC/B;AAED,MAAM,MAAM,wBAAwB,GAAG;IACnC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC,CAAA;AAGD,MAAM,MAAM,qBAAqB,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/policy/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import type { Client } from "../../client.js";
2
+ import type { SecretsUrlParams, GetSecretOptions, GetSecretsOptions, SecretsBatchResponse, SecretsBatchMetadataResponse } from "./types.js";
3
+ import { HttpMethod } from "../../lib-internal/http/types.js";
4
+ export declare class Secrets {
5
+ private client;
6
+ private urlParams;
7
+ private body;
8
+ private method;
9
+ constructor(client: Client, urlParams?: SecretsUrlParams, body?: object, method?: HttpMethod);
10
+ /**
11
+ * Get a specific secret by key.
12
+ *
13
+ * @param key - Secret key/name
14
+ * @param options - Optional app context for 2-tier inheritance and tag validation
15
+ * @returns Secrets instance for chaining with execute()
16
+ */
17
+ get(key: string, options?: GetSecretOptions): Secrets;
18
+ /**
19
+ * List multiple secrets by keys using backend batch endpoint.
20
+ * More efficient than making multiple individual requests - uses a single API call.
21
+ *
22
+ * @param keys - List of secret keys to retrieve
23
+ * @param options - Optional app context and metadata flag
24
+ * @returns Promise with dict mapping keys to values (or full objects if includeMetadata=true)
25
+ */
26
+ list(keys: string[], options?: GetSecretsOptions): Promise<SecretsBatchResponse | SecretsBatchMetadataResponse>;
27
+ execute<T = unknown>(): Promise<T>;
28
+ }
29
+ //# sourceMappingURL=SecretsClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecretsClient.d.ts","sourceRoot":"","sources":["../../../src/lib/secrets/SecretsClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC5I,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAI9D,qBAAa,OAAO;IAChB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,IAAI,CAAoB;IAChC,OAAO,CAAC,MAAM,CAAY;gBAEd,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,gBAAqB,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,GAAE,UAA2B;IAOhH;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO;IAczD;;;;;;;OAOG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,oBAAoB,GAAG,4BAA4B,CAAC;IAcnH,OAAO,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC;CAY3C"}