@fragno-dev/core 0.1.10 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/.turbo/turbo-build.log +139 -131
  2. package/CHANGELOG.md +63 -0
  3. package/dist/api/api.d.ts +23 -5
  4. package/dist/api/api.d.ts.map +1 -1
  5. package/dist/api/api.js.map +1 -1
  6. package/dist/api/fragment-definition-builder.d.ts +17 -7
  7. package/dist/api/fragment-definition-builder.d.ts.map +1 -1
  8. package/dist/api/fragment-definition-builder.js +3 -2
  9. package/dist/api/fragment-definition-builder.js.map +1 -1
  10. package/dist/api/fragment-instantiator.d.ts +129 -32
  11. package/dist/api/fragment-instantiator.d.ts.map +1 -1
  12. package/dist/api/fragment-instantiator.js +232 -50
  13. package/dist/api/fragment-instantiator.js.map +1 -1
  14. package/dist/api/request-input-context.d.ts +57 -1
  15. package/dist/api/request-input-context.d.ts.map +1 -1
  16. package/dist/api/request-input-context.js +67 -0
  17. package/dist/api/request-input-context.js.map +1 -1
  18. package/dist/api/request-middleware.d.ts +1 -1
  19. package/dist/api/request-middleware.d.ts.map +1 -1
  20. package/dist/api/request-middleware.js.map +1 -1
  21. package/dist/api/route.d.ts +7 -7
  22. package/dist/api/route.d.ts.map +1 -1
  23. package/dist/api/route.js.map +1 -1
  24. package/dist/client/client.d.ts +4 -3
  25. package/dist/client/client.d.ts.map +1 -1
  26. package/dist/client/client.js +103 -7
  27. package/dist/client/client.js.map +1 -1
  28. package/dist/client/vue.d.ts +7 -3
  29. package/dist/client/vue.d.ts.map +1 -1
  30. package/dist/client/vue.js +16 -1
  31. package/dist/client/vue.js.map +1 -1
  32. package/dist/internal/trace-context.d.ts +23 -0
  33. package/dist/internal/trace-context.d.ts.map +1 -0
  34. package/dist/internal/trace-context.js +14 -0
  35. package/dist/internal/trace-context.js.map +1 -0
  36. package/dist/mod-client.d.ts +5 -27
  37. package/dist/mod-client.d.ts.map +1 -1
  38. package/dist/mod-client.js +50 -13
  39. package/dist/mod-client.js.map +1 -1
  40. package/dist/mod.d.ts +4 -3
  41. package/dist/mod.js +2 -1
  42. package/dist/runtime.d.ts +15 -0
  43. package/dist/runtime.d.ts.map +1 -0
  44. package/dist/runtime.js +33 -0
  45. package/dist/runtime.js.map +1 -0
  46. package/dist/test/test.d.ts +2 -2
  47. package/dist/test/test.d.ts.map +1 -1
  48. package/dist/test/test.js.map +1 -1
  49. package/package.json +31 -18
  50. package/src/api/api.ts +24 -0
  51. package/src/api/fragment-definition-builder.ts +36 -17
  52. package/src/api/fragment-instantiator.test.ts +429 -1
  53. package/src/api/fragment-instantiator.ts +572 -58
  54. package/src/api/internal/path-runtime.test.ts +7 -0
  55. package/src/api/request-input-context.test.ts +152 -0
  56. package/src/api/request-input-context.ts +85 -0
  57. package/src/api/request-middleware.test.ts +47 -1
  58. package/src/api/request-middleware.ts +1 -1
  59. package/src/api/route.ts +7 -2
  60. package/src/client/client.test.ts +195 -0
  61. package/src/client/client.ts +185 -10
  62. package/src/client/vue.test.ts +253 -3
  63. package/src/client/vue.ts +44 -1
  64. package/src/internal/trace-context.ts +35 -0
  65. package/src/mod-client.ts +89 -9
  66. package/src/mod.ts +7 -1
  67. package/src/runtime.ts +48 -0
  68. package/src/test/test.ts +13 -4
  69. package/tsdown.config.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"fragment-definition-builder.d.ts","names":[],"sources":["../../src/api/fragment-definition-builder.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAMiC;AAgBjC,UAXU,eAAA,CAWE;EAEO;EAGT,IAAA,EAAA,MAAA;EACC;EACa,QAAA,EAAA,OAAA;;;AAOxB;;;AAII,KAlBQ,sBAkBR,CAAA,OAAA,EAAA,iBAhBe,kBAgBf,EAAA,oBAAA,CAAA,GAAA,CAAA,OAAA,EAAA;EAAS,MAAA,EAbH,OAaG;EAMD,OAAA,EAlBD,QAkBC;EAEO,mBAAA,CAAA,EAnBK,oBAmBL;CAIT,EAAA,GArBJ,0BAqBI,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA;;;;AAGC,KAnBC,qBAmBD,CAAA,CAAA,CAAA,GAnB4B,CAmB5B,UAAA,CAAA,GAAA,IAAA,EAAA,KAAA,EAAA,EAAA,GAhBN,0BAgBM,CAAA,GAAA,EAAA,GAAA,EAAA,KAAA,UAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,IAfP,SAeO,GAAA,KAAA;;AAMX;;AAQU,KAvBE,4BAuBF,CAAA,OAAA,EAAA,iBArBS,kBAqBT,EAAA,KAAA,EAAA,eAAA,CAAA,GAAA;EACC,MAAA,EAlBD,OAkBC;EACH,OAAA,EAlBG,QAkBH;EACO,IAAA,EAlBP,KAkBO;EACI,OAAA,EAlBR,qBAkBQ,CAlBc,eAkBd,CAAA;CAKO;;;;AAAuC,KAjBrD,cAiBqD,CAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,4BAXnC,kBAWmC,CAAA,GAAA;EAMrD,MAAA,EAfF,OAeE;EAOkB,OAAA,EArBnB,QAqBmB;EAG1B,IAAA,EAvBI,KAuBJ;EACA,WAAA,EAvBW,oBAuBX;EACA,eAAA,EAvBe,gBAuBf;EACA;;;;EAIC,aAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAvBqB,CAuBrB,GAvByB,QAuBzB,CAvBkC,mBAuBlC,CAAA,EAAA,GAvB2D,CAuB3D;CAAQ;AAMb;;;AAS8B,KAhClB,oBAgCkB,CAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,4BAzBA,kBAyBA,CAAA,GAAA,CAAA,OAAA,EAvBnB,cAuBmB,CAtB1B,OAsB0B,EArB1B,QAqB0B,EApB1B,KAoB0B,EAnB1B,oBAmB0B,EAlB1B,gBAkB0B,EAjB1B,mBAiB0B,CAAA,EAAA,GAfzB,QAeyB;;;;;AAOwC,UAhBrD,kBAgBqD,CAAA,OAAA,EAAA,iBAdnD,kBAcmD,EAAA,KAAA,EAAA,aAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,4BARxC,kBAQwC,EAAA,4BAPxC,kBAOwC,EAAA,kBAAA,CAAA,CAAA,EAAA,yBAL3C,MAK2C,CAAA,MAAA,EAL5B,6BAK4B,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA;EAGlE,IAAA,EAAA,MAAA;EACA,YAAA,CAAA,EAAA,CAAA,OAAA,EAAA;IACA,MAAA,EALiC,OAKjC;IACA,OAAA,EANmD,QAMnD;EACA,CAAA,EAAA,GAPkE,KAOlE;EACA,YAAA,CAAA,EANa,oBAMb,CALA,OAKA,EAJA,QAIA,EAHA,KAGA,EAFA,oBAEA,EADA,gBACA,EAAA,aAAA,EACA,mBADA,CAAA;EACA,aAAA,CAAA,EAAA,QAPa,MAYD,WAZC,GAYW,oBAZX,CAaX,OAbW,EAcX,QAdW,EAeX,KAfW,EAgBX,oBAhBW,EAiBX,gBAjBW,EAkBX,WAlBW,CAkBD,CAlBC,CAAA,EAmBX,mBAnBW,CAAA,EAYD;EACV,eAAA,CAAA,EAAA,QACA,MAWU,gBAXV,GAW6B,oBAX7B,CAYA,OAZA,EAaA,QAbA,EAcA,KAdA,EAeA,oBAfA,EAgBA,gBAhBA;EAAA;EAiBA,gBAhBA,CAgBiB,CAhBjB,CAAA,EAiBA,mBAjBA,CAAA,EACA;EACA,mBAAA,CAAA,EAAA,QACA,MAoBU,oBApBV,GAoBiC,eApBjC,EAAU;EACV;;;;;;;;;;;;;EAmBiC,oBAAA,CAAA,EAAA,CAAA,OAAA,EAAA;IAiB3B,MAAA,EAAA,OAAA;IACC,OAAA,EAAA,QAAA;IACH,IAAA,EAAA,KAAA;EACF,CAAA,EAAA,GAAA,eAAA;EAoBkC;;;;;;;;;;;;;;;;;EA8BlB,iBAAA,CAAA,EAAA,CAAA,OAAA,EA9BX,4BA8BW,CA9BkB,OA8BlB,EA9B2B,QA8B3B,EA9BqC,KA8BrC,EA9B4C,eA8B5C,CAAA,EAAA,GAAA;IACA,cAAA,EA7BJ,mBA6BI;IACJ,cAAA,EA7BA,mBA6BA;EACC,CAAA;EAAgB;AAOrC;;;;;;;;;EA0EQ,kBAAA,CAAA,EAAA,CAAA,OAAA,EAAA;IACA,MAAA,EAlGI,OAkGJ;IACA,OAAA,EAlGK,QAkGL;IACA,IAAA,EAlGE,KAkGF;EACA,CAAA,EAAA,GAlGA,qBAkGA,CAlGsB,eAkGtB,CAAA;EACA;;;;EAKE,eAAA,CAAA,EAAA,QACA,MAlGM,gBAkGN,GAlGyB,sBAkGzB,CAlGgD,OAkGhD,EAlGyD,QAkGzD,EAlGmE,oBAkGnE,CAAA,EACA;EACA,mBAAA,CAAA,EAjGc,mBAiGd;EACA,mBAAA,CAAA,EAjGc,mBAiGd;EACA,eAAA,CAAA,EAjGU,eAiGV;EAAU,gBAAA,CAAA,EAhGC,gBAgGD;;;;;;AAQV,cAjGG,yBAiGH,CAAA,OAAA,EAAA,iBA/FS,kBA+FT,EAAA,KAAA,EAAA,aAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,4BAzFoB,kBAyFpB,EAAA,4BAxFoB,kBAwFpB,EAAA,kBAAA,CAAA,CAAA,EAAA,yBAtFiB,MAsFjB,CAAA,MAAA,EAtFgC,6BAsFhC,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA;EACA,CAAA,OAAA;EACA,WAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KA6EN,CA7EM,EAAA;IACA,YAAA,CAAA,EAAA,CAAA,OAAA,EAAA;MAAiB,MAAA,EA5Bc,OA4Bd;MACjB,OAAA,EA7BiD,QA6BjD;IAP6B,CAAA,EAAA,GAtBmC,KAsBnC;IAWnB,YAAA,CAAA,EAhCC,oBAgCD,CA/BZ,OA+BY,EA9BZ,QA8BY,EA7BZ,KA6BY,EA5BZ,oBA4BY,EA3BZ,gBA2BY,EA1BZ,aA0BY,EAzBZ,mBAyBY,CAAA;IAAuB,aAAA,CAAA,EAAA,QAG3B,MAzBI,WAyBJ,GAzBgB,oBAyBhB,CAxBN,OAwBM,EAvBN,QAuBM,EAtBN,KAsBM,EArBN,oBAqBM,EApBN,gBAoBM,EAnBN,WAmBM,CAnBI,CAmBJ,CAAA,EAlBN,mBAkBM,CAAA,EACC;IACH,eAAA,CAAA,EAAA,QACF,MAjBQ,gBAiBR,GAjB2B,oBAiB3B,CAhBF,OAgBE,EAfF,QAeE,EAdF,KAcE,EAbF,oBAaE,EAZF,gBAYE,EAXF,gBAWE,CAXe,CAWf,CAAA,EAVF,mBAUE,CAAA,EAEkC;IAAS,mBAAA,CAAA,EAAA,QAAU,MAR7C,oBAQ6C,GARtB,eAQsB,EAAO;IAAvD,oBAAA,CAAA,EAAA,CAAA,OAAA,EAAA;MAEO,MAAA,EAPR,OAOQ;MACA,OAAA,EAPP,QAOO;MAGR,IAAA,EATF,KASE;IACC,CAAA,EAAA,GATL,eASK;IACH,iBAAA,CAAA,EAAA,CAAA,OAAA,EARG,4BAQH,CARgC,OAQhC,EARyC,QAQzC,EARmD,KAQnD,EAR0D,eAQ1D,CAAA,EAAA,GAAA;MACoB,cAAA,EAPV,mBAOU;MAAtB,cAAA,EANY,mBAMZ;IAEQ,CAAA;IACV,kBAAA,CAAA,EAAA,CAAA,OAAA,EAAA;MACA,MAAA,EAPM,OAON;MACA,OAAA,EAPO,QAOP;MAH6B,IAAA,EAHzB,KAGyB;IAiDX,CAAA,EAAA,GAnDhB,qBAmDgB,CAnDM,eAmDN,CAAA;IAAkB,eAAA,CAAA,EAAA,QAAe,MAjDzC,gBAiDyC,GAjDtB,sBAiDsB,CAhDnD,OAgDmD,EA/CnD,QA+CmD,EA9CnD,oBA8CmD,CAAA,EAEzD;EACA,CAAA;EACA,IAAA,IAAA,CAAA,CAAA,EAAA,MAAA;EAGA;;;;;;;;;;;;;;;;;;;;;;EAuEA,gBAAA,CAAA,QAAA,CAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAAA;IACA,MAAA,EA/EwB,OA+ExB;IACA,OAAA,EAhF0C,QAgF1C;EAXC,CAAA,EAAA,GArEwD,QAqExD,CAAA,EApEA,yBAoEA,CAnED,OAmEC,EAlED,QAkEC,EAjED,QAiEC,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EA9DD,oBA8DC,EAAA,CAAA,CAAA,EA5DD,mBA4DC,EA3DD,mBA2DC,EA1DD,eA0DC,EAzDD,gBAyDC,CAAA;EA2CY;;;;EAKX,mBAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAzDE,oBAyDF,CAxDA,OAwDA,EAvDA,QAuDA,EAtDA,KAsDA,EArDA,oBAqDA,EApDA,gBAoDA,EAnDA,WAmDA,EAlDA,mBAkDA,CAAA,CAAA,EAhDD,yBAgDC,CA/CF,OA+CE,EA9CF,QA8CE,EA7CF,KA6CE,EA5CF,WA4CE,EA3CF,WA2CE,EA1CF,oBA0CE,EAzCF,gBAyCE,EAxCF,mBAwCE,EAvCF,mBAuCE,EAtCF,eAsCE,EArCF,gBAqCE,CAAA;EACA;;;;EAKF,eAAA,CAAA,qBAAA,MAAA,EAAA,QAAA,CAAA,CAAA,WAAA,EAXa,YAWb,EAAA,EAAA,EAVI,oBAUJ,CATE,OASF,EARE,QAQF,EAPE,KAOF,EANE,oBAMF,EALE,gBAKF,EAJE,QAIF,EAHE,mBAGF,CAAA,CAAA,EADC,yBACD,CAAA,OAAA,EACA,QADA,EAEA,KAFA,EAGA,aAHA,EAIA,WAJA,GAAA,QAIoB,YAHpB,GAGmC,QAHnC,EACA,EAGA,oBAHA,EAIA,gBAJA,EAKA,mBALA,EAMA,mBANA,EAOA,eAPA,EAQA,gBARA,CAAA;EACA;;;;;;;EAKA,sBAAA,CAAA,qBAAA,MAAA,EAAA,QAAA,CAAA,CAAA,WAAA,EAqDa,YArDb,EAAA,EAAA,EAsDI,oBAtDJ,CAuDE,OAvDF,EAwDE,QAxDF,EAyDE,KAzDF,EA0DE,oBA1DF,EA2DE,gBA3DF,EA4DE,QA5DF,EA6DE,mBA7DF,CAAA,CAAA,EA+DC,yBA/DD,CAgEA,OAhEA,EAiEA,QAjEA,EAkEA,KAlEA,EAmEA,aAnEA,EAoEA,WApEA,EAqEA,oBArEA,EAsEA,gBAtEA,GAAA,QAsE2B,YArE3B,GAqE0C,QArE1C,EACA,EAqEA,mBArEA,EAsEA,mBAtEA,EAuEA,eAvEA,EAwEA,gBAxEA,CAAA;EAXC;;;EAiEC,WAAA,CAAA,qBAAA,MAAA,EAAA,QAAA,CAAA,CAAA,WAAA,EAgEW,YAhEX,CAAA,EAiED,yBAjEC,CAkEF,OAlEE,EAmEF,QAnEE,EAoEF,KApEE,EAqEF,aArEE,EAsEF,WAtEE,EAuEF,oBAvEE,GAAA,QAuE6B,YAtE7B,GAsE4C,QAtE5C,EACA,EAsEF,gBAtEE,EAuEF,mBAvEE,EAwEF,mBAxEE,EAyEF,eAzEE,EA0EF,gBA1EE,CAAA;EACA;;;EALE,mBAAA,CAAA,qBAAA,MAAA,EAAA,QAAA,CAAA,CAAA,WAAA,EAoHS,YApHT,CAAA,EAqHH,yBArHG,CAsHJ,OAtHI,EAuHJ,QAvHI,EAwHJ,KAxHI,EAyHJ,aAzHI,EA0HJ,WA1HI,EA2HJ,oBA3HI,GAAA,QA2H2B,YAjH/B,GAiH8C,QAjH9C,GAAA,SAAA,EACA,EAiHA,gBAjHA,EAkHA,mBAlHA,EAmHA,mBAnHA,EAoHA,eApHA,EAqHA,gBArHA,CAAA;EACA;;;;;;;;;;;;;;;;;;;;;;EA+DA,kBAAA,CAAA,kBAAA,CAAA,CAAA,WAAA,EAAA,CAAA,OAAA,EAAA;IACA,MAAA,EAgHU,OAhHV;IACA,OAAA,EAgHW,QAhHX;IACA,IAAA,EAgHQ,KAhHR;EAXC,CAAA,EAAA,GA4HK,kBA5HL,CAAA,EA6HA,yBA7HA,CA8HD,OA9HC,EA+HD,QA/HC,EAgID,KAhIC,EAiID,aAjIC,EAkID,WAlIC,EAmID,oBAnIC,EAoID,gBApIC,EAqID,mBArIC,EAsID,mBAtIC,EAuID,kBAvIC,EAwID,gBAxIC,CAAA;EAiDY;;;;;;;;;;;;;;;;EAyEF,0BAAA,CAAA,WAAA,CAAA,CAAA,UAAA,EAAA,CAAA,OAAA,EAAA;IACH,MAAA,EAqEE,OArEF;IACF,OAAA,EAqEK,QArEL;IAEN,IAAA,EAoEQ,KApER;EACA,CAAA,EAAA,GAoEM,qBApEN,CAoE4B,WApE5B,CAAA,CAAA,EAqEC,yBArED,CAsEA,OAtEA,EAuEA,QAvEA,EAwEA,KAxEA,EAyEA,aAzEA,EA0EA,WA1EA,EA2EA,oBA3EA,EA4EA,gBA5EA,EA6EA,mBA7EA,EA8EA,mBA9EA,EA+EA,WA/EA,EAgFA,gBAhFA,CAAA;EACA;;;;;;;;;;;;;;;;;EAuEA,eAAA,CAAA,+BAsD+B,kBAtD/B,EAAA,+BAuD+B,kBAvD/B,CAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAyDc,4BAzDd,CAyD2C,OAzD3C,EAyDoD,QAzDpD,EAyD8D,KAzD9D,EAyDqE,eAzDrE,CAAA,EAAA,GAAA;IACA,cAAA,EAyDkB,sBAzDlB;IACA,cAAA,EAyDkB,sBAzDlB;EACA,CAAA,CAAA,EA0DC,yBA1DD,CA2DA,OA3DA,EA4DA,QA5DA,EA6DA,KA7DA,EA8DA,aA9DA,EA+DA,WA/DA,EAgEA,oBAhEA,EAiEA,gBAjEA,EAkEA,sBAlEA,EAmEA,sBAnEA,EAoEA,eApEA,EAqEA,gBArEA,CAAA;EACA;;;;;EAPC,kBAAA,CAAA,oBAAA,MAAA,EAAA,kBA6GiB,sBA7GjB,CA6GwC,OA7GxC,EA6GiD,QA7GjD,EA6G2D,oBA7G3D,CAAA,CAAA,CAAA,IAAA,EA+GK,KA/GL,EAAA,QAAA,EAgHS,SAhHT,CAAA,EAiHA,yBAjHA,CAkHD,OAlHC,EAmHD,QAnHC,EAoHD,KApHC,EAqHD,aArHC,EAsHD,WAtHC,EAuHD,oBAvHC,EAwHD,gBAxHC,GAwHkB,qBAxHlB,CAwHwC,SAxHxC,CAAA,EAyHD,mBAzHC,EA0HD,mBA1HC,EA2HD,eA3HC,EA4HD,gBA5HC,GAAA,QA4H0B,KAnEI,GAmEI,UAnEJ,CAmEe,SAnEf,CAAA,EACA,CAAA;EAEY;;;;EAA7B,MAAA,CAAA,iBAAA,CAAA,CAAA,WAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,GAuG0C,WAvG1C,CAAA,EAuGwD,WAvGxD;EACI;;;EAKlB,KAAA,CAAA,CAAA,EAwGO,kBAxGP,CAyGA,OAzGA,EA0GA,QA1GA,EA2GA,KA3GA,EA4GA,aA5GA,EA6GA,WA7GA,EA8GA,oBA9GA,EA+GA,gBA/GA,EAgHA,mBAhHA,EAiHA,mBAjHA,EAkHA,eAlHA,EAmHA,gBAnHA,CAAA;;;;;AAKA,iBAkIY,cAlIZ,CAAA,UAAA,CAAA,CAAA,EAAA,iBAoIe,kBApIf,GAoIoC,kBApIpC,EAAA,4BAqI0B,kBArI1B,GAqI+C,kBArI/C,EAAA,4BAsI0B,kBAtI1B,GAsI+C,kBAtI/C,EAAA,kBAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EA0ID,yBA1IC,CA2IF,OA3IE,EA4IF,QA5IE,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAkJF,mBAlJE,EAmJF,mBAnJE,EAoJF,eApJE,EAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"fragment-definition-builder.d.ts","names":[],"sources":["../../src/api/fragment-definition-builder.ts"],"sourcesContent":[],"mappings":"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"}
@@ -269,8 +269,9 @@ var FragmentDefinitionBuilder = class FragmentDefinitionBuilder {
269
269
  }
270
270
  /**
271
271
  * Register a linked fragment that will be automatically instantiated.
272
- * Linked fragments are service-only (no routes) and share the same config/options as the parent.
273
- * All services from the linked fragment will be available as private services.
272
+ * Linked fragments share the same config/options as the parent and their services
273
+ * are exposed as private services. Routes are not exposed by default, but the
274
+ * instantiator may mount internal linked fragment routes under an internal prefix.
274
275
  */
275
276
  withLinkedFragment(name, callback) {
276
277
  const newLinkedFragments = {
@@ -1 +1 @@
1
- {"version":3,"file":"fragment-definition-builder.js","names":["#name","#dependencies","#baseServices","#namedServices","#privateServices","#serviceDependencies","#createRequestStorage","#createThisContext","#getExternalStorage","#linkedFragments"],"sources":["../../src/api/fragment-definition-builder.ts"],"sourcesContent":["import type { RequestThisContext } from \"./api\";\nimport type { FragnoPublicConfig } from \"./shared-types\";\nimport type { RequestContextStorage } from \"./request-context-storage\";\nimport type {\n FragnoInstantiatedFragment,\n AnyFragnoInstantiatedFragment,\n} from \"./fragment-instantiator\";\n\n/**\n * Metadata for a service dependency\n */\ninterface ServiceMetadata {\n /** Name of the service */\n name: string;\n /** Whether this service is required (false means optional) */\n required: boolean;\n}\n\n/**\n * Callback that instantiates a linked fragment.\n * Receives the same context as the main fragment and returns an instantiated fragment.\n */\nexport type LinkedFragmentCallback<\n TConfig,\n TOptions extends FragnoPublicConfig,\n TServiceDependencies,\n> = (context: {\n config: TConfig;\n options: TOptions;\n serviceDependencies?: TServiceDependencies;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n}) => FragnoInstantiatedFragment<any, any, any, any, any, any, any>;\n\n/**\n * Extract the services type from a FragnoInstantiatedFragment\n */\nexport type ExtractLinkedServices<T> = T extends (\n ...args: never[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) => FragnoInstantiatedFragment<any, any, infer TServices, any, any, any, any>\n ? TServices\n : never;\n\n/**\n * Context passed to the request context factory function.\n */\nexport type RequestContextFactoryContext<\n TConfig,\n TOptions extends FragnoPublicConfig,\n TDeps,\n TRequestStorage,\n> = {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n storage: RequestContextStorage<TRequestStorage>;\n};\n\n/**\n * Context object passed to service constructor functions\n */\nexport type ServiceContext<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext extends RequestThisContext,\n> = {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n serviceDeps: TServiceDependencies;\n privateServices: TPrivateServices;\n /**\n * Helper to define services with proper `this` context typing.\n * Use this to wrap your service methods when they need access to `this`.\n */\n defineService: <T>(svc: T & ThisType<TServiceThisContext>) => T;\n};\n\n/**\n * Service constructor function type\n */\nexport type ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TService,\n TServiceThisContext extends RequestThisContext,\n> = (\n context: ServiceContext<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext\n >,\n) => TService;\n\n/**\n * Fragment definition interface that supports both regular and database fragments.\n * This is the core definition that will be used for fragment instantiation.\n */\nexport interface FragmentDefinition<\n TConfig,\n TOptions extends FragnoPublicConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext extends RequestThisContext,\n THandlerThisContext extends RequestThisContext,\n TRequestStorage = {},\n TLinkedFragments extends Record<string, AnyFragnoInstantiatedFragment> = {},\n> {\n name: string;\n\n // Core callbacks - all take context objects with separate deps and serviceDeps\n dependencies?: (context: { config: TConfig; options: TOptions }) => TDeps;\n\n baseServices?: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TBaseServices,\n TServiceThisContext\n >;\n\n // Named services stored as factory functions\n namedServices?: {\n [K in keyof TServices]: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TServices[K],\n TServiceThisContext\n >;\n };\n\n // Private services - only accessible internally when defining other services\n privateServices?: {\n [K in keyof TPrivateServices]: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices, // Private services can access other private services\n TPrivateServices[K],\n TServiceThisContext\n >;\n };\n\n // Service dependency metadata\n serviceDependencies?: {\n [K in keyof TServiceDependencies]: ServiceMetadata;\n };\n\n /**\n * Optional factory function to create the initial request storage data.\n * This is called at the start of each request to initialize the storage.\n * The returned object can be mutated throughout the request lifecycle.\n *\n * @example\n * ```ts\n * createRequestStorage: ({ config, options, deps }) => ({\n * counter: 0,\n * userId: deps.currentUserId\n * })\n * ```\n */\n createRequestStorage?: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => TRequestStorage;\n\n /**\n * Optional factory function to create the this contexts for services and handlers.\n * Returns separate contexts: serviceContext (may be restricted) and handlerContext (full access).\n * Both contexts should contain only methods or getters that read from storage.\n *\n * @example\n * ```ts\n * createThisContext: ({ storage }) => ({\n * serviceContext: {\n * getUnitOfWork: () => restrictedUOW // Without execute methods\n * },\n * handlerContext: {\n * getUnitOfWork: () => fullUOW // With execute methods\n * }\n * })\n * ```\n */\n createThisContext?: (\n context: RequestContextFactoryContext<TConfig, TOptions, TDeps, TRequestStorage>,\n ) => {\n serviceContext: TServiceThisContext;\n handlerContext: THandlerThisContext;\n };\n\n /**\n * Optional factory function to get an external RequestContextStorage instance.\n * When provided, this storage will be used instead of creating a new one.\n * This allows multiple fragments to share the same storage (e.g., database fragments sharing adapter storage).\n *\n * @example\n * ```ts\n * getExternalStorage: ({ options }) => options.databaseAdapter.contextStorage\n * ```\n */\n getExternalStorage?: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => RequestContextStorage<TRequestStorage>;\n\n /**\n * Optional linked fragments that will be automatically instantiated with this fragment.\n * Linked fragments are service-only and share the same config/options as the parent.\n */\n linkedFragments?: {\n [K in keyof TLinkedFragments]: LinkedFragmentCallback<TConfig, TOptions, TServiceDependencies>;\n };\n\n $serviceThisContext?: TServiceThisContext;\n $handlerThisContext?: THandlerThisContext;\n $requestStorage?: TRequestStorage;\n $linkedFragments?: TLinkedFragments;\n}\n\n/**\n * Builder class for creating fragment definitions.\n * This provides a fluent API for defining fragments with type safety.\n */\nexport class FragmentDefinitionBuilder<\n TConfig,\n TOptions extends FragnoPublicConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext extends RequestThisContext,\n THandlerThisContext extends RequestThisContext,\n TRequestStorage = {},\n TLinkedFragments extends Record<string, AnyFragnoInstantiatedFragment> = {},\n> {\n #name: string;\n #dependencies?: (context: { config: TConfig; options: TOptions }) => TDeps;\n #baseServices?: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TBaseServices,\n TServiceThisContext\n >;\n #namedServices?: {\n [K in keyof TServices]: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TServices[K],\n TServiceThisContext\n >;\n };\n #privateServices?: {\n [K in keyof TPrivateServices]: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TPrivateServices[K],\n TServiceThisContext\n >;\n };\n #serviceDependencies?: {\n [K in keyof TServiceDependencies]: ServiceMetadata;\n };\n #createRequestStorage?: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => TRequestStorage;\n #createThisContext?: (\n context: RequestContextFactoryContext<TConfig, TOptions, TDeps, TRequestStorage>,\n ) => {\n serviceContext: TServiceThisContext;\n handlerContext: THandlerThisContext;\n };\n #getExternalStorage?: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => RequestContextStorage<TRequestStorage>;\n #linkedFragments?: {\n [K in keyof TLinkedFragments]: LinkedFragmentCallback<TConfig, TOptions, TServiceDependencies>;\n };\n\n constructor(\n name: string,\n state?: {\n dependencies?: (context: { config: TConfig; options: TOptions }) => TDeps;\n baseServices?: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TBaseServices,\n TServiceThisContext\n >;\n namedServices?: {\n [K in keyof TServices]: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TServices[K],\n TServiceThisContext\n >;\n };\n privateServices?: {\n [K in keyof TPrivateServices]: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TPrivateServices[K],\n TServiceThisContext\n >;\n };\n serviceDependencies?: {\n [K in keyof TServiceDependencies]: ServiceMetadata;\n };\n createRequestStorage?: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => TRequestStorage;\n createThisContext?: (\n context: RequestContextFactoryContext<TConfig, TOptions, TDeps, TRequestStorage>,\n ) => {\n serviceContext: TServiceThisContext;\n handlerContext: THandlerThisContext;\n };\n getExternalStorage?: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => RequestContextStorage<TRequestStorage>;\n linkedFragments?: {\n [K in keyof TLinkedFragments]: LinkedFragmentCallback<\n TConfig,\n TOptions,\n TServiceDependencies\n >;\n };\n },\n ) {\n this.#name = name;\n if (state) {\n this.#dependencies = state.dependencies;\n this.#baseServices = state.baseServices;\n this.#namedServices = state.namedServices;\n this.#privateServices = state.privateServices;\n this.#serviceDependencies = state.serviceDependencies;\n this.#createRequestStorage = state.createRequestStorage;\n this.#createThisContext = state.createThisContext;\n this.#getExternalStorage = state.getExternalStorage;\n this.#linkedFragments = state.linkedFragments;\n }\n }\n\n get name(): string {\n return this.#name;\n }\n\n /**\n * Define dependencies for this fragment.\n * Dependencies are available to services and handlers.\n *\n * **IMPORTANT**: This method resets all services, storage, and context configurations.\n * Always call `withDependencies` early in the builder chain, before defining services\n * or request storage/context.\n *\n * @example\n * ```typescript\n * // ✅ GOOD: Dependencies set first\n * defineFragment(\"my-fragment\")\n * .withDependencies(() => ({ apiKey: \"...\" }))\n * .withRequestStorage(({ deps }) => ({ userId: deps.apiKey }))\n * .providesService(\"myService\", ...)\n *\n * // ❌ BAD: Dependencies set late (erases storage setup)\n * defineFragment(\"my-fragment\")\n * .withRequestStorage(() => ({ userId: \"...\" })) // This gets erased!\n * .withDependencies(() => ({ apiKey: \"...\" }))\n * ```\n */\n withDependencies<TNewDeps>(\n fn: (context: { config: TConfig; options: TOptions }) => TNewDeps,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TNewDeps,\n {},\n {},\n TServiceDependencies,\n {},\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n > {\n // Warn if we're discarding existing configuration\n if (\n this.#baseServices ||\n this.#namedServices ||\n this.#privateServices ||\n this.#createRequestStorage ||\n this.#createThisContext ||\n this.#getExternalStorage\n ) {\n console.warn(\n `[Fragno] Warning: withDependencies() on fragment \"${this.#name}\" is resetting previously configured services, request storage, or request context. ` +\n `To avoid this, call withDependencies() earlier in the builder chain, before configuring services or storage.`,\n );\n }\n\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TNewDeps,\n {},\n {},\n TServiceDependencies,\n {},\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: fn,\n baseServices: undefined,\n namedServices: undefined,\n privateServices: undefined,\n serviceDependencies: this.#serviceDependencies,\n // Reset storage/context functions since deps type changed - they must be reconfigured\n createRequestStorage: undefined,\n createThisContext: undefined,\n getExternalStorage: undefined,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Define base (unnamed) services for this fragment.\n * Base services are accessible directly on the fragment instance.\n */\n providesBaseService<TNewService>(\n fn: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TNewService,\n TServiceThisContext\n >,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TNewService,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n > {\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TNewService,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: this.#dependencies,\n baseServices: fn,\n namedServices: this.#namedServices,\n privateServices: this.#privateServices,\n serviceDependencies: this.#serviceDependencies,\n createRequestStorage: this.#createRequestStorage,\n createThisContext: this.#createThisContext,\n getExternalStorage: this.#getExternalStorage,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Provide a named service that other fragments or users can use.\n * Named services are accessible as fragment.serviceName.method()\n */\n providesService<TServiceName extends string, TService>(\n serviceName: TServiceName,\n fn: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TService,\n TServiceThisContext\n >,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices & { [K in TServiceName]: TService },\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n > {\n // Type assertion needed because TypeScript can't verify object spread with mapped types\n const newNamedServices = {\n ...this.#namedServices,\n [serviceName]: fn,\n } as {\n [K in keyof (TServices & { [K in TServiceName]: TService })]: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n (TServices & { [K in TServiceName]: TService })[K],\n TServiceThisContext\n >;\n };\n\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices & { [K in TServiceName]: TService },\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: newNamedServices,\n privateServices: this.#privateServices,\n serviceDependencies: this.#serviceDependencies,\n createRequestStorage: this.#createRequestStorage,\n createThisContext: this.#createThisContext,\n getExternalStorage: this.#getExternalStorage,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Provide a private service that is only accessible to the fragment author.\n * Private services are NOT exposed on the fragment instance, but can be used\n * when defining other services (baseServices, namedServices, and other privateServices).\n * Private services are instantiated in order, so earlier private services are available\n * to later ones.\n */\n providesPrivateService<TServiceName extends string, TService>(\n serviceName: TServiceName,\n fn: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TService,\n TServiceThisContext\n >,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices & { [K in TServiceName]: TService },\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n > {\n // Type assertion needed because TypeScript can't verify object spread with mapped types\n const newPrivateServices = {\n ...this.#privateServices,\n [serviceName]: fn,\n } as {\n [K in keyof (TPrivateServices & { [K in TServiceName]: TService })]: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices & { [K in TServiceName]: TService },\n (TPrivateServices & { [K in TServiceName]: TService })[K],\n TServiceThisContext\n >;\n };\n\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices & { [K in TServiceName]: TService },\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: this.#namedServices,\n privateServices: newPrivateServices,\n serviceDependencies: this.#serviceDependencies,\n createRequestStorage: this.#createRequestStorage,\n createThisContext: this.#createThisContext,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Declare that this fragment uses a required service provided by the runtime.\n */\n usesService<TServiceName extends string, TService>(\n serviceName: TServiceName,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies & { [K in TServiceName]: TService },\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n > {\n // Type assertion needed because TypeScript can't verify object spread with mapped types\n const newServiceDependencies = {\n ...this.#serviceDependencies,\n [serviceName]: { name: serviceName, required: true },\n } as {\n [K in keyof (TServiceDependencies & { [K in TServiceName]: TService })]: ServiceMetadata;\n };\n\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies & { [K in TServiceName]: TService },\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: this.#namedServices,\n privateServices: this.#privateServices,\n serviceDependencies: newServiceDependencies,\n createRequestStorage: this.#createRequestStorage,\n createThisContext: this.#createThisContext,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Declare that this fragment uses an optional service provided by the runtime.\n */\n usesOptionalService<TServiceName extends string, TService>(\n serviceName: TServiceName,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies & { [K in TServiceName]: TService | undefined },\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n > {\n // Type assertion needed because TypeScript can't verify object spread with mapped types\n const newServiceDependencies = {\n ...this.#serviceDependencies,\n [serviceName]: { name: serviceName, required: false },\n } as {\n [K in keyof (TServiceDependencies & {\n [K in TServiceName]: TService | undefined;\n })]: ServiceMetadata;\n };\n\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies & { [K in TServiceName]: TService | undefined },\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: this.#namedServices,\n privateServices: this.#privateServices,\n serviceDependencies: newServiceDependencies,\n createRequestStorage: this.#createRequestStorage,\n createThisContext: this.#createThisContext,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Define the type and initial data stored in AsyncLocalStorage for per-request isolation.\n * This should be called before withThisContext if you need to store request-specific data.\n *\n * @param initializer Function that returns the initial storage data for each request\n *\n * @example\n * ```typescript\n * .withRequestStorage(({ config, options, deps }) => ({\n * counter: 0,\n * userId: deps.currentUserId\n * }))\n * .withThisContext(({ storage }) => ({\n * serviceContext: {\n * get counter() { return storage.getStore()!.counter; }\n * },\n * handlerContext: {\n * get counter() { return storage.getStore()!.counter; }\n * }\n * }))\n * ```\n */\n withRequestStorage<TNewRequestStorage>(\n initializer: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => TNewRequestStorage,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TNewRequestStorage,\n TLinkedFragments\n > {\n // getExternalStorage can coexist with createRequestStorage (they work together)\n // Cast is safe when storage type changes: the external storage container adapts to hold the new type\n const preservedExternalStorage = this.#getExternalStorage\n ? (this.#getExternalStorage as unknown as (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => RequestContextStorage<TNewRequestStorage>)\n : undefined;\n\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TNewRequestStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: this.#namedServices,\n privateServices: this.#privateServices,\n serviceDependencies: this.#serviceDependencies,\n createRequestStorage: initializer,\n // Reset context function since storage type changed - it must be reconfigured\n createThisContext: undefined,\n getExternalStorage: preservedExternalStorage,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Use an externally-provided RequestContextStorage instance.\n * This allows multiple fragments to share the same storage instance.\n * Useful when fragments need to coordinate (e.g., database fragments sharing adapter storage).\n * Note: You must still call withRequestStorage to provide the initial storage data.\n *\n * @example\n * ```typescript\n * .withExternalRequestStorage(({ options }) =>\n * options.databaseAdapter.contextStorage\n * )\n * .withRequestStorage(({ options }) => ({\n * uow: options.databaseAdapter.db.createUnitOfWork()\n * }))\n * ```\n */\n withExternalRequestStorage<TNewStorage>(\n getStorage: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => RequestContextStorage<TNewStorage>,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TNewStorage,\n TLinkedFragments\n > {\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TNewStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: this.#namedServices,\n privateServices: this.#privateServices,\n serviceDependencies: this.#serviceDependencies,\n // Reset storage/context functions since storage type changed - they must be reconfigured\n createRequestStorage: undefined,\n createThisContext: undefined,\n getExternalStorage: getStorage,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Set the this contexts for services and handlers in this fragment.\n * Both contexts should contain only methods or getters that read from storage.\n * This ensures proper per-request isolation via AsyncLocalStorage.\n *\n * @example\n * ```ts\n * .withThisContext(({ storage }) => ({\n * serviceContext: {\n * get myNumber() { return storage.getStore()?.myNumber ?? 0; }\n * },\n * handlerContext: {\n * get myNumber() { return storage.getStore()?.myNumber ?? 0; }\n * }\n * }))\n * ```\n */\n withThisContext<\n TNewServiceThisContext extends RequestThisContext,\n TNewHandlerThisContext extends RequestThisContext,\n >(\n fn: (context: RequestContextFactoryContext<TConfig, TOptions, TDeps, TRequestStorage>) => {\n serviceContext: TNewServiceThisContext;\n handlerContext: TNewHandlerThisContext;\n },\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TNewServiceThisContext,\n TNewHandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n > {\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TNewServiceThisContext,\n TNewHandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: this.#namedServices,\n privateServices: this.#privateServices,\n serviceDependencies: this.#serviceDependencies,\n createRequestStorage: this.#createRequestStorage,\n createThisContext: fn,\n getExternalStorage: this.#getExternalStorage,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Register a linked fragment that will be automatically instantiated.\n * Linked fragments are service-only (no routes) and share the same config/options as the parent.\n * All services from the linked fragment will be available as private services.\n */\n withLinkedFragment<\n const TName extends string,\n TCallback extends LinkedFragmentCallback<TConfig, TOptions, TServiceDependencies>,\n >(\n name: TName,\n callback: TCallback,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices & ExtractLinkedServices<TCallback>,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments & { [K in TName]: ReturnType<TCallback> }\n > {\n const newLinkedFragments = {\n ...this.#linkedFragments,\n [name]: callback,\n };\n\n // Cast is safe: We're declaring that the returned builder has TPrivateServices & ExtractLinkedServices<TCallback>,\n // even though the runtime privateServices hasn't changed yet. The linked fragment services will be\n // merged into privateServices at instantiation time by the instantiator.\n return new FragmentDefinitionBuilder(this.#name, {\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: this.#namedServices,\n privateServices: this.#privateServices,\n serviceDependencies: this.#serviceDependencies,\n createRequestStorage: this.#createRequestStorage,\n createThisContext: this.#createThisContext,\n getExternalStorage: this.#getExternalStorage,\n linkedFragments: newLinkedFragments,\n }) as FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices & ExtractLinkedServices<TCallback>,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments & { [K in TName]: ReturnType<TCallback> }\n >;\n }\n\n /**\n * Extend this builder with a transformation function.\n * This enables fluent API extensions like `.extend(withDatabase(schema))`.\n */\n extend<const TNewBuilder>(transformer: (builder: this) => TNewBuilder): TNewBuilder {\n return transformer(this);\n }\n\n /**\n * Build the final fragment definition\n */\n build(): FragmentDefinition<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n > {\n return {\n name: this.#name,\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: this.#namedServices,\n privateServices: this.#privateServices,\n serviceDependencies: this.#serviceDependencies,\n createRequestStorage: this.#createRequestStorage,\n createThisContext: this.#createThisContext,\n getExternalStorage: this.#getExternalStorage,\n linkedFragments: this.#linkedFragments,\n };\n }\n}\n\n/**\n * Create a new fragment definition builder\n */\nexport function defineFragment<\n TConfig = {},\n TOptions extends FragnoPublicConfig = FragnoPublicConfig,\n TServiceThisContext extends RequestThisContext = RequestThisContext,\n THandlerThisContext extends RequestThisContext = RequestThisContext,\n TRequestStorage = {},\n>(\n name: string,\n): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n {},\n {},\n {},\n {},\n {},\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n {}\n> {\n return new FragmentDefinitionBuilder(name);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"fragment-definition-builder.js","names":["#name","#dependencies","#baseServices","#namedServices","#privateServices","#serviceDependencies","#createRequestStorage","#createThisContext","#getExternalStorage","#linkedFragments"],"sources":["../../src/api/fragment-definition-builder.ts"],"sourcesContent":["import type { RequestThisContext } from \"./api\";\nimport type { FragnoPublicConfig } from \"./shared-types\";\nimport type { RequestContextStorage } from \"./request-context-storage\";\nimport type {\n FragnoInstantiatedFragment,\n AnyFragnoInstantiatedFragment,\n} from \"./fragment-instantiator\";\n\n/**\n * Metadata for a service dependency\n */\ninterface ServiceMetadata {\n /** Name of the service */\n name: string;\n /** Whether this service is required (false means optional) */\n required: boolean;\n}\n\n/**\n * Callback that instantiates a linked fragment.\n * Receives the same context as the main fragment and returns an instantiated fragment.\n */\nexport type LinkedFragmentCallback<\n TConfig,\n TOptions extends FragnoPublicConfig,\n TServiceDependencies,\n TFragment extends AnyFragnoInstantiatedFragment = AnyFragnoInstantiatedFragment,\n> = (context: {\n config: TConfig;\n options: TOptions;\n serviceDependencies?: TServiceDependencies;\n}) => TFragment;\n\n/**\n * Extract the services type from a FragnoInstantiatedFragment\n */\nexport type ExtractLinkedServices<T> = T extends (\n ...args: never[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) => FragnoInstantiatedFragment<any, any, infer TServices, any, any, any, any>\n ? TServices\n : never;\n\n/**\n * Context passed to the request context factory function.\n */\nexport type RequestContextFactoryContext<\n TConfig,\n TOptions extends FragnoPublicConfig,\n TDeps,\n TRequestStorage,\n> = {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n storage: RequestContextStorage<TRequestStorage>;\n};\n\n/**\n * Context object passed to service constructor functions\n */\nexport type ServiceContext<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext extends RequestThisContext,\n> = {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n serviceDeps: TServiceDependencies;\n privateServices: TPrivateServices;\n /**\n * Helper to define services with proper `this` context typing.\n * Use this to wrap your service methods when they need access to `this`.\n */\n defineService: <T>(svc: T & ThisType<TServiceThisContext>) => T;\n};\n\n/**\n * Service constructor function type\n */\nexport type ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TService,\n TServiceThisContext extends RequestThisContext,\n> = (\n context: ServiceContext<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext\n >,\n) => TService;\n\n/**\n * Fragment definition interface that supports both regular and database fragments.\n * This is the core definition that will be used for fragment instantiation.\n */\nexport interface FragmentDefinition<\n TConfig,\n TOptions extends FragnoPublicConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext extends RequestThisContext,\n THandlerThisContext extends RequestThisContext,\n TRequestStorage = {},\n TLinkedFragments extends Record<string, AnyFragnoInstantiatedFragment> = {},\n> {\n name: string;\n\n // Core callbacks - all take context objects with separate deps and serviceDeps\n dependencies?: (context: { config: TConfig; options: TOptions }) => TDeps;\n\n baseServices?: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TBaseServices,\n TServiceThisContext\n >;\n\n // Named services stored as factory functions\n namedServices?: {\n [K in keyof TServices]: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TServices[K],\n TServiceThisContext\n >;\n };\n\n // Private services - only accessible internally when defining other services\n privateServices?: {\n [K in keyof TPrivateServices]: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices, // Private services can access other private services\n TPrivateServices[K],\n TServiceThisContext\n >;\n };\n\n // Service dependency metadata\n serviceDependencies?: {\n [K in keyof TServiceDependencies]: ServiceMetadata;\n };\n\n /**\n * Optional factory function to create the initial request storage data.\n * This is called at the start of each request to initialize the storage.\n * The returned object can be mutated throughout the request lifecycle.\n *\n * @example\n * ```ts\n * createRequestStorage: ({ config, options, deps }) => ({\n * counter: 0,\n * userId: deps.currentUserId\n * })\n * ```\n */\n createRequestStorage?: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => TRequestStorage;\n\n /**\n * Optional factory function to create the this contexts for services and handlers.\n * Returns separate contexts: serviceContext (may be restricted) and handlerContext (full access).\n * Both contexts should contain only methods or getters that read from storage.\n *\n * @example\n * ```ts\n * createThisContext: ({ storage }) => ({\n * serviceContext: {\n * getUnitOfWork: () => restrictedUOW // Without execute methods\n * },\n * handlerContext: {\n * getUnitOfWork: () => fullUOW // With execute methods\n * }\n * })\n * ```\n */\n createThisContext?: (\n context: RequestContextFactoryContext<TConfig, TOptions, TDeps, TRequestStorage>,\n ) => {\n serviceContext: TServiceThisContext;\n handlerContext: THandlerThisContext;\n };\n\n /**\n * Optional factory function to get an external RequestContextStorage instance.\n * When provided, this storage will be used instead of creating a new one.\n * This allows multiple fragments to share the same storage (e.g., database fragments sharing adapter storage).\n *\n * @example\n * ```ts\n * getExternalStorage: ({ options }) => options.databaseAdapter.contextStorage\n * ```\n */\n getExternalStorage?: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => RequestContextStorage<TRequestStorage>;\n\n /**\n * Optional factory for internal data attached to fragment.$internal.\n */\n internalDataFactory?: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n linkedFragments: TLinkedFragments;\n }) => Record<string, unknown> | void;\n\n /**\n * Optional linked fragments that will be automatically instantiated with this fragment.\n * Linked fragments are service-only and share the same config/options as the parent.\n */\n linkedFragments?: {\n [K in keyof TLinkedFragments]: LinkedFragmentCallback<\n TConfig,\n TOptions,\n TServiceDependencies,\n TLinkedFragments[K]\n >;\n };\n\n $serviceThisContext?: TServiceThisContext;\n $handlerThisContext?: THandlerThisContext;\n $requestStorage?: TRequestStorage;\n $linkedFragments?: TLinkedFragments;\n}\n\n/**\n * Builder class for creating fragment definitions.\n * This provides a fluent API for defining fragments with type safety.\n */\nexport class FragmentDefinitionBuilder<\n TConfig,\n TOptions extends FragnoPublicConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext extends RequestThisContext,\n THandlerThisContext extends RequestThisContext,\n TRequestStorage = {},\n TLinkedFragments extends Record<string, AnyFragnoInstantiatedFragment> = {},\n> {\n #name: string;\n #dependencies?: (context: { config: TConfig; options: TOptions }) => TDeps;\n #baseServices?: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TBaseServices,\n TServiceThisContext\n >;\n #namedServices?: {\n [K in keyof TServices]: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TServices[K],\n TServiceThisContext\n >;\n };\n #privateServices?: {\n [K in keyof TPrivateServices]: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TPrivateServices[K],\n TServiceThisContext\n >;\n };\n #serviceDependencies?: {\n [K in keyof TServiceDependencies]: ServiceMetadata;\n };\n #createRequestStorage?: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => TRequestStorage;\n #createThisContext?: (\n context: RequestContextFactoryContext<TConfig, TOptions, TDeps, TRequestStorage>,\n ) => {\n serviceContext: TServiceThisContext;\n handlerContext: THandlerThisContext;\n };\n #getExternalStorage?: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => RequestContextStorage<TRequestStorage>;\n #linkedFragments?: {\n [K in keyof TLinkedFragments]: LinkedFragmentCallback<\n TConfig,\n TOptions,\n TServiceDependencies,\n TLinkedFragments[K]\n >;\n };\n\n constructor(\n name: string,\n state?: {\n dependencies?: (context: { config: TConfig; options: TOptions }) => TDeps;\n baseServices?: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TBaseServices,\n TServiceThisContext\n >;\n namedServices?: {\n [K in keyof TServices]: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TServices[K],\n TServiceThisContext\n >;\n };\n privateServices?: {\n [K in keyof TPrivateServices]: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TPrivateServices[K],\n TServiceThisContext\n >;\n };\n serviceDependencies?: {\n [K in keyof TServiceDependencies]: ServiceMetadata;\n };\n createRequestStorage?: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => TRequestStorage;\n createThisContext?: (\n context: RequestContextFactoryContext<TConfig, TOptions, TDeps, TRequestStorage>,\n ) => {\n serviceContext: TServiceThisContext;\n handlerContext: THandlerThisContext;\n };\n getExternalStorage?: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => RequestContextStorage<TRequestStorage>;\n linkedFragments?: {\n [K in keyof TLinkedFragments]: LinkedFragmentCallback<\n TConfig,\n TOptions,\n TServiceDependencies,\n TLinkedFragments[K]\n >;\n };\n },\n ) {\n this.#name = name;\n if (state) {\n this.#dependencies = state.dependencies;\n this.#baseServices = state.baseServices;\n this.#namedServices = state.namedServices;\n this.#privateServices = state.privateServices;\n this.#serviceDependencies = state.serviceDependencies;\n this.#createRequestStorage = state.createRequestStorage;\n this.#createThisContext = state.createThisContext;\n this.#getExternalStorage = state.getExternalStorage;\n this.#linkedFragments = state.linkedFragments;\n }\n }\n\n get name(): string {\n return this.#name;\n }\n\n /**\n * Define dependencies for this fragment.\n * Dependencies are available to services and handlers.\n *\n * **IMPORTANT**: This method resets all services, storage, and context configurations.\n * Always call `withDependencies` early in the builder chain, before defining services\n * or request storage/context.\n *\n * @example\n * ```typescript\n * // ✅ GOOD: Dependencies set first\n * defineFragment(\"my-fragment\")\n * .withDependencies(() => ({ apiKey: \"...\" }))\n * .withRequestStorage(({ deps }) => ({ userId: deps.apiKey }))\n * .providesService(\"myService\", ...)\n *\n * // ❌ BAD: Dependencies set late (erases storage setup)\n * defineFragment(\"my-fragment\")\n * .withRequestStorage(() => ({ userId: \"...\" })) // This gets erased!\n * .withDependencies(() => ({ apiKey: \"...\" }))\n * ```\n */\n withDependencies<TNewDeps>(\n fn: (context: { config: TConfig; options: TOptions }) => TNewDeps,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TNewDeps,\n {},\n {},\n TServiceDependencies,\n {},\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n > {\n // Warn if we're discarding existing configuration\n if (\n this.#baseServices ||\n this.#namedServices ||\n this.#privateServices ||\n this.#createRequestStorage ||\n this.#createThisContext ||\n this.#getExternalStorage\n ) {\n console.warn(\n `[Fragno] Warning: withDependencies() on fragment \"${this.#name}\" is resetting previously configured services, request storage, or request context. ` +\n `To avoid this, call withDependencies() earlier in the builder chain, before configuring services or storage.`,\n );\n }\n\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TNewDeps,\n {},\n {},\n TServiceDependencies,\n {},\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: fn,\n baseServices: undefined,\n namedServices: undefined,\n privateServices: undefined,\n serviceDependencies: this.#serviceDependencies,\n // Reset storage/context functions since deps type changed - they must be reconfigured\n createRequestStorage: undefined,\n createThisContext: undefined,\n getExternalStorage: undefined,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Define base (unnamed) services for this fragment.\n * Base services are accessible directly on the fragment instance.\n */\n providesBaseService<TNewService>(\n fn: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TNewService,\n TServiceThisContext\n >,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TNewService,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n > {\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TNewService,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: this.#dependencies,\n baseServices: fn,\n namedServices: this.#namedServices,\n privateServices: this.#privateServices,\n serviceDependencies: this.#serviceDependencies,\n createRequestStorage: this.#createRequestStorage,\n createThisContext: this.#createThisContext,\n getExternalStorage: this.#getExternalStorage,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Provide a named service that other fragments or users can use.\n * Named services are accessible as fragment.serviceName.method()\n */\n providesService<TServiceName extends string, TService>(\n serviceName: TServiceName,\n fn: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TService,\n TServiceThisContext\n >,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices & { [K in TServiceName]: TService },\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n > {\n // Type assertion needed because TypeScript can't verify object spread with mapped types\n const newNamedServices = {\n ...this.#namedServices,\n [serviceName]: fn,\n } as {\n [K in keyof (TServices & { [K in TServiceName]: TService })]: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n (TServices & { [K in TServiceName]: TService })[K],\n TServiceThisContext\n >;\n };\n\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices & { [K in TServiceName]: TService },\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: newNamedServices,\n privateServices: this.#privateServices,\n serviceDependencies: this.#serviceDependencies,\n createRequestStorage: this.#createRequestStorage,\n createThisContext: this.#createThisContext,\n getExternalStorage: this.#getExternalStorage,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Provide a private service that is only accessible to the fragment author.\n * Private services are NOT exposed on the fragment instance, but can be used\n * when defining other services (baseServices, namedServices, and other privateServices).\n * Private services are instantiated in order, so earlier private services are available\n * to later ones.\n */\n providesPrivateService<TServiceName extends string, TService>(\n serviceName: TServiceName,\n fn: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices,\n TService,\n TServiceThisContext\n >,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices & { [K in TServiceName]: TService },\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n > {\n // Type assertion needed because TypeScript can't verify object spread with mapped types\n const newPrivateServices = {\n ...this.#privateServices,\n [serviceName]: fn,\n } as {\n [K in keyof (TPrivateServices & { [K in TServiceName]: TService })]: ServiceConstructorFn<\n TConfig,\n TOptions,\n TDeps,\n TServiceDependencies,\n TPrivateServices & { [K in TServiceName]: TService },\n (TPrivateServices & { [K in TServiceName]: TService })[K],\n TServiceThisContext\n >;\n };\n\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices & { [K in TServiceName]: TService },\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: this.#namedServices,\n privateServices: newPrivateServices,\n serviceDependencies: this.#serviceDependencies,\n createRequestStorage: this.#createRequestStorage,\n createThisContext: this.#createThisContext,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Declare that this fragment uses a required service provided by the runtime.\n */\n usesService<TServiceName extends string, TService>(\n serviceName: TServiceName,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies & { [K in TServiceName]: TService },\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n > {\n // Type assertion needed because TypeScript can't verify object spread with mapped types\n const newServiceDependencies = {\n ...this.#serviceDependencies,\n [serviceName]: { name: serviceName, required: true },\n } as {\n [K in keyof (TServiceDependencies & { [K in TServiceName]: TService })]: ServiceMetadata;\n };\n\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies & { [K in TServiceName]: TService },\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: this.#namedServices,\n privateServices: this.#privateServices,\n serviceDependencies: newServiceDependencies,\n createRequestStorage: this.#createRequestStorage,\n createThisContext: this.#createThisContext,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Declare that this fragment uses an optional service provided by the runtime.\n */\n usesOptionalService<TServiceName extends string, TService>(\n serviceName: TServiceName,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies & { [K in TServiceName]: TService | undefined },\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n > {\n // Type assertion needed because TypeScript can't verify object spread with mapped types\n const newServiceDependencies = {\n ...this.#serviceDependencies,\n [serviceName]: { name: serviceName, required: false },\n } as {\n [K in keyof (TServiceDependencies & {\n [K in TServiceName]: TService | undefined;\n })]: ServiceMetadata;\n };\n\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies & { [K in TServiceName]: TService | undefined },\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: this.#namedServices,\n privateServices: this.#privateServices,\n serviceDependencies: newServiceDependencies,\n createRequestStorage: this.#createRequestStorage,\n createThisContext: this.#createThisContext,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Define the type and initial data stored in AsyncLocalStorage for per-request isolation.\n * This should be called before withThisContext if you need to store request-specific data.\n *\n * @param initializer Function that returns the initial storage data for each request\n *\n * @example\n * ```typescript\n * .withRequestStorage(({ config, options, deps }) => ({\n * counter: 0,\n * userId: deps.currentUserId\n * }))\n * .withThisContext(({ storage }) => ({\n * serviceContext: {\n * get counter() { return storage.getStore()!.counter; }\n * },\n * handlerContext: {\n * get counter() { return storage.getStore()!.counter; }\n * }\n * }))\n * ```\n */\n withRequestStorage<TNewRequestStorage>(\n initializer: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => TNewRequestStorage,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TNewRequestStorage,\n TLinkedFragments\n > {\n // getExternalStorage can coexist with createRequestStorage (they work together)\n // Cast is safe when storage type changes: the external storage container adapts to hold the new type\n const preservedExternalStorage = this.#getExternalStorage\n ? (this.#getExternalStorage as unknown as (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => RequestContextStorage<TNewRequestStorage>)\n : undefined;\n\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TNewRequestStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: this.#namedServices,\n privateServices: this.#privateServices,\n serviceDependencies: this.#serviceDependencies,\n createRequestStorage: initializer,\n // Reset context function since storage type changed - it must be reconfigured\n createThisContext: undefined,\n getExternalStorage: preservedExternalStorage,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Use an externally-provided RequestContextStorage instance.\n * This allows multiple fragments to share the same storage instance.\n * Useful when fragments need to coordinate (e.g., database fragments sharing adapter storage).\n * Note: You must still call withRequestStorage to provide the initial storage data.\n *\n * @example\n * ```typescript\n * .withExternalRequestStorage(({ options }) =>\n * options.databaseAdapter.contextStorage\n * )\n * .withRequestStorage(({ options }) => ({\n * uow: options.databaseAdapter.db.createUnitOfWork()\n * }))\n * ```\n */\n withExternalRequestStorage<TNewStorage>(\n getStorage: (context: {\n config: TConfig;\n options: TOptions;\n deps: TDeps;\n }) => RequestContextStorage<TNewStorage>,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TNewStorage,\n TLinkedFragments\n > {\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TNewStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: this.#namedServices,\n privateServices: this.#privateServices,\n serviceDependencies: this.#serviceDependencies,\n // Reset storage/context functions since storage type changed - they must be reconfigured\n createRequestStorage: undefined,\n createThisContext: undefined,\n getExternalStorage: getStorage,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Set the this contexts for services and handlers in this fragment.\n * Both contexts should contain only methods or getters that read from storage.\n * This ensures proper per-request isolation via AsyncLocalStorage.\n *\n * @example\n * ```ts\n * .withThisContext(({ storage }) => ({\n * serviceContext: {\n * get myNumber() { return storage.getStore()?.myNumber ?? 0; }\n * },\n * handlerContext: {\n * get myNumber() { return storage.getStore()?.myNumber ?? 0; }\n * }\n * }))\n * ```\n */\n withThisContext<\n TNewServiceThisContext extends RequestThisContext,\n TNewHandlerThisContext extends RequestThisContext,\n >(\n fn: (context: RequestContextFactoryContext<TConfig, TOptions, TDeps, TRequestStorage>) => {\n serviceContext: TNewServiceThisContext;\n handlerContext: TNewHandlerThisContext;\n },\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TNewServiceThisContext,\n TNewHandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n > {\n return new FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TNewServiceThisContext,\n TNewHandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >(this.#name, {\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: this.#namedServices,\n privateServices: this.#privateServices,\n serviceDependencies: this.#serviceDependencies,\n createRequestStorage: this.#createRequestStorage,\n createThisContext: fn,\n getExternalStorage: this.#getExternalStorage,\n linkedFragments: this.#linkedFragments,\n });\n }\n\n /**\n * Register a linked fragment that will be automatically instantiated.\n * Linked fragments share the same config/options as the parent and their services\n * are exposed as private services. Routes are not exposed by default, but the\n * instantiator may mount internal linked fragment routes under an internal prefix.\n */\n withLinkedFragment<const TName extends string, TFragment extends AnyFragnoInstantiatedFragment>(\n name: TName,\n callback: LinkedFragmentCallback<TConfig, TOptions, TServiceDependencies, TFragment>,\n ): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices & ExtractLinkedServices<() => TFragment>,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments & { [K in TName]: TFragment }\n > {\n const newLinkedFragments = {\n ...this.#linkedFragments,\n [name]: callback,\n };\n\n // Cast is safe: We're declaring that the returned builder has TPrivateServices & ExtractLinkedServices<TFragment>,\n // even though the runtime privateServices hasn't changed yet. The linked fragment services will be\n // merged into privateServices at instantiation time by the instantiator.\n return new FragmentDefinitionBuilder(this.#name, {\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: this.#namedServices,\n privateServices: this.#privateServices,\n serviceDependencies: this.#serviceDependencies,\n createRequestStorage: this.#createRequestStorage,\n createThisContext: this.#createThisContext,\n getExternalStorage: this.#getExternalStorage,\n linkedFragments: newLinkedFragments,\n }) as FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices & ExtractLinkedServices<() => TFragment>,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments & { [K in TName]: TFragment }\n >;\n }\n\n /**\n * Extend this builder with a transformation function.\n * This enables fluent API extensions like `.extend(withDatabase(schema))`.\n */\n extend<const TNewBuilder>(transformer: (builder: this) => TNewBuilder): TNewBuilder {\n return transformer(this);\n }\n\n /**\n * Build the final fragment definition\n */\n build(): FragmentDefinition<\n TConfig,\n TOptions,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDependencies,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n > {\n return {\n name: this.#name,\n dependencies: this.#dependencies,\n baseServices: this.#baseServices,\n namedServices: this.#namedServices,\n privateServices: this.#privateServices,\n serviceDependencies: this.#serviceDependencies,\n createRequestStorage: this.#createRequestStorage,\n createThisContext: this.#createThisContext,\n getExternalStorage: this.#getExternalStorage,\n linkedFragments: this.#linkedFragments,\n };\n }\n}\n\n/**\n * Create a new fragment definition builder\n */\nexport function defineFragment<\n TConfig = {},\n TOptions extends FragnoPublicConfig = FragnoPublicConfig,\n TServiceThisContext extends RequestThisContext = RequestThisContext,\n THandlerThisContext extends RequestThisContext = RequestThisContext,\n TRequestStorage = {},\n>(\n name: string,\n): FragmentDefinitionBuilder<\n TConfig,\n TOptions,\n {},\n {},\n {},\n {},\n {},\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n {}\n> {\n return new FragmentDefinitionBuilder(name);\n}\n"],"mappings":"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"}
@@ -13,6 +13,26 @@ import { FragmentDefinition } from "./fragment-definition-builder.js";
13
13
  import { StandardSchemaV1 } from "@standard-schema/spec";
14
14
 
15
15
  //#region src/api/fragment-instantiator.d.ts
16
+ type InternalRoutePrefix = "/_internal";
17
+ type JoinInternalRoutePath<TPath$1 extends string> = TPath$1 extends "" | "/" ? InternalRoutePrefix : TPath$1 extends `/${string}` ? `${InternalRoutePrefix}${TPath$1}` : `${InternalRoutePrefix}/${TPath$1}`;
18
+ type PrefixInternalRoute<TRoute> = TRoute extends FragnoRouteConfig<infer TMethod, infer TPath, infer TInputSchema, infer TOutputSchema, infer TErrorCode, infer TQueryParameters, infer TThisContext> ? FragnoRouteConfig<TMethod, JoinInternalRoutePath<TPath>, TInputSchema, TOutputSchema, TErrorCode, TQueryParameters, TThisContext> : never;
19
+ type PrefixInternalRoutes<TRoutes$1 extends readonly AnyFragnoRouteConfig[]> = TRoutes$1 extends readonly [...infer TRoutesTuple] ? { [K in keyof TRoutesTuple]: PrefixInternalRoute<TRoutesTuple[K]> } : readonly AnyFragnoRouteConfig[];
20
+ type ExtractRoutesFromFragment<T> = T extends FragnoInstantiatedFragment<infer TRoutes, infer _TDeps, infer _TServices, infer _TServiceThisContext, infer _THandlerThisContext, infer _TRequestStorage, infer _TOptions, infer _TLinkedFragments> ? TRoutes : never;
21
+ type InternalLinkedRoutes<TLinkedFragments$1> = TLinkedFragments$1 extends Record<string, AnyFragnoInstantiatedFragment> ? TLinkedFragments$1 extends {
22
+ _fragno_internal: infer TInternal;
23
+ } ? ExtractRoutesFromFragment<TInternal> extends readonly AnyFragnoRouteConfig[] ? PrefixInternalRoutes<ExtractRoutesFromFragment<TInternal>> : readonly [] : readonly [] : readonly [];
24
+ type RoutesWithInternal<TRoutes$1 extends readonly AnyFragnoRouteConfig[], TLinkedFragments$1> = readonly [...TRoutes$1, ...InternalLinkedRoutes<TLinkedFragments$1>];
25
+ /**
26
+ * Helper type to extract the instantiated fragment type from a fragment definition.
27
+ * This is useful for typing functions that accept instantiated fragments based on their definition.
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const myFragmentDef = defineFragment("my-fragment").build();
32
+ * type MyInstantiatedFragment = InstantiatedFragmentFromDefinition<typeof myFragmentDef>;
33
+ * ```
34
+ */
35
+ type InstantiatedFragmentFromDefinition<TDef extends FragmentDefinition<any, any, any, any, any, any, any, any, any, any, any>> = TDef extends FragmentDefinition<infer _TConfig, infer TOptions, infer TDeps, infer TBaseServices, infer TServices, infer _TServiceDependencies, infer _TPrivateServices, infer TServiceThisContext, infer THandlerThisContext, infer TRequestStorage, infer TLinkedFragments> ? FragnoInstantiatedFragment<RoutesWithInternal<readonly AnyFragnoRouteConfig[], TLinkedFragments>, TDeps, BoundServices<TBaseServices & TServices>, TServiceThisContext, THandlerThisContext, TRequestStorage, TOptions, TLinkedFragments> : never;
16
36
  type AstroHandlers = {
17
37
  ALL: (req: Request) => Promise<Response>;
18
38
  };
@@ -67,47 +87,48 @@ type HandlersByFramework = {
67
87
  };
68
88
  type FullstackFrameworks = keyof HandlersByFramework;
69
89
  type AnyFragnoInstantiatedFragment = FragnoInstantiatedFragment<any, any, any, any, any, any, any, any>;
70
- interface FragnoFragmentSharedConfig<TRoutes extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string>[]> {
90
+ interface FragnoFragmentSharedConfig<TRoutes$1 extends readonly FragnoRouteConfig<HTTPMethod, string, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined, string, string>[]> {
71
91
  name: string;
72
- routes: TRoutes;
92
+ routes: TRoutes$1;
73
93
  }
74
94
  /**
75
95
  * Instantiated fragment class with encapsulated state.
76
96
  * Provides the same public API as the old FragnoInstantiatedFragment but with better encapsulation.
77
97
  */
78
- declare class FragnoInstantiatedFragment<TRoutes extends readonly AnyFragnoRouteConfig[], TDeps, TServices extends Record<string, unknown>, TServiceThisContext extends RequestThisContext, THandlerThisContext extends RequestThisContext, TRequestStorage = {}, TOptions extends FragnoPublicConfig = FragnoPublicConfig, TLinkedFragments extends Record<string, AnyFragnoInstantiatedFragment> = {}> {
98
+ declare class FragnoInstantiatedFragment<TRoutes$1 extends readonly AnyFragnoRouteConfig[], TDeps$1, TServices$1 extends Record<string, unknown>, TServiceThisContext$1 extends RequestThisContext, THandlerThisContext$1 extends RequestThisContext, TRequestStorage$1 = {}, TOptions$1 extends FragnoPublicConfig = FragnoPublicConfig, TLinkedFragments$1 extends Record<string, AnyFragnoInstantiatedFragment> = {}> implements IFragnoInstantiatedFragment {
79
99
  #private;
80
100
  readonly [instantiatedFragmentFakeSymbol]: "$fragno-instantiated-fragment";
81
101
  constructor(params: {
82
102
  name: string;
83
- routes: TRoutes;
84
- deps: TDeps;
85
- services: TServices;
103
+ routes: TRoutes$1;
104
+ deps: TDeps$1;
105
+ services: TServices$1;
86
106
  mountRoute: string;
87
- serviceThisContext?: TServiceThisContext;
88
- handlerThisContext?: THandlerThisContext;
89
- storage: RequestContextStorage<TRequestStorage>;
90
- createRequestStorage?: () => TRequestStorage;
91
- options: TOptions;
92
- linkedFragments?: TLinkedFragments;
107
+ serviceThisContext?: TServiceThisContext$1;
108
+ handlerThisContext?: THandlerThisContext$1;
109
+ storage: RequestContextStorage<TRequestStorage$1>;
110
+ createRequestStorage?: () => TRequestStorage$1;
111
+ options: TOptions$1;
112
+ linkedFragments?: TLinkedFragments$1;
113
+ internalData?: Record<string, unknown>;
93
114
  });
94
115
  get name(): string;
95
- get routes(): TRoutes;
96
- get services(): TServices;
116
+ get routes(): TRoutes$1;
117
+ get services(): TServices$1;
97
118
  get mountRoute(): string;
98
119
  /**
99
120
  * @internal
100
121
  */
101
122
  get $internal(): {
102
- deps: TDeps;
103
- options: TOptions;
104
- linkedFragments: TLinkedFragments;
123
+ deps: TDeps$1;
124
+ options: TOptions$1;
125
+ linkedFragments: TLinkedFragments$1;
105
126
  };
106
127
  /**
107
128
  * Add middleware to this fragment.
108
129
  * Middleware can inspect and modify requests before they reach handlers.
109
130
  */
110
- withMiddleware(handler: FragnoMiddlewareCallback<TRoutes, TDeps, TServices>): this;
131
+ withMiddleware(handler: FragnoMiddlewareCallback<TRoutes$1, TDeps$1, TServices$1>): this;
111
132
  /**
112
133
  * Execute a callback within a request context.
113
134
  * Establishes an async context for the duration of the callback, allowing services
@@ -126,8 +147,8 @@ declare class FragnoInstantiatedFragment<TRoutes extends readonly AnyFragnoRoute
126
147
  * });
127
148
  * ```
128
149
  */
129
- inContext<T>(callback: (this: THandlerThisContext) => T): T;
130
- inContext<T>(callback: (this: THandlerThisContext) => Promise<T>): Promise<T>;
150
+ inContext<T>(callback: (this: THandlerThisContext$1) => T): T;
151
+ inContext<T>(callback: (this: THandlerThisContext$1) => Promise<T>): Promise<T>;
131
152
  /**
132
153
  * Get framework-specific handlers for this fragment.
133
154
  * Use this to integrate the fragment with different fullstack frameworks.
@@ -142,29 +163,105 @@ declare class FragnoInstantiatedFragment<TRoutes extends readonly AnyFragnoRoute
142
163
  * Call a route directly with typed inputs and outputs.
143
164
  * Useful for testing and server-side route calls.
144
165
  */
145
- callRoute<TMethod extends HTTPMethod, TPath extends ExtractRoutePath<TRoutes, TMethod>>(method: TMethod, path: TPath, inputOptions?: RouteHandlerInputOptions<TPath, ExtractRouteByPath<TRoutes, TPath, TMethod>["inputSchema"]>): Promise<FragnoResponse<InferOrUnknown<NonNullable<ExtractRouteByPath<TRoutes, TPath, TMethod>["outputSchema"]>>>>;
166
+ callRoute<TMethod$1 extends HTTPMethod, TPath$1 extends ExtractRoutePath<TRoutes$1, TMethod$1>>(method: TMethod$1, path: TPath$1, inputOptions?: RouteHandlerInputOptions<TPath$1, ExtractRouteByPath<TRoutes$1, TPath$1, TMethod$1>["inputSchema"]>): Promise<FragnoResponse<InferOrUnknown<NonNullable<ExtractRouteByPath<TRoutes$1, TPath$1, TMethod$1>["outputSchema"]>>>>;
146
167
  /**
147
168
  * Call a route directly and get the raw Response object.
148
169
  * Useful for testing and server-side route calls.
149
170
  */
150
- callRouteRaw<TMethod extends HTTPMethod, TPath extends ExtractRoutePath<TRoutes, TMethod>>(method: TMethod, path: TPath, inputOptions?: RouteHandlerInputOptions<TPath, ExtractRouteByPath<TRoutes, TPath, TMethod>["inputSchema"]>): Promise<Response>;
171
+ callRouteRaw<TMethod$1 extends HTTPMethod, TPath$1 extends ExtractRoutePath<TRoutes$1, TMethod$1>>(method: TMethod$1, path: TPath$1, inputOptions?: RouteHandlerInputOptions<TPath$1, ExtractRouteByPath<TRoutes$1, TPath$1, TMethod$1>["inputSchema"]>): Promise<Response>;
172
+ }
173
+ /**
174
+ * Options for fragment instantiation.
175
+ */
176
+ interface InstantiationOptions {
177
+ /**
178
+ * If true, catches errors during initialization and returns stub implementations.
179
+ * This is useful for CLI tools that need to extract metadata (like database schemas)
180
+ * without requiring all dependencies to be fully initialized.
181
+ */
182
+ dryRun?: boolean;
151
183
  }
152
184
  /**
153
185
  * Core instantiation function that creates a fragment instance from a definition.
154
186
  * This function validates dependencies, calls all callbacks, and wires everything together.
155
187
  */
156
- declare function instantiateFragment<const TConfig, const TOptions extends FragnoPublicConfig, const TDeps, const TBaseServices extends Record<string, unknown>, const TServices extends Record<string, unknown>, const TServiceDependencies, const TPrivateServices extends Record<string, unknown>, const TServiceThisContext extends RequestThisContext, const THandlerThisContext extends RequestThisContext, const TRequestStorage, const TRoutesOrFactories extends readonly AnyRouteOrFactory[], const TLinkedFragments extends Record<string, AnyFragnoInstantiatedFragment>>(definition: FragmentDefinition<TConfig, TOptions, TDeps, TBaseServices, TServices, TServiceDependencies, TPrivateServices, TServiceThisContext, THandlerThisContext, TRequestStorage, TLinkedFragments>, config: TConfig, routesOrFactories: TRoutesOrFactories, options: TOptions, serviceImplementations?: TServiceDependencies): FragnoInstantiatedFragment<FlattenRouteFactories<TRoutesOrFactories>, TDeps, BoundServices<TBaseServices & TServices>, TServiceThisContext, THandlerThisContext, TRequestStorage, TOptions, TLinkedFragments>;
188
+ declare function instantiateFragment<const TConfig, const TOptions$1 extends FragnoPublicConfig, const TDeps$1, const TBaseServices$1 extends Record<string, unknown>, const TServices$1 extends Record<string, unknown>, const TServiceDependencies, const TPrivateServices extends Record<string, unknown>, const TServiceThisContext$1 extends RequestThisContext, const THandlerThisContext$1 extends RequestThisContext, const TRequestStorage$1, const TRoutesOrFactories extends readonly AnyRouteOrFactory[], const TLinkedFragments$1 extends Record<string, AnyFragnoInstantiatedFragment>>(definition: FragmentDefinition<TConfig, TOptions$1, TDeps$1, TBaseServices$1, TServices$1, TServiceDependencies, TPrivateServices, TServiceThisContext$1, THandlerThisContext$1, TRequestStorage$1, TLinkedFragments$1>, config: TConfig, routesOrFactories: TRoutesOrFactories, options: TOptions$1, serviceImplementations?: TServiceDependencies, instantiationOptions?: InstantiationOptions): FragnoInstantiatedFragment<RoutesWithInternal<FlattenRouteFactories<TRoutesOrFactories>, TLinkedFragments$1>, TDeps$1, BoundServices<TBaseServices$1 & TServices$1>, TServiceThisContext$1, THandlerThisContext$1, TRequestStorage$1, TOptions$1, TLinkedFragments$1>;
189
+ /**
190
+ * Interface that defines the public API for a fragment instantiation builder.
191
+ * Used to ensure consistency between real implementations and stubs.
192
+ */
193
+ interface IFragmentInstantiationBuilder {
194
+ /**
195
+ * Get the fragment definition
196
+ */
197
+ get definition(): any;
198
+ /**
199
+ * Get the configured routes
200
+ */
201
+ get routes(): any;
202
+ /**
203
+ * Get the configuration
204
+ */
205
+ get config(): unknown;
206
+ /**
207
+ * Get the options
208
+ */
209
+ get options(): unknown;
210
+ /**
211
+ * Set the configuration for the fragment
212
+ */
213
+ withConfig(config: any): unknown;
214
+ /**
215
+ * Set the routes for the fragment
216
+ */
217
+ withRoutes(routes: any): unknown;
218
+ /**
219
+ * Set the options for the fragment (e.g., mountRoute, databaseAdapter)
220
+ */
221
+ withOptions(options: any): unknown;
222
+ /**
223
+ * Provide implementations for services that this fragment uses
224
+ */
225
+ withServices(services: any): unknown;
226
+ /**
227
+ * Build and return the instantiated fragment
228
+ */
229
+ build(): IFragnoInstantiatedFragment;
230
+ }
231
+ /**
232
+ * Interface that defines the public API for an instantiated fragment.
233
+ * Used to ensure consistency between real implementations and stubs.
234
+ */
235
+ interface IFragnoInstantiatedFragment {
236
+ readonly [instantiatedFragmentFakeSymbol]: typeof instantiatedFragmentFakeSymbol;
237
+ get name(): string;
238
+ get routes(): any;
239
+ get services(): Record<string, unknown>;
240
+ get mountRoute(): string;
241
+ get $internal(): {
242
+ deps: unknown;
243
+ options: unknown;
244
+ linkedFragments: unknown;
245
+ } & Record<string, unknown>;
246
+ withMiddleware(handler: any): this;
247
+ inContext<T>(callback: any): T;
248
+ inContext<T>(callback: any): Promise<T>;
249
+ handlersFor(framework: FullstackFrameworks): any;
250
+ handler(req: Request): Promise<Response>;
251
+ callRoute(method: HTTPMethod, path: string, inputOptions?: any): Promise<any>;
252
+ callRouteRaw(method: HTTPMethod, path: string, inputOptions?: any): Promise<Response>;
253
+ }
157
254
  /**
158
255
  * Fluent builder for instantiating fragments.
159
256
  * Provides a type-safe API for configuring and building fragment instances.
160
257
  */
161
- declare class FragmentInstantiationBuilder<TConfig, TOptions extends FragnoPublicConfig, TDeps, TBaseServices extends Record<string, unknown>, TServices extends Record<string, unknown>, TServiceDependencies, TPrivateServices extends Record<string, unknown>, TServiceThisContext extends RequestThisContext, THandlerThisContext extends RequestThisContext, TRequestStorage, TRoutesOrFactories extends readonly AnyRouteOrFactory[], TLinkedFragments extends Record<string, AnyFragnoInstantiatedFragment>> {
258
+ declare class FragmentInstantiationBuilder<TConfig, TOptions$1 extends FragnoPublicConfig, TDeps$1, TBaseServices$1 extends Record<string, unknown>, TServices$1 extends Record<string, unknown>, TServiceDependencies, TPrivateServices extends Record<string, unknown>, TServiceThisContext$1 extends RequestThisContext, THandlerThisContext$1 extends RequestThisContext, TRequestStorage$1, TRoutesOrFactories extends readonly AnyRouteOrFactory[], TLinkedFragments$1 extends Record<string, AnyFragnoInstantiatedFragment>> implements IFragmentInstantiationBuilder {
162
259
  #private;
163
- constructor(definition: FragmentDefinition<TConfig, TOptions, TDeps, TBaseServices, TServices, TServiceDependencies, TPrivateServices, TServiceThisContext, THandlerThisContext, TRequestStorage, TLinkedFragments>, routes?: TRoutesOrFactories);
260
+ constructor(definition: FragmentDefinition<TConfig, TOptions$1, TDeps$1, TBaseServices$1, TServices$1, TServiceDependencies, TPrivateServices, TServiceThisContext$1, THandlerThisContext$1, TRequestStorage$1, TLinkedFragments$1>, routes?: TRoutesOrFactories);
164
261
  /**
165
262
  * Get the fragment definition
166
263
  */
167
- get definition(): FragmentDefinition<TConfig, TOptions, TDeps, TBaseServices, TServices, TServiceDependencies, TPrivateServices, TServiceThisContext, THandlerThisContext, TRequestStorage, TLinkedFragments>;
264
+ get definition(): FragmentDefinition<TConfig, TOptions$1, TDeps$1, TBaseServices$1, TServices$1, TServiceDependencies, TPrivateServices, TServiceThisContext$1, THandlerThisContext$1, TRequestStorage$1, TLinkedFragments$1>;
168
265
  /**
169
266
  * Get the configured routes
170
267
  */
@@ -176,7 +273,7 @@ declare class FragmentInstantiationBuilder<TConfig, TOptions extends FragnoPubli
176
273
  /**
177
274
  * Get the options
178
275
  */
179
- get options(): TOptions | undefined;
276
+ get options(): TOptions$1 | undefined;
180
277
  /**
181
278
  * Set the configuration for the fragment
182
279
  */
@@ -184,11 +281,11 @@ declare class FragmentInstantiationBuilder<TConfig, TOptions extends FragnoPubli
184
281
  /**
185
282
  * Set the routes for the fragment
186
283
  */
187
- withRoutes<const TNewRoutes extends readonly AnyRouteOrFactory[]>(routes: TNewRoutes): FragmentInstantiationBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices, TServiceDependencies, TPrivateServices, TServiceThisContext, THandlerThisContext, TRequestStorage, TNewRoutes, TLinkedFragments>;
284
+ withRoutes<const TNewRoutes extends readonly AnyRouteOrFactory[]>(routes: TNewRoutes): FragmentInstantiationBuilder<TConfig, TOptions$1, TDeps$1, TBaseServices$1, TServices$1, TServiceDependencies, TPrivateServices, TServiceThisContext$1, THandlerThisContext$1, TRequestStorage$1, TNewRoutes, TLinkedFragments$1>;
188
285
  /**
189
286
  * Set the options for the fragment (e.g., mountRoute, databaseAdapter)
190
287
  */
191
- withOptions(options: TOptions): this;
288
+ withOptions(options: TOptions$1): this;
192
289
  /**
193
290
  * Provide implementations for services that this fragment uses
194
291
  */
@@ -196,7 +293,7 @@ declare class FragmentInstantiationBuilder<TConfig, TOptions extends FragnoPubli
196
293
  /**
197
294
  * Build and return the instantiated fragment
198
295
  */
199
- build(): FragnoInstantiatedFragment<FlattenRouteFactories<TRoutesOrFactories>, TDeps, BoundServices<TBaseServices & TServices>, TServiceThisContext, THandlerThisContext, TRequestStorage, TOptions, TLinkedFragments>;
296
+ build(): FragnoInstantiatedFragment<RoutesWithInternal<FlattenRouteFactories<TRoutesOrFactories>, TLinkedFragments$1>, TDeps$1, BoundServices<TBaseServices$1 & TServices$1>, TServiceThisContext$1, THandlerThisContext$1, TRequestStorage$1, TOptions$1, TLinkedFragments$1>;
200
297
  }
201
298
  /**
202
299
  * Create a fluent builder for instantiating a fragment.
@@ -210,7 +307,7 @@ declare class FragmentInstantiationBuilder<TConfig, TOptions extends FragnoPubli
210
307
  * .build();
211
308
  * ```
212
309
  */
213
- declare function instantiate<TConfig, TOptions extends FragnoPublicConfig, TDeps, TBaseServices extends Record<string, unknown>, TServices extends Record<string, unknown>, TServiceDependencies, TPrivateServices extends Record<string, unknown>, TServiceThisContext extends RequestThisContext, THandlerThisContext extends RequestThisContext, TRequestStorage, TLinkedFragments extends Record<string, AnyFragnoInstantiatedFragment>>(definition: FragmentDefinition<TConfig, TOptions, TDeps, TBaseServices, TServices, TServiceDependencies, TPrivateServices, TServiceThisContext, THandlerThisContext, TRequestStorage, TLinkedFragments>): FragmentInstantiationBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices, TServiceDependencies, TPrivateServices, TServiceThisContext, THandlerThisContext, TRequestStorage, readonly [], TLinkedFragments>;
310
+ declare function instantiate<TConfig, TOptions$1 extends FragnoPublicConfig, TDeps$1, TBaseServices$1 extends Record<string, unknown>, TServices$1 extends Record<string, unknown>, TServiceDependencies, TPrivateServices extends Record<string, unknown>, TServiceThisContext$1 extends RequestThisContext, THandlerThisContext$1 extends RequestThisContext, TRequestStorage$1, TLinkedFragments$1 extends Record<string, AnyFragnoInstantiatedFragment>>(definition: FragmentDefinition<TConfig, TOptions$1, TDeps$1, TBaseServices$1, TServices$1, TServiceDependencies, TPrivateServices, TServiceThisContext$1, THandlerThisContext$1, TRequestStorage$1, TLinkedFragments$1>): FragmentInstantiationBuilder<TConfig, TOptions$1, TDeps$1, TBaseServices$1, TServices$1, TServiceDependencies, TPrivateServices, TServiceThisContext$1, THandlerThisContext$1, TRequestStorage$1, readonly [], TLinkedFragments$1>;
214
311
  //#endregion
215
- export { type AnyFragnoInstantiatedFragment, type BoundServices, FragmentInstantiationBuilder, FragnoFragmentSharedConfig, FragnoInstantiatedFragment, instantiate, instantiateFragment };
312
+ export { AnyFragnoInstantiatedFragment, type BoundServices, FragmentInstantiationBuilder, FragnoFragmentSharedConfig, FragnoInstantiatedFragment, type IFragmentInstantiationBuilder, type IFragnoInstantiatedFragment, InstantiatedFragmentFromDefinition, InstantiationOptions, RoutesWithInternal, instantiate, instantiateFragment };
216
313
  //# sourceMappingURL=fragment-instantiator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fragment-instantiator.d.ts","names":[],"sources":["../../src/api/fragment-instantiator.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"fragment-instantiator.d.ts","names":[],"sources":["../../src/api/fragment-instantiator.ts"],"sourcesContent":[],"mappings":"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"}