@ttctl/core 0.1.0-rc.2 → 0.1.0-rc.4

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 (35) hide show
  1. package/dist/__tests__/fixtures/profile/builders.d.ts.map +1 -1
  2. package/dist/__tests__/fixtures/profile/builders.js +2 -0
  3. package/dist/__tests__/fixtures/profile/builders.js.map +1 -1
  4. package/dist/__tests__/fixtures/profile/data.d.ts.map +1 -1
  5. package/dist/__tests__/fixtures/profile/data.js +4 -0
  6. package/dist/__tests__/fixtures/profile/data.js.map +1 -1
  7. package/dist/services/applications/index.d.ts +64 -9
  8. package/dist/services/applications/index.d.ts.map +1 -1
  9. package/dist/services/applications/index.js +67 -13
  10. package/dist/services/applications/index.js.map +1 -1
  11. package/dist/services/engagements/index.d.ts +76 -2
  12. package/dist/services/engagements/index.d.ts.map +1 -1
  13. package/dist/services/engagements/index.js +65 -5
  14. package/dist/services/engagements/index.js.map +1 -1
  15. package/dist/services/jobs/index.d.ts +26 -13
  16. package/dist/services/jobs/index.d.ts.map +1 -1
  17. package/dist/services/jobs/index.js +87 -15
  18. package/dist/services/jobs/index.js.map +1 -1
  19. package/dist/services/payments/index.d.ts +56 -10
  20. package/dist/services/payments/index.d.ts.map +1 -1
  21. package/dist/services/payments/index.js +59 -15
  22. package/dist/services/payments/index.js.map +1 -1
  23. package/dist/services/profile/basic/index.d.ts +113 -27
  24. package/dist/services/profile/basic/index.d.ts.map +1 -1
  25. package/dist/services/profile/basic/index.js +176 -66
  26. package/dist/services/profile/basic/index.js.map +1 -1
  27. package/dist/services/profile/employment/index.d.ts +175 -3
  28. package/dist/services/profile/employment/index.d.ts.map +1 -1
  29. package/dist/services/profile/employment/index.js +265 -14
  30. package/dist/services/profile/employment/index.js.map +1 -1
  31. package/dist/services/timesheet/index.d.ts +51 -2
  32. package/dist/services/timesheet/index.d.ts.map +1 -1
  33. package/dist/services/timesheet/index.js +32 -5
  34. package/dist/services/timesheet/index.js.map +1 -1
  35. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/payments/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/payments/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4EG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mCAAmC,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACxH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAoC5D,MAAM,OAAO,aAAc,SAAQ,KAAK;IAGpB;IAFA,IAAI,GAAG,eAAe,CAAC;IACzC,YACkB,IAAuB,EACvC,OAAe,EACf,OAA6B;QAE7B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAmB;IAKzC,CAAC;CACF;AAwID;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAU,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAW,CAAC;AA2B5C,wEAAwE;AACxE,gCAAgC;AAChC,wEAAwE;AAExE;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,cAAc,CAAU,CAAC;AAGvG,MAAM,wBAAwB,GAAyF;IACrH,oBAAoB,EAAE,oBAAoB;IAC1C,oBAAoB,EAAE,oBAAoB;IAC1C,YAAY,EAAE,cAAc;CAC7B,CAAC;AAEF,MAAM,0BAA0B,GAA2B;IACzD,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;CACvB,CAAC;AAsLF,wEAAwE;AACxE,qEAAqE;AACrE,uDAAuD;AACvD,wEAAwE;AAExE,gFAAgF;AAChF,2EAA2E;AAC3E,yEAAyE;AACzE,wEAAwE;AACxE,uEAAuE;AACvE,4BAA4B;AAC5B,EAAE;AACF,oEAAoE;AACpE,kEAAkE;AAClE,8CAA8C;AAC9C,6EAA6E;AAC7E,sEAAsE;AACtE,oEAAoE;AACpE,yEAAyE;AACzE,0EAA0E;AAC1E,4EAA4E;AAC5E,mFAAmF;AACnF,MAAM,cAAc,GAAG,gzBAAgzB,CAAC;AAEx0B,iFAAiF;AACjF,MAAM,aAAa,GAAG,6eAA6e,CAAC;AAEpgB,sEAAsE;AACtE,uEAAuE;AACvE,6EAA6E;AAC7E,EAAE;AACF,qEAAqE;AACrE,oEAAoE;AACpE,sEAAsE;AACtE,uEAAuE;AACvE,iEAAiE;AACjE,mCAAmC;AACnC,MAAM,qBAAqB,GAAG,oKAAoK,CAAC;AAEnM,+FAA+F;AAC/F,MAAM,8BAA8B,GAAG,owBAAowB,CAAC;AAE5yB,+FAA+F;AAC/F,MAAM,8BAA8B,GAAG,k/BAAk/B,CAAC;AAE1hC,oGAAoG;AACpG,MAAM,2BAA2B,GAAG,wOAAwO,CAAC;AAE7Q,iGAAiG;AACjG,MAAM,mCAAmC,GAAG,gwCAAgwC,CAAC;AAoL7yC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,MAAM,wCAAwC,GAAG,CAAC,CAAC,MAAM,CAAC;IACxD,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,UAAU,EAAE,CAAC;aACV,MAAM,CAAC;YACN,QAAQ,EAAE,CAAC;iBACR,MAAM,CAAC;gBACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;gBAChB,eAAe,EAAE,6BAA6B,EAAE;gBAChD,qBAAqB,EAAE,mCAAmC,EAAE;aAC7D,CAAC;iBACD,QAAQ,EAAE;YACb,KAAK,EAAE,CAAC;iBACL,MAAM,CAAC;gBACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC9B,CAAC;iBACD,QAAQ,EAAE;YACb,WAAW,EAAE,CAAC;iBACX,MAAM,CAAC;gBACN,MAAM,EAAE,CAAC;qBACN,MAAM,CAAC;oBACN,6DAA6D;oBAC7D,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;oBAC9C,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC5C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBACvC,CAAC;qBACD,QAAQ,EAAE;aACd,CAAC;iBACD,QAAQ,EAAE;SACd,CAAC;aACD,QAAQ,EAAE;KACd,CAAC;SACD,QAAQ,EAAE;IACb,qBAAqB,EAAE,CAAC;SACrB,MAAM,CAAC;QACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,mBAAmB,EAAE,CAAC;aACnB,MAAM,CAAC;YACN,MAAM,EAAE,CAAC;iBACN,MAAM,CAAC;gBACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC9B,wDAAwD;gBACxD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAChC,CAAC;iBACD,QAAQ,EAAE;SACd,CAAC;aACD,QAAQ,EAAE;KACd,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAgCH,sEAAsE;AACtE,uEAAuE;AACvE,6DAA6D;AAC7D,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;AAEzD,wEAAwE;AACxE,kEAAkE;AAClE,wEAAwE;AAExE;;;;GAIG;AACH,KAAK,UAAU,WAAW,CACxB,KAAa,EACb,aAAqB,EACrB,KAAa,EACb,SAAkC,EAClC,MAAqB;IAErB,OAAO,iBAAiB,CAAmB,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE;QAClH,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc,EAAE,MAAiD;IAC7F,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,OAAO,GAAG,MAAM,6BAA6B,CAAC;IAChD,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,IAAI,cAAc,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1C,CAAC;AAED,wEAAwE;AACxE,cAAc;AACd,wEAAwE;AAExE,SAAS,mBAAmB;IAC1B,OAAO;QACL,aAAa,EAAE,GAAG;QAClB,QAAQ,EAAE,GAAG;QACb,WAAW,EAAE,GAAG;QAChB,gBAAgB,EAAE,GAAG;QACrB,YAAY,EAAE,GAAG;QACjB,SAAS,EAAE,GAAG;KACf,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAA+B;IACxD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAiB;IACtC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAkC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACxG,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAuB;IACnD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;KAClD,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,IAA2B;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,IAAI,CAAC;IACzC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,aAAa,EAAE,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM;QACrE,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,IAAI;QACzC,eAAe,EAAE,GAAG,EAAE,KAAK,IAAI,IAAI;QACnC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,IAAI,IAAI;KAC1C,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,IAA4B;IACvD,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAqC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAC/F,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;KACnF,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,oBAAoB;AACpB,wEAAwE;AAExE;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,OAA2B,EAAE;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,gBAAgB,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;QAC3E,MAAM,SAAS,GAA4B;YACzC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;YACnG,MAAM,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO;YAC5B,KAAK,EAAE,OAAO;SACf,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAuB,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;QACnG,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,gDAAgD,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAClC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACrF,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAClC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACvC,MAAM,UAAU,GACd,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QAC5G,OAAO;YACL,KAAK;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,mBAAmB,EAAE;YAC9C,UAAU;YACV,IAAI;YACJ,OAAO;SACR,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,EAAU;QAClC,IAAI,IAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,WAAW,CAAsB,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,aAAa,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,IAAI,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7G,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,4BAA4B,EAAE,qCAAqC,EAAE;oBACxG,KAAK,EAAE,GAAG;iBACX,CAAC,CAAC;YACL,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,4BAA4B,EAAE,qCAAqC,CAAC,CAAC;QAC5G,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACF,CAAC;AAEF,wEAAwE;AACxE,oBAAoB;AACpB,wEAAwE;AAExE;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,KAAa;QACtB,MAAM,IAAI,GAAG,MAAM,WAAW,CAAyB,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAC3G,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,gDAAgD,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAA0B,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QACnG,OAAO,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,EAAU;QAClC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,oCAAoC,EAAE,IAAI,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC;AAEF,wEAAwE;AACxE,iBAAiB;AACjB,wEAAwE;AAExE,SAAS,qBAAqB,CAAC,IAA2B;IACxD,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,IAAI,CAAC;IACjD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,oBAAoB,CAAC,IAA2B;IACvD,MAAM,OAAO,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC;IAC1C,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO;QACL,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;QACtD,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,eAAe,EAAE,OAAO,CAAC,eAAe;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAwC;IACjE,MAAM,MAAM,GAAG,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC;IACnD,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,eAAe,CAAC,GAAiC;IACxD,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACtE,OAAO,wBAAwB,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,IAAI,CAAC,KAAa;QACtB,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC7C,WAAW,CAAgC,KAAK,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,EAAE,CAAC;YAC9G,gEAAgE;YAChE,+DAA+D;YAC/D,+DAA+D;YAC/D,WAAW,CACT,KAAK,EACL,uBAAuB,EACvB,8BAA8B,EAC9B,EAAE,EACF,wCAAwC,CACzC;SACF,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,gDAAgD,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,qBAAqB,CAAC;QACvD,MAAM,IAAI,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,MAAM,EAAE,UAAU,IAAI,IAAI,CAAC;QAC/E,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO;YACL,kBAAkB,EAAE,KAAK,CAAC,OAAO;YACjC,kBAAkB,EAAE,KAAK,CAAC,OAAO;YACjC,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,OAAO;YACtB,aAAa,EAAE,oBAAoB,CAAC,IAAI,CAAC;YACzC,UAAU,EAAE,iBAAiB,CAAC,QAAQ,CAAC,qBAAqB,IAAI,IAAI,CAAC;SACtE,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CAAC,KAAa;QAC3B,MAAM,IAAI,GAAG,MAAM,WAAW,CAC5B,KAAK,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,EAAE,CACH,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,gDAAgD,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAA+B,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QACpH,OAAO,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,IAAuB,EAAE,aAA4B,EAAE;QACjF,8DAA8D;QAC9D,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC,EAAE,CAAC;YACxG,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,uEAAuE,CAAC,CAAC;QACpH,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,EAAE,EAAE,CAAC;YACtG,MAAM,IAAI,aAAa,CACrB,eAAe,EACf,wBAAwB,IAAI,CAAC,IAAI,8FAA8F,CAChI,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACzC,MAAM,IAAI,GAA4B,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;YACnF,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAA4B;YACzC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI;YACvC,WAAW,EAAE,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YAChD,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;YACzC,OAAO,EAAE,WAAW;SACrB,CAAC;QAEF,IAAI,UAAU,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,kBAAkB,CAAC;oBAC1B,OAAO,EAAE,gBAAgB;oBACzB,SAAS,EAAE,KAAK;oBAChB,IAAI,EAAE;wBACJ,aAAa,EAAE,yBAAyB;wBACxC,KAAK,EAAE,mCAAmC;wBAC1C,SAAS;qBACV;iBACF,CAAC;aACH,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,WAAW,CAC5B,KAAK,EACL,yBAAyB,EACzB,mCAAmC,EACnC,SAAS,CACV,CAAC;QACF,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,aAAa,CAAC,SAAS,EAAE,uDAAuD,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC;QACvD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,aAAa,CAAC,SAAS,EAAE,kDAAkD,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,aAAa,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,gCAAgC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACnH,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,IAAI,IAAI,CAAC;QAC1D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,aAAa,CACrB,SAAS,EACT,oGAAoG,CACrG,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,wBAAwB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAC5F,CAAC;CACF,CAAC"}
