quickbase-js 2.1.0 → 2.2.1

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 (112) hide show
  1. package/README.md +700 -90
  2. package/bin/quickbase-js.js +54 -0
  3. package/dist/auth/index.d.ts.map +1 -1
  4. package/dist/auth/index.js +5 -1
  5. package/dist/auth/index.js.map +1 -1
  6. package/dist/auth/ticket.d.ts +13 -0
  7. package/dist/auth/ticket.d.ts.map +1 -1
  8. package/dist/auth/ticket.js +103 -3
  9. package/dist/auth/ticket.js.map +1 -1
  10. package/dist/cli/schema.d.ts +23 -0
  11. package/dist/cli/schema.d.ts.map +1 -0
  12. package/dist/cli/schema.js +425 -0
  13. package/dist/cli/schema.js.map +1 -0
  14. package/dist/client/request.d.ts +2 -1
  15. package/dist/client/request.d.ts.map +1 -1
  16. package/dist/client/request.js +165 -18
  17. package/dist/client/request.js.map +1 -1
  18. package/dist/core/config.d.ts.map +1 -1
  19. package/dist/core/config.js +4 -0
  20. package/dist/core/config.js.map +1 -1
  21. package/dist/core/errors.d.ts +17 -0
  22. package/dist/core/errors.d.ts.map +1 -1
  23. package/dist/core/errors.js +32 -0
  24. package/dist/core/errors.js.map +1 -1
  25. package/dist/core/index.d.ts +2 -2
  26. package/dist/core/index.d.ts.map +1 -1
  27. package/dist/core/index.js +1 -1
  28. package/dist/core/index.js.map +1 -1
  29. package/dist/core/schema.d.ts +37 -0
  30. package/dist/core/schema.d.ts.map +1 -0
  31. package/dist/core/schema.js +168 -0
  32. package/dist/core/schema.js.map +1 -0
  33. package/dist/core/transform.d.ts +36 -0
  34. package/dist/core/transform.d.ts.map +1 -0
  35. package/dist/core/transform.js +205 -0
  36. package/dist/core/transform.js.map +1 -0
  37. package/dist/core/types.d.ts +108 -0
  38. package/dist/core/types.d.ts.map +1 -1
  39. package/dist/core/types.js.map +1 -1
  40. package/dist/index.d.ts +11 -2
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +7 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/quickbase.esm.js +3 -3
  45. package/dist/quickbase.esm.js.map +4 -4
  46. package/dist/quickbase.min.js +3 -3
  47. package/dist/quickbase.min.js.map +4 -4
  48. package/dist/xml/codepages.d.ts +60 -0
  49. package/dist/xml/codepages.d.ts.map +1 -0
  50. package/dist/xml/codepages.js +88 -0
  51. package/dist/xml/codepages.js.map +1 -0
  52. package/dist/xml/dbvars.d.ts +39 -0
  53. package/dist/xml/dbvars.d.ts.map +1 -0
  54. package/dist/xml/dbvars.js +54 -0
  55. package/dist/xml/dbvars.js.map +1 -0
  56. package/dist/xml/errors.d.ts +64 -0
  57. package/dist/xml/errors.d.ts.map +1 -0
  58. package/dist/xml/errors.js +102 -0
  59. package/dist/xml/errors.js.map +1 -0
  60. package/dist/xml/fields.d.ts +45 -0
  61. package/dist/xml/fields.d.ts.map +1 -0
  62. package/dist/xml/fields.js +86 -0
  63. package/dist/xml/fields.js.map +1 -0
  64. package/dist/xml/groups.d.ts +196 -0
  65. package/dist/xml/groups.d.ts.map +1 -0
  66. package/dist/xml/groups.js +424 -0
  67. package/dist/xml/groups.js.map +1 -0
  68. package/dist/xml/html.d.ts +61 -0
  69. package/dist/xml/html.d.ts.map +1 -0
  70. package/dist/xml/html.js +110 -0
  71. package/dist/xml/html.js.map +1 -0
  72. package/dist/xml/index.d.ts +456 -0
  73. package/dist/xml/index.d.ts.map +1 -0
  74. package/dist/xml/index.js +747 -0
  75. package/dist/xml/index.js.map +1 -0
  76. package/dist/xml/metadata.d.ts +49 -0
  77. package/dist/xml/metadata.d.ts.map +1 -0
  78. package/dist/xml/metadata.js +84 -0
  79. package/dist/xml/metadata.js.map +1 -0
  80. package/dist/xml/records.d.ts +106 -0
  81. package/dist/xml/records.d.ts.map +1 -0
  82. package/dist/xml/records.js +220 -0
  83. package/dist/xml/records.js.map +1 -0
  84. package/dist/xml/request.d.ts +129 -0
  85. package/dist/xml/request.d.ts.map +1 -0
  86. package/dist/xml/request.js +190 -0
  87. package/dist/xml/request.js.map +1 -0
  88. package/dist/xml/roles.d.ts +117 -0
  89. package/dist/xml/roles.d.ts.map +1 -0
  90. package/dist/xml/roles.js +241 -0
  91. package/dist/xml/roles.js.map +1 -0
  92. package/dist/xml/schema.d.ts +94 -0
  93. package/dist/xml/schema.d.ts.map +1 -0
  94. package/dist/xml/schema.js +354 -0
  95. package/dist/xml/schema.js.map +1 -0
  96. package/dist/xml/transform.d.ts +154 -0
  97. package/dist/xml/transform.d.ts.map +1 -0
  98. package/dist/xml/transform.js +182 -0
  99. package/dist/xml/transform.js.map +1 -0
  100. package/dist/xml/types.d.ts +531 -0
  101. package/dist/xml/types.d.ts.map +1 -0
  102. package/dist/xml/types.js +22 -0
  103. package/dist/xml/types.js.map +1 -0
  104. package/dist/xml/users.d.ts +92 -0
  105. package/dist/xml/users.d.ts.map +1 -0
  106. package/dist/xml/users.js +166 -0
  107. package/dist/xml/users.js.map +1 -0
  108. package/dist/xml/webhooks.d.ts +98 -0
  109. package/dist/xml/webhooks.d.ts.map +1 -0
  110. package/dist/xml/webhooks.js +202 -0
  111. package/dist/xml/webhooks.js.map +1 -0
  112. package/package.json +6 -2
