@milaboratories/pl-client 3.14.7 → 3.16.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.
Files changed (114) hide show
  1. package/dist/core/PromiseTracker.d.ts +1 -2
  2. package/dist/core/PromiseTracker.d.ts.map +1 -1
  3. package/dist/core/abstract_stream.d.ts +2 -3
  4. package/dist/core/abstract_stream.d.ts.map +1 -1
  5. package/dist/core/auth.d.ts +2 -4
  6. package/dist/core/auth.d.ts.map +1 -1
  7. package/dist/core/cache.d.ts +1 -3
  8. package/dist/core/cache.d.ts.map +1 -1
  9. package/dist/core/capabilities.d.ts +2 -3
  10. package/dist/core/capabilities.d.ts.map +1 -1
  11. package/dist/core/client.cjs +7 -0
  12. package/dist/core/client.cjs.map +1 -1
  13. package/dist/core/client.d.ts +8 -5
  14. package/dist/core/client.d.ts.map +1 -1
  15. package/dist/core/client.js +7 -0
  16. package/dist/core/client.js.map +1 -1
  17. package/dist/core/config.d.ts +29 -31
  18. package/dist/core/config.d.ts.map +1 -1
  19. package/dist/core/default_client.d.ts +2 -4
  20. package/dist/core/default_client.d.ts.map +1 -1
  21. package/dist/core/driver.d.ts +4 -6
  22. package/dist/core/driver.d.ts.map +1 -1
  23. package/dist/core/errors.d.ts +20 -22
  24. package/dist/core/errors.d.ts.map +1 -1
  25. package/dist/core/final.d.ts +4 -5
  26. package/dist/core/final.d.ts.map +1 -1
  27. package/dist/core/ll_client.cjs +45 -18
  28. package/dist/core/ll_client.cjs.map +1 -1
  29. package/dist/core/ll_client.d.ts +21 -10
  30. package/dist/core/ll_client.d.ts.map +1 -1
  31. package/dist/core/ll_client.js +45 -18
  32. package/dist/core/ll_client.js.map +1 -1
  33. package/dist/core/ll_transaction.d.ts +4 -6
  34. package/dist/core/ll_transaction.d.ts.map +1 -1
  35. package/dist/core/stat.d.ts +2 -3
  36. package/dist/core/stat.d.ts.map +1 -1
  37. package/dist/core/transaction.cjs +2 -1
  38. package/dist/core/transaction.cjs.map +1 -1
  39. package/dist/core/transaction.d.ts +30 -32
  40. package/dist/core/transaction.d.ts.map +1 -1
  41. package/dist/core/transaction.js +2 -1
  42. package/dist/core/transaction.js.map +1 -1
  43. package/dist/core/tree_filter.d.ts +14 -10
  44. package/dist/core/tree_filter.d.ts.map +1 -1
  45. package/dist/core/types.d.ts +54 -55
  46. package/dist/core/types.d.ts.map +1 -1
  47. package/dist/core/unauth_client.cjs +79 -32
  48. package/dist/core/unauth_client.cjs.map +1 -1
  49. package/dist/core/unauth_client.d.ts +53 -20
  50. package/dist/core/unauth_client.d.ts.map +1 -1
  51. package/dist/core/unauth_client.js +79 -32
  52. package/dist/core/unauth_client.js.map +1 -1
  53. package/dist/core/user_resources.cjs +23 -0
  54. package/dist/core/user_resources.cjs.map +1 -1
  55. package/dist/core/user_resources.d.ts +33 -7
  56. package/dist/core/user_resources.d.ts.map +1 -1
  57. package/dist/core/user_resources.js +23 -0
  58. package/dist/core/user_resources.js.map +1 -1
  59. package/dist/core/wire.d.ts +5 -7
  60. package/dist/core/wire.d.ts.map +1 -1
  61. package/dist/helpers/pl.d.ts +32 -34
  62. package/dist/helpers/pl.d.ts.map +1 -1
  63. package/dist/helpers/poll.d.ts +8 -9
  64. package/dist/helpers/poll.d.ts.map +1 -1
  65. package/dist/helpers/tx_helpers.d.ts +2 -4
  66. package/dist/helpers/tx_helpers.d.ts.map +1 -1
  67. package/dist/index.d.ts +3 -3
  68. package/dist/proto-grpc/github.com/googleapis/googleapis/google/rpc/status.d.ts +2 -4
  69. package/dist/proto-grpc/github.com/googleapis/googleapis/google/rpc/status.d.ts.map +1 -1
  70. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api.cjs +310 -15
  71. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api.cjs.map +1 -1
  72. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api.client.cjs +19 -3
  73. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api.client.cjs.map +1 -1
  74. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api.client.d.ts +29 -5
  75. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api.client.d.ts.map +1 -1
  76. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api.client.js +19 -3
  77. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api.client.js.map +1 -1
  78. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api.d.ts +2336 -429
  79. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api.d.ts.map +1 -1
  80. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api.js +309 -16
  81. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api.js.map +1 -1
  82. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api_types.d.ts +51 -30
  83. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api_types.d.ts.map +1 -1
  84. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/base_types.d.ts +7 -9
  85. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/base_types.d.ts.map +1 -1
  86. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/resource_types.d.ts +6 -8
  87. package/dist/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/resource_types.d.ts.map +1 -1
  88. package/dist/proto-grpc/google/protobuf/any.d.ts +2 -4
  89. package/dist/proto-grpc/google/protobuf/any.d.ts.map +1 -1
  90. package/dist/proto-grpc/google/protobuf/duration.d.ts +2 -4
  91. package/dist/proto-grpc/google/protobuf/duration.d.ts.map +1 -1
  92. package/dist/proto-grpc/google/protobuf/timestamp.d.ts +2 -4
  93. package/dist/proto-grpc/google/protobuf/timestamp.d.ts.map +1 -1
  94. package/dist/proto-grpc/google/rpc/code.d.ts +1 -2
  95. package/dist/proto-grpc/google/rpc/code.d.ts.map +1 -1
  96. package/dist/proto-rest/index.d.ts +6 -8
  97. package/dist/proto-rest/index.d.ts.map +1 -1
  98. package/dist/proto-rest/plapi.d.ts +248 -123
  99. package/dist/proto-rest/plapi.d.ts.map +1 -1
  100. package/dist/test/tcp-proxy.d.ts +3 -5
  101. package/dist/test/tcp-proxy.d.ts.map +1 -1
  102. package/dist/test/test_config.d.ts +13 -14
  103. package/dist/test/test_config.d.ts.map +1 -1
  104. package/package.json +6 -6
  105. package/src/core/client.ts +9 -0
  106. package/src/core/ll_client.ts +40 -13
  107. package/src/core/transaction.ts +2 -0
  108. package/src/core/unauth_client.test.ts +69 -1
  109. package/src/core/unauth_client.ts +108 -34
  110. package/src/core/unauth_client_branch.test.ts +416 -5
  111. package/src/core/user_resources.ts +39 -0
  112. package/src/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api.client.ts +34 -3
  113. package/src/proto-grpc/github.com/milaboratory/pl/plapi/plapiproto/api.ts +431 -15
  114. package/src/proto-rest/plapi.ts +8 -2
