quickbase-js 2.1.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +674 -90
- package/bin/quickbase-js.js +54 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +5 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/ticket.d.ts +13 -0
- package/dist/auth/ticket.d.ts.map +1 -1
- package/dist/auth/ticket.js +103 -3
- package/dist/auth/ticket.js.map +1 -1
- package/dist/cli/schema.d.ts +23 -0
- package/dist/cli/schema.d.ts.map +1 -0
- package/dist/cli/schema.js +425 -0
- package/dist/cli/schema.js.map +1 -0
- package/dist/client/request.d.ts +2 -1
- package/dist/client/request.d.ts.map +1 -1
- package/dist/client/request.js +165 -18
- package/dist/client/request.js.map +1 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +3 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/errors.d.ts +17 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +32 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/schema.d.ts +37 -0
- package/dist/core/schema.d.ts.map +1 -0
- package/dist/core/schema.js +168 -0
- package/dist/core/schema.js.map +1 -0
- package/dist/core/transform.d.ts +36 -0
- package/dist/core/transform.d.ts.map +1 -0
- package/dist/core/transform.js +205 -0
- package/dist/core/transform.js.map +1 -0
- package/dist/core/types.d.ts +87 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/quickbase.esm.js +3 -3
- package/dist/quickbase.esm.js.map +4 -4
- package/dist/quickbase.min.js +3 -3
- package/dist/quickbase.min.js.map +4 -4
- package/dist/xml/codepages.d.ts +60 -0
- package/dist/xml/codepages.d.ts.map +1 -0
- package/dist/xml/codepages.js +88 -0
- package/dist/xml/codepages.js.map +1 -0
- package/dist/xml/dbvars.d.ts +39 -0
- package/dist/xml/dbvars.d.ts.map +1 -0
- package/dist/xml/dbvars.js +54 -0
- package/dist/xml/dbvars.js.map +1 -0
- package/dist/xml/errors.d.ts +64 -0
- package/dist/xml/errors.d.ts.map +1 -0
- package/dist/xml/errors.js +102 -0
- package/dist/xml/errors.js.map +1 -0
- package/dist/xml/fields.d.ts +45 -0
- package/dist/xml/fields.d.ts.map +1 -0
- package/dist/xml/fields.js +86 -0
- package/dist/xml/fields.js.map +1 -0
- package/dist/xml/groups.d.ts +196 -0
- package/dist/xml/groups.d.ts.map +1 -0
- package/dist/xml/groups.js +424 -0
- package/dist/xml/groups.js.map +1 -0
- package/dist/xml/html.d.ts +61 -0
- package/dist/xml/html.d.ts.map +1 -0
- package/dist/xml/html.js +110 -0
- package/dist/xml/html.js.map +1 -0
- package/dist/xml/index.d.ts +453 -0
- package/dist/xml/index.d.ts.map +1 -0
- package/dist/xml/index.js +741 -0
- package/dist/xml/index.js.map +1 -0
- package/dist/xml/metadata.d.ts +49 -0
- package/dist/xml/metadata.d.ts.map +1 -0
- package/dist/xml/metadata.js +84 -0
- package/dist/xml/metadata.js.map +1 -0
- package/dist/xml/records.d.ts +106 -0
- package/dist/xml/records.d.ts.map +1 -0
- package/dist/xml/records.js +220 -0
- package/dist/xml/records.js.map +1 -0
- package/dist/xml/request.d.ts +115 -0
- package/dist/xml/request.d.ts.map +1 -0
- package/dist/xml/request.js +167 -0
- package/dist/xml/request.js.map +1 -0
- package/dist/xml/roles.d.ts +117 -0
- package/dist/xml/roles.d.ts.map +1 -0
- package/dist/xml/roles.js +241 -0
- package/dist/xml/roles.js.map +1 -0
- package/dist/xml/schema.d.ts +94 -0
- package/dist/xml/schema.d.ts.map +1 -0
- package/dist/xml/schema.js +354 -0
- package/dist/xml/schema.js.map +1 -0
- package/dist/xml/transform.d.ts +154 -0
- package/dist/xml/transform.d.ts.map +1 -0
- package/dist/xml/transform.js +182 -0
- package/dist/xml/transform.js.map +1 -0
- package/dist/xml/types.d.ts +531 -0
- package/dist/xml/types.d.ts.map +1 -0
- package/dist/xml/types.js +22 -0
- package/dist/xml/types.js.map +1 -0
- package/dist/xml/users.d.ts +92 -0
- package/dist/xml/users.d.ts.map +1 -0
- package/dist/xml/users.js +166 -0
- package/dist/xml/users.js.map +1 -0
- package/dist/xml/webhooks.d.ts +98 -0
- package/dist/xml/webhooks.d.ts.map +1 -0
- package/dist/xml/webhooks.js +202 -0
- package/dist/xml/webhooks.js.map +1 -0
- package/package.json +6 -2
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* XML API Schema and App Discovery
|
|
3
|
+
*
|
|
4
|
+
* Endpoints for discovering apps/tables and getting schema information.
|
|
5
|
+
*
|
|
6
|
+
* XML-API: Remove this file when QuickBase discontinues the XML API.
|
|
7
|
+
* To find all XML API code, search for: XML-API
|
|
8
|
+
*/
|
|
9
|
+
import { checkError } from './errors.js';
|
|
10
|
+
import { buildRequest, escapeXml, parseBaseResponse, getTagContent, getAttribute, getAllElements, parseXmlNumber, parseXmlBool, } from './request.js';
|
|
11
|
+
/**
|
|
12
|
+
* List all apps/tables the user can access.
|
|
13
|
+
*
|
|
14
|
+
* Returns apps across all domains by default. Use realmAppsOnly to limit
|
|
15
|
+
* to the current realm.
|
|
16
|
+
*
|
|
17
|
+
* @see https://help.quickbase.com/docs/api-granteddbs
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const result = await grantedDBs(caller, { parentsOnly: true });
|
|
22
|
+
* for (const db of result.databases) {
|
|
23
|
+
* console.log(`${db.name} (${db.dbid})`);
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export async function grantedDBs(caller, options) {
|
|
28
|
+
let inner = '';
|
|
29
|
+
if (options?.excludeParents) {
|
|
30
|
+
inner += '<excludeparents>1</excludeparents>';
|
|
31
|
+
}
|
|
32
|
+
if (options?.parentsOnly) {
|
|
33
|
+
inner += '<Withembeddedtables>0</Withembeddedtables>';
|
|
34
|
+
}
|
|
35
|
+
if (options?.adminOnly) {
|
|
36
|
+
inner += '<adminOnly>true</adminOnly>';
|
|
37
|
+
}
|
|
38
|
+
if (options?.includeAncestors) {
|
|
39
|
+
inner += '<includeancestors>1</includeancestors>';
|
|
40
|
+
}
|
|
41
|
+
if (options?.withEmbeddedTables !== undefined) {
|
|
42
|
+
inner += `<withembeddedtables>${options.withEmbeddedTables ? '1' : '0'}</withembeddedtables>`;
|
|
43
|
+
}
|
|
44
|
+
if (options?.realmAppsOnly) {
|
|
45
|
+
inner += '<realmAppsOnly>true</realmAppsOnly>';
|
|
46
|
+
}
|
|
47
|
+
const body = buildRequest(inner);
|
|
48
|
+
const xml = await caller.doXml('main', 'API_GrantedDBs', body);
|
|
49
|
+
const base = parseBaseResponse(xml);
|
|
50
|
+
checkError(base);
|
|
51
|
+
// Parse databases
|
|
52
|
+
const dbElements = getAllElements(xml, 'dbinfo');
|
|
53
|
+
const databases = dbElements.map((dbXml) => {
|
|
54
|
+
const info = {
|
|
55
|
+
dbid: getTagContent(dbXml, 'dbid'),
|
|
56
|
+
name: getTagContent(dbXml, 'dbname'),
|
|
57
|
+
};
|
|
58
|
+
const ancestorAppId = getTagContent(dbXml, 'ancestorappid');
|
|
59
|
+
if (ancestorAppId) {
|
|
60
|
+
info.ancestorAppId = ancestorAppId;
|
|
61
|
+
}
|
|
62
|
+
const oldestAncestorAppId = getTagContent(dbXml, 'oldestancestorappid');
|
|
63
|
+
if (oldestAncestorAppId) {
|
|
64
|
+
info.oldestAncestorAppId = oldestAncestorAppId;
|
|
65
|
+
}
|
|
66
|
+
return info;
|
|
67
|
+
});
|
|
68
|
+
return { databases };
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Find an app by name.
|
|
72
|
+
*
|
|
73
|
+
* Searches only apps you have access to. May return multiple results
|
|
74
|
+
* if multiple apps share the same name.
|
|
75
|
+
*
|
|
76
|
+
* @see https://help.quickbase.com/docs/api-finddbbyname
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* const result = await findDBByName(caller, 'My App', true);
|
|
81
|
+
* console.log(`Found app: ${result.dbid}`);
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export async function findDBByName(caller, name, parentsOnly) {
|
|
85
|
+
let inner = `<dbname>${escapeXml(name)}</dbname>`;
|
|
86
|
+
if (parentsOnly) {
|
|
87
|
+
inner += '<ParentsOnly>1</ParentsOnly>';
|
|
88
|
+
}
|
|
89
|
+
const body = buildRequest(inner);
|
|
90
|
+
const xml = await caller.doXml('main', 'API_FindDBByName', body);
|
|
91
|
+
const base = parseBaseResponse(xml);
|
|
92
|
+
checkError(base);
|
|
93
|
+
const dbid = getTagContent(xml, 'dbid');
|
|
94
|
+
if (!dbid) {
|
|
95
|
+
throw new Error('Invalid API_FindDBByName response: no dbid element');
|
|
96
|
+
}
|
|
97
|
+
return { dbid };
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get app/table metadata.
|
|
101
|
+
*
|
|
102
|
+
* Returns information like last modified time, record count, manager info.
|
|
103
|
+
*
|
|
104
|
+
* @see https://help.quickbase.com/docs/api-getdbinfo
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* const info = await getDBInfo(caller, 'bqxyz123');
|
|
109
|
+
* console.log(`${info.name}: ${info.numRecords} records`);
|
|
110
|
+
* console.log(`Manager: ${info.managerName}`);
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
export async function getDBInfo(caller, dbid) {
|
|
114
|
+
const body = buildRequest('');
|
|
115
|
+
const xml = await caller.doXml(dbid, 'API_GetDBInfo', body);
|
|
116
|
+
const base = parseBaseResponse(xml);
|
|
117
|
+
checkError(base);
|
|
118
|
+
return {
|
|
119
|
+
name: getTagContent(xml, 'dbname'),
|
|
120
|
+
lastRecModTime: getTagContent(xml, 'lastRecModTime') || undefined,
|
|
121
|
+
lastModifiedTime: getTagContent(xml, 'lastModifiedTime') || undefined,
|
|
122
|
+
createdTime: getTagContent(xml, 'createdTime') || undefined,
|
|
123
|
+
numRecords: parseXmlNumber(getTagContent(xml, 'numRecords')),
|
|
124
|
+
managerId: getTagContent(xml, 'mgrID') || undefined,
|
|
125
|
+
managerName: getTagContent(xml, 'mgrName') || undefined,
|
|
126
|
+
version: getTagContent(xml, 'version') || undefined,
|
|
127
|
+
timeZone: getTagContent(xml, 'time_zone') || undefined,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get total record count for a table.
|
|
132
|
+
*
|
|
133
|
+
* @see https://help.quickbase.com/docs/api-getnumrecords
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```typescript
|
|
137
|
+
* const count = await getNumRecords(caller, 'bqtable123');
|
|
138
|
+
* console.log(`Table has ${count} records`);
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
export async function getNumRecords(caller, tableId) {
|
|
142
|
+
const body = buildRequest('');
|
|
143
|
+
const xml = await caller.doXml(tableId, 'API_GetNumRecords', body);
|
|
144
|
+
const base = parseBaseResponse(xml);
|
|
145
|
+
checkError(base);
|
|
146
|
+
return parseXmlNumber(getTagContent(xml, 'num_records'));
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Parse a field element from GetSchema response
|
|
150
|
+
*/
|
|
151
|
+
function parseSchemaField(fieldXml) {
|
|
152
|
+
const field = {
|
|
153
|
+
id: parseXmlNumber(getAttribute(fieldXml, 'id')),
|
|
154
|
+
fieldType: getAttribute(fieldXml, 'field_type'),
|
|
155
|
+
baseType: getAttribute(fieldXml, 'base_type'),
|
|
156
|
+
label: getTagContent(fieldXml, 'label'),
|
|
157
|
+
};
|
|
158
|
+
const mode = getAttribute(fieldXml, 'mode');
|
|
159
|
+
if (mode)
|
|
160
|
+
field.mode = mode;
|
|
161
|
+
const nowrap = getTagContent(fieldXml, 'nowrap');
|
|
162
|
+
if (nowrap)
|
|
163
|
+
field.nowrap = parseXmlBool(nowrap);
|
|
164
|
+
const bold = getTagContent(fieldXml, 'bold');
|
|
165
|
+
if (bold)
|
|
166
|
+
field.bold = parseXmlBool(bold);
|
|
167
|
+
const required = getTagContent(fieldXml, 'required');
|
|
168
|
+
if (required)
|
|
169
|
+
field.required = parseXmlBool(required);
|
|
170
|
+
const unique = getTagContent(fieldXml, 'unique');
|
|
171
|
+
if (unique)
|
|
172
|
+
field.unique = parseXmlBool(unique);
|
|
173
|
+
const fieldHelp = getTagContent(fieldXml, 'fieldhelp');
|
|
174
|
+
if (fieldHelp)
|
|
175
|
+
field.fieldHelp = fieldHelp;
|
|
176
|
+
const appearsByDefault = getTagContent(fieldXml, 'appears_by_default');
|
|
177
|
+
if (appearsByDefault)
|
|
178
|
+
field.appearsByDefault = parseXmlBool(appearsByDefault);
|
|
179
|
+
const findEnabled = getTagContent(fieldXml, 'find_enabled');
|
|
180
|
+
if (findEnabled)
|
|
181
|
+
field.findEnabled = parseXmlBool(findEnabled);
|
|
182
|
+
const allowNewChoices = getTagContent(fieldXml, 'allow_new_choices');
|
|
183
|
+
if (allowNewChoices)
|
|
184
|
+
field.allowNewChoices = parseXmlBool(allowNewChoices);
|
|
185
|
+
const sortAsGiven = getTagContent(fieldXml, 'sort_as_given');
|
|
186
|
+
if (sortAsGiven)
|
|
187
|
+
field.sortAsGiven = parseXmlBool(sortAsGiven);
|
|
188
|
+
const carryChoices = getTagContent(fieldXml, 'carrychoices');
|
|
189
|
+
if (carryChoices)
|
|
190
|
+
field.carryChoices = parseXmlBool(carryChoices);
|
|
191
|
+
const foreignKey = getTagContent(fieldXml, 'foreignkey');
|
|
192
|
+
if (foreignKey)
|
|
193
|
+
field.foreignKey = parseXmlBool(foreignKey);
|
|
194
|
+
const doesTotal = getTagContent(fieldXml, 'does_total');
|
|
195
|
+
if (doesTotal)
|
|
196
|
+
field.doesTotal = parseXmlBool(doesTotal);
|
|
197
|
+
const doesAverage = getTagContent(fieldXml, 'does_average');
|
|
198
|
+
if (doesAverage)
|
|
199
|
+
field.doesAverage = parseXmlBool(doesAverage);
|
|
200
|
+
const defaultKind = getTagContent(fieldXml, 'default_kind');
|
|
201
|
+
if (defaultKind)
|
|
202
|
+
field.defaultKind = defaultKind;
|
|
203
|
+
const defaultValue = getTagContent(fieldXml, 'default_value');
|
|
204
|
+
if (defaultValue)
|
|
205
|
+
field.defaultValue = defaultValue;
|
|
206
|
+
// Parse choices if present
|
|
207
|
+
const choicesMatch = fieldXml.match(/<choices>([\s\S]*?)<\/choices>/);
|
|
208
|
+
if (choicesMatch && choicesMatch[1]) {
|
|
209
|
+
const choiceElements = getAllElements(choicesMatch[1], 'choice');
|
|
210
|
+
field.choices = choiceElements.map((c) => getTagContent(c, 'choice') || c.replace(/<\/?choice>/g, ''));
|
|
211
|
+
}
|
|
212
|
+
// Parse summary fields
|
|
213
|
+
const summaryReferenceFid = getTagContent(fieldXml, 'summaryReferenceFid');
|
|
214
|
+
if (summaryReferenceFid)
|
|
215
|
+
field.summaryReferenceFid = parseXmlNumber(summaryReferenceFid);
|
|
216
|
+
const summaryTargetFid = getTagContent(fieldXml, 'summaryTargetFid');
|
|
217
|
+
if (summaryTargetFid)
|
|
218
|
+
field.summaryTargetFid = parseXmlNumber(summaryTargetFid);
|
|
219
|
+
const summaryFunction = getTagContent(fieldXml, 'summaryFunction');
|
|
220
|
+
if (summaryFunction)
|
|
221
|
+
field.summaryFunction = summaryFunction;
|
|
222
|
+
return field;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Parse a query element from GetSchema response
|
|
226
|
+
*/
|
|
227
|
+
function parseSchemaQuery(queryXml) {
|
|
228
|
+
const query = {
|
|
229
|
+
id: parseXmlNumber(getAttribute(queryXml, 'id')),
|
|
230
|
+
name: getTagContent(queryXml, 'qyname') || getTagContent(queryXml, 'qname'),
|
|
231
|
+
type: getTagContent(queryXml, 'qytype'),
|
|
232
|
+
};
|
|
233
|
+
const desc = getTagContent(queryXml, 'qydesc');
|
|
234
|
+
if (desc)
|
|
235
|
+
query.description = desc;
|
|
236
|
+
const crit = getTagContent(queryXml, 'qycrit');
|
|
237
|
+
if (crit)
|
|
238
|
+
query.criteria = crit;
|
|
239
|
+
const clst = getTagContent(queryXml, 'qyclst');
|
|
240
|
+
if (clst)
|
|
241
|
+
query.columnList = clst;
|
|
242
|
+
const slst = getTagContent(queryXml, 'qyslst');
|
|
243
|
+
if (slst)
|
|
244
|
+
query.sortList = slst;
|
|
245
|
+
const opts = getTagContent(queryXml, 'qyopts');
|
|
246
|
+
if (opts)
|
|
247
|
+
query.options = opts;
|
|
248
|
+
const calst = getTagContent(queryXml, 'qycalst');
|
|
249
|
+
if (calst)
|
|
250
|
+
query.calcFields = calst;
|
|
251
|
+
return query;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Get comprehensive app/table schema information.
|
|
255
|
+
*
|
|
256
|
+
* When called on an app dbid: returns DBVars and child table dbids.
|
|
257
|
+
* When called on a table dbid: returns fields, queries, DBVars, and more.
|
|
258
|
+
*
|
|
259
|
+
* @see https://help.quickbase.com/docs/api-getschema
|
|
260
|
+
*
|
|
261
|
+
* @example
|
|
262
|
+
* ```typescript
|
|
263
|
+
* const schema = await getSchema(caller, 'bqtable123');
|
|
264
|
+
* console.log(`Table: ${schema.table.name}`);
|
|
265
|
+
* for (const field of schema.table.fields ?? []) {
|
|
266
|
+
* console.log(` Field ${field.id}: ${field.label} (${field.fieldType})`);
|
|
267
|
+
* }
|
|
268
|
+
* ```
|
|
269
|
+
*/
|
|
270
|
+
export async function getSchema(caller, dbid) {
|
|
271
|
+
const body = buildRequest('');
|
|
272
|
+
const xml = await caller.doXml(dbid, 'API_GetSchema', body);
|
|
273
|
+
const base = parseBaseResponse(xml);
|
|
274
|
+
checkError(base);
|
|
275
|
+
// Parse top-level elements
|
|
276
|
+
const timeZone = getTagContent(xml, 'time_zone') || undefined;
|
|
277
|
+
const dateFormat = getTagContent(xml, 'date_format') || undefined;
|
|
278
|
+
// Parse table element
|
|
279
|
+
const tableMatch = xml.match(/<table>([\s\S]*?)<\/table>/);
|
|
280
|
+
if (!tableMatch) {
|
|
281
|
+
throw new Error('Invalid API_GetSchema response: no table element');
|
|
282
|
+
}
|
|
283
|
+
const tableXml = tableMatch[0];
|
|
284
|
+
const table = {
|
|
285
|
+
name: getTagContent(tableXml, 'name'),
|
|
286
|
+
description: getTagContent(tableXml, 'desc') || undefined,
|
|
287
|
+
};
|
|
288
|
+
// Parse original metadata
|
|
289
|
+
const originalMatch = tableXml.match(/<original>([\s\S]*?)<\/original>/);
|
|
290
|
+
if (originalMatch) {
|
|
291
|
+
const origXml = originalMatch[0];
|
|
292
|
+
const original = {};
|
|
293
|
+
const appId = getTagContent(origXml, 'app_id');
|
|
294
|
+
if (appId)
|
|
295
|
+
original.appId = appId;
|
|
296
|
+
const tableId = getTagContent(origXml, 'table_id');
|
|
297
|
+
if (tableId)
|
|
298
|
+
original.tableId = tableId;
|
|
299
|
+
const creDate = getTagContent(origXml, 'cre_date');
|
|
300
|
+
if (creDate)
|
|
301
|
+
original.createdTime = creDate;
|
|
302
|
+
const modDate = getTagContent(origXml, 'mod_date');
|
|
303
|
+
if (modDate)
|
|
304
|
+
original.modifiedTime = modDate;
|
|
305
|
+
const nextRecordId = getTagContent(origXml, 'next_record_id');
|
|
306
|
+
if (nextRecordId)
|
|
307
|
+
original.nextRecordId = parseXmlNumber(nextRecordId);
|
|
308
|
+
const nextFieldId = getTagContent(origXml, 'next_field_id');
|
|
309
|
+
if (nextFieldId)
|
|
310
|
+
original.nextFieldId = parseXmlNumber(nextFieldId);
|
|
311
|
+
const nextQueryId = getTagContent(origXml, 'next_query_id');
|
|
312
|
+
if (nextQueryId)
|
|
313
|
+
original.nextQueryId = parseXmlNumber(nextQueryId);
|
|
314
|
+
const defSortFid = getTagContent(origXml, 'def_sort_fid');
|
|
315
|
+
if (defSortFid)
|
|
316
|
+
original.defaultSortFid = parseXmlNumber(defSortFid);
|
|
317
|
+
const defSortOrder = getTagContent(origXml, 'def_sort_order');
|
|
318
|
+
if (defSortOrder)
|
|
319
|
+
original.defaultSortOrder = parseXmlNumber(defSortOrder);
|
|
320
|
+
table.original = original;
|
|
321
|
+
}
|
|
322
|
+
// Parse variables
|
|
323
|
+
const variablesMatch = tableXml.match(/<variables>([\s\S]*?)<\/variables>/);
|
|
324
|
+
if (variablesMatch) {
|
|
325
|
+
const varElements = getAllElements(variablesMatch[0], 'var');
|
|
326
|
+
table.variables = varElements.map((varXml) => ({
|
|
327
|
+
name: getAttribute(varXml, 'name'),
|
|
328
|
+
value: getTagContent(varXml, 'var') || '',
|
|
329
|
+
}));
|
|
330
|
+
}
|
|
331
|
+
// Parse child tables (chdbids)
|
|
332
|
+
const chdbidsMatch = tableXml.match(/<chdbids>([\s\S]*?)<\/chdbids>/);
|
|
333
|
+
if (chdbidsMatch) {
|
|
334
|
+
const chdbElements = getAllElements(chdbidsMatch[0], 'chdbid');
|
|
335
|
+
table.childTables = chdbElements.map((chXml) => ({
|
|
336
|
+
name: getAttribute(chXml, 'name'),
|
|
337
|
+
dbid: getTagContent(chXml, 'chdbid') || '',
|
|
338
|
+
}));
|
|
339
|
+
}
|
|
340
|
+
// Parse queries
|
|
341
|
+
const queriesMatch = tableXml.match(/<queries>([\s\S]*?)<\/queries>/);
|
|
342
|
+
if (queriesMatch) {
|
|
343
|
+
const queryElements = getAllElements(queriesMatch[0], 'query');
|
|
344
|
+
table.queries = queryElements.map(parseSchemaQuery);
|
|
345
|
+
}
|
|
346
|
+
// Parse fields
|
|
347
|
+
const fieldsMatch = tableXml.match(/<fields>([\s\S]*?)<\/fields>/);
|
|
348
|
+
if (fieldsMatch && fieldsMatch[0].length > 20) {
|
|
349
|
+
const fieldElements = getAllElements(fieldsMatch[0], 'field');
|
|
350
|
+
table.fields = fieldElements.map(parseSchemaField);
|
|
351
|
+
}
|
|
352
|
+
return { table, timeZone, dateFormat };
|
|
353
|
+
}
|
|
354
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/xml/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* XML API Response Transformation
|
|
3
|
+
*
|
|
4
|
+
* Transforms XML API responses to use field and table aliases as keys
|
|
5
|
+
* when a schema is configured, similar to the JSON API transformation.
|
|
6
|
+
*
|
|
7
|
+
* Without schema: record.fields is an array accessed by index or id
|
|
8
|
+
* With schema: record.fields is keyed by alias (e.g., record.fields.name)
|
|
9
|
+
*
|
|
10
|
+
* XML-API: Remove this file when QuickBase discontinues the XML API.
|
|
11
|
+
* To find all XML API code, search for: XML-API
|
|
12
|
+
*/
|
|
13
|
+
import type { ResolvedSchema } from '../core/types.js';
|
|
14
|
+
import type { RecordField, SchemaField, GetRecordInfoResult, GetSchemaResult, FieldAddChoicesResult, FieldRemoveChoicesResult, DatabaseInfo, GrantedDBsResult, GrantedDBsForGroupResult, GetAppDTMInfoResult, FindDBByNameResult, SchemaChildTable } from './types.js';
|
|
15
|
+
/**
|
|
16
|
+
* RecordField as returned in the keyed object (alias is the key)
|
|
17
|
+
*/
|
|
18
|
+
export interface RecordFieldWithAlias extends RecordField {
|
|
19
|
+
/** Field alias (duplicated from key for convenience) */
|
|
20
|
+
alias?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* SchemaField as returned in the keyed object (alias is the key)
|
|
24
|
+
*/
|
|
25
|
+
export interface SchemaFieldWithAlias extends SchemaField {
|
|
26
|
+
/** Field alias (duplicated from key for convenience) */
|
|
27
|
+
alias?: string;
|
|
28
|
+
/** Summary reference field alias */
|
|
29
|
+
summaryReferenceFidAlias?: string;
|
|
30
|
+
/** Summary target field alias */
|
|
31
|
+
summaryTargetFidAlias?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* DatabaseInfo keyed by alias
|
|
35
|
+
*/
|
|
36
|
+
export interface DatabaseInfoWithAlias extends DatabaseInfo {
|
|
37
|
+
/** Table alias (duplicated from key for convenience) */
|
|
38
|
+
alias?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* SchemaChildTable keyed by alias
|
|
42
|
+
*/
|
|
43
|
+
export interface SchemaChildTableWithAlias extends SchemaChildTable {
|
|
44
|
+
/** Table alias (duplicated from key for convenience) */
|
|
45
|
+
alias?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* GetRecordInfoResult with fields keyed by alias.
|
|
49
|
+
* Access: result.fields.name.value
|
|
50
|
+
*/
|
|
51
|
+
export interface GetRecordInfoResultWithAlias extends Omit<GetRecordInfoResult, 'fields'> {
|
|
52
|
+
fields: Record<string, RecordFieldWithAlias>;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* GetSchemaResult with fields keyed by alias.
|
|
56
|
+
* Access: result.table.fields.name, result.table.childTables.tasks
|
|
57
|
+
*/
|
|
58
|
+
export interface GetSchemaResultWithAlias extends Omit<GetSchemaResult, 'table'> {
|
|
59
|
+
table: Omit<GetSchemaResult['table'], 'fields' | 'childTables'> & {
|
|
60
|
+
fields?: Record<string, SchemaFieldWithAlias>;
|
|
61
|
+
childTables?: Record<string, SchemaChildTableWithAlias>;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* FieldAddChoicesResult with alias
|
|
66
|
+
*/
|
|
67
|
+
export interface FieldAddChoicesResultWithAlias extends FieldAddChoicesResult {
|
|
68
|
+
/** Field alias from schema (if available) */
|
|
69
|
+
fieldAlias?: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* FieldRemoveChoicesResult with alias
|
|
73
|
+
*/
|
|
74
|
+
export interface FieldRemoveChoicesResultWithAlias extends FieldRemoveChoicesResult {
|
|
75
|
+
/** Field alias from schema (if available) */
|
|
76
|
+
fieldAlias?: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* GrantedDBsResult with databases keyed by alias.
|
|
80
|
+
* Access: result.databases.projects.dbname
|
|
81
|
+
*/
|
|
82
|
+
export interface GrantedDBsResultWithAlias extends Omit<GrantedDBsResult, 'databases'> {
|
|
83
|
+
databases: Record<string, DatabaseInfoWithAlias>;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* GrantedDBsForGroupResult with databases keyed by alias.
|
|
87
|
+
*/
|
|
88
|
+
export interface GrantedDBsForGroupResultWithAlias extends Omit<GrantedDBsForGroupResult, 'databases'> {
|
|
89
|
+
databases: Record<string, {
|
|
90
|
+
dbid: string;
|
|
91
|
+
name: string;
|
|
92
|
+
alias?: string;
|
|
93
|
+
}>;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* GetAppDTMInfoResult with tables keyed by alias.
|
|
97
|
+
* Access: result.tables.projects.lastModifiedTime
|
|
98
|
+
*/
|
|
99
|
+
export interface GetAppDTMInfoResultWithAlias extends Omit<GetAppDTMInfoResult, 'tables'> {
|
|
100
|
+
appId: string;
|
|
101
|
+
appAlias?: string;
|
|
102
|
+
lastModifiedTime?: string;
|
|
103
|
+
lastRecModTime?: string;
|
|
104
|
+
tables: Record<string, {
|
|
105
|
+
id: string;
|
|
106
|
+
alias?: string;
|
|
107
|
+
lastModifiedTime?: string;
|
|
108
|
+
lastRecModTime?: string;
|
|
109
|
+
}>;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* FindDBByNameResult with alias
|
|
113
|
+
*/
|
|
114
|
+
export interface FindDBByNameResultWithAlias extends FindDBByNameResult {
|
|
115
|
+
/** Table alias from schema (if available) */
|
|
116
|
+
alias?: string;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Transform GetRecordInfoResult to key fields by alias.
|
|
120
|
+
* Access: result.fields.name.value (instead of result.fields[0].value)
|
|
121
|
+
*/
|
|
122
|
+
export declare function transformGetRecordInfoResult(result: GetRecordInfoResult, schema: ResolvedSchema | undefined, tableId: string): GetRecordInfoResultWithAlias;
|
|
123
|
+
/**
|
|
124
|
+
* Transform GetSchemaResult to key fields and child tables by alias.
|
|
125
|
+
* Access: result.table.fields.name, result.table.childTables.tasks
|
|
126
|
+
*/
|
|
127
|
+
export declare function transformGetSchemaResult(result: GetSchemaResult, schema: ResolvedSchema | undefined, tableId: string): GetSchemaResultWithAlias;
|
|
128
|
+
/**
|
|
129
|
+
* Transform FieldAddChoicesResult to include field alias
|
|
130
|
+
*/
|
|
131
|
+
export declare function transformFieldAddChoicesResult(result: FieldAddChoicesResult, schema: ResolvedSchema | undefined, tableId: string): FieldAddChoicesResultWithAlias;
|
|
132
|
+
/**
|
|
133
|
+
* Transform FieldRemoveChoicesResult to include field alias
|
|
134
|
+
*/
|
|
135
|
+
export declare function transformFieldRemoveChoicesResult(result: FieldRemoveChoicesResult, schema: ResolvedSchema | undefined, tableId: string): FieldRemoveChoicesResultWithAlias;
|
|
136
|
+
/**
|
|
137
|
+
* Transform GrantedDBsResult to key databases by alias.
|
|
138
|
+
* Access: result.databases.projects.dbname
|
|
139
|
+
*/
|
|
140
|
+
export declare function transformGrantedDBsResult(result: GrantedDBsResult, schema: ResolvedSchema | undefined): GrantedDBsResultWithAlias;
|
|
141
|
+
/**
|
|
142
|
+
* Transform GrantedDBsForGroupResult to key databases by alias.
|
|
143
|
+
*/
|
|
144
|
+
export declare function transformGrantedDBsForGroupResult(result: GrantedDBsForGroupResult, schema: ResolvedSchema | undefined): GrantedDBsForGroupResultWithAlias;
|
|
145
|
+
/**
|
|
146
|
+
* Transform GetAppDTMInfoResult to key tables by alias.
|
|
147
|
+
* Access: result.tables.projects.lastModifiedTime
|
|
148
|
+
*/
|
|
149
|
+
export declare function transformGetAppDTMInfoResult(result: GetAppDTMInfoResult, schema: ResolvedSchema | undefined): GetAppDTMInfoResultWithAlias;
|
|
150
|
+
/**
|
|
151
|
+
* Transform FindDBByNameResult to include table alias
|
|
152
|
+
*/
|
|
153
|
+
export declare function transformFindDBByNameResult(result: FindDBByNameResult, schema: ResolvedSchema | undefined): FindDBByNameResultWithAlias;
|
|
154
|
+
//# sourceMappingURL=transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/xml/transform.ts"],"names":[],"mappings":"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"}
|