@dereekb/dbx-cli 13.11.14 → 13.11.15

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.
@@ -14,8 +14,8 @@ var SUPPORTED_VERBS = new Set([
14
14
  * callable leaf (CRUD or standalone). Best-effort: malformed configs return
15
15
  * fewer entries rather than throwing.
16
16
  *
17
- * @param source - in-memory source name + text pair to extract
18
- * @returns the CRUD extraction with group name, model keys, entries, and
17
+ * @param source - In-memory source name + text pair to extract.
18
+ * @returns The CRUD extraction with group name, model keys, entries, and
19
19
  * `*Functions` class name (when present).
20
20
  */ // eslint-disable-next-line sonarjs/cognitive-complexity
21
21
  function extractCrudEntries(source) {
@@ -33,17 +33,18 @@ function extractCrudEntries(source) {
33
33
  var functionsClassName = findFunctionsClassName(sourceFile);
34
34
  var typeDocsCache = new Map();
35
35
  var resolveTypeDocs = function resolveTypeDocs(typeName) {
36
- if (!typeName) {
37
- return undefined;
38
- }
39
- if (typeDocsCache.has(typeName)) {
40
- return typeDocsCache.get(typeName);
41
- }
42
- var docs = readTypeDocs(sourceFile, typeName);
43
- if (docs) {
44
- typeDocsCache.set(typeName, docs);
36
+ var result;
37
+ if (typeName) {
38
+ if (typeDocsCache.has(typeName)) {
39
+ result = typeDocsCache.get(typeName);
40
+ } else {
41
+ result = readTypeDocs(sourceFile, typeName);
42
+ if (result) {
43
+ typeDocsCache.set(typeName, result);
44
+ }
45
+ }
45
46
  }
46
- return docs;
47
+ return result;
47
48
  };
48
49
  if (crudConfigType) {
49
50
  var literal = crudConfigType.getTypeNode();
@@ -176,12 +177,14 @@ function extractCrudEntries(source) {
176
177
  };
177
178
  }
178
179
  function findTypeAliasByEnding(sourceFile, ending) {
180
+ var result;
179
181
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
180
182
  try {
181
183
  for(var _iterator = sourceFile.getTypeAliases()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
182
184
  var alias = _step.value;
183
185
  if (alias.getName().endsWith(ending) && alias.getTypeNode()) {
184
- return alias;
186
+ result = alias;
187
+ break;
185
188
  }
186
189
  }
187
190
  } catch (err) {
@@ -198,9 +201,10 @@ function findTypeAliasByEnding(sourceFile, ending) {
198
201
  }
199
202
  }
200
203
  }
201
- return undefined;
204
+ return result;
202
205
  }
203
206
  function findFunctionsClassName(sourceFile) {
207
+ var result;
204
208
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
205
209
  try {
206
210
  for(var _iterator = sourceFile.getClasses()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
@@ -210,7 +214,8 @@ function findFunctionsClassName(sourceFile) {
210
214
  }
211
215
  var name = cls.getName();
212
216
  if (name === null || name === void 0 ? void 0 : name.endsWith('Functions')) {
213
- return name;
217
+ result = name;
218
+ break;
214
219
  }
215
220
  }
216
221
  } catch (err) {
@@ -227,9 +232,10 @@ function findFunctionsClassName(sourceFile) {
227
232
  }
228
233
  }
229
234
  }
230
- return undefined;
235
+ return result;
231
236
  }
232
237
  function inferGroupName(sourceFile) {
238
+ var result;
233
239
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
234
240
  try {
235
241
  for(var _iterator = sourceFile.getTypeAliases()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
@@ -238,7 +244,8 @@ function inferGroupName(sourceFile) {
238
244
  if (name.endsWith('ModelCrudFunctionsConfig')) {
239
245
  var stem = name.slice(0, -'ModelCrudFunctionsConfig'.length);
240
246
  if (stem.length > 0) {
241
- return stem;
247
+ result = stem;
248
+ break;
242
249
  }
243
250
  }
244
251
  }
@@ -256,42 +263,46 @@ function inferGroupName(sourceFile) {
256
263
  }
257
264
  }
258
265
  }
259
- var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
260
- try {
261
- for(var _iterator1 = sourceFile.getTypeAliases()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
262
- var alias1 = _step1.value;
263
- var name1 = alias1.getName();
264
- if (name1.endsWith('FunctionTypeMap')) {
265
- var stem1 = name1.slice(0, -'FunctionTypeMap'.length);
266
- if (stem1.length > 0) {
267
- return stem1;
268
- }
269
- }
270
- }
271
- } catch (err) {
272
- _didIteratorError1 = true;
273
- _iteratorError1 = err;
274
- } finally{
266
+ if (result === undefined) {
267
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
275
268
  try {
276
- if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
277
- _iterator1.return();
269
+ for(var _iterator1 = sourceFile.getTypeAliases()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
270
+ var alias1 = _step1.value;
271
+ var name1 = alias1.getName();
272
+ if (name1.endsWith('FunctionTypeMap')) {
273
+ var stem1 = name1.slice(0, -'FunctionTypeMap'.length);
274
+ if (stem1.length > 0) {
275
+ result = stem1;
276
+ break;
277
+ }
278
+ }
278
279
  }
280
+ } catch (err) {
281
+ _didIteratorError1 = true;
282
+ _iteratorError1 = err;
279
283
  } finally{
280
- if (_didIteratorError1) {
281
- throw _iteratorError1;
284
+ try {
285
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
286
+ _iterator1.return();
287
+ }
288
+ } finally{
289
+ if (_didIteratorError1) {
290
+ throw _iteratorError1;
291
+ }
282
292
  }
283
293
  }
284
294
  }
285
- return undefined;
295
+ return result;
286
296
  }
287
297
  function isNullLiteralType(node) {
298
+ var result = false;
288
299
  if (tsMorph.Node.isLiteralTypeNode(node)) {
289
300
  var literal = node.getLiteral();
290
301
  if (tsMorph.Node.isNullLiteral(literal)) {
291
- return true;
302
+ result = true;
292
303
  }
293
304
  }
294
- return false;
305
+ return result;
295
306
  }
296
307
  function collectVerbEntries(input) {
297
308
  var _readTupleParamsResult;
@@ -358,39 +369,40 @@ function collectVerbEntries(input) {
358
369
  });
359
370
  }
360
371
  function readTupleParamsResult(node) {
361
- if (!tsMorph.Node.isTupleTypeNode(node)) {
362
- return undefined;
363
- }
364
- var elements = node.getElements();
365
- if (elements.length === 0) {
366
- return undefined;
372
+ var pair;
373
+ if (tsMorph.Node.isTupleTypeNode(node)) {
374
+ var elements = node.getElements();
375
+ if (elements.length > 0) {
376
+ var params = elements[0] ? typeNodeName(elements[0]) : undefined;
377
+ var result = elements[1] ? typeNodeName(elements[1]) : undefined;
378
+ pair = {
379
+ params: params,
380
+ result: result
381
+ };
382
+ }
367
383
  }
368
- var params = elements[0] ? typeNodeName(elements[0]) : undefined;
369
- var result = elements[1] ? typeNodeName(elements[1]) : undefined;
370
- return {
371
- params: params,
372
- result: result
373
- };
384
+ return pair;
374
385
  }
375
386
  function readBareParams(node) {
376
387
  var params = typeNodeName(node);
377
- if (!params) {
378
- return undefined;
379
- }
380
- return {
388
+ return params ? {
381
389
  params: params,
382
390
  result: undefined
383
- };
391
+ } : undefined;
384
392
  }
385
393
  function typeNodeName(node) {
394
+ var result;
386
395
  if (tsMorph.Node.isTypeReference(node)) {
387
- return node.getTypeName().getText();
396
+ result = node.getTypeName().getText();
397
+ } else {
398
+ // Fall back to the raw text for primitive / inline types like `boolean`.
399
+ var text = node.getText().trim();
400
+ result = text.length > 0 ? text : undefined;
388
401
  }
389
- // Fall back to the raw text for primitive / inline types like `boolean`.
390
- var text = node.getText().trim();
391
- return text.length > 0 ? text : undefined;
402
+ return result;
392
403
  }
393
404
  function readTypeDocs(sourceFile, typeName) {
405
+ var result;
394
406
  var interfaceDecl = sourceFile.getInterface(typeName);
395
407
  if (interfaceDecl) {
396
408
  var typeDescription = readJsDocSummary(interfaceDecl);
@@ -428,31 +440,36 @@ function readTypeDocs(sourceFile, typeName) {
428
440
  }
429
441
  }
430
442
  }
431
- if (!typeDescription && fields.length === 0) {
432
- return undefined;
443
+ if (typeDescription || fields.length > 0) {
444
+ result = {
445
+ typeDescription: typeDescription,
446
+ fields: fields.length > 0 ? fields : undefined
447
+ };
448
+ }
449
+ } else {
450
+ var typeAlias = sourceFile.getTypeAlias(typeName);
451
+ if (typeAlias) {
452
+ var typeDescription1 = readJsDocSummary(typeAlias);
453
+ if (typeDescription1) {
454
+ result = {
455
+ typeDescription: typeDescription1
456
+ };
457
+ }
433
458
  }
434
- return {
435
- typeDescription: typeDescription,
436
- fields: fields.length > 0 ? fields : undefined
437
- };
438
459
  }
439
- var typeAlias = sourceFile.getTypeAlias(typeName);
440
- if (typeAlias) {
441
- var typeDescription1 = readJsDocSummary(typeAlias);
442
- return typeDescription1 ? {
443
- typeDescription: typeDescription1
444
- } : undefined;
445
- }
446
- return undefined;
460
+ return result;
447
461
  }
448
462
  function readJsDocSummary(node) {
463
+ var result;
449
464
  var docs = node.getJsDocs();
450
- if (docs.length === 0) {
451
- return undefined;
465
+ if (docs.length > 0) {
466
+ var last = docs[docs.length - 1];
467
+ var description = last.getDescription().trim();
468
+ if (description.length > 0) {
469
+ result = description;
470
+ }
452
471
  }
453
- var last = docs[docs.length - 1];
454
- var description = last.getDescription().trim();
455
- return description.length > 0 ? description : undefined;
472
+ return result;
456
473
  }
457
474
 
458
475
  function _define_property(obj, key, value) {
@@ -518,8 +535,8 @@ var OBJECT_FIELD_KEY = 'objectField';
518
535
  * Best-effort: a malformed call shape leaves the corresponding entry out
519
536
  * rather than throwing.
520
537
  *
521
- * @param input - in-memory `{ name, text }` source pair.
522
- * @returns the per-file extraction. Aggregation across files happens in the
538
+ * @param input - In-memory `{ name, text }` source pair.
539
+ * @returns The per-file extraction. Aggregation across files happens in the
523
540
  * firebase-api-manifest orchestrator so cross-file converter consts can be
524
541
  * resolved against a global registry.
525
542
  */ function extractModelsFromSource(input) {
@@ -716,8 +733,8 @@ function buildInterface(decl) {
716
733
  * through utility-wrapped declarations like
717
734
  * `extends Partial<MaybeMap<Omit<Base, '…'>>>`.
718
735
  *
719
- * @param expr - the `ExpressionWithTypeArguments` produced by `getExtends()`
720
- * @returns the resolved interface name, or the original leftmost identifier when no inner reference is reachable
736
+ * @param expr - The `ExpressionWithTypeArguments` produced by `getExtends()`
737
+ * @returns The resolved interface name, or the original leftmost identifier when no inner reference is reachable.
721
738
  */ function resolveExtendsName(expr) {
722
739
  var head = expr.getExpression().getText();
723
740
  var result = head;
@@ -822,20 +839,25 @@ function readGenericInterfaceName(call) {
822
839
  function readConverterFields(call) {
823
840
  var fnName = call.getExpression().getText();
824
841
  var args = call.getArguments();
825
- if (args.length === 0) return undefined;
826
- var config = args[0];
827
- if (!tsMorph.Node.isObjectLiteralExpression(config)) return undefined;
828
- var fieldsLiteral;
829
- if (fnName === SNAPSHOT_FN) {
830
- fieldsLiteral = readObjectProperty(config, FIELDS_LITERAL_KEY);
831
- } else {
832
- var objectField = readPropertyValue(config, OBJECT_FIELD_KEY);
833
- if (objectField && tsMorph.Node.isObjectLiteralExpression(objectField)) {
834
- fieldsLiteral = readObjectProperty(objectField, FIELDS_LITERAL_KEY);
842
+ var result;
843
+ if (args.length > 0) {
844
+ var config = args[0];
845
+ if (tsMorph.Node.isObjectLiteralExpression(config)) {
846
+ var fieldsLiteral;
847
+ if (fnName === SNAPSHOT_FN) {
848
+ fieldsLiteral = readObjectProperty(config, FIELDS_LITERAL_KEY);
849
+ } else {
850
+ var objectField = readPropertyValue(config, OBJECT_FIELD_KEY);
851
+ if (objectField && tsMorph.Node.isObjectLiteralExpression(objectField)) {
852
+ fieldsLiteral = readObjectProperty(objectField, FIELDS_LITERAL_KEY);
853
+ }
854
+ }
855
+ if (fieldsLiteral) {
856
+ result = readFieldEntries(fieldsLiteral);
857
+ }
835
858
  }
836
859
  }
837
- if (!fieldsLiteral) return undefined;
838
- return readFieldEntries(fieldsLiteral);
860
+ return result;
839
861
  }
840
862
  function readFieldEntries(fields) {
841
863
  var out = [];
@@ -879,36 +901,41 @@ function readFieldEntries(fields) {
879
901
  return out;
880
902
  }
881
903
  function readNestedFromExpression(expr) {
882
- if (!tsMorph.Node.isCallExpression(expr)) return undefined;
883
- var fnName = expr.getExpression().getText();
884
- if (fnName !== SUB_OBJECT_FN && fnName !== OBJECT_ARRAY_FN) return undefined;
885
- var args = expr.getArguments();
886
- if (args.length === 0) return undefined;
887
- var config = args[0];
888
- if (!tsMorph.Node.isObjectLiteralExpression(config)) return undefined;
889
- var objectField = readPropertyValue(config, OBJECT_FIELD_KEY);
890
- if (!objectField) return undefined;
891
- var isArray = fnName === OBJECT_ARRAY_FN;
892
904
  var result;
893
- if (tsMorph.Node.isIdentifier(objectField)) {
894
- result = {
895
- ref: objectField.getText(),
896
- isArray: isArray
897
- };
898
- } else if (tsMorph.Node.isObjectLiteralExpression(objectField)) {
899
- var fieldsLiteral = readObjectProperty(objectField, FIELDS_LITERAL_KEY);
900
- if (fieldsLiteral) {
901
- var inlineFields = readFieldEntries(fieldsLiteral);
902
- result = {
903
- inline: {
904
- converterConst: undefined,
905
- factory: fnName,
906
- interfaceName: readGenericInterfaceName(expr),
907
- fields: inlineFields,
908
- line: expr.getStartLineNumber()
909
- },
910
- isArray: isArray
911
- };
905
+ if (tsMorph.Node.isCallExpression(expr)) {
906
+ var fnName = expr.getExpression().getText();
907
+ if (fnName === SUB_OBJECT_FN || fnName === OBJECT_ARRAY_FN) {
908
+ var args = expr.getArguments();
909
+ if (args.length > 0) {
910
+ var config = args[0];
911
+ if (tsMorph.Node.isObjectLiteralExpression(config)) {
912
+ var objectField = readPropertyValue(config, OBJECT_FIELD_KEY);
913
+ if (objectField) {
914
+ var isArray = fnName === OBJECT_ARRAY_FN;
915
+ if (tsMorph.Node.isIdentifier(objectField)) {
916
+ result = {
917
+ ref: objectField.getText(),
918
+ isArray: isArray
919
+ };
920
+ } else if (tsMorph.Node.isObjectLiteralExpression(objectField)) {
921
+ var fieldsLiteral = readObjectProperty(objectField, FIELDS_LITERAL_KEY);
922
+ if (fieldsLiteral) {
923
+ var inlineFields = readFieldEntries(fieldsLiteral);
924
+ result = {
925
+ inline: {
926
+ converterConst: undefined,
927
+ factory: fnName,
928
+ interfaceName: readGenericInterfaceName(expr),
929
+ fields: inlineFields,
930
+ line: expr.getStartLineNumber()
931
+ },
932
+ isArray: isArray
933
+ };
934
+ }
935
+ }
936
+ }
937
+ }
938
+ }
912
939
  }
913
940
  }
914
941
  return result;