@undefineds.co/xpod 0.3.18 → 0.3.23

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 (115) hide show
  1. package/config/bun.json +57 -11
  2. package/config/cloud.json +14 -12
  3. package/config/local.json +16 -14
  4. package/config/xpod.json +47 -9
  5. package/dist/api/matrix/PodMatrixStore.d.ts +4 -7
  6. package/dist/api/matrix/PodMatrixStore.js +116 -148
  7. package/dist/api/matrix/PodMatrixStore.js.map +1 -1
  8. package/dist/api/matrix/types.d.ts +2 -0
  9. package/dist/api/matrix/types.js.map +1 -1
  10. package/dist/api/runs/PiAgentRuntimeDriver.d.ts +1 -0
  11. package/dist/api/runs/PiAgentRuntimeDriver.js +4 -1
  12. package/dist/api/runs/PiAgentRuntimeDriver.js.map +1 -1
  13. package/dist/components/components.jsonld +3 -0
  14. package/dist/components/context.jsonld +71 -32
  15. package/dist/http/SubgraphSparqlHttpHandler.d.ts +1 -0
  16. package/dist/http/SubgraphSparqlHttpHandler.js +27 -4
  17. package/dist/http/SubgraphSparqlHttpHandler.js.map +1 -1
  18. package/dist/http/SubgraphSparqlHttpHandler.jsonld +4 -0
  19. package/dist/http/vector/VectorHttpHandler.d.ts +5 -1
  20. package/dist/http/vector/VectorHttpHandler.js +5 -5
  21. package/dist/http/vector/VectorHttpHandler.js.map +1 -1
  22. package/dist/http/vector/VectorHttpHandler.jsonld +40 -28
  23. package/dist/index.d.ts +5 -2
  24. package/dist/index.js +9 -4
  25. package/dist/index.js.map +1 -1
  26. package/dist/runtime/Proxy.d.ts +3 -0
  27. package/dist/runtime/Proxy.js +31 -7
  28. package/dist/runtime/Proxy.js.map +1 -1
  29. package/dist/solidfs/LocalSolidFS.js +31 -124
  30. package/dist/solidfs/LocalSolidFS.js.map +1 -1
  31. package/dist/solidfs/SolidFsPathUtils.d.ts +13 -0
  32. package/dist/solidfs/SolidFsPathUtils.js +114 -0
  33. package/dist/solidfs/SolidFsPathUtils.js.map +1 -0
  34. package/dist/solidfs/SolidFsSyncJournal.d.ts +117 -0
  35. package/dist/solidfs/SolidFsSyncJournal.js +553 -0
  36. package/dist/solidfs/SolidFsSyncJournal.js.map +1 -0
  37. package/dist/solidfs/index.d.ts +1 -0
  38. package/dist/solidfs/index.js +1 -0
  39. package/dist/solidfs/index.js.map +1 -1
  40. package/dist/solidfs/types.d.ts +1 -0
  41. package/dist/solidfs/types.js.map +1 -1
  42. package/dist/storage/SparqlUpdateResourceStore.js +94 -33
  43. package/dist/storage/SparqlUpdateResourceStore.js.map +1 -1
  44. package/dist/storage/accessors/MixDataAccessor.d.ts +22 -5
  45. package/dist/storage/accessors/MixDataAccessor.js +376 -61
  46. package/dist/storage/accessors/MixDataAccessor.js.map +1 -1
  47. package/dist/storage/accessors/MixDataAccessor.jsonld +73 -5
  48. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js +32 -10
  49. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js.map +1 -1
  50. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js +28 -6
  51. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js.map +1 -1
  52. package/dist/storage/accessors/SolidRdfDataAccessor.d.ts +45 -0
  53. package/dist/storage/accessors/SolidRdfDataAccessor.js +277 -0
  54. package/dist/storage/accessors/SolidRdfDataAccessor.js.map +1 -0
  55. package/dist/storage/accessors/SolidRdfDataAccessor.jsonld +161 -0
  56. package/dist/storage/rdf/Rdf3xIndex.d.ts +122 -0
  57. package/dist/storage/rdf/Rdf3xIndex.js +2695 -0
  58. package/dist/storage/rdf/Rdf3xIndex.js.map +1 -0
  59. package/dist/storage/rdf/Rdf3xIndex.jsonld +528 -0
  60. package/dist/storage/rdf/Rdf3xSchema.d.ts +20 -0
  61. package/dist/storage/rdf/Rdf3xSchema.js +65 -0
  62. package/dist/storage/rdf/Rdf3xSchema.js.map +1 -0
  63. package/dist/storage/rdf/RdfLocalQueryEngine.d.ts +10 -4
  64. package/dist/storage/rdf/RdfLocalQueryEngine.js +607 -127
  65. package/dist/storage/rdf/RdfLocalQueryEngine.js.map +1 -1
  66. package/dist/storage/rdf/RdfQuadIndex.d.ts +12 -1
  67. package/dist/storage/rdf/RdfQuadIndex.js +152 -22
  68. package/dist/storage/rdf/RdfQuadIndex.js.map +1 -1
  69. package/dist/storage/rdf/RdfQuadIndex.jsonld +36 -4
  70. package/dist/storage/rdf/RdfSparqlAdapter.d.ts +20 -2
  71. package/dist/storage/rdf/RdfSparqlAdapter.js +364 -40
  72. package/dist/storage/rdf/RdfSparqlAdapter.js.map +1 -1
  73. package/dist/storage/rdf/RdfSparqlAdapter.jsonld +60 -0
  74. package/dist/storage/rdf/RdfTermDictionary.d.ts +8 -0
  75. package/dist/storage/rdf/RdfTermDictionary.js +141 -70
  76. package/dist/storage/rdf/RdfTermDictionary.js.map +1 -1
  77. package/dist/storage/rdf/RdfTermDictionary.jsonld +24 -0
  78. package/dist/storage/rdf/RdfTextIndex.js +10 -3
  79. package/dist/storage/rdf/RdfTextIndex.js.map +1 -1
  80. package/dist/storage/rdf/SolidRdfEngine.d.ts +15 -6
  81. package/dist/storage/rdf/SolidRdfEngine.js +218 -25
  82. package/dist/storage/rdf/SolidRdfEngine.js.map +1 -1
  83. package/dist/storage/rdf/SolidRdfEngine.jsonld +70 -7
  84. package/dist/storage/rdf/SolidRdfSparqlEngine.d.ts +11 -7
  85. package/dist/storage/rdf/SolidRdfSparqlEngine.js +60 -47
  86. package/dist/storage/rdf/SolidRdfSparqlEngine.js.map +1 -1
  87. package/dist/storage/rdf/SolidRdfSparqlEngine.jsonld +9 -5
  88. package/dist/storage/rdf/index.d.ts +2 -2
  89. package/dist/storage/rdf/index.js +3 -3
  90. package/dist/storage/rdf/index.js.map +1 -1
  91. package/dist/storage/rdf/models-benchmark.d.ts +12 -1
  92. package/dist/storage/rdf/models-benchmark.js +549 -32
  93. package/dist/storage/rdf/models-benchmark.js.map +1 -1
  94. package/dist/storage/rdf/types.d.ts +81 -7
  95. package/dist/storage/rdf/types.js.map +1 -1
  96. package/dist/storage/sparql/CompatibilitySparqlEngine.d.ts +36 -0
  97. package/dist/storage/sparql/CompatibilitySparqlEngine.js +96 -0
  98. package/dist/storage/sparql/CompatibilitySparqlEngine.js.map +1 -0
  99. package/dist/storage/sparql/CompatibilitySparqlEngine.jsonld +123 -0
  100. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.d.ts +35 -0
  101. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.js +112 -0
  102. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.js.map +1 -0
  103. package/dist/storage/sparql/SubgraphQueryEngine.d.ts +1 -36
  104. package/dist/storage/sparql/SubgraphQueryEngine.js +2 -115
  105. package/dist/storage/sparql/SubgraphQueryEngine.js.map +1 -1
  106. package/dist/storage/sparql/SubgraphQueryEngine.jsonld +1 -124
  107. package/dist/terminal/AclPermissionService.d.ts +2 -1
  108. package/dist/terminal/AclPermissionService.js +26 -3
  109. package/dist/terminal/AclPermissionService.js.map +1 -1
  110. package/dist/terminal/TerminalSessionManager.js +25 -3
  111. package/dist/terminal/TerminalSessionManager.js.map +1 -1
  112. package/package.json +1 -1
  113. package/dist/storage/rdf/Rdf3xTripleIndex.d.ts +0 -55
  114. package/dist/storage/rdf/Rdf3xTripleIndex.js +0 -1235
  115. package/dist/storage/rdf/Rdf3xTripleIndex.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MixDataAccessor.js","sourceRoot":"","sources":["../../../src/storage/accessors/MixDataAccessor.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAkC;AAClC,iEAAqD;AACrD,sEAA6C;AAC7C,2BAA2D;AAC3D,oDAA4B;AAC5B,yCAAsC;AAGtC,8DAaiC;AAOjC,8DAIiC;AACjC,4DAIgC;AAChC,sDAAmD;AACnD,8DAA0D;AAC1D,0DAAuD;AAQvD,sEAAmE;AAsCnE;;;;;;;;;GASG;AACH,MAAa,eAAe;IAU1B,YACE,sBAAoC,EACpC,wBAAsC,EACtC,wBAAwB,GAAG,KAAK,EAChC,8BAA8B,GAAG,IAAI,EACrC,sBAAoC,wBAAwB;QAd3C,WAAM,GAAG,IAAA,oCAAY,EAAC,IAAI,CAAC,CAAC;QAC9B,qBAAgB,GAAG,IAAI,mCAAgB,EAAE,CAAC;QAezD,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;QACrD,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;QACzD,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;QACzD,IAAI,CAAC,8BAA8B,GAAG,8BAA8B,CAAC;IACvE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,SAAS,CAAC,cAA8B;QACnD,OAAO,KAAK,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,QAAgC;QACrD,OAAO,QAAQ,CAAC,WAAW,KAAK,iCAAc,CAAC;IACjD,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,UAA8B;QACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,gFAAgF;YAChF,+EAA+E;YAC/E,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAA+G,CAAC;gBACtI,IAAI,OAAO,QAAQ,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;oBACnD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;oBAChE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC5D,MAAM,IAAI,iCAAc,CAAC,YAAY,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,mBAAmB,CAAC,UAA8B;QAC7D,IAAI,IAAA,wCAAqB,EAAC,UAAU,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,oCAAiB,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACH,OAAO;oBACL,IAAI,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC;oBACxD,QAAQ,EAAE,MAAM,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC;iBAC7D,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,oCAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzC,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,oCAAiB,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,CAAC;YACH,OAAO;gBACL,IAAI,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC;gBACxD,QAAQ,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC;aAC/D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,oCAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAE7C,OAAO;YACL,IAAI,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC;YACxD,QAAQ,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC;SAC/D,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,UAA8B;QACrD,MAAM,KAAK,GAAG,+CAAsB,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC;QAC/D,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;QACjC,MAAM,MAAM,GAAG,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,MAAM,IAAI,oCAAiB,EAAE,CAAC;YAChC,CAAC;YACD,OAAO,IAAI,yCAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAE3E,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC1B,QAAQ,CAAC,WAAW,GAAG,iCAAc,CAAC;YACxC,CAAC;YAED,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,yCAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACtF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,oCAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACzC,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEM,KAAK,CAAA,CAAE,WAAW,CAAC,UAA8B;QACtD,yDAAyD;QACzD,KAAK,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,cAAc,CACzB,UAA8B,EAC9B,QAAgC;QAEhC,IAAI,IAAI,CAAC,8BAA8B,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACvE,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,UAA8B,EAC9B,IAAuB,EACvB,QAAgC;QAEhC,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YACjE,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,UAA8B,EAAE,QAAgC;QACzF,6CAA6C;QAC7C,MAAM,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtE,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,UAA8B;QACxD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAEpD,0EAA0E;QAC1E,yEAAyE;QACzE,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;QACxD,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,CAAC,mCAAmC,CAAC,UAAU,CAAC,CAAC;QAC7D,CAAC;QAED,4DAA4D;QAC5D,MAAM,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,mBAAmB,CAAC,KAAa,EAAE,OAAgB;QAC9D,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;oBAC1D,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;oBACzC,OAAO;gBACT,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,CAAC,KAAK,YAAY,8CAA2B,CAAC,EAAE,CAAC;wBACpD,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsG,CAAC;QAC7H,IAAI,OAAO,QAAQ,CAAC,mBAAmB,KAAK,UAAU,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,QAAQ,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;YAC7C,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,2BAA2B,CACvC,KAAa,EACb,UAA8B;QAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/E,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,gBAAW,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;YAC3C,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;iBACvF,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACtE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3E,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,cAAc,EAAE,IAAI,yCAAsB,CAAC,UAAU,CAAC,CAAC,CAAC;IACzG,CAAC;IAEO,kBAAkB,CACxB,KAAa,EACb,UAA2C;QAE3C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAEvE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;oBACnC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;gBACtC,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;oBACnC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACnC,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,SAAS,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;gBACjF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;oBACzF,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACnC,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;oBACzF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;gBACtC,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;gBACjF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;oBACzF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;gBACtC,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YACjF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC1F,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7B,CAAC;IAEO,+BAA+B,CACrC,UAA2C,EAC3C,QAAgB;QAEhB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,KAAK,aAAa;gBACjD,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9C,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,mBAAmB;oBACxC,CAAC,CAAC;wBACE,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;wBAC9C,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;wBAC9C,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC;qBACzC;oBACH,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,aAAa;wBAClC,CAAC,CAAC;4BACE,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;4BAC9C,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC;yBACzC;wBACH,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;gBAC/B,IAAI,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,WAAW,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACzF,MAAM,IAAI,8CAA2B,CAAC,mEAAmE,CAAC,CAAC;gBAC7G,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,wBAAwB,CAC9B,KAAa,EACb,KAAoB;QAEpB,MAAM,KAAK,GAAG,IAAI,2BAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,+BAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClB,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;QACtC,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,KAAoB;QAC1C,MAAM,QAAQ,GAAsB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxD,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACvC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACpC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAClC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;oBAC7C,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,UAA8B;QAClE,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACvF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,oCAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;gBAC7C,IAAI,CAAC;oBACH,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;gBACvF,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBACpB,IAAI,oCAAiB,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC7C,OAAO,EAAE,CAAC;oBACZ,CAAC;oBACD,MAAM,UAAU,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,UAA8B,EAAE,KAAa;QAChF,MAAM,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAC1C,UAAU,EACV,IAAA,8BAAW,EAAC,iBAAQ,CAAC,IAAI,CAAC,CAAE,MAAM,IAAI,CAAC,0BAA0B,CAAC,UAAU,EAAE,KAAK,CAAC,CAAE,CAAC,CAAC,EACxF,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,IAAI,yCAAsB,CAAC,UAAU,CAAC,CAAC,CAChF,CAAC;IACJ,CAAC;IAEO,kBAAkB,CAAC,IAAU;QACnC,OAAO,gBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;IAEO,WAAW,CAAC,IAAU,EAAE,KAAW;QACzC,OAAO,gBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,KAAY,CAAS,CAAC;IAC3F,CAAC;IAEO,OAAO,CAAC,IAAU;QACxB,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;aAC3D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,aAAQ,EAAC,IAAW,CAAC,CAAC;aACpC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,oBAAoB,CAC/B,UAA8B,EAC9B,IAAwB,EACxB,WAAoB,EACpB,OAA6B;QAE7B,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,gDAAgD,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,IAAI,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1E,MAAM,gBAAgB,GAAG,WAAW,IAAI,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC7E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAC1C,UAAU,EACV,IAAA,8BAAW,EAAC,iBAAQ,CAAC,IAAI,CAAC,CAAE,IAAI,CAAE,CAAC,CAAC,EACpC,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,IAAI,yCAAsB,CAAC,UAAU,CAAC,CAAC,CAChF,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAC3E,MAAM,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,yCAAsB,CAAC,UAAU,CAAC,EAAE;YAC5F,GAAG,OAAO;YACV,WAAW,EAAE,gBAAgB;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,UAA8B;QAC7D,IAAI,CAAC;YACH,MAAM,oBAAoB,GAAG,IAAI,CAAC,8BAA8B,EAAE,CAAC;YACnE,IAAI,oBAAoB,EAAE,CAAC;gBACzB,MAAM,oBAAoB,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,oCAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,UAA8B,EAC9B,IAAuB,EACvB,QAAgC;QAEhC,MAAM,KAAK,GAAG,MAAM,IAAA,yBAAc,EAAO,IAAI,CAAC,CAAC;QAC/C,MAAM,kBAAkB,GAAG,IAAI,yCAAsB,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAA,sCAAmB,EAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAA,qCAAkB,EAAC,kBAAkB,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;QAErD,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAC1C,UAAU,EACV,IAAA,8BAAW,EAAC,iBAAQ,CAAC,IAAI,CAAC,CAAE,MAAM,IAAI,CAAC,0BAA0B,CAAC,UAAU,EAAE,KAAK,CAAC,CAAE,CAAC,CAAC,EACxF,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAClD,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;YACtD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,uBAAuB,CACnC,UAA8B,EAC9B,KAAa,EACb,QAAgC,EAChC,UAA0D,EAAE;QAE5D,MAAM,kBAAkB,GAAG,IAAI,yCAAsB,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAA,sCAAmB,EAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAA,qCAAkB,EAAC,kBAAkB,CAAC,CAAC;QACvC,MAAM,oBAAoB,GAAG,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACnE,IAAI,oBAAoB,EAAE,CAAC;YACzB,MAAM,oBAAoB,CAAC,sBAAsB,CAC/C,UAAU,EACV,KAAK,EACL,kBAAkB,EAClB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CACzC,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,UAAU,EAAE,IAAA,8BAAW,EAAC,iBAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACrH,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,UAA8B;QAChE,IAAI,QAAgC,CAAC;QACrC,IAAI,KAAa,CAAC;QAClB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACrE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACnD,OAAO;YACT,CAAC;YACD,KAAK,GAAG,MAAM,IAAA,yBAAc,EAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAC5F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,oCAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAC1C,UAAU,EACV,IAAA,8BAAW,EAAC,iBAAQ,CAAC,IAAI,CAAC,CAAE,MAAM,IAAI,CAAC,0BAA0B,CAAC,UAAU,EAAE,KAAK,CAAC,CAAE,CAAC,CAAC,EACxF,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAClD,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,UAA8B,EAC9B,cAAsC;QAEtC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,oCAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzC,MAAM,KAAK,CAAC;YACd,CAAC;YACD,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,2BAA2B,CAAC,UAA8B;QACtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACxE,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC5D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,sBAAsB,CAC5B,UAA8B,EAC9B,QAAgC;QAEhC,MAAM,aAAa,GAAG,IAAI,yCAAsB,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,gBAAgB,GAAG,aAAa,CAAC,KAAK,EAAE;aAC3C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC;QAC5D,aAAa,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAC5C,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACjE,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,mBAAmB,CAAC,UAA8B;QACxD,OAAO,IAAA,uCAAqB,EAAC,UAAU,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC;IACjE,CAAC;IAEO,8BAA8B;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAoE,CAAC;QAC3F,IACE,OAAO,QAAQ,CAAC,sBAAsB,KAAK,UAAU;eAClD,OAAO,QAAQ,CAAC,uBAAuB,KAAK,UAAU,EACzD,CAAC;YACD,OAAO,QAA6C,CAAC;QACvD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,cAAc,CACpB,UAA8B,EAC9B,OAAuD;QAEvD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;QAC7E,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI;YACzC,SAAS;YACT,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;YAC1F,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;YACxE,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC;IACJ,CAAC;IAEO,yBAAyB,CAAC,cAAsB,EAAE,cAAsB;QAC9E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC;YAChG,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9F,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAChF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,UAA8B;QAC1D,OAAO,IAAA,0CAAwB,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAEO,uBAAuB,CAAC,UAA8B;QAC5D,OAAO,IAAA,mCAAiB,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAEO,kBAAkB,CACxB,UAA8B,EAC9B,QAAgC;QAEhC,OAAO,QAAQ,CAAC,WAAW,KAAK,iCAAc,IAAI,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC7F,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,UAA8B,EAAE,KAAa;QACpF,IAAI,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,KAAK,qBAAqB,EAAE,CAAC;YACnE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,gBAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;YACjF,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QAClD,CAAC;QAED,IAAI,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,KAAK,qBAAqB,EAAE,CAAC;YACnE,OAAO,IAAA,kCAAe,EAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,WAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5E,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,KAAa;QACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,IAAI,WAAM,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;YAC7D,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC3B,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,UAA8B,EAC9B,IAAY,EACZ,WAAmB;QAEnB,IAAI,WAAW,KAAK,qBAAqB,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBAClD,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,MAAM,EAAE,qBAAqB;aAC9B,CAAW,CAAC;YACb,OAAO,IAAI,WAAM,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/F,CAAC;QAED,IAAI,WAAW,KAAK,qBAAqB,EAAE,CAAC;YAC1C,OAAO,IAAA,yBAAc,EAAO,qBAAS,CAAC,KAAK,CAAC,iBAAQ,CAAC,IAAI,CAAC,CAAE,IAAI,CAAE,CAAC,EAAE;gBACnE,WAAW;gBACX,OAAO,EAAE,UAAU,CAAC,IAAI;aACzB,CAAQ,CAAC,CAAC;QACb,CAAC;QAED,OAAO,IAAI,WAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,IAAuB;QAClD,MAAM,MAAM,GAAG,MAAM,IAAA,yBAAc,EAAC,IAAW,CAAC,CAAC;QACjD,OAAO,MAAM;aACV,GAAG,CAAC,CAAC,KAAmC,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACrH,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,yBAAyB,CACrC,UAA8B,EAC9B,IAAuB,EACvB,QAAgC;QAEhC,gDAAgD;QAChD,MAAM,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE9E,IAAI,eAAuC,CAAC;QAC5C,IAAI,OAAO,QAAQ,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;YAC/C,eAAe,GAAG,IAAI,yCAAsB,CAAC,QAAQ,CAAC,CAAC;YACvD,eAAe,CAAC,GAAG,CACjB,wBAAK,CAAC,KAAK,CAAC,IAAI,EAChB,IAAA,4BAAS,EAAC,QAAQ,CAAC,aAAa,EAAE,sBAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EACpD,6BAAU,CAAC,KAAK,CAAC,gBAAgB,CAClC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAE9E,MAAM,QAAQ,GAAW,EAAE,CAAC;YAC5B,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;YACD,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,UAAU,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;YAC7E,yCAAyC;YACzC,MAAM,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC/D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mCAAmC,CAAC,UAA8B;QAC9E,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,EAAE,IAAI,KAAK,QAAQ,IAAI,KAAK,EAAE,IAAI,KAAK,SAAS,IAAI,CAAC,oCAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClG,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,8BAA8B,CAAC,UAA8B;QACzE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,EAAE,IAAI,KAAK,QAAQ,IAAI,KAAK,EAAE,IAAI,KAAK,SAAS,IAAI,CAAC,oCAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClG,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kCAAkC,CAAC,UAA8B;QAC7E,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC/E,CAAC;IAEO,KAAK,CAAC,6BAA6B,CAAC,UAA8B;QACxE,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC1E,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,UAA8B,EAAE,QAAsB;QACzF,MAAM,UAAU,GAAyB,EAAE,CAAC;QAC5C,IAAI,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAE/C,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;YACjD,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;gBACvC,MAAM;YACR,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7C,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,QAAsB,EAAE,UAA8B;QAC1F,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,oCAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,yCAAsB,CAAC,UAAU,CAAC,CAAC,CAAC;IACpF,CAAC;IAEO,cAAc,CAAC,IAAwB,EAAE,KAAyB;QACxE,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;IAClC,CAAC;IAEO,eAAe,CAAC,UAA8B;QACpD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;gBAChD,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;YACtE,CAAC;YACD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9D,QAAQ,CAAC,GAAG,EAAE,CAAC;YACf,GAAG,CAAC,QAAQ,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACpE,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;YACd,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACrD,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACnB,OAAO,UAAU,CAAC;YACpB,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;QACzD,CAAC;IACH,CAAC;IAEO,uBAAuB,CAAC,UAA8B;QAC5D,MAAM,KAAK,GAAG,+CAAsB,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC;QAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;QAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACzE,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;QAC5D,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtB,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;CACF;AAjyBD,0CAiyBC","sourcesContent":["import { Readable } from 'stream';\nimport { getLoggerFor } from 'global-logger-factory';\nimport arrayifyStream from 'arrayify-stream';\nimport { DataFactory, Parser, Writer, termToId } from 'n3';\nimport jsonld from 'jsonld';\nimport { rdfParser } from 'rdf-parse';\n\nimport type { Quad, Term } from '@rdfjs/types';\nimport {\n isContainerIdentifier,\n RepresentationMetadata,\n INTERNAL_QUADS,\n FoundHttpError,\n NotFoundHttpError,\n POSIX,\n SOLID_META,\n XSD,\n toLiteral,\n guardStream,\n addResourceMetadata,\n updateModifiedDate,\n} from '@solid/community-server';\nimport type {\n Representation,\n ResourceIdentifier,\n Guarded,\n DataAccessor,\n} from '@solid/community-server';\nimport {\n RdfSparqlAdapter,\n UnsupportedSparqlQueryError,\n type RdfSparqlUpdateDeltaOperation,\n} from '../rdf/RdfSparqlAdapter';\nimport {\n isLineAddressableRdfPath,\n isRdfDocumentPath,\n rdfContentTypeForPath,\n} from '../rdf/RdfContentTypes';\nimport { RdfQuadIndex } from '../rdf/RdfQuadIndex';\nimport { serializeRdfXml } from '../rdf/RdfXmlSerializer';\nimport { SolidRdfEngine } from '../rdf/SolidRdfEngine';\nimport type {\n RdfBindingRow,\n RdfLocalQuery,\n RdfQueryPattern,\n RdfQueryTermPattern,\n RdfSourceInput,\n} from '../rdf/types';\nimport { metadataRequestContext } from '../MetadataRequestContext';\n\nexport interface LocalRdfDocument {\n data: Guarded<Readable>;\n metadata: RepresentationMetadata;\n}\n\nexport interface LocalRdfReadableAccessor {\n getLocalRdfDocument(identifier: ResourceIdentifier): Promise<LocalRdfDocument>;\n}\n\nexport interface LocalRdfIndexAccessor {\n syncLocalRdfDocument(\n identifier: ResourceIdentifier,\n data?: Guarded<Readable>,\n contentType?: string,\n options?: LocalRdfSyncOptions,\n ): Promise<void>;\n deleteLocalRdfIndex(identifier: ResourceIdentifier): Promise<void>;\n}\n\nexport interface LocalRdfSyncOptions {\n source?: string;\n workspace?: string;\n localPath?: string;\n sourceVersion?: string;\n}\n\nexport interface SourceScopedStructuredRdfAccessor {\n writeRdfSourceDocument(\n identifier: ResourceIdentifier,\n quads: Quad[],\n metadata: RepresentationMetadata,\n source: RdfSourceInput,\n ): Promise<void>;\n deleteRdfSourceDocument(identifier: ResourceIdentifier): Promise<void>;\n}\n\n/**\n * MixDataAccessor - Routes data to appropriate storage based on content type\n * \n * - RDF data (internal/quads) -> structuredDataAccessor (Quadstore or QuintStore)\n * - RDF file mirrors (.ttl/.jsonld) -> rdfFileDataAccessor (local FileSystem)\n * - Other data (binary, text, etc.) -> unstructuredDataAccessor (FileSystem, Minio, etc.)\n * \n * This uses composition instead of inheritance, allowing any DataAccessor\n * to be used as the RDF storage backend.\n */\nexport class MixDataAccessor implements DataAccessor {\n protected readonly logger = getLoggerFor(this);\n private readonly rdfSparqlAdapter = new RdfSparqlAdapter();\n \n private readonly structuredDataAccessor: DataAccessor;\n private readonly unstructuredDataAccessor: DataAccessor;\n private readonly rdfFileDataAccessor: DataAccessor;\n private readonly presignedRedirectEnabled: boolean;\n private readonly mirrorContainersToUnstructured: boolean;\n\n constructor(\n structuredDataAccessor: DataAccessor,\n unstructuredDataAccessor: DataAccessor,\n presignedRedirectEnabled = false,\n mirrorContainersToUnstructured = true,\n rdfFileDataAccessor: DataAccessor = unstructuredDataAccessor,\n ) {\n this.structuredDataAccessor = structuredDataAccessor;\n this.unstructuredDataAccessor = unstructuredDataAccessor;\n this.rdfFileDataAccessor = rdfFileDataAccessor;\n this.presignedRedirectEnabled = presignedRedirectEnabled;\n this.mirrorContainersToUnstructured = mirrorContainersToUnstructured;\n }\n\n /**\n * This accessor supports all types of data.\n */\n public async canHandle(representation: Representation): Promise<void> {\n return void 0;\n }\n\n /**\n * Checks if the given representation is unstructured (non-RDF).\n */\n private isUnstructured(metadata: RepresentationMetadata): boolean {\n return metadata.contentType !== INTERNAL_QUADS;\n }\n\n public async getData(identifier: ResourceIdentifier): Promise<Guarded<Readable>> {\n const metadata = await this.getMetadata(identifier);\n if (this.isUnstructured(metadata)) {\n // When presigned redirect is enabled and the unstructured accessor supports it,\n // generate a presigned URL and throw FoundHttpError to trigger a 302 redirect.\n if (this.presignedRedirectEnabled) {\n const accessor = this.unstructuredDataAccessor as { getPresignedUrl?: (id: ResourceIdentifier, expires?: number) => Promise<string> };\n if (typeof accessor.getPresignedUrl === 'function') {\n const presignedUrl = await accessor.getPresignedUrl(identifier);\n this.logger.debug(`Presigned redirect: ${identifier.path}`);\n throw new FoundHttpError(presignedUrl);\n }\n }\n return await this.unstructuredDataAccessor.getData(identifier);\n }\n return await this.structuredDataAccessor.getData(identifier);\n }\n\n /**\n * Read the local RDF file mirror used by SolidFS/local-first HTTP reads.\n *\n * `getData()` intentionally keeps returning the structured quad stream for\n * CSS internals. This method is the explicit file-content path for callers\n * that need a real Turtle/JSON-LD byte stream.\n */\n public async getLocalRdfDocument(identifier: ResourceIdentifier): Promise<LocalRdfDocument> {\n if (isContainerIdentifier(identifier)) {\n throw new NotFoundHttpError();\n }\n\n if (this.isByLineRdfIdentifier(identifier)) {\n try {\n return {\n data: await this.rdfFileDataAccessor.getData(identifier),\n metadata: await this.getExistingLocalRdfMetadata(identifier),\n };\n } catch (error) {\n if (!NotFoundHttpError.isInstance(error)) {\n throw error;\n }\n }\n }\n\n const metadata = await this.getMetadata(identifier);\n if (!this.isLocalMirroredRdf(identifier, metadata)) {\n throw new NotFoundHttpError();\n }\n\n try {\n return {\n data: await this.rdfFileDataAccessor.getData(identifier),\n metadata: await this.getLocalRdfMetadata(identifier, metadata),\n };\n } catch (error) {\n if (!NotFoundHttpError.isInstance(error)) {\n throw error;\n }\n }\n\n await this.refreshLocalRdfMirror(identifier);\n\n return {\n data: await this.rdfFileDataAccessor.getData(identifier),\n metadata: await this.getLocalRdfMetadata(identifier, metadata),\n };\n }\n\n public async getMetadata(identifier: ResourceIdentifier): Promise<RepresentationMetadata> {\n const cache = metadataRequestContext.getStore()?.metadataCache;\n const cacheKey = identifier.path;\n const cached = cache?.get(cacheKey);\n if (cached) {\n if (cached.kind === 'miss') {\n throw new NotFoundHttpError();\n }\n return new RepresentationMetadata(cached.metadata);\n }\n\n try {\n const metadata = await this.structuredDataAccessor.getMetadata(identifier);\n\n if (!metadata.contentType) {\n metadata.contentType = INTERNAL_QUADS;\n }\n\n cache?.set(cacheKey, { kind: 'hit', metadata: new RepresentationMetadata(metadata) });\n return metadata;\n } catch (error) {\n if (NotFoundHttpError.isInstance(error)) {\n cache?.set(cacheKey, { kind: 'miss' });\n }\n throw error;\n }\n }\n\n public async* getChildren(identifier: ResourceIdentifier): AsyncIterableIterator<RepresentationMetadata> {\n // Children metadata is stored in the structured accessor\n yield* this.structuredDataAccessor.getChildren(identifier);\n }\n\n public async writeContainer(\n identifier: ResourceIdentifier,\n metadata: RepresentationMetadata,\n ): Promise<void> {\n if (this.mirrorContainersToUnstructured && this.isUnstructured(metadata)) {\n await this.unstructuredDataAccessor.writeContainer(identifier, metadata);\n }\n await this.structuredDataAccessor.writeContainer(identifier, metadata);\n this.invalidateMetadataCache(identifier);\n }\n\n public async writeDocument(\n identifier: ResourceIdentifier,\n data: Guarded<Readable>,\n metadata: RepresentationMetadata,\n ): Promise<void> {\n if (this.isUnstructured(metadata)) {\n await this.writeUnstructuredDocument(identifier, data, metadata);\n this.invalidateMetadataCache(identifier);\n return;\n }\n await this.writeRdfDocument(identifier, data, metadata);\n this.invalidateMetadataCache(identifier);\n }\n\n public async writeMetadata(identifier: ResourceIdentifier, metadata: RepresentationMetadata): Promise<void> {\n // Metadata always goes to structured storage\n await this.structuredDataAccessor.writeMetadata(identifier, metadata);\n this.invalidateMetadataCache(identifier);\n }\n\n public async deleteResource(identifier: ResourceIdentifier): Promise<void> {\n const metadata = await this.getMetadata(identifier);\n \n // RDF by-line resources are mirrored to local file storage so shell tools\n // can operate on real files; remove that mirror together with the index.\n if (this.isLocalMirroredRdf(identifier, metadata)) {\n await this.deleteRdfFileResourceIfPresent(identifier);\n } else if (this.isUnstructured(metadata)) {\n await this.deleteUnstructuredResourceIfPresent(identifier);\n }\n \n // Always delete from structured storage (contains metadata)\n await this.structuredDataAccessor.deleteResource(identifier);\n this.invalidateMetadataCache(identifier);\n }\n\n /**\n * Execute SPARQL UPDATE.\n *\n * Supported embedded deltas patch the local RDF authority file first and then\n * rebuild the structured RDF index. Unsupported shapes keep using the\n * compatibility accessor until the embedded engine covers them.\n */\n public async executeSparqlUpdate(query: string, baseIri?: string): Promise<void> {\n if (baseIri) {\n const identifier = { path: baseIri };\n if (this.isByLineRdfIdentifier(identifier)) {\n try {\n await this.executeLocalRdfSparqlUpdate(query, identifier);\n this.invalidateMetadataCache(identifier);\n return;\n } catch (error) {\n if (!(error instanceof UnsupportedSparqlQueryError)) {\n throw error;\n }\n }\n }\n }\n\n const accessor = this.structuredDataAccessor as { executeSparqlUpdate?: (query: string, baseIri?: string) => Promise<void> };\n if (typeof accessor.executeSparqlUpdate !== 'function') {\n throw new Error('Structured data accessor does not support SPARQL UPDATE');\n }\n await accessor.executeSparqlUpdate(query, baseIri);\n if (baseIri) {\n const identifier = { path: baseIri };\n await this.refreshLocalRdfMirror(identifier);\n this.invalidateMetadataCache(identifier);\n }\n }\n\n private async executeLocalRdfSparqlUpdate(\n query: string,\n identifier: ResourceIdentifier,\n ): Promise<void> {\n const delta = this.rdfSparqlAdapter.compileUpdateDelta(query, identifier.path);\n this.assertLocalRdfDeltaTargetsGraph(delta.operations, identifier.path);\n const existingText = await this.readLocalRdfTextOrEmpty(identifier);\n const graph = DataFactory.namedNode(identifier.path);\n const existingQuads = existingText.length > 0\n ? await this.parseLocalRdf(identifier, existingText, this.localRdfContentType(identifier))\n .then((quads) => quads.map((quad) => this.toGraphQuad(quad, graph)))\n : [];\n const nextQuads = this.applyLocalRdfDelta(existingQuads, delta.operations);\n const authorityQuads = nextQuads.map((quad) => this.toDefaultGraphQuad(quad));\n await this.writeLocalRdfAuthority(identifier, authorityQuads);\n await this.writeStructuredRdfIndex(identifier, authorityQuads, new RepresentationMetadata(identifier));\n }\n\n private applyLocalRdfDelta(\n quads: Quad[],\n operations: RdfSparqlUpdateDeltaOperation[],\n ): Quad[] {\n const byKey = new Map(quads.map((quad) => [this.quadKey(quad), quad]));\n\n for (const operation of operations) {\n if (operation.type === 'insert') {\n for (const quad of operation.quads) {\n byKey.set(this.quadKey(quad), quad);\n }\n continue;\n }\n\n if (operation.type === 'delete') {\n for (const quad of operation.quads) {\n byKey.delete(this.quadKey(quad));\n }\n continue;\n }\n\n if (operation.type === 'insertDeleteWhere') {\n const rows = this.queryLocalUpdateBindings([...byKey.values()], operation.query);\n for (const quad of this.rdfSparqlAdapter.materializeDeleteWhere(operation.deletes, rows)) {\n byKey.delete(this.quadKey(quad));\n }\n for (const quad of this.rdfSparqlAdapter.materializeDeleteWhere(operation.inserts, rows)) {\n byKey.set(this.quadKey(quad), quad);\n }\n continue;\n }\n\n if (operation.type === 'insertWhere') {\n const rows = this.queryLocalUpdateBindings([...byKey.values()], operation.query);\n for (const quad of this.rdfSparqlAdapter.materializeDeleteWhere(operation.inserts, rows)) {\n byKey.set(this.quadKey(quad), quad);\n }\n continue;\n }\n\n const rows = this.queryLocalUpdateBindings([...byKey.values()], operation.query);\n for (const quad of this.rdfSparqlAdapter.materializeDeleteWhere(operation.template, rows)) {\n byKey.delete(this.quadKey(quad));\n }\n }\n\n return [...byKey.values()];\n }\n\n private assertLocalRdfDeltaTargetsGraph(\n operations: RdfSparqlUpdateDeltaOperation[],\n graphIri: string,\n ): void {\n for (const operation of operations) {\n const graphTerms = operation.type === 'deleteWhere'\n ? operation.template.map((item) => item.graph)\n : operation.type === 'insertDeleteWhere'\n ? [\n ...operation.deletes.map((item) => item.graph),\n ...operation.inserts.map((item) => item.graph),\n ...this.queryGraphTerms(operation.query),\n ]\n : operation.type === 'insertWhere'\n ? [\n ...operation.inserts.map((item) => item.graph),\n ...this.queryGraphTerms(operation.query),\n ]\n : operation.quads.map((quad) => quad.graph);\n for (const graph of graphTerms) {\n if (!('termType' in graph) || graph.termType !== 'NamedNode' || graph.value !== graphIri) {\n throw new UnsupportedSparqlQueryError('Embedded local RDF update only supports the target document graph');\n }\n }\n }\n }\n\n private queryLocalUpdateBindings(\n quads: Quad[],\n query: RdfLocalQuery,\n ): RdfBindingRow[] {\n const index = new RdfQuadIndex({ path: ':memory:' });\n index.open();\n try {\n const engine = new SolidRdfEngine({ index });\n engine.put(quads);\n return engine.query(query).bindings;\n } finally {\n index.close();\n }\n }\n\n private queryGraphTerms(query: RdfLocalQuery): RdfQueryTermPattern[] {\n const patterns: RdfQueryPattern[] = [...query.patterns];\n for (const optional of query.optional ?? []) {\n patterns.push(...(Array.isArray(optional) ? optional : optional.patterns));\n }\n for (const union of query.unions ?? []) {\n for (const branch of union.branches) {\n patterns.push(...branch.patterns);\n for (const optional of branch.optional ?? []) {\n patterns.push(...(Array.isArray(optional) ? optional : optional.patterns));\n }\n }\n }\n return patterns.flatMap((pattern) => pattern.graph ? [pattern.graph] : []);\n }\n\n private async readLocalRdfTextOrEmpty(identifier: ResourceIdentifier): Promise<string> {\n try {\n return await this.readStreamText(await this.rdfFileDataAccessor.getData(identifier));\n } catch (error) {\n if (NotFoundHttpError.isInstance(error)) {\n await this.refreshLocalRdfMirror(identifier);\n try {\n return await this.readStreamText(await this.rdfFileDataAccessor.getData(identifier));\n } catch (retryError) {\n if (NotFoundHttpError.isInstance(retryError)) {\n return '';\n }\n throw retryError;\n }\n }\n throw error;\n }\n }\n\n private async writeLocalRdfAuthority(identifier: ResourceIdentifier, quads: Quad[]): Promise<void> {\n await this.ensureRdfFileParentContainers(identifier);\n await this.rdfFileDataAccessor.writeDocument(\n identifier,\n guardStream(Readable.from([ await this.serializeQuadsForLocalFile(identifier, quads) ])),\n this.createLocalRdfMetadata(identifier, new RepresentationMetadata(identifier)),\n );\n }\n\n private toDefaultGraphQuad(quad: Quad): Quad {\n return DataFactory.quad(quad.subject, quad.predicate, quad.object);\n }\n\n private toGraphQuad(quad: Quad, graph: Term): Quad {\n return DataFactory.quad(quad.subject, quad.predicate, quad.object, graph as any) as Quad;\n }\n\n private quadKey(quad: Quad): string {\n return [quad.graph, quad.subject, quad.predicate, quad.object]\n .map((term) => termToId(term as any))\n .join('\\u001f');\n }\n\n /**\n * Rebuild the structured RDF index from an already-written local RDF file.\n *\n * SolidFS uses this after tools edit `.ttl`/`.jsonld` files directly. The\n * local file remains the content authority; the structured accessor is only\n * refreshed as query/index state.\n */\n public async syncLocalRdfDocument(\n identifier: ResourceIdentifier,\n data?: Guarded<Readable>,\n contentType?: string,\n options?: LocalRdfSyncOptions,\n ): Promise<void> {\n if (!this.isRdfDocumentIdentifier(identifier)) {\n throw new Error(`Cannot sync non RDF document into RDF index: ${identifier.path}`);\n }\n\n const source = data ?? await this.rdfFileDataAccessor.getData(identifier);\n const localContentType = contentType ?? this.localRdfContentType(identifier);\n const text = await this.readStreamText(source);\n if (data) {\n await this.ensureRdfFileParentContainers(identifier);\n await this.rdfFileDataAccessor.writeDocument(\n identifier,\n guardStream(Readable.from([ text ])),\n this.createLocalRdfMetadata(identifier, new RepresentationMetadata(identifier)),\n );\n }\n const quads = await this.parseLocalRdf(identifier, text, localContentType);\n await this.writeStructuredRdfIndex(identifier, quads, new RepresentationMetadata(identifier), {\n ...options,\n contentType: localContentType,\n });\n this.invalidateMetadataCache(identifier);\n }\n\n public async deleteLocalRdfIndex(identifier: ResourceIdentifier): Promise<void> {\n try {\n const sourceScopedAccessor = this.sourceScopedStructuredAccessor();\n if (sourceScopedAccessor) {\n await sourceScopedAccessor.deleteRdfSourceDocument(identifier);\n } else {\n await this.structuredDataAccessor.deleteResource(identifier);\n }\n this.invalidateMetadataCache(identifier);\n } catch (error) {\n if (!NotFoundHttpError.isInstance(error)) {\n throw error;\n }\n }\n }\n\n private async writeRdfDocument(\n identifier: ResourceIdentifier,\n data: Guarded<Readable>,\n metadata: RepresentationMetadata,\n ): Promise<void> {\n const quads = await arrayifyStream<Quad>(data);\n const structuredMetadata = new RepresentationMetadata(metadata);\n addResourceMetadata(structuredMetadata, false);\n updateModifiedDate(structuredMetadata);\n await this.ensureRdfFileParentContainers(identifier);\n\n await this.rdfFileDataAccessor.writeDocument(\n identifier,\n guardStream(Readable.from([ await this.serializeQuadsForLocalFile(identifier, quads) ])),\n this.createLocalRdfMetadata(identifier, metadata),\n );\n\n try {\n await this.writeStructuredRdfIndex(identifier, quads, structuredMetadata);\n } catch (error) {\n await this.deleteRdfFileResourceIfPresent(identifier);\n throw error;\n }\n }\n\n private async writeStructuredRdfIndex(\n identifier: ResourceIdentifier,\n quads: Quad[],\n metadata: RepresentationMetadata,\n options: LocalRdfSyncOptions & { contentType?: string } = {},\n ): Promise<void> {\n const structuredMetadata = new RepresentationMetadata(metadata);\n addResourceMetadata(structuredMetadata, false);\n updateModifiedDate(structuredMetadata);\n const sourceScopedAccessor = this.sourceScopedStructuredAccessor();\n if (sourceScopedAccessor) {\n await sourceScopedAccessor.writeRdfSourceDocument(\n identifier,\n quads,\n structuredMetadata,\n this.rdfSourceInput(identifier, options),\n );\n return;\n }\n\n await this.structuredDataAccessor.writeDocument(identifier, guardStream(Readable.from(quads)), structuredMetadata);\n }\n\n private async refreshLocalRdfMirror(identifier: ResourceIdentifier): Promise<void> {\n let metadata: RepresentationMetadata;\n let quads: Quad[];\n try {\n metadata = await this.structuredDataAccessor.getMetadata(identifier);\n if (!this.isLocalMirroredRdf(identifier, metadata)) {\n return;\n }\n quads = await arrayifyStream<Quad>(await this.structuredDataAccessor.getData(identifier));\n } catch (error) {\n if (NotFoundHttpError.isInstance(error)) {\n await this.deleteRdfFileResourceIfPresent(identifier);\n return;\n }\n throw error;\n }\n\n await this.ensureRdfFileParentContainers(identifier);\n await this.rdfFileDataAccessor.writeDocument(\n identifier,\n guardStream(Readable.from([ await this.serializeQuadsForLocalFile(identifier, quads) ])),\n this.createLocalRdfMetadata(identifier, metadata),\n );\n }\n\n private async getLocalRdfMetadata(\n identifier: ResourceIdentifier,\n sourceMetadata: RepresentationMetadata,\n ): Promise<RepresentationMetadata> {\n try {\n return await this.getExistingLocalRdfMetadata(identifier);\n } catch (error) {\n if (!NotFoundHttpError.isInstance(error)) {\n throw error;\n }\n return this.createLocalRdfMetadata(identifier, sourceMetadata);\n }\n }\n\n private async getExistingLocalRdfMetadata(identifier: ResourceIdentifier): Promise<RepresentationMetadata> {\n const metadata = await this.rdfFileDataAccessor.getMetadata(identifier);\n metadata.contentType = this.localRdfContentType(identifier);\n return metadata;\n }\n\n private createLocalRdfMetadata(\n identifier: ResourceIdentifier,\n metadata: RepresentationMetadata,\n ): RepresentationMetadata {\n const localMetadata = new RepresentationMetadata(metadata);\n const graphScopedQuads = localMetadata.quads()\n .filter((quad) => quad.graph.termType !== 'DefaultGraph');\n localMetadata.removeQuads(graphScopedQuads);\n localMetadata.contentType = this.localRdfContentType(identifier);\n return localMetadata;\n }\n\n private localRdfContentType(identifier: ResourceIdentifier): string {\n return rdfContentTypeForPath(identifier.path) ?? 'text/turtle';\n }\n\n private sourceScopedStructuredAccessor(): SourceScopedStructuredRdfAccessor | undefined {\n const accessor = this.structuredDataAccessor as Partial<SourceScopedStructuredRdfAccessor>;\n if (\n typeof accessor.writeRdfSourceDocument === 'function'\n && typeof accessor.deleteRdfSourceDocument === 'function'\n ) {\n return accessor as SourceScopedStructuredRdfAccessor;\n }\n return undefined;\n }\n\n private rdfSourceInput(\n identifier: ResourceIdentifier,\n options: LocalRdfSyncOptions & { contentType?: string },\n ): RdfSourceInput {\n const workspace = options.workspace ?? this.parentContainer(identifier).path;\n return {\n source: options.source ?? identifier.path,\n workspace,\n localPath: options.localPath ?? this.relativePathFromWorkspace(identifier.path, workspace),\n contentType: options.contentType ?? this.localRdfContentType(identifier),\n sourceVersion: options.sourceVersion,\n };\n }\n\n private relativePathFromWorkspace(identifierPath: string, workspaceValue: string): string | undefined {\n try {\n const resource = new URL(identifierPath);\n const workspace = new URL(workspaceValue.endsWith('/') ? workspaceValue : `${workspaceValue}/`);\n if (resource.origin !== workspace.origin || !resource.pathname.startsWith(workspace.pathname)) {\n return undefined;\n }\n return decodeURIComponent(resource.pathname.slice(workspace.pathname.length));\n } catch {\n return undefined;\n }\n }\n\n private isByLineRdfIdentifier(identifier: ResourceIdentifier): boolean {\n return isLineAddressableRdfPath(identifier.path);\n }\n\n private isRdfDocumentIdentifier(identifier: ResourceIdentifier): boolean {\n return isRdfDocumentPath(identifier.path);\n }\n\n private isLocalMirroredRdf(\n identifier: ResourceIdentifier,\n metadata: RepresentationMetadata,\n ): boolean {\n return metadata.contentType === INTERNAL_QUADS || this.isRdfDocumentIdentifier(identifier);\n }\n\n private async serializeQuadsForLocalFile(identifier: ResourceIdentifier, quads: Quad[]): Promise<string> {\n if (this.localRdfContentType(identifier) === 'application/ld+json') {\n const nquads = await this.serializeNQuads(quads);\n const document = await jsonld.fromRDF(nquads, { format: 'application/n-quads' });\n return `${JSON.stringify(document, null, 2)}\\n`;\n }\n\n if (this.localRdfContentType(identifier) === 'application/rdf+xml') {\n return serializeRdfXml(quads);\n }\n\n const writer = new Writer({ format: this.localRdfContentType(identifier) });\n return writer.quadsToString(quads);\n }\n\n private async serializeNQuads(quads: Quad[]): Promise<string> {\n return new Promise((resolve, reject) => {\n const writer = new Writer({ format: 'application/n-quads' });\n writer.addQuads(quads);\n writer.end((error, result) => {\n if (error) {\n reject(error);\n return;\n }\n resolve(result);\n });\n });\n }\n\n private async parseLocalRdf(\n identifier: ResourceIdentifier,\n text: string,\n contentType: string,\n ): Promise<Quad[]> {\n if (contentType === 'application/ld+json') {\n const nquads = await jsonld.toRDF(JSON.parse(text), {\n base: identifier.path,\n format: 'application/n-quads',\n }) as string;\n return new Parser({ format: 'application/n-quads', baseIRI: identifier.path }).parse(nquads);\n }\n\n if (contentType === 'application/rdf+xml') {\n return arrayifyStream<Quad>(rdfParser.parse(Readable.from([ text ]), {\n contentType,\n baseIRI: identifier.path,\n }) as any);\n }\n\n return new Parser({ format: contentType, baseIRI: identifier.path }).parse(text);\n }\n\n private async readStreamText(data: Guarded<Readable>): Promise<string> {\n const chunks = await arrayifyStream(data as any);\n return chunks\n .map((chunk: Buffer | Uint8Array | string) => typeof chunk === 'string' ? chunk : Buffer.from(chunk).toString('utf8'))\n .join('');\n }\n\n /**\n * Write unstructured document: store data in unstructured accessor,\n * then save metadata in structured accessor.\n */\n private async writeUnstructuredDocument(\n identifier: ResourceIdentifier,\n data: Guarded<Readable>,\n metadata: RepresentationMetadata,\n ): Promise<void> {\n // Write the actual data to unstructured storage\n await this.unstructuredDataAccessor.writeDocument(identifier, data, metadata);\n \n let updatedMetadata: RepresentationMetadata;\n if (typeof metadata.contentLength === 'number') {\n updatedMetadata = new RepresentationMetadata(metadata);\n updatedMetadata.add(\n POSIX.terms.size,\n toLiteral(metadata.contentLength, XSD.terms.integer),\n SOLID_META.terms.ResponseMetadata,\n );\n } else {\n updatedMetadata = await this.unstructuredDataAccessor.getMetadata(identifier);\n\n const removing: Quad[] = [];\n for (const quad of updatedMetadata.quads()) {\n if (!/^http/.test(quad.predicate.value)) {\n removing.push(quad);\n }\n }\n updatedMetadata.removeQuads(removing);\n }\n \n // Save metadata to structured storage\n try {\n await this.structuredDataAccessor.writeMetadata(identifier, updatedMetadata);\n } catch (error) {\n this.logger.error(`Error writing metadata for ${identifier.path}: ${error}`);\n // Rollback: delete the unstructured data\n await this.unstructuredDataAccessor.deleteResource(identifier);\n throw error;\n }\n }\n\n private async deleteUnstructuredResourceIfPresent(identifier: ResourceIdentifier): Promise<void> {\n try {\n await this.unstructuredDataAccessor.deleteResource(identifier);\n } catch (error: any) {\n if (error?.code !== 'ENOENT' && error?.code !== 'ENOTDIR' && !NotFoundHttpError.isInstance(error)) {\n throw error;\n }\n }\n }\n\n private async deleteRdfFileResourceIfPresent(identifier: ResourceIdentifier): Promise<void> {\n try {\n await this.rdfFileDataAccessor.deleteResource(identifier);\n } catch (error: any) {\n if (error?.code !== 'ENOENT' && error?.code !== 'ENOTDIR' && !NotFoundHttpError.isInstance(error)) {\n throw error;\n }\n }\n }\n\n private async ensureUnstructuredParentContainers(identifier: ResourceIdentifier): Promise<void> {\n await this.ensureParentContainers(identifier, this.unstructuredDataAccessor);\n }\n\n private async ensureRdfFileParentContainers(identifier: ResourceIdentifier): Promise<void> {\n await this.ensureParentContainers(identifier, this.rdfFileDataAccessor);\n }\n\n private async ensureParentContainers(identifier: ResourceIdentifier, accessor: DataAccessor): Promise<void> {\n const containers: ResourceIdentifier[] = [];\n let current = this.parentContainer(identifier);\n\n while (!this.sameIdentifier(current, identifier)) {\n containers.push(current);\n const next = this.parentContainer(current);\n if (this.sameIdentifier(next, current)) {\n break;\n }\n current = next;\n }\n\n for (const container of containers.reverse()) {\n await this.writeContainerIfMissing(accessor, container);\n }\n }\n\n private async writeContainerIfMissing(accessor: DataAccessor, identifier: ResourceIdentifier): Promise<void> {\n try {\n await accessor.getMetadata(identifier);\n return;\n } catch (error) {\n if (!NotFoundHttpError.isInstance(error)) {\n throw error;\n }\n }\n\n await accessor.writeContainer(identifier, new RepresentationMetadata(identifier));\n }\n\n private sameIdentifier(left: ResourceIdentifier, right: ResourceIdentifier): boolean {\n return left.path === right.path;\n }\n\n private parentContainer(identifier: ResourceIdentifier): ResourceIdentifier {\n try {\n const url = new URL(identifier.path);\n if (url.pathname === '/' || url.pathname === '') {\n return { path: url.href.endsWith('/') ? url.href : `${url.href}/` };\n }\n const segments = url.pathname.replace(/\\/+$/u, '').split('/');\n segments.pop();\n url.pathname = `${segments.join('/') || '/'}`.replace(/\\/?$/u, '/');\n url.search = '';\n url.hash = '';\n return { path: url.href };\n } catch {\n const trimmed = identifier.path.replace(/\\/+$/u, '');\n const slashIndex = trimmed.lastIndexOf('/');\n if (slashIndex < 0) {\n return identifier;\n }\n return { path: `${trimmed.slice(0, slashIndex + 1)}` };\n }\n }\n\n private invalidateMetadataCache(identifier: ResourceIdentifier): void {\n const cache = metadataRequestContext.getStore()?.metadataCache;\n if (!cache) {\n return;\n }\n\n const exact = identifier.path;\n const trimmed = exact.endsWith('/') ? exact.replace(/\\/+$/u, '') : exact;\n const withSlash = exact.endsWith('/') ? exact : `${exact}/`;\n cache.delete(exact);\n cache.delete(trimmed);\n cache.delete(withSlash);\n }\n}\n"]}
1
+ {"version":3,"file":"MixDataAccessor.js","sourceRoot":"","sources":["../../../src/storage/accessors/MixDataAccessor.ts"],"names":[],"mappings":"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","sourcesContent":["import { Readable } from 'stream';\nimport { getLoggerFor } from 'global-logger-factory';\nimport arrayifyStream from 'arrayify-stream';\nimport { DataFactory, Parser, Writer, termToId } from 'n3';\nimport jsonld from 'jsonld';\nimport { rdfParser } from 'rdf-parse';\nimport { Parser as SparqlParser } from 'sparqljs';\n\nimport type { Quad, Term } from '@rdfjs/types';\nimport {\n isContainerIdentifier,\n RepresentationMetadata,\n INTERNAL_QUADS,\n FoundHttpError,\n NotFoundHttpError,\n POSIX,\n SOLID_META,\n XSD,\n toLiteral,\n guardStream,\n addResourceMetadata,\n updateModifiedDate,\n} from '@solid/community-server';\nimport type {\n Representation,\n ResourceIdentifier,\n Guarded,\n DataAccessor,\n} from '@solid/community-server';\nimport {\n RdfSparqlAdapter,\n UnsupportedSparqlQueryError,\n type RdfSparqlUpdateDeltaOperation,\n} from '../rdf/RdfSparqlAdapter';\nimport {\n isLineAddressableRdfPath,\n isRdfDocumentPath,\n rdfContentTypeForPath,\n} from '../rdf/RdfContentTypes';\nimport { RdfQuadIndex } from '../rdf/RdfQuadIndex';\nimport { serializeRdfXml } from '../rdf/RdfXmlSerializer';\nimport { SolidRdfEngine } from '../rdf/SolidRdfEngine';\nimport type {\n RdfBindingRow,\n RdfLocalQuery,\n RdfQueryPattern,\n RdfQueryTermPattern,\n RdfSourceInput,\n RdfValuesBindingSource,\n} from '../rdf/types';\nimport { metadataRequestContext } from '../MetadataRequestContext';\n\nexport interface LocalRdfDocument {\n data: Guarded<Readable>;\n metadata: RepresentationMetadata;\n}\n\nexport interface LocalRdfReadableAccessor {\n getLocalRdfDocument(identifier: ResourceIdentifier): Promise<LocalRdfDocument>;\n}\n\nexport interface LocalRdfIndexAccessor {\n syncLocalRdfDocument(\n identifier: ResourceIdentifier,\n data?: Guarded<Readable>,\n contentType?: string,\n options?: LocalRdfSyncOptions,\n ): Promise<void>;\n deleteLocalRdfIndex(identifier: ResourceIdentifier): Promise<void>;\n}\n\nexport interface LocalRdfSyncOptions {\n source?: string;\n workspace?: string;\n localPath?: string;\n sourceVersion?: string;\n}\n\nexport interface SourceScopedStructuredRdfAccessor {\n writeRdfSourceDocument(\n identifier: ResourceIdentifier,\n quads: Quad[],\n metadata: RepresentationMetadata,\n source: RdfSourceInput,\n ): Promise<void>;\n deleteRdfSourceDocument(identifier: ResourceIdentifier): Promise<void>;\n}\n\ninterface LocalRdfGraphState {\n quads: Quad[];\n existed: boolean;\n}\n\ninterface LocalRdfAuthorityPatch {\n identifier: ResourceIdentifier;\n previousQuads: Quad[];\n previousExists: boolean;\n nextQuads: Quad[];\n}\n\n/**\n * MixDataAccessor - Routes data to appropriate storage based on content type\n * \n * - RDF data (internal/quads) -> structuredDataAccessor (Solid RDF engine by default)\n * - RDF file mirrors (.ttl/.jsonld) -> rdfFileDataAccessor (local FileSystem)\n * - Other data (binary, text, etc.) -> unstructuredDataAccessor (FileSystem, Minio, etc.)\n * \n * This uses composition instead of inheritance, allowing any DataAccessor\n * to be used as the RDF storage backend.\n */\nexport class MixDataAccessor implements DataAccessor {\n protected readonly logger = getLoggerFor(this);\n private readonly rdfSparqlAdapter = new RdfSparqlAdapter();\n \n private readonly structuredDataAccessor: DataAccessor;\n private readonly unstructuredDataAccessor: DataAccessor;\n private readonly rdfFileDataAccessor: DataAccessor;\n private readonly presignedRedirectEnabled: boolean;\n private readonly mirrorContainersToUnstructured: boolean;\n\n constructor(\n structuredDataAccessor: DataAccessor,\n unstructuredDataAccessor: DataAccessor,\n presignedRedirectEnabled = false,\n mirrorContainersToUnstructured = true,\n rdfFileDataAccessor: DataAccessor = unstructuredDataAccessor,\n ) {\n this.structuredDataAccessor = structuredDataAccessor;\n this.unstructuredDataAccessor = unstructuredDataAccessor;\n this.rdfFileDataAccessor = rdfFileDataAccessor;\n this.presignedRedirectEnabled = presignedRedirectEnabled;\n this.mirrorContainersToUnstructured = mirrorContainersToUnstructured;\n }\n\n /**\n * This accessor supports all types of data.\n */\n public async canHandle(representation: Representation): Promise<void> {\n return void 0;\n }\n\n /**\n * Checks if the given representation is unstructured (non-RDF).\n */\n private isUnstructured(metadata: RepresentationMetadata): boolean {\n return metadata.contentType !== INTERNAL_QUADS;\n }\n\n public async getData(identifier: ResourceIdentifier): Promise<Guarded<Readable>> {\n const metadata = await this.getMetadata(identifier);\n if (this.isUnstructured(metadata)) {\n // When presigned redirect is enabled and the unstructured accessor supports it,\n // generate a presigned URL and throw FoundHttpError to trigger a 302 redirect.\n if (this.presignedRedirectEnabled) {\n const accessor = this.unstructuredDataAccessor as { getPresignedUrl?: (id: ResourceIdentifier, expires?: number) => Promise<string> };\n if (typeof accessor.getPresignedUrl === 'function') {\n const presignedUrl = await accessor.getPresignedUrl(identifier);\n this.logger.debug(`Presigned redirect: ${identifier.path}`);\n throw new FoundHttpError(presignedUrl);\n }\n }\n return await this.unstructuredDataAccessor.getData(identifier);\n }\n return await this.structuredDataAccessor.getData(identifier);\n }\n\n /**\n * Read the local RDF file mirror used by SolidFS/local-first HTTP reads.\n *\n * `getData()` intentionally keeps returning the structured quad stream for\n * CSS internals. This method is the explicit file-content path for callers\n * that need a real Turtle/JSON-LD byte stream.\n */\n public async getLocalRdfDocument(identifier: ResourceIdentifier): Promise<LocalRdfDocument> {\n if (isContainerIdentifier(identifier)) {\n throw new NotFoundHttpError();\n }\n\n if (this.isByLineRdfIdentifier(identifier)) {\n try {\n return {\n data: await this.rdfFileDataAccessor.getData(identifier),\n metadata: await this.getExistingLocalRdfMetadata(identifier),\n };\n } catch (error) {\n if (!NotFoundHttpError.isInstance(error)) {\n throw error;\n }\n }\n }\n\n const metadata = await this.getMetadata(identifier);\n if (!this.isLocalMirroredRdf(identifier, metadata)) {\n throw new NotFoundHttpError();\n }\n\n try {\n return {\n data: await this.rdfFileDataAccessor.getData(identifier),\n metadata: await this.getLocalRdfMetadata(identifier, metadata),\n };\n } catch (error) {\n if (!NotFoundHttpError.isInstance(error)) {\n throw error;\n }\n }\n\n await this.refreshLocalRdfMirror(identifier);\n\n return {\n data: await this.rdfFileDataAccessor.getData(identifier),\n metadata: await this.getLocalRdfMetadata(identifier, metadata),\n };\n }\n\n public async getMetadata(identifier: ResourceIdentifier): Promise<RepresentationMetadata> {\n const cache = metadataRequestContext.getStore()?.metadataCache;\n const cacheKey = identifier.path;\n const cached = cache?.get(cacheKey);\n if (cached) {\n if (cached.kind === 'miss') {\n throw new NotFoundHttpError();\n }\n return new RepresentationMetadata(cached.metadata);\n }\n\n try {\n const metadata = await this.structuredDataAccessor.getMetadata(identifier);\n\n if (!metadata.contentType) {\n metadata.contentType = INTERNAL_QUADS;\n }\n\n cache?.set(cacheKey, { kind: 'hit', metadata: new RepresentationMetadata(metadata) });\n return metadata;\n } catch (error) {\n if (NotFoundHttpError.isInstance(error)) {\n cache?.set(cacheKey, { kind: 'miss' });\n }\n throw error;\n }\n }\n\n public async* getChildren(identifier: ResourceIdentifier): AsyncIterableIterator<RepresentationMetadata> {\n // Children metadata is stored in the structured accessor\n yield* this.structuredDataAccessor.getChildren(identifier);\n }\n\n public async writeContainer(\n identifier: ResourceIdentifier,\n metadata: RepresentationMetadata,\n ): Promise<void> {\n if (this.mirrorContainersToUnstructured && this.isUnstructured(metadata)) {\n await this.unstructuredDataAccessor.writeContainer(identifier, metadata);\n }\n await this.structuredDataAccessor.writeContainer(identifier, metadata);\n this.invalidateMetadataCache(identifier);\n }\n\n public async writeDocument(\n identifier: ResourceIdentifier,\n data: Guarded<Readable>,\n metadata: RepresentationMetadata,\n ): Promise<void> {\n if (this.isUnstructured(metadata)) {\n await this.writeUnstructuredDocument(identifier, data, metadata);\n this.invalidateMetadataCache(identifier);\n return;\n }\n await this.writeRdfDocument(identifier, data, metadata);\n this.invalidateMetadataCache(identifier);\n }\n\n public async writeMetadata(identifier: ResourceIdentifier, metadata: RepresentationMetadata): Promise<void> {\n // Metadata always goes to structured storage\n await this.structuredDataAccessor.writeMetadata(identifier, metadata);\n this.invalidateMetadataCache(identifier);\n }\n\n public async deleteResource(identifier: ResourceIdentifier): Promise<void> {\n const metadata = await this.getMetadata(identifier);\n \n // RDF by-line resources are mirrored to local file storage so shell tools\n // can operate on real files; remove that mirror together with the index.\n if (this.isLocalMirroredRdf(identifier, metadata)) {\n await this.deleteRdfFileResourceIfPresent(identifier);\n } else if (this.isUnstructured(metadata)) {\n await this.deleteUnstructuredResourceIfPresent(identifier);\n }\n \n // Always delete from structured storage (contains metadata)\n await this.structuredDataAccessor.deleteResource(identifier);\n this.invalidateMetadataCache(identifier);\n }\n\n /**\n * Execute SPARQL UPDATE.\n *\n * Supported embedded deltas patch the local RDF authority file first and then\n * rebuild the structured RDF index. The structured accessor decides whether\n * unsupported shapes have an explicitly configured compatibility path.\n */\n public async executeSparqlUpdate(query: string, baseIri?: string): Promise<void> {\n if (baseIri) {\n const identifier = { path: baseIri };\n if (this.isByLineRdfIdentifier(identifier)) {\n try {\n const writtenIdentifiers = await this.executeLocalRdfSparqlUpdate(query, identifier);\n for (const writtenIdentifier of writtenIdentifiers) {\n this.invalidateMetadataCache(writtenIdentifier);\n }\n return;\n } catch (error) {\n if (!(error instanceof UnsupportedSparqlQueryError)) {\n throw error;\n }\n }\n }\n }\n\n const accessor = this.structuredDataAccessor as { executeSparqlUpdate?: (query: string, baseIri?: string) => Promise<void> };\n if (typeof accessor.executeSparqlUpdate !== 'function') {\n throw new Error('Structured data accessor does not support SPARQL UPDATE');\n }\n await accessor.executeSparqlUpdate(query, baseIri);\n if (baseIri) {\n const identifier = { path: baseIri };\n await this.refreshLocalRdfMirror(identifier);\n this.invalidateMetadataCache(identifier);\n }\n }\n\n private async executeLocalRdfSparqlUpdate(\n query: string,\n identifier: ResourceIdentifier,\n ): Promise<ResourceIdentifier[]> {\n const parsed = new SparqlParser({ baseIRI: identifier.path }).parse(query);\n const delta = this.rdfSparqlAdapter.compileUpdateDelta(parsed, this.parentContainer(identifier).path, {\n defaultGraph: identifier.path,\n });\n const writableGraphIris = this.localRdfDeltaWriteGraphIris(delta.operations);\n const graphStates = await this.loadLocalRdfDeltaGraphs(delta.operations, writableGraphIris);\n const graphQuads = new Map([...graphStates].map(([ graphIri, state ]) => [graphIri, state.quads]));\n const nextQuadsByGraph = this.applyLocalRdfDelta(graphQuads, delta.operations, writableGraphIris);\n const patches = writableGraphIris.map((graphIri): LocalRdfAuthorityPatch => {\n const previous = graphStates.get(graphIri);\n return {\n identifier: { path: graphIri },\n previousQuads: previous?.quads ?? [],\n previousExists: previous?.existed ?? false,\n nextQuads: nextQuadsByGraph.get(graphIri) ?? [],\n };\n });\n await this.writeLocalRdfAuthorityPatches(patches);\n return patches.map((patch) => patch.identifier);\n }\n\n private applyLocalRdfDelta(\n graphQuads: Map<string, Quad[]>,\n operations: RdfSparqlUpdateDeltaOperation[],\n writableGraphIris: string[],\n ): Map<string, Quad[]> {\n const writableGraphs = new Set(writableGraphIris);\n const byGraph = new Map<string, Map<string, Quad>>();\n for (const [ graphIri, quads ] of graphQuads) {\n byGraph.set(graphIri, new Map(quads.map((quad) => [this.quadKey(quad), quad])));\n }\n const currentQuads = (): Quad[] => [...byGraph.values()].flatMap((quads) => [...quads.values()]);\n const writableQuads = (graphIri: string): Map<string, Quad> => {\n let quads = byGraph.get(graphIri);\n if (!quads) {\n quads = new Map();\n byGraph.set(graphIri, quads);\n }\n return quads;\n };\n const deleteQuads = (quads: Quad[]): void => {\n for (const quad of quads) {\n const target = writableQuads(this.localRdfWriteGraphIri(quad.graph, writableGraphs));\n target.delete(this.quadKey(quad));\n }\n };\n const insertQuads = (quads: Quad[]): void => {\n for (const quad of quads) {\n const target = writableQuads(this.localRdfWriteGraphIri(quad.graph, writableGraphs));\n target.set(this.quadKey(quad), quad);\n }\n };\n\n for (const operation of operations) {\n if (operation.type === 'insert') {\n insertQuads(operation.quads);\n continue;\n }\n\n if (operation.type === 'delete') {\n deleteQuads(operation.quads);\n continue;\n }\n\n if (operation.type === 'insertDeleteWhere') {\n const rows = this.queryLocalUpdateBindings(currentQuads(), operation.query);\n deleteQuads(this.rdfSparqlAdapter.materializeDeleteWhere(operation.deletes, rows));\n insertQuads(this.rdfSparqlAdapter.materializeDeleteWhere(operation.inserts, rows));\n continue;\n }\n\n if (operation.type === 'insertWhere') {\n const rows = this.queryLocalUpdateBindings(currentQuads(), operation.query);\n insertQuads(this.rdfSparqlAdapter.materializeDeleteWhere(operation.inserts, rows));\n continue;\n }\n\n const rows = this.queryLocalUpdateBindings(currentQuads(), operation.query);\n deleteQuads(this.rdfSparqlAdapter.materializeDeleteWhere(operation.template, rows));\n }\n\n return new Map(writableGraphIris.map((graphIri) => [graphIri, [...(byGraph.get(graphIri)?.values() ?? [])]]));\n }\n\n private async loadLocalRdfDeltaGraphs(\n operations: RdfSparqlUpdateDeltaOperation[],\n writableGraphIris: readonly string[],\n ): Promise<Map<string, LocalRdfGraphState>> {\n const graphIris = this.localRdfDeltaGraphIris(operations, writableGraphIris);\n const graphStates = new Map<string, LocalRdfGraphState>();\n for (const graphIri of graphIris) {\n const graphIdentifier = { path: graphIri };\n if (!this.isByLineRdfIdentifier(graphIdentifier)) {\n throw new UnsupportedSparqlQueryError('Embedded local RDF update only supports by-line local RDF graph documents');\n }\n const existing = await this.readLocalRdfState(graphIdentifier);\n const graph = DataFactory.namedNode(graphIri);\n const quads = existing.text.length > 0\n ? await this.parseLocalRdf(graphIdentifier, existing.text, this.localRdfContentType(graphIdentifier))\n .then((items) => items.map((quad) => this.toGraphQuad(quad, graph)))\n : [];\n graphStates.set(graphIri, { quads, existed: existing.existed });\n }\n return graphStates;\n }\n\n private localRdfDeltaGraphIris(\n operations: RdfSparqlUpdateDeltaOperation[],\n writableGraphIris: readonly string[],\n ): string[] {\n const graphIris = new Set<string>(writableGraphIris);\n for (const operation of operations) {\n const graphTerms = operation.type === 'deleteWhere'\n ? [\n ...operation.template.map((item) => item.graph),\n ...this.queryGraphTerms(operation.query),\n ]\n : operation.type === 'insertDeleteWhere'\n ? [\n ...operation.deletes.map((item) => item.graph),\n ...operation.inserts.map((item) => item.graph),\n ...this.queryGraphTerms(operation.query),\n ]\n : operation.type === 'insertWhere'\n ? [\n ...operation.inserts.map((item) => item.graph),\n ...this.queryGraphTerms(operation.query),\n ]\n : operation.quads.map((quad) => quad.graph);\n for (const graph of graphTerms) {\n this.addNamedGraphIris(graph, graphIris);\n }\n }\n return [...graphIris];\n }\n\n private localRdfDeltaWriteGraphIris(\n operations: RdfSparqlUpdateDeltaOperation[],\n ): string[] {\n const graphIris = new Set<string>();\n for (const operation of operations) {\n if (operation.type === 'deleteWhere') {\n this.addWritableTemplateGraphIris(operation.template.map((item) => item.graph), operation.query, graphIris);\n continue;\n }\n if (operation.type === 'insertDeleteWhere') {\n this.addWritableTemplateGraphIris([\n ...operation.deletes.map((item) => item.graph),\n ...operation.inserts.map((item) => item.graph),\n ], operation.query, graphIris);\n continue;\n }\n if (operation.type === 'insertWhere') {\n this.addWritableTemplateGraphIris(operation.inserts.map((item) => item.graph), operation.query, graphIris);\n continue;\n }\n const graphTerms = operation.quads.map((quad) => quad.graph);\n for (const graph of graphTerms) {\n this.addWritableNamedGraphIri(graph, graphIris);\n }\n }\n if (graphIris.size === 0) {\n throw new UnsupportedSparqlQueryError('Embedded local RDF update requires explicit local RDF graph write targets');\n }\n return [...graphIris];\n }\n\n private addWritableTemplateGraphIris(\n graphs: RdfQueryTermPattern[],\n query: RdfLocalQuery,\n graphIris: Set<string>,\n ): void {\n for (const graph of graphs) {\n if (this.isQueryVariable(graph)) {\n this.addWritableGraphVariableIris(query, graph.variable, graphIris);\n continue;\n }\n this.addWritableNamedGraphIri(graph, graphIris);\n }\n }\n\n private addWritableGraphVariableIris(\n query: RdfLocalQuery,\n variable: string,\n graphIris: Set<string>,\n ): void {\n const values = new Set<string>();\n this.collectGraphVariableFilterIris(query, variable, values);\n if (values.size === 0) {\n throw new UnsupportedSparqlQueryError('Embedded local RDF update only supports finite GRAPH variable write targets');\n }\n for (const value of values) {\n this.addWritableNamedGraphIri(DataFactory.namedNode(value) as unknown as Term, graphIris);\n }\n }\n\n private localRdfWriteGraphIri(graph: Term, writableGraphs: Set<string>): string {\n if (graph.termType !== 'NamedNode' || !writableGraphs.has(graph.value)) {\n throw new UnsupportedSparqlQueryError('Embedded local RDF update can only write declared local RDF graph documents');\n }\n return graph.value;\n }\n\n private queryLocalUpdateBindings(\n quads: Quad[],\n query: RdfLocalQuery,\n ): RdfBindingRow[] {\n const index = new RdfQuadIndex({ path: ':memory:' });\n index.open();\n try {\n const engine = new SolidRdfEngine({ index });\n engine.put(quads);\n return engine.query(query).bindings;\n } finally {\n index.close();\n }\n }\n\n private queryGraphTerms(query: RdfLocalQuery): RdfQueryTermPattern[] {\n const graphTerms: RdfQueryTermPattern[] = [];\n const graphVariables = new Set<string>();\n this.collectQueryGraphTerms(query, graphTerms, graphVariables);\n this.collectGraphVariableFilterTerms(query, graphVariables, graphTerms);\n return graphTerms;\n }\n\n private collectQueryGraphTerms(\n query: RdfLocalQuery | {\n patterns: RdfQueryPattern[];\n values?: RdfValuesBindingSource[];\n optional?: RdfLocalQuery['optional'];\n unions?: RdfLocalQuery['unions'];\n minus?: RdfLocalQuery['minus'];\n exists?: RdfLocalQuery['exists'];\n },\n graphTerms: RdfQueryTermPattern[],\n graphVariables: Set<string>,\n ): void {\n for (const pattern of query.patterns) {\n if (!pattern.graph) {\n continue;\n }\n graphTerms.push(pattern.graph);\n if (this.isQueryVariable(pattern.graph)) {\n graphVariables.add(pattern.graph.variable);\n }\n }\n for (const optional of query.optional ?? []) {\n this.collectQueryGraphTerms(Array.isArray(optional) ? { patterns: optional } : optional, graphTerms, graphVariables);\n }\n for (const union of query.unions ?? []) {\n for (const branch of union.branches) {\n this.collectQueryGraphTerms(branch, graphTerms, graphVariables);\n }\n }\n for (const minus of query.minus ?? []) {\n this.collectQueryGraphTerms(minus, graphTerms, graphVariables);\n }\n for (const exists of query.exists ?? []) {\n this.collectQueryGraphTerms(exists, graphTerms, graphVariables);\n }\n }\n\n private collectGraphVariableFilterTerms(\n query: RdfLocalQuery | {\n values?: RdfValuesBindingSource[];\n filters?: RdfLocalQuery['filters'];\n optional?: RdfLocalQuery['optional'];\n unions?: RdfLocalQuery['unions'];\n minus?: RdfLocalQuery['minus'];\n exists?: RdfLocalQuery['exists'];\n },\n graphVariables: Set<string>,\n graphTerms: RdfQueryTermPattern[],\n ): void {\n for (const filter of query.filters ?? []) {\n if (!graphVariables.has(filter.variable)) {\n continue;\n }\n if (filter.value && this.isRdfTerm(filter.value)) {\n graphTerms.push(filter.value);\n }\n for (const value of filter.values ?? []) {\n if (this.isRdfTerm(value)) {\n graphTerms.push(value);\n }\n }\n }\n this.collectGraphVariableValueTerms(query.values ?? [], graphVariables, graphTerms);\n for (const optional of query.optional ?? []) {\n if (!Array.isArray(optional)) {\n this.collectGraphVariableFilterTerms(optional, graphVariables, graphTerms);\n }\n }\n for (const union of query.unions ?? []) {\n for (const branch of union.branches) {\n this.collectGraphVariableFilterTerms(branch, graphVariables, graphTerms);\n }\n }\n for (const minus of query.minus ?? []) {\n this.collectGraphVariableFilterTerms(minus, graphVariables, graphTerms);\n }\n for (const exists of query.exists ?? []) {\n this.collectGraphVariableFilterTerms(exists, graphVariables, graphTerms);\n }\n }\n\n private collectGraphVariableFilterIris(\n query: RdfLocalQuery | {\n values?: RdfValuesBindingSource[];\n filters?: RdfLocalQuery['filters'];\n optional?: RdfLocalQuery['optional'];\n unions?: RdfLocalQuery['unions'];\n minus?: RdfLocalQuery['minus'];\n exists?: RdfLocalQuery['exists'];\n },\n variable: string,\n values: Set<string>,\n ): void {\n for (const filter of query.filters ?? []) {\n if (filter.variable !== variable) {\n continue;\n }\n if ((filter.operator === '$eq' || filter.operator === '$sameTerm') && filter.value && this.isRdfTerm(filter.value)) {\n this.addGraphFilterValueIri(filter.value, values);\n }\n if (filter.operator === '$in') {\n for (const value of filter.values ?? []) {\n if (this.isRdfTerm(value)) {\n this.addGraphFilterValueIri(value, values);\n }\n }\n }\n }\n this.collectGraphVariableValueIris(query.values ?? [], variable, values);\n for (const optional of query.optional ?? []) {\n if (!Array.isArray(optional)) {\n this.collectGraphVariableFilterIris(optional, variable, values);\n }\n }\n for (const union of query.unions ?? []) {\n for (const branch of union.branches) {\n this.collectGraphVariableFilterIris(branch, variable, values);\n }\n }\n for (const minus of query.minus ?? []) {\n this.collectGraphVariableFilterIris(minus, variable, values);\n }\n for (const exists of query.exists ?? []) {\n this.collectGraphVariableFilterIris(exists, variable, values);\n }\n }\n\n private collectGraphVariableValueTerms(\n sources: readonly RdfValuesBindingSource[],\n graphVariables: Set<string>,\n graphTerms: RdfQueryTermPattern[],\n ): void {\n for (const source of sources) {\n for (const variable of source.variables) {\n if (!graphVariables.has(variable)) {\n continue;\n }\n for (const row of source.rows) {\n const value = row[variable];\n if (value) {\n graphTerms.push(value);\n }\n }\n }\n }\n }\n\n private collectGraphVariableValueIris(\n sources: readonly RdfValuesBindingSource[],\n variable: string,\n values: Set<string>,\n ): void {\n for (const source of sources) {\n if (!source.variables.includes(variable)) {\n continue;\n }\n for (const row of source.rows) {\n const value = row[variable];\n if (value) {\n this.addGraphFilterValueIri(value, values);\n }\n }\n }\n }\n\n private addGraphFilterValueIri(value: Term, values: Set<string>): void {\n if (value.termType !== 'NamedNode') {\n throw new UnsupportedSparqlQueryError('Embedded local RDF update GRAPH variable write targets must be named graph documents');\n }\n values.add(value.value);\n }\n\n private addNamedGraphIris(graph: RdfQueryTermPattern | Term, graphIris: Set<string>): void {\n if (this.isRdfTerm(graph)) {\n if (graph.termType !== 'NamedNode') {\n throw new UnsupportedSparqlQueryError('Embedded local RDF update only supports named graph documents');\n }\n graphIris.add(graph.value);\n return;\n }\n const values = (graph as { $in?: unknown }).$in;\n if (Array.isArray(values) && values.every((value) => this.isRdfTerm(value))) {\n for (const value of values) {\n if (value.termType !== 'NamedNode') {\n throw new UnsupportedSparqlQueryError('Embedded local RDF update only supports named graph documents');\n }\n graphIris.add(value.value);\n }\n return;\n }\n if (this.isQueryVariable(graph)) {\n return;\n }\n throw new UnsupportedSparqlQueryError('Embedded local RDF update only supports explicit local RDF graph documents');\n }\n\n private addWritableNamedGraphIri(graph: RdfQueryTermPattern | Term, graphIris: Set<string>): void {\n if (!this.isRdfTerm(graph) || graph.termType !== 'NamedNode') {\n throw new UnsupportedSparqlQueryError('Embedded local RDF update only supports explicit local RDF graph write targets');\n }\n if (!this.isByLineRdfIdentifier({ path: graph.value })) {\n throw new UnsupportedSparqlQueryError('Embedded local RDF update only supports by-line local RDF graph write targets');\n }\n graphIris.add(graph.value);\n }\n\n private isQueryVariable(value: unknown): value is { variable: string } {\n return Boolean(value && typeof value === 'object' && 'variable' in value);\n }\n\n private isRdfTerm(value: unknown): value is Term {\n return Boolean(value && typeof value === 'object' && 'termType' in value);\n }\n\n private async readLocalRdfState(identifier: ResourceIdentifier): Promise<{ text: string; existed: boolean }> {\n try {\n return {\n text: await this.readStreamText(await this.rdfFileDataAccessor.getData(identifier)),\n existed: true,\n };\n } catch (error) {\n if (NotFoundHttpError.isInstance(error)) {\n await this.refreshLocalRdfMirror(identifier);\n try {\n return {\n text: await this.readStreamText(await this.rdfFileDataAccessor.getData(identifier)),\n existed: true,\n };\n } catch (retryError) {\n if (NotFoundHttpError.isInstance(retryError)) {\n return { text: '', existed: false };\n }\n throw retryError;\n }\n }\n throw error;\n }\n }\n\n private async writeLocalRdfAuthority(identifier: ResourceIdentifier, quads: Quad[]): Promise<void> {\n await this.ensureRdfFileParentContainers(identifier);\n await this.rdfFileDataAccessor.writeDocument(\n identifier,\n guardStream(Readable.from([ await this.serializeQuadsForLocalFile(identifier, quads) ])),\n this.createLocalRdfMetadata(identifier, new RepresentationMetadata(identifier)),\n );\n }\n\n private async writeLocalRdfAuthorityPatches(patches: LocalRdfAuthorityPatch[]): Promise<void> {\n const applied: LocalRdfAuthorityPatch[] = [];\n try {\n for (const patch of patches) {\n let localAuthorityWritten = false;\n try {\n const authorityQuads = patch.nextQuads.map((quad) => this.toDefaultGraphQuad(quad));\n await this.writeLocalRdfAuthority(patch.identifier, authorityQuads);\n localAuthorityWritten = true;\n await this.writeStructuredRdfIndex(patch.identifier, authorityQuads, new RepresentationMetadata(patch.identifier));\n applied.push(patch);\n } catch (error) {\n if (localAuthorityWritten) {\n applied.push(patch);\n }\n throw error;\n }\n }\n } catch (error) {\n await this.rollbackLocalRdfAuthorityPatches(applied);\n throw error;\n }\n }\n\n private async rollbackLocalRdfAuthorityPatches(patches: LocalRdfAuthorityPatch[]): Promise<void> {\n const failures: string[] = [];\n for (const patch of patches.slice().reverse()) {\n try {\n if (patch.previousExists) {\n const authorityQuads = patch.previousQuads.map((quad) => this.toDefaultGraphQuad(quad));\n await this.writeLocalRdfAuthority(patch.identifier, authorityQuads);\n await this.writeStructuredRdfIndex(patch.identifier, authorityQuads, new RepresentationMetadata(patch.identifier));\n } else {\n await this.deleteRdfFileResourceIfPresent(patch.identifier);\n await this.deleteLocalRdfIndex(patch.identifier);\n }\n this.invalidateMetadataCache(patch.identifier);\n } catch (rollbackError) {\n failures.push(`${patch.identifier.path}: ${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)}`);\n }\n }\n if (failures.length > 0) {\n this.logger.warn(`Failed to fully roll back local RDF authority patch: ${failures.join('; ')}`);\n }\n }\n\n private toDefaultGraphQuad(quad: Quad): Quad {\n return DataFactory.quad(quad.subject, quad.predicate, quad.object);\n }\n\n private toGraphQuad(quad: Quad, graph: Term): Quad {\n return DataFactory.quad(quad.subject, quad.predicate, quad.object, graph as any) as Quad;\n }\n\n private quadKey(quad: Quad): string {\n return [quad.graph, quad.subject, quad.predicate, quad.object]\n .map((term) => termToId(term as any))\n .join('\\u001f');\n }\n\n /**\n * Rebuild the structured RDF index from an already-written local RDF file.\n *\n * SolidFS uses this after tools edit `.ttl`/`.jsonld` files directly. The\n * local file remains the content authority; the structured accessor is only\n * refreshed as query/index state.\n */\n public async syncLocalRdfDocument(\n identifier: ResourceIdentifier,\n data?: Guarded<Readable>,\n contentType?: string,\n options?: LocalRdfSyncOptions,\n ): Promise<void> {\n if (!this.isRdfDocumentIdentifier(identifier)) {\n throw new Error(`Cannot sync non RDF document into RDF index: ${identifier.path}`);\n }\n\n const source = data ?? await this.rdfFileDataAccessor.getData(identifier);\n const localContentType = contentType ?? this.localRdfContentType(identifier);\n const text = await this.readStreamText(source);\n if (data) {\n await this.ensureRdfFileParentContainers(identifier);\n await this.rdfFileDataAccessor.writeDocument(\n identifier,\n guardStream(Readable.from([ text ])),\n this.createLocalRdfMetadata(identifier, new RepresentationMetadata(identifier)),\n );\n }\n const quads = await this.parseLocalRdf(identifier, text, localContentType);\n await this.writeStructuredRdfIndex(identifier, quads, new RepresentationMetadata(identifier), {\n ...options,\n contentType: localContentType,\n });\n this.invalidateMetadataCache(identifier);\n }\n\n public async deleteLocalRdfIndex(identifier: ResourceIdentifier): Promise<void> {\n try {\n const sourceScopedAccessor = this.sourceScopedStructuredAccessor();\n if (sourceScopedAccessor) {\n await sourceScopedAccessor.deleteRdfSourceDocument(identifier);\n } else {\n await this.structuredDataAccessor.deleteResource(identifier);\n }\n this.invalidateMetadataCache(identifier);\n } catch (error) {\n if (!NotFoundHttpError.isInstance(error)) {\n throw error;\n }\n }\n }\n\n private async writeRdfDocument(\n identifier: ResourceIdentifier,\n data: Guarded<Readable>,\n metadata: RepresentationMetadata,\n ): Promise<void> {\n const quads = await arrayifyStream<Quad>(data);\n const structuredMetadata = new RepresentationMetadata(metadata);\n addResourceMetadata(structuredMetadata, false);\n updateModifiedDate(structuredMetadata);\n await this.ensureRdfFileParentContainers(identifier);\n\n await this.rdfFileDataAccessor.writeDocument(\n identifier,\n guardStream(Readable.from([ await this.serializeQuadsForLocalFile(identifier, quads) ])),\n this.createLocalRdfMetadata(identifier, metadata),\n );\n\n try {\n await this.writeStructuredRdfIndex(identifier, quads, structuredMetadata);\n } catch (error) {\n await this.deleteRdfFileResourceIfPresent(identifier);\n throw error;\n }\n }\n\n private async writeStructuredRdfIndex(\n identifier: ResourceIdentifier,\n quads: Quad[],\n metadata: RepresentationMetadata,\n options: LocalRdfSyncOptions & { contentType?: string } = {},\n ): Promise<void> {\n const structuredMetadata = new RepresentationMetadata(metadata);\n addResourceMetadata(structuredMetadata, false);\n updateModifiedDate(structuredMetadata);\n const sourceScopedAccessor = this.sourceScopedStructuredAccessor();\n if (sourceScopedAccessor) {\n await sourceScopedAccessor.writeRdfSourceDocument(\n identifier,\n quads,\n structuredMetadata,\n this.rdfSourceInput(identifier, options),\n );\n return;\n }\n\n await this.structuredDataAccessor.writeDocument(identifier, guardStream(Readable.from(quads)), structuredMetadata);\n }\n\n private async refreshLocalRdfMirror(identifier: ResourceIdentifier): Promise<void> {\n let metadata: RepresentationMetadata;\n let quads: Quad[];\n try {\n metadata = await this.structuredDataAccessor.getMetadata(identifier);\n if (!this.isLocalMirroredRdf(identifier, metadata)) {\n return;\n }\n quads = await arrayifyStream<Quad>(await this.structuredDataAccessor.getData(identifier));\n } catch (error) {\n if (NotFoundHttpError.isInstance(error)) {\n await this.deleteRdfFileResourceIfPresent(identifier);\n return;\n }\n throw error;\n }\n\n await this.ensureRdfFileParentContainers(identifier);\n await this.rdfFileDataAccessor.writeDocument(\n identifier,\n guardStream(Readable.from([ await this.serializeQuadsForLocalFile(identifier, quads) ])),\n this.createLocalRdfMetadata(identifier, metadata),\n );\n }\n\n private async getLocalRdfMetadata(\n identifier: ResourceIdentifier,\n sourceMetadata: RepresentationMetadata,\n ): Promise<RepresentationMetadata> {\n try {\n return await this.getExistingLocalRdfMetadata(identifier);\n } catch (error) {\n if (!NotFoundHttpError.isInstance(error)) {\n throw error;\n }\n return this.createLocalRdfMetadata(identifier, sourceMetadata);\n }\n }\n\n private async getExistingLocalRdfMetadata(identifier: ResourceIdentifier): Promise<RepresentationMetadata> {\n try {\n const metadata = await this.rdfFileDataAccessor.getMetadata(identifier);\n metadata.contentType = this.localRdfContentType(identifier);\n return metadata;\n } catch (error) {\n if (NotFoundHttpError.isInstance(error)) {\n throw error;\n }\n this.logger.warn(`Ignoring unreadable local RDF metadata for ${identifier.path}: ${error instanceof Error ? error.message : String(error)}`);\n return this.createLocalRdfMetadata(identifier, new RepresentationMetadata(identifier));\n }\n }\n\n private createLocalRdfMetadata(\n identifier: ResourceIdentifier,\n metadata: RepresentationMetadata,\n ): RepresentationMetadata {\n const localMetadata = new RepresentationMetadata(metadata);\n const graphScopedQuads = localMetadata.quads()\n .filter((quad) => quad.graph.termType !== 'DefaultGraph');\n localMetadata.removeQuads(graphScopedQuads);\n localMetadata.contentType = this.localRdfContentType(identifier);\n return localMetadata;\n }\n\n private localRdfContentType(identifier: ResourceIdentifier): string {\n return rdfContentTypeForPath(identifier.path) ?? 'text/turtle';\n }\n\n private sourceScopedStructuredAccessor(): SourceScopedStructuredRdfAccessor | undefined {\n const accessor = this.structuredDataAccessor as Partial<SourceScopedStructuredRdfAccessor>;\n if (\n typeof accessor.writeRdfSourceDocument === 'function'\n && typeof accessor.deleteRdfSourceDocument === 'function'\n ) {\n return accessor as SourceScopedStructuredRdfAccessor;\n }\n return undefined;\n }\n\n private rdfSourceInput(\n identifier: ResourceIdentifier,\n options: LocalRdfSyncOptions & { contentType?: string },\n ): RdfSourceInput {\n const workspace = options.workspace ?? this.parentContainer(identifier).path;\n return {\n source: options.source ?? identifier.path,\n workspace,\n localPath: options.localPath ?? this.relativePathFromWorkspace(identifier.path, workspace),\n contentType: options.contentType ?? this.localRdfContentType(identifier),\n sourceVersion: options.sourceVersion,\n };\n }\n\n private relativePathFromWorkspace(identifierPath: string, workspaceValue: string): string | undefined {\n try {\n const resource = new URL(identifierPath);\n const workspace = new URL(workspaceValue.endsWith('/') ? workspaceValue : `${workspaceValue}/`);\n if (resource.origin !== workspace.origin || !resource.pathname.startsWith(workspace.pathname)) {\n return undefined;\n }\n return decodeURIComponent(resource.pathname.slice(workspace.pathname.length));\n } catch {\n return undefined;\n }\n }\n\n private isByLineRdfIdentifier(identifier: ResourceIdentifier): boolean {\n return isLineAddressableRdfPath(identifier.path);\n }\n\n private isRdfDocumentIdentifier(identifier: ResourceIdentifier): boolean {\n return isRdfDocumentPath(identifier.path);\n }\n\n private isLocalMirroredRdf(\n identifier: ResourceIdentifier,\n metadata: RepresentationMetadata,\n ): boolean {\n return metadata.contentType === INTERNAL_QUADS || this.isRdfDocumentIdentifier(identifier);\n }\n\n private async serializeQuadsForLocalFile(identifier: ResourceIdentifier, quads: Quad[]): Promise<string> {\n if (this.localRdfContentType(identifier) === 'application/ld+json') {\n const nquads = await this.serializeNQuads(quads);\n const document = await jsonld.fromRDF(nquads, { format: 'application/n-quads' });\n return `${JSON.stringify(document, null, 2)}\\n`;\n }\n\n if (this.localRdfContentType(identifier) === 'application/rdf+xml') {\n return serializeRdfXml(quads);\n }\n\n const writer = new Writer({ format: this.localRdfContentType(identifier) });\n return writer.quadsToString(quads);\n }\n\n private async serializeNQuads(quads: Quad[]): Promise<string> {\n return new Promise((resolve, reject) => {\n const writer = new Writer({ format: 'application/n-quads' });\n writer.addQuads(quads);\n writer.end((error, result) => {\n if (error) {\n reject(error);\n return;\n }\n resolve(result);\n });\n });\n }\n\n private async parseLocalRdf(\n identifier: ResourceIdentifier,\n text: string,\n contentType: string,\n ): Promise<Quad[]> {\n if (contentType === 'application/ld+json') {\n const nquads = await jsonld.toRDF(JSON.parse(text), {\n base: identifier.path,\n format: 'application/n-quads',\n }) as string;\n return new Parser({ format: 'application/n-quads', baseIRI: identifier.path }).parse(nquads);\n }\n\n if (contentType === 'application/rdf+xml') {\n return arrayifyStream<Quad>(rdfParser.parse(Readable.from([ text ]), {\n contentType,\n baseIRI: identifier.path,\n }) as any);\n }\n\n return new Parser({ format: contentType, baseIRI: identifier.path }).parse(text);\n }\n\n private async readStreamText(data: Guarded<Readable>): Promise<string> {\n const chunks = await arrayifyStream(data as any);\n return chunks\n .map((chunk: Buffer | Uint8Array | string) => typeof chunk === 'string' ? chunk : Buffer.from(chunk).toString('utf8'))\n .join('');\n }\n\n /**\n * Write unstructured document: store data in unstructured accessor,\n * then save metadata in structured accessor.\n */\n private async writeUnstructuredDocument(\n identifier: ResourceIdentifier,\n data: Guarded<Readable>,\n metadata: RepresentationMetadata,\n ): Promise<void> {\n // Write the actual data to unstructured storage\n await this.unstructuredDataAccessor.writeDocument(identifier, data, metadata);\n \n let updatedMetadata: RepresentationMetadata;\n if (typeof metadata.contentLength === 'number') {\n updatedMetadata = new RepresentationMetadata(metadata);\n updatedMetadata.add(\n POSIX.terms.size,\n toLiteral(metadata.contentLength, XSD.terms.integer),\n SOLID_META.terms.ResponseMetadata,\n );\n } else {\n updatedMetadata = await this.unstructuredDataAccessor.getMetadata(identifier);\n\n const removing: Quad[] = [];\n for (const quad of updatedMetadata.quads()) {\n if (!/^http/.test(quad.predicate.value)) {\n removing.push(quad);\n }\n }\n updatedMetadata.removeQuads(removing);\n }\n \n // Save metadata to structured storage\n try {\n await this.structuredDataAccessor.writeMetadata(identifier, updatedMetadata);\n } catch (error) {\n this.logger.error(`Error writing metadata for ${identifier.path}: ${error}`);\n // Rollback: delete the unstructured data\n await this.unstructuredDataAccessor.deleteResource(identifier);\n throw error;\n }\n }\n\n private async deleteUnstructuredResourceIfPresent(identifier: ResourceIdentifier): Promise<void> {\n try {\n await this.unstructuredDataAccessor.deleteResource(identifier);\n } catch (error: any) {\n if (error?.code !== 'ENOENT' && error?.code !== 'ENOTDIR' && !NotFoundHttpError.isInstance(error)) {\n throw error;\n }\n }\n }\n\n private async deleteRdfFileResourceIfPresent(identifier: ResourceIdentifier): Promise<void> {\n try {\n await this.rdfFileDataAccessor.deleteResource(identifier);\n } catch (error: any) {\n if (error?.code !== 'ENOENT' && error?.code !== 'ENOTDIR' && !NotFoundHttpError.isInstance(error)) {\n throw error;\n }\n }\n }\n\n private async ensureUnstructuredParentContainers(identifier: ResourceIdentifier): Promise<void> {\n await this.ensureParentContainers(identifier, this.unstructuredDataAccessor);\n }\n\n private async ensureRdfFileParentContainers(identifier: ResourceIdentifier): Promise<void> {\n await this.ensureParentContainers(identifier, this.rdfFileDataAccessor);\n }\n\n private async ensureParentContainers(identifier: ResourceIdentifier, accessor: DataAccessor): Promise<void> {\n const containers: ResourceIdentifier[] = [];\n let current = this.parentContainer(identifier);\n\n while (!this.sameIdentifier(current, identifier)) {\n containers.push(current);\n const next = this.parentContainer(current);\n if (this.sameIdentifier(next, current)) {\n break;\n }\n current = next;\n }\n\n for (const container of containers.reverse()) {\n await this.writeContainerIfMissing(accessor, container);\n }\n }\n\n private async writeContainerIfMissing(accessor: DataAccessor, identifier: ResourceIdentifier): Promise<void> {\n try {\n await accessor.getMetadata(identifier);\n return;\n } catch (error) {\n if (!NotFoundHttpError.isInstance(error)) {\n throw error;\n }\n }\n\n await accessor.writeContainer(identifier, new RepresentationMetadata(identifier));\n }\n\n private sameIdentifier(left: ResourceIdentifier, right: ResourceIdentifier): boolean {\n return left.path === right.path;\n }\n\n private parentContainer(identifier: ResourceIdentifier): ResourceIdentifier {\n try {\n const url = new URL(identifier.path);\n if (url.pathname === '/' || url.pathname === '') {\n return { path: url.href.endsWith('/') ? url.href : `${url.href}/` };\n }\n const segments = url.pathname.replace(/\\/+$/u, '').split('/');\n segments.pop();\n url.pathname = `${segments.join('/') || '/'}`.replace(/\\/?$/u, '/');\n url.search = '';\n url.hash = '';\n return { path: url.href };\n } catch {\n const trimmed = identifier.path.replace(/\\/+$/u, '');\n const slashIndex = trimmed.lastIndexOf('/');\n if (slashIndex < 0) {\n return identifier;\n }\n return { path: `${trimmed.slice(0, slashIndex + 1)}` };\n }\n }\n\n private invalidateMetadataCache(identifier: ResourceIdentifier): void {\n const cache = metadataRequestContext.getStore()?.metadataCache;\n if (!cache) {\n return;\n }\n\n const exact = identifier.path;\n const trimmed = exact.endsWith('/') ? exact.replace(/\\/+$/u, '') : exact;\n const withSlash = exact.endsWith('/') ? exact : `${exact}/`;\n cache.delete(exact);\n cache.delete(trimmed);\n cache.delete(withSlash);\n }\n}\n"]}
@@ -12,7 +12,7 @@
12
12
  "extends": [
13
13
  "css:dist/storage/accessors/DataAccessor.jsonld#DataAccessor"
14
14
  ],
15
- "comment": "MixDataAccessor - Routes data to appropriate storage based on content type - RDF data (internal/quads) -> structuredDataAccessor (Quadstore or QuintStore) - RDF file mirrors (.ttl/.jsonld) -> rdfFileDataAccessor (local FileSystem) - Other data (binary, text, etc.) -> unstructuredDataAccessor (FileSystem, Minio, etc.) This uses composition instead of inheritance, allowing any DataAccessor to be used as the RDF storage backend.",
15
+ "comment": "MixDataAccessor - Routes data to appropriate storage based on content type - RDF data (internal/quads) -> structuredDataAccessor (Solid RDF engine by default) - RDF file mirrors (.ttl/.jsonld) -> rdfFileDataAccessor (local FileSystem) - Other data (binary, text, etc.) -> unstructuredDataAccessor (FileSystem, Minio, etc.) This uses composition instead of inheritance, allowing any DataAccessor to be used as the RDF storage backend.",
16
16
  "parameters": [
17
17
  {
18
18
  "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor_presignedRedirectEnabled",
@@ -148,8 +148,28 @@
148
148
  "memberFieldName": "applyLocalRdfDelta"
149
149
  },
150
150
  {
151
- "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_assertLocalRdfDeltaTargetsGraph",
152
- "memberFieldName": "assertLocalRdfDeltaTargetsGraph"
151
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_loadLocalRdfDeltaGraphs",
152
+ "memberFieldName": "loadLocalRdfDeltaGraphs"
153
+ },
154
+ {
155
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_localRdfDeltaGraphIris",
156
+ "memberFieldName": "localRdfDeltaGraphIris"
157
+ },
158
+ {
159
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_localRdfDeltaWriteGraphIris",
160
+ "memberFieldName": "localRdfDeltaWriteGraphIris"
161
+ },
162
+ {
163
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_addWritableTemplateGraphIris",
164
+ "memberFieldName": "addWritableTemplateGraphIris"
165
+ },
166
+ {
167
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_addWritableGraphVariableIris",
168
+ "memberFieldName": "addWritableGraphVariableIris"
169
+ },
170
+ {
171
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_localRdfWriteGraphIri",
172
+ "memberFieldName": "localRdfWriteGraphIri"
153
173
  },
154
174
  {
155
175
  "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_queryLocalUpdateBindings",
@@ -160,13 +180,61 @@
160
180
  "memberFieldName": "queryGraphTerms"
161
181
  },
162
182
  {
163
- "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_readLocalRdfTextOrEmpty",
164
- "memberFieldName": "readLocalRdfTextOrEmpty"
183
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_collectQueryGraphTerms",
184
+ "memberFieldName": "collectQueryGraphTerms"
185
+ },
186
+ {
187
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_collectGraphVariableFilterTerms",
188
+ "memberFieldName": "collectGraphVariableFilterTerms"
189
+ },
190
+ {
191
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_collectGraphVariableFilterIris",
192
+ "memberFieldName": "collectGraphVariableFilterIris"
193
+ },
194
+ {
195
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_collectGraphVariableValueTerms",
196
+ "memberFieldName": "collectGraphVariableValueTerms"
197
+ },
198
+ {
199
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_collectGraphVariableValueIris",
200
+ "memberFieldName": "collectGraphVariableValueIris"
201
+ },
202
+ {
203
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_addGraphFilterValueIri",
204
+ "memberFieldName": "addGraphFilterValueIri"
205
+ },
206
+ {
207
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_addNamedGraphIris",
208
+ "memberFieldName": "addNamedGraphIris"
209
+ },
210
+ {
211
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_addWritableNamedGraphIri",
212
+ "memberFieldName": "addWritableNamedGraphIri"
213
+ },
214
+ {
215
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_isQueryVariable",
216
+ "memberFieldName": "isQueryVariable"
217
+ },
218
+ {
219
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_isRdfTerm",
220
+ "memberFieldName": "isRdfTerm"
221
+ },
222
+ {
223
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_readLocalRdfState",
224
+ "memberFieldName": "readLocalRdfState"
165
225
  },
166
226
  {
167
227
  "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_writeLocalRdfAuthority",
168
228
  "memberFieldName": "writeLocalRdfAuthority"
169
229
  },
230
+ {
231
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_writeLocalRdfAuthorityPatches",
232
+ "memberFieldName": "writeLocalRdfAuthorityPatches"
233
+ },
234
+ {
235
+ "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_rollbackLocalRdfAuthorityPatches",
236
+ "memberFieldName": "rollbackLocalRdfAuthorityPatches"
237
+ },
170
238
  {
171
239
  "@id": "undefineds:dist/storage/accessors/MixDataAccessor.jsonld#MixDataAccessor__member_toDefaultGraphQuad",
172
240
  "memberFieldName": "toDefaultGraphQuad"
@@ -1,4 +1,27 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
@@ -10,7 +33,6 @@ const arrayify_stream_1 = __importDefault(require("arrayify-stream"));
10
33
  const n3_1 = require("n3");
11
34
  const sparqljs_1 = require("sparqljs");
12
35
  const community_server_1 = require("@solid/community-server");
13
- const QuintEngine_1 = require("../sparql/QuintEngine");
14
36
  const { defaultGraph, namedNode, quad, variable } = n3_1.DataFactory;
15
37
  /**
16
38
  * @deprecated Compatibility wrapper preserved for older configs.
@@ -22,7 +44,7 @@ class QuadstoreSparqlDataAccessor {
22
44
  this.publicEndpoint = this.getPublicEndpoint(endpoint);
23
45
  this.identifierStrategy = identifierStrategy;
24
46
  this.generator = new sparqljs_1.Generator();
25
- this.engine = new QuintEngine_1.QuintEngine({ endpoint });
47
+ this.engine = Promise.resolve().then(() => __importStar(require('../sparql/QuintEngine'))).then(({ QuintEngine }) => new QuintEngine({ endpoint }));
26
48
  }
27
49
  /**
28
50
  * Get the public endpoint from the given endpoint.
@@ -298,7 +320,7 @@ class QuadstoreSparqlDataAccessor {
298
320
  try {
299
321
  await this.waitForStoreReady();
300
322
  const start = Date.now();
301
- const result = await this.engine.queryQuads(query);
323
+ const result = await (await this.engine).queryQuads(query);
302
324
  const end = Date.now();
303
325
  logger.verbose(`SPARQL CONSTRUCT query success. cost time: ${end - start}ms`);
304
326
  const readable = new node_stream_1.Readable({ objectMode: true, read() { } });
@@ -332,7 +354,7 @@ class QuadstoreSparqlDataAccessor {
332
354
  try {
333
355
  await this.waitForStoreReady();
334
356
  const start = Date.now();
335
- await this.engine.queryVoid(query);
357
+ await (await this.engine).queryVoid(query);
336
358
  const end = Date.now();
337
359
  this.logger.verbose(`SPARQL UPDATE query success. cost time: ${end - start}ms`);
338
360
  }
@@ -347,7 +369,7 @@ class QuadstoreSparqlDataAccessor {
347
369
  async executeSparqlUpdate(query, baseIri) {
348
370
  this.logger.verbose(`Executing SPARQL UPDATE on ${this.publicEndpoint}: ${query}`);
349
371
  await this.waitForStoreReady();
350
- await this.engine.queryVoid(query, { baseIRI: baseIri });
372
+ await (await this.engine).queryVoid(query, { baseIRI: baseIri });
351
373
  }
352
374
  /**
353
375
  * Execute a SPARQL SELECT query and return bindings as plain objects.
@@ -355,7 +377,7 @@ class QuadstoreSparqlDataAccessor {
355
377
  async executeSparqlSelect(query) {
356
378
  this.logger.verbose(`Executing SPARQL SELECT on ${this.publicEndpoint}: ${query}`);
357
379
  await this.waitForStoreReady();
358
- const bindingsStream = await this.engine.queryBindings(query);
380
+ const bindingsStream = await (await this.engine).queryBindings(query);
359
381
  const results = [];
360
382
  const iterable = bindingsStream;
361
383
  for await (const binding of iterable) {
@@ -375,7 +397,7 @@ class QuadstoreSparqlDataAccessor {
375
397
  async executeSparqlAsk(query) {
376
398
  this.logger.verbose(`Executing SPARQL ASK on ${this.publicEndpoint}: ${query}`);
377
399
  await this.waitForStoreReady();
378
- return this.engine.queryBoolean(query);
400
+ return (await this.engine).queryBoolean(query);
379
401
  }
380
402
  /**
381
403
  * Execute a raw CONSTRUCT query string.
@@ -383,7 +405,7 @@ class QuadstoreSparqlDataAccessor {
383
405
  async executeSparqlConstruct(query) {
384
406
  this.logger.verbose(`Executing SPARQL CONSTRUCT on ${this.publicEndpoint}: ${query}`);
385
407
  await this.waitForStoreReady();
386
- const result = await this.engine.queryQuads(query);
408
+ const result = await (await this.engine).queryQuads(query);
387
409
  const readable = new node_stream_1.Readable({ objectMode: true, read() { } });
388
410
  // Register event listeners once, outside of read() to avoid memory leak
389
411
  result.on('data', (quad) => {
@@ -401,13 +423,13 @@ class QuadstoreSparqlDataAccessor {
401
423
  * Wait for the store to be ready.
402
424
  */
403
425
  async waitForStoreReady() {
404
- await this.engine.open();
426
+ await (await this.engine).open();
405
427
  }
406
428
  /**
407
429
  * Closes the underlying store.
408
430
  */
409
431
  async close() {
410
- await this.engine.close();
432
+ await (await this.engine).close();
411
433
  }
412
434
  }
413
435
  exports.QuadstoreSparqlDataAccessor = QuadstoreSparqlDataAccessor;