@@ -1 +1 @@
1
- {"version":3,"file":"plapi.d.ts","names":[],"sources":["../../src/proto-rest/plapi.ts"],"mappings":"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"}
1
+ {"version":3,"file":"plapi.d.ts","names":[],"sources":["../../src/proto-rest/plapi.ts"],"mappings":";;;;;iBAKiB;EACf;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;;;;;;IAMA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;;;;;;IAMA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;;IAGF,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;;;;;;IAMA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;;;;;;;IAOA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;;;;;;IAMA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN,QAAQ;IACR;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN,QAAQ;IACR;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;;IAEA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;;;;;;IAMA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;;;;;;;;;;;;;;;;;IAiBA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;IACA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;;IAGF,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;;IAGF,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;;IAEA,MAAM;IACN;IACA;IACA;IACA;IACA;;EAEF;IACE;MACE;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C;IACvC;MACE;;IAEF,qBAAqB;;EAEvB;EACA;EACA;EACA;EACA;;iBAGe;EACf;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;IACA;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB;;;;;EAK5B;IACE;MACE;MACA;MACA;MACA;;IAEF;MACE;QACE,oBAAoB;;;IAGxB;;MAEE;QACE;WACG;;QAEH;UACE,oBAAoB;;;;MAIxB;QACE;WACG;;QAEH;UACE,oBAAoB"}
@@ -1,13 +1,12 @@
1
1
  import * as net from "node:net";
2
-
3
2
  //#region src/test/tcp-proxy.d.ts