@@ -67,6 +67,16 @@ export interface ProfileLanguage {
67
67
  id: string;
68
68
  name: string;
69
69
  }
70
+ /**
71
+ * One software-skill entry on `Profile.softwareSkills.nodes` — identifier
72
+ * + display name. Same `Unknown`-typed-in-SDL story as {@link ProfileLanguage};
73
+ * runtime contract is the source of truth. Filtering of malformed entries
74
+ * happens in {@link getBasicInfo}.
75
+ */
76
+ export interface ProfileSoftwareSkill {
77
+ id: string;
78
+ name: string;
79
+ }
70
80
  /**
71
81
  * Read-side projection of the `talent_profile`-only profile fields that
72
82
  * complement {@link show}. Returned by {@link getBasicInfo}.
@@ -79,9 +89,25 @@ export interface ProfileLanguage {
79
89
  * the user typed.
80
90
  *
81
91
  * `null` indicates the user hasn't set the field (or the server didn't
82
- * return it). `languages` is an array — empty when none are set, never
83
- * `null` (the empty-collection convention agreed in the #124 audit's
84
- * null-rendering recommendation).
92
+ * return it). `languages` and `softwareSkills` are arrays — empty when
93
+ * none are set, never `null` (the empty-collection convention agreed in
94
+ * the #124 audit's null-rendering recommendation).
95
+ *
96
+ * **Scope expansion (#393, 2026-05-19)**: pre-#393 this projection carried
97
+ * only `{profileId, bio, headline, languages}`. The Toptal `talent_profile`
98
+ * API treats `UpdateBasicInfoInput` as a **full-replacement contract** —
99
+ * any required non-null field omitted from the input fails with
100
+ * "Expected value to not be null". To support a robust read-merge
101
+ * mutation path in {@link set}, we now fetch the full set of server-
102
+ * required scalars (`fullName`, `legalName`, `city`, `placeIdentity`,
103
+ * `phoneNumber`) and id-bearing relations (`countryId`, `citizenshipId`,
104
+ * `languageIds`, `softwareSkills` — the last surfaced as objects rather
105
+ * than just ids because the API's read-side returns the rich shape).
106
+ * Each is `null` when the user hasn't set it on their profile (the
107
+ * server then rejects an UPDATE if a required field is null on read AND
108
+ * the input omits it — see issue #393's repro). Callers that only want
109
+ * the narrative bits (`bio` / `headline` / `languages`) continue to read
110
+ * what they always did; the additional fields are additive.
85
111
  */