@@ -0,0 +1,182 @@
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 { getFieldAlias, getTableAlias } from '../core/schema.js';
14
+ // =============================================================================
15
+ // Transformation Functions
16
+ // =============================================================================
17
+ /**
18
+ * Convert a fields array to a keyed object.
19
+ * Keys are field aliases (if in schema) or field IDs (as strings).
20
+ */
21
+ function fieldsArrayToMap(fields, schema, tableId) {
22
+ const result = {};
23
+ for (const field of fields) {
24
+ const alias = schema ? getFieldAlias(schema, tableId, field.id) : undefined;
25
+ const key = alias ?? String(field.id);
26
+ result[key] = alias ? { ...field, alias } : field;
27
+ }
28
+ return result;
29
+ }
30
+ /**
31
+ * Convert a databases array to a keyed object.
32
+ * Keys are table aliases (if in schema) or dbids.
33
+ */
34
+ function databasesArrayToMap(databases, schema) {
35
+ const result = {};
36
+ for (const db of databases) {
37
+ const alias = schema ? getTableAlias(schema, db.dbid) : undefined;
38
+ const key = alias ?? db.dbid;
39
+ result[key] = alias ? { ...db, alias } : db;
40
+ }
41
+ return result;
42
+ }
43
+ /**
44
+ * Convert a tables array to a keyed object.
45
+ * Keys are table aliases (if in schema) or table IDs.
46
+ */
47
+ function tablesArrayToMap(tables, schema) {
48
+ const result = {};
49
+ for (const table of tables) {
50
+ const alias = schema ? getTableAlias(schema, table.id) : undefined;
51
+ const key = alias ?? table.id;
52
+ result[key] = alias ? { ...table, alias } : table;
53
+ }
54
+ return result;
55
+ }
56
+ /**
57
+ * Transform a SchemaField to include extra alias properties
58
+ */
59
+ function transformSchemaFieldAliases(field, schema, tableId) {
60
+ const result = { ...field };
61
+ const alias = getFieldAlias(schema, tableId, field.id);
62
+ if (alias)
63
+ result.alias = alias;
64
+ if (field.summaryReferenceFid !== undefined) {
65
+ const refAlias = getFieldAlias(schema, tableId, field.summaryReferenceFid);
66
+ if (refAlias)
67
+ result.summaryReferenceFidAlias = refAlias;
68
+ }
69
+ if (field.summaryTargetFid !== undefined) {
70
+ const targetAlias = getFieldAlias(schema, tableId, field.summaryTargetFid);
71
+ if (targetAlias)
72
+ result.summaryTargetFidAlias = targetAlias;
73
+ }
74
+ return result;
75
+ }
76
+ /**
77
+ * Transform GetRecordInfoResult to key fields by alias.
78
+ * Access: result.fields.name.value (instead of result.fields[0].value)
79
+ */
80
+ export function transformGetRecordInfoResult(result, schema, tableId) {
81
+ return {
82
+ ...result,
83
+ fields: fieldsArrayToMap(result.fields, schema, tableId),
84
+ };
85
+ }
86
+ /**
87
+ * Transform GetSchemaResult to key fields and child tables by alias.
88
+ * Access: result.table.fields.name, result.table.childTables.tasks
89
+ */
90
+ export function transformGetSchemaResult(result, schema, tableId) {
91
+ const transformedTable = {
92
+ ...result.table,
93
+ fields: undefined,
94
+ childTables: undefined,
95
+ };
96
+ // Transform fields to keyed object with extra alias properties
97
+ if (result.table.fields) {
98
+ const fieldsMap = {};
99
+ for (const field of result.table.fields) {
100
+ const transformed = schema
101
+ ? transformSchemaFieldAliases(field, schema, tableId)
102
+ : field;
103
+ const alias = schema ? getFieldAlias(schema, tableId, field.id) : undefined;
104
+ const key = alias ?? String(field.id);
105
+ fieldsMap[key] = alias ? { ...transformed, alias } : transformed;
106
+ }
107
+ transformedTable.fields = fieldsMap;
108
+ }
109
+ // Transform child tables to keyed object
110
+ if (result.table.childTables) {
111
+ const childTablesMap = {};
112
+ for (const ct of result.table.childTables) {
113
+ const alias = schema ? getTableAlias(schema, ct.dbid) : undefined;
114
+ const key = alias ?? ct.dbid;
115
+ childTablesMap[key] = alias ? { ...ct, alias } : ct;
116
+ }
117
+ transformedTable.childTables = childTablesMap;
118
+ }
119
+ return {
120
+ ...result,
121
+ table: transformedTable,
122
+ };
123
+ }
124
+ /**
125
+ * Transform FieldAddChoicesResult to include field alias
126
+ */
127
+ export function transformFieldAddChoicesResult(result, schema, tableId) {
128
+ if (!schema)
129
+ return result;
130
+ const alias = getFieldAlias(schema, tableId, result.fieldId);
131
+ return alias ? { ...result, fieldAlias: alias } : result;
132
+ }
133
+ /**
134
+ * Transform FieldRemoveChoicesResult to include field alias
135
+ */
136
+ export function transformFieldRemoveChoicesResult(result, schema, tableId) {
137
+ if (!schema)
138
+ return result;
139
+ const alias = getFieldAlias(schema, tableId, result.fieldId);
140
+ return alias ? { ...result, fieldAlias: alias } : result;
141
+ }
142
+ /**
143
+ * Transform GrantedDBsResult to key databases by alias.
144
+ * Access: result.databases.projects.dbname
145
+ */
146
+ export function transformGrantedDBsResult(result, schema) {
147
+ return {
148
+ ...result,
149
+ databases: databasesArrayToMap(result.databases, schema),
150
+ };
151
+ }
152
+ /**
153
+ * Transform GrantedDBsForGroupResult to key databases by alias.
154
+ */
155
+ export function transformGrantedDBsForGroupResult(result, schema) {
156
+ return {
157
+ ...result,
158
+ databases: databasesArrayToMap(result.databases, schema),
159
+ };
160
+ }
161
+ /**
162
+ * Transform GetAppDTMInfoResult to key tables by alias.
163
+ * Access: result.tables.projects.lastModifiedTime
164
+ */
165
+ export function transformGetAppDTMInfoResult(result, schema) {
166
+ const appAlias = schema ? getTableAlias(schema, result.appId) : undefined;
167
+ return {
168
+ ...result,
169
+ appAlias,
170
+ tables: tablesArrayToMap(result.tables, schema),
171
+ };
172
+ }
173
+ /**
174
+ * Transform FindDBByNameResult to include table alias
175
+ */
176
+ export function transformFindDBByNameResult(result, schema) {
177
+ if (!schema)
178
+ return result;
179
+ const alias = getTableAlias(schema, result.dbid);
180
+ return alias ? { ...result, alias } : result;
181
+ }
182
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/xml/transform.ts"],"names":[],"mappings":"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"}