4
- type TcpProxyOptions = {
3
+ export type TcpProxyOptions = {
5
4
  port?: number;
6
5
  targetPort: number;
7
6
  latency: number;
8
7
  verbose?: boolean;
9
8
  };
10
- declare function startTcpProxy(options: TcpProxyOptions): Promise<{
9
+ export declare function startTcpProxy(options: TcpProxyOptions): Promise<{
11
10
  server: net.Server;
12
11
  readonly port: number;
13
12
  setLatency: (latency: number) => void;
@@ -15,7 +14,6 @@ declare function startTcpProxy(options: TcpProxyOptions): Promise<{
15
14
  disconnectAll: (delayMs?: number | undefined) => Promise<void>;
16
15
  close: () => Promise<void>;
17
16
  }>;
18
- type TestTcpProxy = Awaited<ReturnType<typeof startTcpProxy>>;
17
+ export type TestTcpProxy = Awaited<ReturnType<typeof startTcpProxy>>;
19
18
  //#endregion
20
- export { TcpProxyOptions, TestTcpProxy, startTcpProxy };
21
19
  //# sourceMappingURL=tcp-proxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tcp-proxy.d.ts","names":[],"sources":["../../src/test/tcp-proxy.ts"],"mappings":";;;KAOY,eAAA;EACV,IAAA;EACA,UAAA;EACA,OAAA;EACA,OAAA;AAAA;AAAA,iBAGoB,aAAA,CAAc,OAAA,EAAS,eAAA,GAAe,OAAA;;;;;mDAiBF,OAAA;;;KA+F9C,YAAA,GAAe,OAAA,CAAQ,UAAA,QAAkB,aAAA"}
1
+ {"version":3,"file":"tcp-proxy.d.ts","names":[],"sources":["../../src/test/tcp-proxy.ts"],"mappings":";;YAOY;EACV;EACA;EACA;EACA;;wBAGoB,cAAc,SAAS,kBAAe;;;;;mDAiBF;;;YA+F9C,eAAe,QAAQ,kBAAkB"}
@@ -2,41 +2,40 @@ import { AuthOps, PlClientConfig } from "../core/config.js";
2
2
  import { LLPlClient } from "../core/ll_client.js";
3
3
  import { PlClient } from "../core/client.js";
4
4
  import { TestTcpProxy, startTcpProxy } from "./tcp-proxy.js";
5
-
6
- //#region src/test/test_config.d.ts
7
5
  declare namespace test_config_d_exports {
8
6
  export { TEST_REQUEST_TIMEOUT, TestConfig, TestTcpProxy, WithTempRootOptions, getTestClient, getTestClientConf, getTestConfig, getTestLLClient, plAddressToTestConfig, withTempRoot };
9
7
  }
10
- interface TestConfig {
8
+ export interface TestConfig {
11
9
  address: string;
12
10
  test_proxy?: string;
13
11
  test_user?: string;
14
12
  test_password?: string;
15
13
  }
16
- declare function getTestConfig(): TestConfig;
14
+ export declare function getTestConfig(): TestConfig;
17
15
  /** Default request timeout for tests (ms) */
18
- declare const TEST_REQUEST_TIMEOUT = 500;
16
+ export declare const TEST_REQUEST_TIMEOUT = 500;
19
17
  /** Returns PlClientConfig with reduced timeout for tests */
20
- declare function plAddressToTestConfig(address: string): PlClientConfig;
21
- declare function getTestClientConf(): Promise<{
18
+ export declare function plAddressToTestConfig(address: string): PlClientConfig;
19
+ export declare function getTestClientConf(): Promise<{
22
20
  conf: PlClientConfig;
23
21
  auth: AuthOps;
24
22
  }>;
25
- declare function getTestLLClient(confOverrides?: Partial<PlClientConfig>): Promise<LLPlClient>;
26
- declare function getTestClient(alternativeRoot?: string, confOverrides?: Partial<PlClientConfig>): Promise<PlClient>;
27
- type WithTempRootOptions = {
23
+ export declare function getTestLLClient(confOverrides?: Partial<PlClientConfig>): Promise<LLPlClient>;
24
+ export declare function getTestClient(alternativeRoot?: string, confOverrides?: Partial<PlClientConfig>): Promise<PlClient>;
25
+ export type WithTempRootOptions = {
28
26
  /** If true and PL_ADDRESS is http://localhost or http://127.0.0.1:<port>,
29
27
  * a TCP proxy will be started and PL client will connect through it. */
30
- viaTcpProxy: true; /** Artificial latency for proxy (ms). Default 0 */
28
+ viaTcpProxy: true;
29
+ /** Artificial latency for proxy (ms). Default 0 */
31
30
  proxyLatencyMs?: number;
32
31
  } | {
33
32
  viaTcpProxy?: undefined;
34
33
  };
35
- declare function withTempRoot<T>(body: (pl: PlClient) => Promise<T>): Promise<T | void>;
36
- declare function withTempRoot<T>(body: (pl: PlClient, proxy: Awaited<ReturnType<typeof startTcpProxy>>) => Promise<T>, options: {
34
+ export declare function withTempRoot<T>(body: (pl: PlClient) => Promise<T>): Promise<T | void>;
35
+ export declare function withTempRoot<T>(body: (pl: PlClient, proxy: Awaited<ReturnType<typeof startTcpProxy>>) => Promise<T>, options: {
37
36
  viaTcpProxy: true;
38
37
  proxyLatencyMs?: number;
39
38
  }): Promise<T>;
40
39
  //#endregion
41
- export { TEST_REQUEST_TIMEOUT, TestConfig, type TestTcpProxy, WithTempRootOptions, getTestClient, getTestClientConf, getTestConfig, getTestLLClient, plAddressToTestConfig, test_config_d_exports, withTempRoot };
40
+ export { type TestTcpProxy, test_config_d_exports };
42
41
  //# sourceMappingURL=test_config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test_config.d.ts","names":[],"sources":["../../src/test/test_config.ts"],"mappings":";;;;;;;;;UAgBiB,UAAA;EACf,OAAA;EACA,UAAA;EACA,SAAA;EACA,aAAA;AAAA;AAAA,iBAac,aAAA,IAAiB,UAAU;;cAsB9B,oBAAA;;iBAGG,qBAAA,CAAsB,OAAA,WAAkB,cAAc;AAAA,iBAkDhD,iBAAA,IAAqB,OAAA;EAAU,IAAA,EAAM,cAAA;EAAgB,IAAA,EAAM,OAAA;AAAA;AAAA,iBAmE3D,eAAA,CAAgB,aAAA,GAAe,OAAA,CAAQ,cAAA,IAAoB,OAAA,CAAA,UAAA;AAAA,iBAK3D,aAAA,CACpB,eAAA,WACA,aAAA,GAAe,OAAA,CAAQ,cAAA,IAAoB,OAAA,CAAA,QAAA;AAAA,KAQjC,mBAAA;EA5KV;;EAgLI,WAAA,QA9KS;EAgLT,cAAA;AAAA;EAGA,WAAA;AAAA;AAAA,iBAGgB,YAAA,IAAgB,IAAA,GAAO,EAAA,EAAI,QAAA,KAAa,OAAA,CAAQ,CAAA,IAAK,OAAA,CAAQ,CAAA;AAAA,iBAE7D,YAAA,IACpB,IAAA,GAAO,EAAA,EAAI,QAAA,EAAU,KAAA,EAAO,OAAA,CAAQ,UAAA,QAAkB,aAAA,OAAoB,OAAA,CAAQ,CAAA,GAClF,OAAA;EACE,WAAA;EACA,cAAA;AAAA,IAED,OAAA,CAAQ,CAAA"}
1
+ {"version":3,"file":"test_config.d.ts","names":[],"sources":["../../src/test/test_config.ts"],"mappings":";;;;;;;iBAgBiB;EACf;EACA;EACA;EACA;;wBAac,iBAAiB;;qBAsBpB;;wBAGG,sBAAsB,kBAAkB;wBAkDlC,qBAAqB;EAAU,MAAM;EAAgB,MAAM;;wBAmE3D,gBAAgB,gBAAe,QAAQ,kBAAoB,QAAA;wBAK3D,cACpB,0BACA,gBAAe,QAAQ,kBAAoB,QAAA;YAQjC;;;EAIN;;EAEA;;EAGA;;wBAGgB,aAAa,GAAG,OAAO,IAAI,aAAa,QAAQ,KAAK,QAAQ;wBAE7D,aAAa,GACjC,OAAO,IAAI,UAAU,OAAO,QAAQ,kBAAkB,oBAAoB,QAAQ,IAClF;EACE;EACA;IAED,QAAQ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/pl-client",
3
- "version": "3.14.7",
3
+ "version": "3.16.0",
4
4
  "description": "New TS/JS client for Platform API",
5
5
  "files": [
6
6
  "./dist/**/*",
@@ -38,12 +38,12 @@
38
38
  "@protobuf-ts/plugin": "2.11.1",
39
39
  "@types/node": "~24.5.2",
40
40
  "@vitest/coverage-istanbul": "^4.1.3",
41
- "openapi-typescript": "^7.10.0",
42
- "typescript": "~5.9.3",
41
+ "openapi-typescript": "^7.13.0",
42
+ "typescript": "7.0.2",
43
43
  "vitest": "^4.1.3",
44
- "@milaboratories/build-configs": "2.0.0",
45
- "@milaboratories/ts-configs": "1.4.0",
46
- "@milaboratories/ts-builder": "1.7.0"
44
+ "@milaboratories/build-configs": "2.0.1",
45
+ "@milaboratories/ts-builder": "1.7.2",
46
+ "@milaboratories/ts-configs": "1.4.0"
47
47
  },
48
48
  "engines": {
49
49
  "node": ">=22.19.0"
@@ -33,6 +33,7 @@ import type { WireConnection } from "./wire";
33
33
  import { advisoryLock } from "./advisory_locks";
34
34
  import { plAddressToConfig } from "./config";
35
35
  import { UserResources } from "./user_resources";
36
+ import type { UserDeletionReport } from "./user_resources";
36
37
  import type { BackendCapability } from "./capabilities";
37
38
 
38
39
  export type TxOps = PlCallOps & {
@@ -207,6 +208,14 @@ export class PlClient {
207
208
  return await this.ll.listUsers();
208
209
  }
209
210
 
211
+ /**
212
+ * Deletes a user account and its root resource — with the root, everything still attached
213
+ * under it. Destructive and irreversible; see {@link UserResources.deleteUser}.
214
+ */
215
+ public async deleteUser(login: string): Promise<UserDeletionReport> {
216
+ return await this.userResources.deleteUser(login);
217
+ }
218
+
210
219
  /**
211
220
  * Returns the user root SignedResourceId via ListUserResources.
212
221
  * @param opts.login - target user login; omit for the authenticated user.
@@ -645,15 +645,19 @@ export class LLPlClient implements WireClientProviderFactory {
645
645
  }
646
646
  }
647
647
 
648
- /** Login via username/password. Returns a fresh JWT. Backend creates a new session per call. */
648
+ /** Login via username/password. Returns a fresh JWT. Backend creates a new session per call.
649
+ * `opts.idP` names the advertised login method to route to; omitted, the backend keeps its
650
+ * current first-match behaviour. */
649
651
  public async loginBasic(
650
652
  user: string,
651
653
  password: string,
652
- opts: { ttlSeconds?: bigint; role?: AuthAPI_Role } = {},
654
+ opts: { ttlSeconds?: bigint; role?: AuthAPI_Role; idP?: string } = {},
653
655
  ): Promise<string> {
654
656
  const cl = this.clientProvider.get();
655
657
  const ttl = opts.ttlSeconds ?? BigInt(this.conf.authTTLSeconds);
656
658
  const role = opts.role ?? AuthAPI_Role.UNSPECIFIED;
659
+ const basic =
660
+ opts.idP === undefined ? { login: user, password } : { login: user, password, idp: opts.idP };
657
661
 
658
662
  if (cl instanceof GrpcPlApiClient) {
659
663
  return (
@@ -661,7 +665,7 @@ export class LLPlClient implements WireClientProviderFactory {
661
665
  {
662
666
  credentials: {
663
667
  oneofKind: "basic",
664
- basic: { login: user, password },
668
+ basic,
665
669
  },
666
670
  expiration: { seconds: ttl, nanos: 0 },
667
671
  requestedRole: role,
@@ -674,7 +678,7 @@ export class LLPlClient implements WireClientProviderFactory {
674
678
  // openapi-typescript generated all body fields as required, but Login.Request
675
679
  // has a credentials oneof — only one of `basic`/`token` is sent. Cast around it.
676
680
  body: {
677
- basic: { login: user, password },
681
+ basic,
678
682
  expiration: `${ttl}s`,
679
683
  requestedRole: role,
680
684
  } as any,
@@ -723,16 +727,19 @@ export class LLPlClient implements WireClientProviderFactory {
723
727
  }
724
728
 
725
729
  /** Login via SSO: forwards the raw IdP /token JSON body to the backend.
726
- * Backend validates signature + nonce + audience and mints a Platforma JWT. */
727
- public async loginSSO(tokenResponse: Uint8Array): Promise<string> {
730
+ * Backend validates signature + nonce + audience and mints a Platforma JWT. `idP` names the
731
+ * advertised login method to route to; omitted, the backend keeps its current first-match
732
+ * behaviour. */
733
+ public async loginSSO(tokenResponse: Uint8Array, idP?: string): Promise<string> {
728
734
  const cl = this.clientProvider.get();
735
+ const sso = idP === undefined ? { tokenResponse } : { tokenResponse, idp: idP };
729
736
  if (cl instanceof GrpcPlApiClient) {
730
737
  return (
731
738
  await cl.login(
732
739
  {
733
740
  credentials: {
734
741
  oneofKind: "sso",
735
- sso: { tokenResponse },
742
+ sso,
736
743
  },
737
744
  },
738
745
  { timeout: DEFAULT_LOGIN_TIMEOUT },
@@ -741,7 +748,7 @@ export class LLPlClient implements WireClientProviderFactory {
741
748
  } else {
742
749
  const resp = cl.POST("/v1/auth/login", {
743
750
  body: {
744
- sso: { tokenResponse: Buffer.from(tokenResponse).toString("base64") },
751
+ sso: { ...sso, tokenResponse: Buffer.from(tokenResponse).toString("base64") },
745
752
  } as any,
746
753
  });
747
754
  return notEmpty((await resp).data, "REST: empty response for SSO login request").token;
@@ -750,11 +757,16 @@ export class LLPlClient implements WireClientProviderFactory {
750
757
 
751
758
  /** Request a one-time PKCE nonce + its expiry from the backend. The desktop is
752
759
  * expected to place the nonce verbatim into the OIDC auth-request before
753
- * redirecting to the IdP; the backend enforces the expiry on {@link loginSSO}. */
754
- public async beginSSOLogin(): Promise<{ nonce: string; expiresAt: Date; clientSecret?: string }> {
760
+ * redirecting to the IdP; the backend enforces the expiry on {@link loginSSO}. `idP` names the
761
+ * advertised login method to route to; omitted, the backend keeps its current first-match
762
+ * behaviour. */
763
+ public async beginSSOLogin(
764
+ idP?: string,
765
+ ): Promise<{ nonce: string; expiresAt: Date; clientSecret?: string }> {
755
766
  const cl = this.clientProvider.get();
767
+ const request = idP === undefined ? {} : { idp: idP };
756
768
  if (cl instanceof GrpcPlApiClient) {
757
- const resp = (await cl.beginSSOLogin({}).response).flow;
769
+ const resp = (await cl.beginSSOLogin(request).response).flow;
758
770
  if (resp.oneofKind !== "publicPkce") {
759
771
  throw new Error(`beginSSOLogin: unsupported flow ${resp.oneofKind}`);
760
772
  }
@@ -766,7 +778,7 @@ export class LLPlClient implements WireClientProviderFactory {
766
778
  };
767
779
  } else {
768
780
  const wsResponse = notEmpty(
769
- (await cl.POST("/v1/auth/sso/begin-login", { body: {} })).data,
781
+ (await cl.POST("/v1/auth/sso/begin-login", { body: request as any })).data,
770
782
  "REST: empty response for beginSSOLogin request",
771
783
  );
772
784
  const pkce = notEmpty(wsResponse.publicPkce, "REST: missing publicPkce in beginSSOLogin");
@@ -955,7 +967,7 @@ export class LLPlClient implements WireClientProviderFactory {
955
967
  // while protobuf-ts models it as a discriminated union. Reshape per item.
956
968
  resp = {
957
969
  methods: (wsResponse.methods ?? []).map((m): grpcTypes.AuthAPI_ListMethods_MethodInfo => {
958
- const base = { id: m.id, description: m.description };
970
+ const base = { id: m.id, description: m.description, title: m.title };
959
971
  if (m.basic !== undefined) {
960
972
  return { ...base, method: { oneofKind: "basic", basic: m.basic } };
961
973
  }
@@ -1077,6 +1089,21 @@ export class LLPlClient implements WireClientProviderFactory {
1077
1089
  return (await cl.listUsers({})).response.users;
1078
1090
  }
1079
1091
 
1092
+ /** Deletes a user account: the record, its identity-index entries (login, email and any
1093
+ * alternative of either), its grants, and its root resource with everything still attached
1094
+ * under it. Admin/controller credentials only, and irreversible — re-attach anything worth
1095
+ * keeping to another user's root first.
1096
+ * gRPC-only (unary, no REST binding), like {@link listUsers}. */
1097
+ public async deleteUser(login: string): Promise<grpcTypes.AuthAPI_DeleteUser_Response> {
1098
+ const cl = this.clientProvider.get();
1099
+
1100
+ if (!(cl instanceof GrpcPlApiClient)) {
1101
+ throw new Error("DeleteUser requires gRPC wire protocol; REST is not supported");
1102
+ }
1103
+
1104
+ return (await cl.deleteUser({ login })).response;
1105
+ }
1106
+
1080
1107
  public async txSync(txId: bigint): Promise<void> {
1081
1108
  const cl = this.clientProvider.get();
1082
1109
  if (cl instanceof GrpcPlApiClient) {
@@ -1238,6 +1238,8 @@ export class PlTransaction {
1238
1238
  includeKv: opts?.includeKv ?? false,
1239
1239
  maxDepth: opts?.maxDepth,
1240
1240
  showSoftDeletes: false,
1241
+ // Empty token requests the full tree — this call has no continuation to resume.
1242
+ changedSinceToken: new Uint8Array(0),
1241
1243
  },
1242
1244
  });
1243
1245
 
@@ -1,6 +1,6 @@
1
1
  import { UnauthenticatedPlClient } from "./unauth_client";
2
2
  import { getTestConfig, plAddressToTestConfig } from "../test/test_config";
3
- import { UnauthenticatedError } from "./errors";
3
+ import { UnauthenticatedError, isUnimplementedError } from "./errors";
4
4
  import { test, expect } from "vitest";
5
5
 
6
6
  test("ping test", async () => {
@@ -30,3 +30,71 @@ test("wrong login", async () => {
30
30
  UnauthenticatedError,
31
31
  );
32
32
  });
33
+
34
+ // --- multi-method login ---
35
+ //
36
+ // These cases assume the backend is configured with (at least) two htpasswd
37
+ // login methods whose config `name` values differ but which both accept the
38
+ // same PL_TEST_USER/PL_TEST_PASSWORD credentials — the id
39
+ // is the only thing distinguishing them.
40
+
41
+ /** Runs every multi-method case against one client, gRPC or REST alike. */
42
+ async function runMultiMethodCases(address: string) {
43
+ const testConfig = getTestConfig();
44
+ if (testConfig.test_user === undefined || testConfig.test_password === undefined) {
45
+ console.log("skipped");
46
+ return;
47
+ }
48
+ const client = await UnauthenticatedPlClient.build(plAddressToTestConfig(address));
49
+
50
+ const basicMethods = client.loginMethods().filter((m) => m.kind === "basic");
51
+ expect(basicMethods.length).toBeGreaterThanOrEqual(2);
52
+ // The driver's fixed description is the same string on every htpasswd method — only
53
+ // the id tells the two apart.
54
+ expect(basicMethods[0].description).toBe(basicMethods[1].description);
55
+ expect(basicMethods[0].id).not.toBe(basicMethods[1].id);
56
+
57
+ expect(client.supportedAuthSchemes.basic).toBe(true);
58
+
59
+ const secondMethod = basicMethods[1];
60
+ const picked = await client.login(
61
+ testConfig.test_user,
62
+ testConfig.test_password,
63
+ secondMethod.id,
64
+ );
65
+ expect(picked.jwtToken).not.toBe("");
66
+
67
+ const unpicked = await client.login(testConfig.test_user, testConfig.test_password);
68
+ expect(unpicked.jwtToken).not.toBe("");
69
+
70
+ await expect(
71
+ client.login(testConfig.test_user, testConfig.test_password, "no-such-method"),
72
+ ).rejects.toThrow();
73
+ }
74
+
75
+ // Skipped: this environment's backend cannot be configured with two htpasswd login methods.
76
+ test.skip("loginMethods and login address two identically-described htpasswd methods by id (gRPC)", async () => {
77
+ const testConfig = getTestConfig();
78
+ await runMultiMethodCases(testConfig.address);
79
+ });
80
+
81
+ // Skipped: this environment's backend cannot be configured with two htpasswd login methods.
82
+ test.skip("loginMethods and login address two identically-described htpasswd methods by id (REST)", async () => {
83
+ const testConfig = getTestConfig();
84
+ const separator = testConfig.address.includes("?") ? "&" : "?";
85
+ await runMultiMethodCases(`${testConfig.address}${separator}wire-protocol=rest`);
86
+ });
87
+
88
+ test("beginSSOLogin rejects an id no configured method carries, and reports no SSO configured when unpicked", async () => {
89
+ const testConfig = getTestConfig();
90
+ const client = await UnauthenticatedPlClient.build(plAddressToTestConfig(testConfig.address));
91
+
92
+ await expect(client.beginSSOLogin("no-such-method")).rejects.toThrow();
93
+
94
+ try {
95
+ await client.beginSSOLogin();
96
+ throw new Error("expected beginSSOLogin() to reject on a server with no SSO method configured");
97
+ } catch (e) {
98
+ expect(isUnimplementedError(e)).toBe(true);
99
+ }
100
+ });
@@ -18,6 +18,7 @@ export type SSOFlowType = "public_pkce";
18
18
  * may surface (`userIdClaim`, `groupsClaim`). */
19
19
  export type SSOAuthMethod = {
20
20
  id: string;
21
+ title: string;
21
22
  description: string;
22
23
  issuer: string;
23
24
  clientId: string;
@@ -48,6 +49,14 @@ export type SSOLoginAttempt = {
48
49
  clientSecret?: string;
49
50
  };
50
51
 
52
+ /** One login method the backend advertises, of any kind. Every advertised method keeps its own
53
+ * `id`, `title`, `description` and kind. Two same-kind methods, such as two LDAP directories, are
54
+ * two entries a caller can name apart and never collapsed into one. See {@link UnauthenticatedPlClient.loginMethods}. */
55
+ export type LoginMethod =
56
+ | { kind: "basic"; id: string; title: string; description: string }
57
+ | { kind: "token"; id: string; title: string; description: string }
58
+ | ({ kind: "sso" } & SSOAuthMethod);
59
+
51
60
  /** Primarily used for initial authentication (login) */
52
61
  export class UnauthenticatedPlClient {
53
62
  public readonly ll: LLPlClient;
@@ -82,7 +91,9 @@ export class UnauthenticatedPlClient {
82
91
 
83
92
  /** Classifies the advertised authentication methods by credential scheme.
84
93
  * On legacy backends (no auth:v2) the typed oneof is empty; callers fall through to {@link login}
85
- * which uses the legacy GetJWTToken path. SSO is surfaced via {@link ssoConfig}, not here. */
94
+ * which uses the legacy GetJWTToken path.
95
+ * @deprecated collapses every basic-kind method into one boolean; use {@link loginMethods} to
96
+ * see each advertised method's own id. `login()` still reads this to choose the credential path. */
86
97
  public get supportedAuthSchemes(): { basic: boolean; token: boolean } {
87
98
  const result = { basic: false, token: false };
88
99
  for (const m of this.ll.authMethodsSync.methods) {
@@ -92,8 +103,37 @@ export class UnauthenticatedPlClient {
92
103
  return result;
93
104
  }
94
105
 
106
+ /** Builds the {@link SSOAuthMethod} projection an advertised SSO entry carries, or `undefined`
107
+ * for a flow no client here can drive. Shared by {@link ssoConfig} and {@link loginMethods},
108
+ * which each apply their own rule for an unsupported flow. */
109
+ private toSSOAuthMethod(
110
+ method: AuthAPI_ListMethods_Response["methods"][number],
111
+ ): SSOAuthMethod | undefined {
112
+ if (method.method.oneofKind !== "sso") return undefined;
113
+ const sso = method.method.sso;
114
+ if (sso.flowType !== AuthAPI_ListMethods_SSOAuthMethod_FlowType.PUBLIC_PKCE) return undefined;
115
+ return {
116
+ id: method.id,
117
+ title: method.title || method.description || method.id,
118
+ description: method.description,
119
+ issuer: sso.issuer,
120
+ clientId: sso.clientId,
121
+ scopes: sso.scopes,
122
+ resource: sso.resource,
123
+ prompt: sso.prompt,
124
+ redirectPorts: sso.redirectPorts,
125
+ subjectTokenSource: sso.subjectTokenSource,
126
+ userIdClaim: sso.userIdClaim,
127
+ groupsClaim: sso.groupsClaim,
128
+ accessType: sso.accessType || undefined,
129
+ flowType: "public_pkce",
130
+ };
131
+ }
132
+
95
133
  /** Projection of the first advertised SSO method, derived from {@link authMethodsSync}.
96
- * v1: at most one SSO method per deployment, so callers do not need to discriminate. */
134
+ * v1: at most one SSO method per deployment, so callers do not need to discriminate.
135
+ * @deprecated surfaces only the first advertised SSO method; use {@link loginMethods} to see
136
+ * every advertised method, of every kind. */
97
137
  public ssoConfig(): SSOAuthMethod | undefined {
98
138
  for (const method of this.ll.authMethodsSync.methods) {
99
139
  if (method.method.oneofKind !== "sso") continue;
@@ -101,42 +141,65 @@ export class UnauthenticatedPlClient {
101
141
  if (sso.flowType !== AuthAPI_ListMethods_SSOAuthMethod_FlowType.PUBLIC_PKCE) {
102
142
  throw new Error(`ssoConfig: unsupported SSO flow type ${sso.flowType}`);
103
143
  }
104
- return {
105
- id: method.id,
106
- description: method.description,
107
- issuer: sso.issuer,
108
- clientId: sso.clientId,
109
- scopes: sso.scopes,
110
- resource: sso.resource,
111
- prompt: sso.prompt,
112
- redirectPorts: sso.redirectPorts,
113
- subjectTokenSource: sso.subjectTokenSource,
114
- userIdClaim: sso.userIdClaim,
115
- groupsClaim: sso.groupsClaim,
116
- accessType: sso.accessType || undefined,
117
- flowType: "public_pkce",
118
- };
144
+ return this.toSSOAuthMethod(method);
119
145
  }
120
146
  return undefined;
121
147
  }
122
148
 
123
- /** Login with username+password.
149
+ /** Every login method the backend advertises, of every kind, in advertised order, each
150
+ * keeping its own `id`, `title`, `description` and kind. An entry with no usable method arm, or an
151
+ * SSO entry whose flow no client here can drive, is dropped rather than failing the whole
152
+ * list, which is why this accessor skips where {@link ssoConfig} throws. */
153
+ public loginMethods(): LoginMethod[] {
154
+ const picked: LoginMethod[] = [];
155
+ for (const method of this.ll.authMethodsSync.methods) {
156
+ switch (method.method.oneofKind) {
157
+ case "basic":
158
+ case "token":
159
+ picked.push({
160
+ kind: method.method.oneofKind,
161
+ id: method.id,
162
+ title: method.title || method.description || method.id,
163
+ description: method.description,
164
+ });
165
+ break;
166
+ case "sso": {
167
+ const sso = this.toSSOAuthMethod(method);
168
+ if (sso !== undefined) picked.push({ kind: "sso", ...sso });
169
+ break;
170
+ }
171
+ default:
172
+ // No arm at all — a legacy backend advertising nothing pickable.
173
+ break;
174
+ }
175
+ }
176
+ return picked;
177
+ }
178
+
179
+ /** Login with username and password.
124
180
  *
125
- * On auth:v2 backends the client inspects the advertised AuthMethods:
126
- * - if basic auth is offered, sends {@link LLPlClient.loginBasic};
127
- * - if only token auth is offered, treats `password` as an opaque bearer token and
128
- * sends {@link LLPlClient.loginWithToken} (so deployments configured for static-token
129
- * auth still log in without the caller switching methods).
181
+ * Routes to {@link LLPlClient.loginBasic} or {@link LLPlClient.loginWithToken} based on the
182
+ * advertised method `idP` names. On legacy backends, uses GetJWTToken with Basic header.
130
183
  *
131
- * On legacy backends (no auth:v2) it falls through to GetJWTToken with the Basic header,
132
- * preserving original behavior. */
133
- public async login(user: string, password: string): Promise<AuthInformation> {
184
+ * `idP` names the advertised method. A named basic-kind method routes to the basic branch;
185
+ * a named token-kind method routes to the token branch even when the backend also advertises
186
+ * a basic method — the token wire carries no selector, so the id itself is dropped there and
187
+ * only the branch choice is kept. Omitted, or naming no advertised method, falls back to
188
+ * today's first-match behavior: basic wins over token when both are advertised. */
189
+ public async login(user: string, password: string, idP?: string): Promise<AuthInformation> {
134
190
  try {
135
191
  let token: string;
136
192
  if (this.ll.hasCapability("auth:v2")) {
137
193
  const schemes = this.supportedAuthSchemes;
138
- if (schemes.basic) {
139
- token = await this.ll.loginBasic(user, password);
194
+ const namedKind =
195
+ idP === undefined ? undefined : this.loginMethods().find((m) => m.id === idP)?.kind;
196
+ if (namedKind === "token") {
197
+ token = await this.ll.loginWithToken(password);
198
+ } else if (schemes.basic) {
199
+ token =
200
+ idP === undefined
201
+ ? await this.ll.loginBasic(user, password)
202
+ : await this.ll.loginBasic(user, password, { idP });
140
203
  } else if (schemes.token) {
141
204
  token = await this.ll.loginWithToken(password);
142
205
  } else {
@@ -157,9 +220,12 @@ export class UnauthenticatedPlClient {
157
220
  }
158
221
 
159
222
  /** Request fresh server-issued login material. v1 only emits the public-PKCE flow;
160
- * desktop MUST place the returned `nonce` verbatim into the OIDC auth-request. */
161
- public async beginSSOLogin(): Promise<SSOLoginAttempt> {
162
- const attempt = await this.ll.beginSSOLogin();
223
+ * desktop MUST place the returned `nonce` verbatim into the OIDC auth-request. `idP` names
224
+ * the advertised SSO method to route to; omitted, the backend keeps its current first-match
225
+ * behaviour. */
226
+ public async beginSSOLogin(idP?: string): Promise<SSOLoginAttempt> {
227
+ const attempt =
228
+ idP === undefined ? await this.ll.beginSSOLogin() : await this.ll.beginSSOLogin(idP);
163
229
  return {
164
230
  flow: "public_pkce",
165
231
  nonce: attempt.nonce,
@@ -168,10 +234,18 @@ export class UnauthenticatedPlClient {
168
234
  };
169
235
  }
170
236
 
171
- /** Forward the verbatim IdP `/token` response body and receive a Platforma JWT. */
172
- public async loginSSO(payload: { tokenResponse: Uint8Array }): Promise<AuthInformation> {
237
+ /** Forward the verbatim IdP `/token` response body and receive a Platforma JWT. `idP` names
238
+ * the advertised SSO method to route to; omitted, the backend keeps its current first-match
239
+ * behaviour. */
240
+ public async loginSSO(payload: {
241
+ tokenResponse: Uint8Array;
242
+ idP?: string;
243
+ }): Promise<AuthInformation> {
173
244
  try {
174
- const jwtToken = await this.ll.loginSSO(payload.tokenResponse);
245
+ const jwtToken =
246
+ payload.idP === undefined
247
+ ? await this.ll.loginSSO(payload.tokenResponse)
248
+ : await this.ll.loginSSO(payload.tokenResponse, payload.idP);
175
249
  if (jwtToken === "") throw new Error("empty token");
176
250
  return { jwtToken };
177
251
  } catch (e: any) {