86
112
  export interface BasicInfo {
87
113
  /** Echoes the talent_profile-side `Profile.id` (matches `show()`'s `viewerRole.profileId`). */
@@ -92,11 +118,31 @@ export interface BasicInfo {
92
118
  headline: string | null;
93
119
  /** User-declared languages. Empty array when none. */
94
120
  languages: ProfileLanguage[];
121
+ /** Display name as the user typed it. `null` when unset on this account. */
122
+ fullName: string | null;
123
+ /** Legal name (matches the legal-documents name). `null` when unset. */
124
+ legalName: string | null;
125
+ /** City of residence (free-text). `null` when unset. */
126
+ city: string | null;
127
+ /** Google place identity (string token from the geocoder). `null` when unset. */
128
+ placeIdentity: string | null;
129
+ /** Country-of-residence id (`Country.id`). `null` when unset. */
130
+ countryId: string | null;
131
+ /** Citizenship country id (`Country.id`). `null` when unset. */
132
+ citizenshipId: string | null;
133
+ /** Phone number (free-text, server-validated). `null` when unset. */
134
+ phoneNumber: string | null;
135
+ /** User-declared software skills (free-form, distinct from the rated `Skill` catalog). Empty array when none. */
136
+ softwareSkills: ProfileSoftwareSkill[];
95
137
  }
96
138
  /**
97
- * Fetch the read-side `talent_profile`-only basic-info fields that
98
- * complement {@link show} — `bio` (→ `Profile.about`), `headline` (→
99
- * `Profile.quote`), and `languages`.
139
+ * Fetch the {@link BasicInfo} projection of the `talent_profile`-only
140
+ * profile fields that complement {@link show} — narrative scalars
141
+ * (`bio`, `headline`), identity (`fullName`, `legalName`, `phoneNumber`),
142
+ * location (`city`, `placeIdentity`, `countryId`, `citizenshipId`), and
143
+ * collections (`languages`, `softwareSkills`). The full field roster
144
+ * is required by `set()`'s read-merge path (#393); see
145
+ * {@link BasicInfo} for per-field semantics.
100
146
  *
101
147
  * Routed against `https://www.toptal.com/api/talent_profile/graphql` via
102
148
  * {@link impersonatedTransport} (Cloudflare-protected; Chrome TLS
@@ -104,8 +150,9 @@ export interface BasicInfo {
104
150
  * the `profileId` required by the `profile(id: ID!)` field — same
105
151
  * pattern as {@link photoShow}.
106
152
  *
107
- * Returns a typed {@link BasicInfo} projection — `null` for fields the
108
- * user hasn't set, an empty array for `languages` when none.
153
+ * Returns a typed {@link BasicInfo} projection — `null` for scalars the
154
+ * user hasn't set, empty arrays for `languages` and `softwareSkills`
155
+ * when none.
109
156
  *
110
157
  * Errors:
111
158
  * - `Cf403Error` propagates from the talent-profile transport.
@@ -183,6 +230,28 @@ export interface SetOptions {
183
230
  * recognize the placeholder when surfacing the preview.
184
231
  */
185
232
  export declare const DRY_RUN_PROFILE_ID_PLACEHOLDER: "<resolved at send-time from session token>";
233
+ /**
234
+ * Placeholder string substituted for the basic-info scalar fields that
235
+ * the apply-path merges from the current profile state via
236
+ * {@link getBasicInfo}. The dry-run preview keeps the full input shape
237
+ * (so consumers see exactly which fields the live mutation will send)
238
+ * but uses these placeholders for values that would normally be read
239
+ * server-side. The placeholder is intentionally distinct from
240
+ * {@link DRY_RUN_PROFILE_ID_PLACEHOLDER} so the two preview surfaces
241
+ * remain separately recognisable.
242
+ *
243
+ * Applies to: `fullName`, `legalName`, `city`, `placeIdentity`,
244
+ * `countryId`, `citizenshipId`, `phoneNumber`, `about`, `quote` —
245
+ * any scalar field that the merge path reads from current state when
246
+ * the user didn't supply it. (Fields the user DID supply are echoed
247
+ * verbatim into the preview, same as the apply path.)
248
+ *
249
+ * `languageIds` and `softwareSkills` use a dedicated empty-array
250
+ * placeholder (`[]`) — the absence of an array is more readable than a
251
+ * placeholder array, and consumers branching on the dry-run shape can
252
+ * inspect `Array.isArray(...)` without special-case logic.
253
+ */
254
+ export declare const DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER: "<preserved from current profile state>";
186
255
  /**
187
256
  * Discriminated outcome of a {@link set} call when the apply-path
188
257
  * succeeded — the server-confirmed payload normalised to {@link
@@ -218,39 +287,56 @@ export type SetOutcome = SetOutcomeApplied | SetOutcomePreview;
218
287
  *
219
288
  * Authenticates via `Authorization: Token token=<token>` (the canonical
220
289
  * Toptal auth mechanism). Cookies are NOT load-bearing — Chrome TLS
221
- * impersonation alone passes Cloudflare. Internally calls `show()`
222
- * (against mobile-gateway) first to obtain the `profileId` required by the
223
- * mutation input, then issues the typed `UpdateBasicInfo` mutation against
224
- * talent-profile via `impersonatedTransport`. Returns the server-confirmed
225
- * updated values wrapped in a {@link SetOutcomeApplied} discriminator.
290
+ * impersonation alone passes Cloudflare.
291
+ *
292
+ * **Read-merge protocol (#393)**: the server treats `UpdateBasicInfoInput!`
293
+ * as a **full-replacement contract** required non-null fields omitted
294
+ * from the input fail with "Expected value to not be null", regardless
295
+ * of their value in the current profile state. To support a partial
296
+ * "I only want to change bio + headline" use case without losing
297
+ * any of the other required fields, the apply path:
298
+ *
299
+ * 1. Calls {@link getBasicInfo} to read the current full state (this
300
+ * transitively calls `show()` for `profileId`).
301
+ * 2. Merges user-supplied fields (`bio` → `about`, `headline` → `quote`)
302
+ * over the read snapshot.
303
+ * 3. Submits the full {@link UpdateBasicInfoInput} with every required
304
+ * field populated.
226
305
  *
227
- * Dry-run path (issue #52): when invoked with `options.dryRun === true`,
228
- * builds a {@link DryRunPreview} of the WRITE request without invoking
229
- * any transport (read OR write) and returns it wrapped in {@link
230
- * SetOutcomePreview}. The preview substitutes a placeholder string
231
- * ({@link DRY_RUN_PROFILE_ID_PLACEHOLDER}) for `profileId` because the
232
- * apply-path resolves it via `show()` (a stock-transport read call) and
233
- * the dry-run AC requires zero transport invocations. The bearer token
234
- * is redacted in the preview's `headers.authorization` per the security
235
- * contract documented on {@link DryRunPreview}.
306
+ * The extra read round-trip is acceptable for an update-the-profile
307
+ * use case (profile updates are infrequent; the read is plain HTTPS
308
+ * against the talent-profile surface).
309
+ *
310
+ * Dry-run path (issue #52, extended for #393): when invoked with
311
+ * `options.dryRun === true`, the preview is built WITHOUT firing any
312
+ * transport (zero network I/O preserved from the #52 AC). Fields that
313
+ * the apply-path would have read from current state use
314
+ * {@link DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER}; user-supplied fields
315
+ * are echoed verbatim. Result: the preview's `variables.input.profile`
316
+ * carries the exact key set the live mutation will send, with values
317
+ * differentiated by `<preserved from current profile state>` (read-merged)
318
+ * vs the user's literals (overridden). The bearer token is redacted in
319
+ * the preview's `headers.authorization` per the security contract
320
+ * documented on {@link DryRunPreview}.
236
321
  *
237
322
  * Errors:
238
323
  * - `ProfileError` with code `VALIDATION_ERROR` when neither `bio` nor
239
324
  * `headline` is supplied — the contract requires at least one. Fires
240
325
  * in BOTH the apply-path and the dry-run path.
241
326
  * - `Cf403Error` propagates from the talent-profile transport when
242
- * Cloudflare returns 403. Apply-path only.
327
+ * Cloudflare returns 403. Apply-path only (dry-run never touches the
328
+ * network).
243
329
  * - `AuthRevokedError` on token expiry (HTTP 401, or any GraphQL
244
330
  * `extensions.code` matching `isAuthRevokedExtensionCode` — currently
245
331
  * `'UNAUTHENTICATED'`, `'AUTHENTICATION_REQUIRED'`, or `'UNAUTHORIZED'`).
246
- * Apply-path only.
332
+ * Apply-path only — fires on EITHER the read-merge call or the write.
247
333
  * - `ProfileError` with code `NO_VIEWER` when no viewer is bound.
248
- * Apply-path only — dry-run skips the read entirely.
334
+ * Apply-path only — fires on the read-merge call.
249
335
  * - `ProfileError` with code `USER_ERROR` when the mutation returns a
250
336
  * non-empty `errors` array (validation failures from the server, e.g., a
251
337
  * bio that exceeds the platform's length limit). Apply-path only.
252
- * - `ProfileError` with code `GRAPHQL_ERROR` on top-level GraphQL errors.
253
- * Apply-path only.
338
+ * - `ProfileError` with code `GRAPHQL_ERROR` on top-level GraphQL errors
339
+ * from EITHER the read or write call. Apply-path only.
254
340
  * - `ProfileError` with code `NETWORK_ERROR` on transport-level throws.
255
341
  * Apply-path only.
256
342
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/profile/basic/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/profile/basic/index.ts"],"names":[],"mappings":"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"}
@@ -302,16 +302,26 @@ export async function show(token) {
302
302
  return body.data;
303
303
  }
304
304
  /**
305
- * Full-document `GET_BASIC_INFO` query string. Trimmed subset of the
306
- * canonical bundle-extracted operation
305
+ * Full-document `GET_BASIC_INFO` query string. Subset of the canonical
306
+ * bundle-extracted operation
307
307
  * (`research/graphql/talent_profile/operations/GET_BASIC_INFO.graphql`):
308
- * we ask only for the read-display-relevant fields surfaced by
309
- * {@link BasicInfo} `about`, `quote`, `languages.nodes` — and skip
310
- * the `ProfileRecommendations`, `softwareSkills`, social URL, and
311
- * top-level `countries` / `languages` catalog fields that the canonical
312
- * operation also fetches (out of scope for the read-display surface; the
313
- * social URLs are owned by the `external` sub-domain, the catalog
314
- * payloads are autocomplete-tier).
308
+ * we ask for the fields surfaced by {@link BasicInfo} — narrative
309
+ * (`about`, `quote`), identity (`fullName`, `legalName`, `phoneNumber`),
310
+ * location (`city`, `placeIdentity`, `country.id`, `citizenship.id`),
311
+ * collections (`languages.nodes`, `softwareSkills.nodes`) and skip
312
+ * the `ProfileRecommendations` fragment, social URLs (owned by the
313
+ * `external` sub-domain), `timeZone`, `skype`, and the top-level
314
+ * `countries` / `languages` catalog payloads that the canonical
315
+ * operation also fetches (autocomplete-tier, not needed for read or
316
+ * merge-on-write).
317
+ *
318
+ * **Scope rationale (#393)**: this selection set covers the full set of
319
+ * server-required non-null fields on `UpdateBasicInfoInput` (per the
320
+ * issue's wire-error trace — `fullName`, `legalName`, `countryId`,
321
+ * `city`, `placeIdentity`, `citizenshipId`, `languageIds`,
322
+ * `phoneNumber`, `softwareSkills`). Adding any of these to the query
323
+ * later would be an additive wire change — the snapshot diff catches
324
+ * accidental regressions.
315
325
  *
316
326
  * Operation name `GET_BASIC_INFO` (SCREAMING_CASE) matches the bundle-
317
327
  * extracted document so the server's literal `operationName` allowlist
@@ -322,18 +332,39 @@ const GET_BASIC_INFO_QUERY = `query GET_BASIC_INFO($profileId: ID!) {
322
332
  id
323
333
  about
324
334
  quote
335
+ fullName
336
+ legalName
337
+ city
338
+ placeIdentity
339
+ phoneNumber
340
+ country {
341
+ id
342
+ }
343
+ citizenship {
344
+ id
345
+ }
325
346
  languages {
326
347
  nodes {
327
348
  id
328
349
  name
329
350
  }
330
351
  }
352
+ softwareSkills {
353
+ nodes {
354
+ id
355
+ name
356
+ }
357
+ }
331
358
  }
332
359
  }`;
333
360
  /**
334
- * Fetch the read-side `talent_profile`-only basic-info fields that
335
- * complement {@link show} — `bio` (→ `Profile.about`), `headline` (→
336
- * `Profile.quote`), and `languages`.
361
+ * Fetch the {@link BasicInfo} projection of the `talent_profile`-only
362
+ * profile fields that complement {@link show} — narrative scalars
363
+ * (`bio`, `headline`), identity (`fullName`, `legalName`, `phoneNumber`),
364
+ * location (`city`, `placeIdentity`, `countryId`, `citizenshipId`), and
365
+ * collections (`languages`, `softwareSkills`). The full field roster
366
+ * is required by `set()`'s read-merge path (#393); see
367
+ * {@link BasicInfo} for per-field semantics.
337
368
  *
338
369
  * Routed against `https://www.toptal.com/api/talent_profile/graphql` via
339
370
  * {@link impersonatedTransport} (Cloudflare-protected; Chrome TLS
@@ -341,8 +372,9 @@ const GET_BASIC_INFO_QUERY = `query GET_BASIC_INFO($profileId: ID!) {
341
372
  * the `profileId` required by the `profile(id: ID!)` field — same
342
373
  * pattern as {@link photoShow}.
343
374
  *
344
- * Returns a typed {@link BasicInfo} projection — `null` for fields the
345
- * user hasn't set, an empty array for `languages` when none.
375
+ * Returns a typed {@link BasicInfo} projection — `null` for scalars the
376
+ * user hasn't set, empty arrays for `languages` and `softwareSkills`
377
+ * when none.
346
378
  *
347
379
  * Errors:
348
380
  * - `Cf403Error` propagates from the talent-profile transport.
@@ -397,23 +429,42 @@ export async function getBasicInfo(token) {
397
429
  throw new ProfileError("USER_ERROR", `No profile found with id "${profileId}".`);
398
430
  }
399
431
  const p = body.data.profile;
400
- const rawNodes = p.languages?.nodes ?? [];
401
- const languages = [];
402
- for (const node of rawNodes) {
432
+ const languages = collectIdNameNodes(p.languages?.nodes);
433
+ const softwareSkills = collectIdNameNodes(p.softwareSkills?.nodes);
434
+ return {
435
+ profileId: typeof p.id === "string" && p.id.length > 0 ? p.id : profileId,
436
+ bio: typeof p.about === "string" ? p.about : null,
437
+ headline: typeof p.quote === "string" ? p.quote : null,
438
+ languages,
439
+ fullName: typeof p.fullName === "string" ? p.fullName : null,
440
+ legalName: typeof p.legalName === "string" ? p.legalName : null,
441
+ city: typeof p.city === "string" ? p.city : null,
442
+ placeIdentity: typeof p.placeIdentity === "string" ? p.placeIdentity : null,
443
+ countryId: typeof p.country?.id === "string" && p.country.id.length > 0 ? p.country.id : null,
444
+ citizenshipId: typeof p.citizenship?.id === "string" && p.citizenship.id.length > 0 ? p.citizenship.id : null,
445
+ phoneNumber: typeof p.phoneNumber === "string" ? p.phoneNumber : null,
446
+ softwareSkills,
447
+ };
448
+ }
449
+ /**
450
+ * Normalise a `{nodes: [{id, name}, ...]}` connection — used identically
451
+ * for `languages` and `softwareSkills`. Drops null entries, entries with
452
+ * empty string ids, and entries where `name` is not a string. The
453
+ * filtered output guarantees both fields are non-empty strings, matching
454
+ * the {@link ProfileLanguage} / {@link ProfileSoftwareSkill} contract.
455
+ */
456
+ function collectIdNameNodes(rawNodes) {
457
+ const out = [];
458
+ for (const node of rawNodes ?? []) {
403
459
  if (node === null || typeof node !== "object")
404
460
  continue;
405
461
  if (typeof node.id !== "string" || node.id.length === 0)
406
462
  continue;
407
463
  if (typeof node.name !== "string")
408
464
  continue;
409
- languages.push({ id: node.id, name: node.name });
465
+ out.push({ id: node.id, name: node.name });
410
466
  }
411
- return {
412
- profileId: typeof p.id === "string" && p.id.length > 0 ? p.id : profileId,
413
- bio: typeof p.about === "string" ? p.about : null,
414
- headline: typeof p.quote === "string" ? p.quote : null,
415
- languages,
416
- };
467
+ return out;
417
468
  }
418
469
  /**
419
470
  * Full-document `UPDATE_BASIC_INFO` mutation string.
@@ -461,6 +512,28 @@ const UPDATE_BASIC_INFO_MUTATION = `mutation UPDATE_BASIC_INFO($input: UpdateBas
461
512
  * recognize the placeholder when surfacing the preview.
462
513
  */
463
514
  export const DRY_RUN_PROFILE_ID_PLACEHOLDER = "<resolved at send-time from session token>";
515
+ /**
516
+ * Placeholder string substituted for the basic-info scalar fields that
517
+ * the apply-path merges from the current profile state via
518
+ * {@link getBasicInfo}. The dry-run preview keeps the full input shape
519
+ * (so consumers see exactly which fields the live mutation will send)
520
+ * but uses these placeholders for values that would normally be read
521
+ * server-side. The placeholder is intentionally distinct from
522
+ * {@link DRY_RUN_PROFILE_ID_PLACEHOLDER} so the two preview surfaces
523
+ * remain separately recognisable.
524
+ *
525
+ * Applies to: `fullName`, `legalName`, `city`, `placeIdentity`,
526
+ * `countryId`, `citizenshipId`, `phoneNumber`, `about`, `quote` —
527
+ * any scalar field that the merge path reads from current state when
528
+ * the user didn't supply it. (Fields the user DID supply are echoed
529
+ * verbatim into the preview, same as the apply path.)
530
+ *
531
+ * `languageIds` and `softwareSkills` use a dedicated empty-array
532
+ * placeholder (`[]`) — the absence of an array is more readable than a
533
+ * placeholder array, and consumers branching on the dry-run shape can
534
+ * inspect `Array.isArray(...)` without special-case logic.
535
+ */
536
+ export const DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER = "<preserved from current profile state>";
464
537
  /**
465
538
  * Update a subset of the signed-in user's basic-info fields (currently
466
539
  * `bio` → `about` and `headline` → `quote`) via the Cloudflare-protected
@@ -468,39 +541,56 @@ export const DRY_RUN_PROFILE_ID_PLACEHOLDER = "<resolved at send-time from sessi
468
541
  *
469
542
  * Authenticates via `Authorization: Token token=<token>` (the canonical
470
543
  * Toptal auth mechanism). Cookies are NOT load-bearing — Chrome TLS
471
- * impersonation alone passes Cloudflare. Internally calls `show()`
472
- * (against mobile-gateway) first to obtain the `profileId` required by the
473
- * mutation input, then issues the typed `UpdateBasicInfo` mutation against
474
- * talent-profile via `impersonatedTransport`. Returns the server-confirmed
475
- * updated values wrapped in a {@link SetOutcomeApplied} discriminator.
544
+ * impersonation alone passes Cloudflare.
545
+ *
546
+ * **Read-merge protocol (#393)**: the server treats `UpdateBasicInfoInput!`
547
+ * as a **full-replacement contract** required non-null fields omitted
548
+ * from the input fail with "Expected value to not be null", regardless
549
+ * of their value in the current profile state. To support a partial
550
+ * "I only want to change bio + headline" use case without losing
551
+ * any of the other required fields, the apply path:
552
+ *
553
+ * 1. Calls {@link getBasicInfo} to read the current full state (this
554
+ * transitively calls `show()` for `profileId`).
555
+ * 2. Merges user-supplied fields (`bio` → `about`, `headline` → `quote`)
556
+ * over the read snapshot.
557
+ * 3. Submits the full {@link UpdateBasicInfoInput} with every required
558
+ * field populated.
476
559
  *
477
- * Dry-run path (issue #52): when invoked with `options.dryRun === true`,
478
- * builds a {@link DryRunPreview} of the WRITE request without invoking
479
- * any transport (read OR write) and returns it wrapped in {@link
480
- * SetOutcomePreview}. The preview substitutes a placeholder string
481
- * ({@link DRY_RUN_PROFILE_ID_PLACEHOLDER}) for `profileId` because the
482
- * apply-path resolves it via `show()` (a stock-transport read call) and
483
- * the dry-run AC requires zero transport invocations. The bearer token
484
- * is redacted in the preview's `headers.authorization` per the security
485
- * contract documented on {@link DryRunPreview}.
560
+ * The extra read round-trip is acceptable for an update-the-profile
561
+ * use case (profile updates are infrequent; the read is plain HTTPS
562
+ * against the talent-profile surface).
563
+ *
564
+ * Dry-run path (issue #52, extended for #393): when invoked with
565
+ * `options.dryRun === true`, the preview is built WITHOUT firing any
566
+ * transport (zero network I/O preserved from the #52 AC). Fields that
567
+ * the apply-path would have read from current state use
568
+ * {@link DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER}; user-supplied fields
569
+ * are echoed verbatim. Result: the preview's `variables.input.profile`
570
+ * carries the exact key set the live mutation will send, with values
571
+ * differentiated by `<preserved from current profile state>` (read-merged)
572
+ * vs the user's literals (overridden). The bearer token is redacted in
573
+ * the preview's `headers.authorization` per the security contract
574
+ * documented on {@link DryRunPreview}.
486
575
  *
487
576
  * Errors:
488
577
  * - `ProfileError` with code `VALIDATION_ERROR` when neither `bio` nor
489
578
  * `headline` is supplied — the contract requires at least one. Fires
490
579
  * in BOTH the apply-path and the dry-run path.
491
580
  * - `Cf403Error` propagates from the talent-profile transport when
492
- * Cloudflare returns 403. Apply-path only.
581
+ * Cloudflare returns 403. Apply-path only (dry-run never touches the
582
+ * network).
493
583
  * - `AuthRevokedError` on token expiry (HTTP 401, or any GraphQL
494
584
  * `extensions.code` matching `isAuthRevokedExtensionCode` — currently
495
585
  * `'UNAUTHENTICATED'`, `'AUTHENTICATION_REQUIRED'`, or `'UNAUTHORIZED'`).
496
- * Apply-path only.
586
+ * Apply-path only — fires on EITHER the read-merge call or the write.
497
587
  * - `ProfileError` with code `NO_VIEWER` when no viewer is bound.
498
- * Apply-path only — dry-run skips the read entirely.
588
+ * Apply-path only — fires on the read-merge call.
499
589
  * - `ProfileError` with code `USER_ERROR` when the mutation returns a
500
590
  * non-empty `errors` array (validation failures from the server, e.g., a
501
591
  * bio that exceeds the platform's length limit). Apply-path only.
502
- * - `ProfileError` with code `GRAPHQL_ERROR` on top-level GraphQL errors.
503
- * Apply-path only.
592
+ * - `ProfileError` with code `GRAPHQL_ERROR` on top-level GraphQL errors
593
+ * from EITHER the read or write call. Apply-path only.
504
594
  * - `ProfileError` with code `NETWORK_ERROR` on transport-level throws.
505
595
  * Apply-path only.
506
596
  */
@@ -508,21 +598,26 @@ export async function set(token, changes, options = {}) {
508
598
  if (changes.bio === undefined && changes.headline === undefined) {
509
599
  throw new ProfileError("VALIDATION_ERROR", "Profile update requires at least one of `bio` or `headline`.");
510
600
  }
511
- const profileFields = {};
512
- if (changes.bio !== undefined)
513
- profileFields.about = changes.bio;
514
- if (changes.headline !== undefined)
515
- profileFields.quote = changes.headline;
516
- // Dry-run short-circuit: build the WRITE request shape with a
517
- // placeholder `profileId` and return a preview without any transport
518
- // call. Apply-path resolves `profileId` via `show()` (a mobile-gateway
519
- // read), but dry-run skips that step so neither transport is invoked
520
- // — the AC for issue #52 reads "transport never called" in the
521
- // singular and the helper honors it for both directions.
601
+ // Dry-run short-circuit: build the WRITE request shape with placeholders
602
+ // for fields that the apply-path would read from current state. Zero
603
+ // transport calls (read OR write) — the #52 AC reads "transport never
604
+ // called" in the singular and we honor it for both directions.
522
605
  if (options.dryRun === true) {
523
606
  const previewInput = {
524
607
  profileId: DRY_RUN_PROFILE_ID_PLACEHOLDER,
525
- profile: profileFields,
608
+ profile: {
609
+ about: changes.bio !== undefined ? changes.bio : DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
610
+ quote: changes.headline !== undefined ? changes.headline : DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
611
+ fullName: DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
612
+ legalName: DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
613
+ city: DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
614
+ placeIdentity: DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
615
+ countryId: DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
616
+ citizenshipId: DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
617
+ phoneNumber: DRY_RUN_BASIC_INFO_FIELD_PLACEHOLDER,
618
+ languageIds: [],
619
+ softwareSkills: [],
620
+ },
526
621
  };
527
622
  return {
528
623
  kind: "preview",
@@ -537,16 +632,29 @@ export async function set(token, changes, options = {}) {
537
632
  }),
538
633
  };
539
634
  }
540
- // Need profileId for the mutation input fetch the current profile first.
541
- // Errors from show() (ProfileError) propagate verbatim: a write attempt
542
- // that can't read its own profile is unrecoverable, and surfacing the
543
- // read-side error gives the user the same actionable message they'd get
544
- // from `ttctl profile show`.
545
- const profile = await show(token);
546
- const profileId = profile.viewer?.viewerRole.profileId;
547
- if (profileId === undefined) {
548
- throw new ProfileError("NO_VIEWER", "Cannot update profile: viewer or profile id missing from the session response.");
549
- }
635
+ // Read-merge: fetch the current full basic-info state so the mutation
636
+ // input carries every server-required non-null field (#393). Errors
637
+ // from getBasicInfo (ProfileError / AuthRevokedError / Cf403Error)
638
+ // propagate verbatim a write attempt that can't read its own profile
639
+ // is unrecoverable, and surfacing the read-side error gives the user
640
+ // the same actionable message they'd get from `ttctl profile show`.
641
+ const current = await getBasicInfo(token);
642
+ // Merge user-supplied fields over the current state. User intent wins:
643
+ // `changes.bio === ""` is a real "clear the bio" intent, distinct from
644
+ // "leave it alone" (which is `changes.bio === undefined`).
645
+ const merged = {
646
+ about: changes.bio !== undefined ? changes.bio : current.bio,
647
+ quote: changes.headline !== undefined ? changes.headline : current.headline,
648
+ fullName: current.fullName,
649
+ legalName: current.legalName,
650
+ city: current.city,
651
+ placeIdentity: current.placeIdentity,
652
+ countryId: current.countryId,
653
+ citizenshipId: current.citizenshipId,
654
+ phoneNumber: current.phoneNumber,
655
+ languageIds: current.languages.map((l) => l.id),
656
+ softwareSkills: current.softwareSkills.map((s) => ({ id: s.id, name: s.name })),
657
+ };
550
658
  let res;
551
659
  try {
552
660
  res = await impersonatedTransport({
@@ -555,7 +663,9 @@ export async function set(token, changes, options = {}) {
555
663
  body: {
556
664
  operationName: "UPDATE_BASIC_INFO",
557
665
  query: UPDATE_BASIC_INFO_MUTATION,
558
- variables: { input: { profileId, profile: profileFields } },
666
+ variables: {
667
+ input: { profileId: current.profileId, profile: merged },
668
+ },
559
669
  },
560
670
  });
561
671
  }