ApiLogicServer 15.0.55__py3-none-any.whl → 15.0.57__py3-none-any.whl

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 (368) hide show
  1. api_logic_server_cli/api_logic_server.py +3 -3
  2. api_logic_server_cli/api_logic_server_info.yaml +3 -3
  3. api_logic_server_cli/create_from_model/ont_build.py +3 -3
  4. api_logic_server_cli/create_from_model/ont_create.py +5 -5
  5. api_logic_server_cli/manager.py +2 -1
  6. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/README.md +16 -0
  7. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/README_create_react_app.md +70 -0
  8. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/package-lock.json +18469 -0
  9. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/package.json +47 -0
  10. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/public/favicon.ico +0 -0
  11. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/public/index.html +43 -0
  12. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/public/logo192.png +0 -0
  13. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/public/logo512.png +0 -0
  14. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/public/manifest.json +25 -0
  15. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/public/robots.txt +3 -0
  16. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/App.css +38 -0
  17. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/App.js +80 -0
  18. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/App.test.js +8 -0
  19. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/Config.js +527 -0
  20. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/Customer.js +218 -0
  21. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/Item.js +190 -0
  22. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/Order.js +189 -0
  23. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/Product.js +159 -0
  24. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/app_loader.js +24 -0
  25. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/index.css +13 -0
  26. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/index.js +17 -0
  27. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/logo.svg +1 -0
  28. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/.eslintrc +5 -0
  29. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/.yarnrc.yml +4 -0
  30. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/default-settings.js +25 -0
  31. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/default-settings.ts +25 -0
  32. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/errors.js +116 -0
  33. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/errors.ts +116 -0
  34. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/index.test.tsx +7 -0
  35. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/index.tsx +11 -0
  36. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/ra-jsonapi-client.js +577 -0
  37. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/ra-jsonapi-client.ts +577 -0
  38. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/resourceLookup.js +124 -0
  39. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/resourceLookup.ts +124 -0
  40. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/styles.module.css +9 -0
  41. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/reportWebVitals.js +13 -0
  42. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/src/setupTests.js +5 -0
  43. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/README.md +20 -0
  44. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/README_create_react_app.md +72 -0
  45. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/package-lock.json +18469 -0
  46. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/package.json +47 -0
  47. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/product-cards.png +0 -0
  48. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/public/favicon.ico +0 -0
  49. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/public/index.html +43 -0
  50. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/public/logo192.png +0 -0
  51. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/public/logo512.png +0 -0
  52. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/public/manifest.json +25 -0
  53. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/public/robots.txt +3 -0
  54. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/App.css +38 -0
  55. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/App.js +80 -0
  56. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/App.test.js +8 -0
  57. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/Config.js +527 -0
  58. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/Customer.js +218 -0
  59. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/Item.js +190 -0
  60. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/Order.js +189 -0
  61. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/Product.js +241 -0
  62. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/app_loader.js +24 -0
  63. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/index.css +13 -0
  64. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/index.js +17 -0
  65. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/logo.svg +1 -0
  66. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/.eslintrc +5 -0
  67. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/.yarnrc.yml +4 -0
  68. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/default-settings.js +25 -0
  69. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/default-settings.ts +25 -0
  70. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/errors.js +116 -0
  71. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/errors.ts +116 -0
  72. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/index.test.tsx +7 -0
  73. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/index.tsx +11 -0
  74. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/ra-jsonapi-client.js +577 -0
  75. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/ra-jsonapi-client.ts +577 -0
  76. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/resourceLookup.js +124 -0
  77. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/resourceLookup.ts +124 -0
  78. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/styles.module.css +9 -0
  79. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/reportWebVitals.js +13 -0
  80. api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/src/setupTests.js +5 -0
  81. api_logic_server_cli/prototypes/manager/.github/.copilot-instructions.md +13 -2
  82. api_logic_server_cli/prototypes/manager/README.md +1 -1
  83. {apilogicserver-15.0.55.dist-info → apilogicserver-15.0.57.dist-info}/METADATA +1 -1
  84. {apilogicserver-15.0.55.dist-info → apilogicserver-15.0.57.dist-info}/RECORD +90 -293
  85. api_logic_server_cli/create_from_model/.DS_Store +0 -0
  86. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/.DS_Store +0 -0
  87. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/.DS_Store +0 -0
  88. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/1023.11989cb6.chunk.js +0 -3
  89. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/1023.11989cb6.chunk.js.LICENSE.txt +0 -6
  90. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/1023.11989cb6.chunk.js.map +0 -1
  91. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/1390.f87d2fd4.chunk.js +0 -2
  92. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/1390.f87d2fd4.chunk.js.map +0 -1
  93. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/1525.9108a165.chunk.js +0 -3
  94. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/1525.9108a165.chunk.js.LICENSE.txt +0 -6
  95. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/1525.9108a165.chunk.js.map +0 -1
  96. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/1655.37451417.chunk.js +0 -3
  97. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/1655.37451417.chunk.js.LICENSE.txt +0 -6
  98. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/1655.37451417.chunk.js.map +0 -1
  99. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/1755.3055fee9.chunk.js +0 -3
  100. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/1755.3055fee9.chunk.js.LICENSE.txt +0 -6
  101. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/1755.3055fee9.chunk.js.map +0 -1
  102. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2055.440a9586.chunk.js +0 -3
  103. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2055.440a9586.chunk.js.LICENSE.txt +0 -6
  104. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2055.440a9586.chunk.js.map +0 -1
  105. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2151.7ddb7e06.chunk.js +0 -3
  106. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2151.7ddb7e06.chunk.js.LICENSE.txt +0 -6
  107. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2151.7ddb7e06.chunk.js.map +0 -1
  108. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2275.86777868.chunk.js +0 -3
  109. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2275.86777868.chunk.js.LICENSE.txt +0 -6
  110. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2275.86777868.chunk.js.map +0 -1
  111. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2343.3219b528.chunk.js +0 -3
  112. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2343.3219b528.chunk.js.LICENSE.txt +0 -6
  113. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2343.3219b528.chunk.js.map +0 -1
  114. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2756.be015677.chunk.js +0 -2
  115. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2756.be015677.chunk.js.map +0 -1
  116. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2979.43e46ae9.chunk.js +0 -3
  117. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2979.43e46ae9.chunk.js.LICENSE.txt +0 -6
  118. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/2979.43e46ae9.chunk.js.map +0 -1
  119. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3063.f1634206.chunk.js +0 -3
  120. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3063.f1634206.chunk.js.LICENSE.txt +0 -6
  121. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3063.f1634206.chunk.js.map +0 -1
  122. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3121.b52a608c.chunk.js +0 -3
  123. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3121.b52a608c.chunk.js.LICENSE.txt +0 -6
  124. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3121.b52a608c.chunk.js.map +0 -1
  125. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3131.21e38a73.chunk.js +0 -3
  126. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3131.21e38a73.chunk.js.LICENSE.txt +0 -6
  127. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3131.21e38a73.chunk.js.map +0 -1
  128. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3223.c0be035e.chunk.js +0 -3
  129. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3223.c0be035e.chunk.js.LICENSE.txt +0 -6
  130. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3223.c0be035e.chunk.js.map +0 -1
  131. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/325.b8967990.chunk.js +0 -2
  132. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/325.b8967990.chunk.js.map +0 -1
  133. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3395.55e8a561.chunk.js +0 -3
  134. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3395.55e8a561.chunk.js.LICENSE.txt +0 -6
  135. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3395.55e8a561.chunk.js.map +0 -1
  136. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3439.d7903f40.chunk.js +0 -3
  137. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3439.d7903f40.chunk.js.LICENSE.txt +0 -6
  138. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3439.d7903f40.chunk.js.map +0 -1
  139. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3463.fead963a.chunk.js +0 -3
  140. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3463.fead963a.chunk.js.LICENSE.txt +0 -6
  141. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3463.fead963a.chunk.js.map +0 -1
  142. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3633.16eedd9e.chunk.js +0 -3
  143. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3633.16eedd9e.chunk.js.LICENSE.txt +0 -6
  144. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3633.16eedd9e.chunk.js.map +0 -1
  145. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3767.e33bf133.chunk.js +0 -3
  146. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3767.e33bf133.chunk.js.LICENSE.txt +0 -6
  147. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3767.e33bf133.chunk.js.map +0 -1
  148. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3781.f21a3201.chunk.js +0 -3
  149. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3781.f21a3201.chunk.js.LICENSE.txt +0 -6
  150. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3781.f21a3201.chunk.js.map +0 -1
  151. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3827.4c76c797.chunk.js +0 -3
  152. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3827.4c76c797.chunk.js.LICENSE.txt +0 -6
  153. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3827.4c76c797.chunk.js.map +0 -1
  154. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3831.51ff9fb0.chunk.js +0 -3
  155. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3831.51ff9fb0.chunk.js.LICENSE.txt +0 -6
  156. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3831.51ff9fb0.chunk.js.map +0 -1
  157. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3852.9b4611f6.chunk.js +0 -2
  158. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/3852.9b4611f6.chunk.js.map +0 -1
  159. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4007.b0ff7f94.chunk.js +0 -3
  160. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4007.b0ff7f94.chunk.js.LICENSE.txt +0 -6
  161. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4007.b0ff7f94.chunk.js.map +0 -1
  162. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/403.8b8b639a.chunk.js +0 -3
  163. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/403.8b8b639a.chunk.js.LICENSE.txt +0 -6
  164. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/403.8b8b639a.chunk.js.map +0 -1
  165. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4181.eb73d547.chunk.js +0 -3
  166. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4181.eb73d547.chunk.js.LICENSE.txt +0 -6
  167. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4181.eb73d547.chunk.js.map +0 -1
  168. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4284.94d7d6c7.chunk.js +0 -3
  169. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4284.94d7d6c7.chunk.js.LICENSE.txt +0 -8
  170. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4284.94d7d6c7.chunk.js.map +0 -1
  171. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4415.ccfbae96.chunk.js +0 -3
  172. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4415.ccfbae96.chunk.js.LICENSE.txt +0 -6
  173. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4415.ccfbae96.chunk.js.map +0 -1
  174. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4473.f8a7acb6.chunk.js +0 -3
  175. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4473.f8a7acb6.chunk.js.LICENSE.txt +0 -6
  176. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4473.f8a7acb6.chunk.js.map +0 -1
  177. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4487.fd6a1a0a.chunk.js +0 -3
  178. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4487.fd6a1a0a.chunk.js.LICENSE.txt +0 -6
  179. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4487.fd6a1a0a.chunk.js.map +0 -1
  180. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4727.bd94f7c7.chunk.js +0 -3
  181. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4727.bd94f7c7.chunk.js.LICENSE.txt +0 -6
  182. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4727.bd94f7c7.chunk.js.map +0 -1
  183. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4791.6ee24551.chunk.js +0 -3
  184. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4791.6ee24551.chunk.js.LICENSE.txt +0 -6
  185. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4791.6ee24551.chunk.js.map +0 -1
  186. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4887.be6181c7.chunk.js +0 -3
  187. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4887.be6181c7.chunk.js.LICENSE.txt +0 -6
  188. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4887.be6181c7.chunk.js.map +0 -1
  189. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4919.aa033e5d.chunk.js +0 -3
  190. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4919.aa033e5d.chunk.js.LICENSE.txt +0 -6
  191. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4919.aa033e5d.chunk.js.map +0 -1
  192. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4923.a2af81f3.chunk.js +0 -3
  193. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4923.a2af81f3.chunk.js.LICENSE.txt +0 -6
  194. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/4923.a2af81f3.chunk.js.map +0 -1
  195. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5159.7257bf27.chunk.js +0 -2
  196. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5159.7257bf27.chunk.js.map +0 -1
  197. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5207.48273793.chunk.js +0 -3
  198. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5207.48273793.chunk.js.LICENSE.txt +0 -6
  199. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5207.48273793.chunk.js.map +0 -1
  200. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5255.157b59c3.chunk.js +0 -3
  201. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5255.157b59c3.chunk.js.LICENSE.txt +0 -6
  202. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5255.157b59c3.chunk.js.map +0 -1
  203. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5271.d46459dc.chunk.js +0 -3
  204. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5271.d46459dc.chunk.js.LICENSE.txt +0 -6
  205. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5271.d46459dc.chunk.js.map +0 -1
  206. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5360.520b770d.chunk.js +0 -3
  207. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5360.520b770d.chunk.js.LICENSE.txt +0 -6
  208. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5360.520b770d.chunk.js.map +0 -1
  209. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/553.b313e2fd.chunk.js +0 -3
  210. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/553.b313e2fd.chunk.js.LICENSE.txt +0 -6
  211. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/553.b313e2fd.chunk.js.map +0 -1
  212. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5598.cf9708e3.chunk.js +0 -2
  213. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5598.cf9708e3.chunk.js.map +0 -1
  214. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5799.d03b0078.chunk.js +0 -3
  215. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5799.d03b0078.chunk.js.LICENSE.txt +0 -6
  216. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5799.d03b0078.chunk.js.map +0 -1
  217. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5815.4022f58a.chunk.js +0 -3
  218. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5815.4022f58a.chunk.js.LICENSE.txt +0 -6
  219. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5815.4022f58a.chunk.js.map +0 -1
  220. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5819.24383fab.chunk.js +0 -3
  221. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5819.24383fab.chunk.js.LICENSE.txt +0 -6
  222. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5819.24383fab.chunk.js.map +0 -1
  223. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5833.ca45d5a7.chunk.js +0 -3
  224. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5833.ca45d5a7.chunk.js.LICENSE.txt +0 -6
  225. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5833.ca45d5a7.chunk.js.map +0 -1
  226. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5887.58759125.chunk.js +0 -3
  227. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5887.58759125.chunk.js.LICENSE.txt +0 -6
  228. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5887.58759125.chunk.js.map +0 -1
  229. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5899.b6ad6dd4.chunk.js +0 -3
  230. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5899.b6ad6dd4.chunk.js.LICENSE.txt +0 -6
  231. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/5899.b6ad6dd4.chunk.js.map +0 -1
  232. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/595.4da7adb1.chunk.js +0 -3
  233. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/595.4da7adb1.chunk.js.LICENSE.txt +0 -6
  234. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/595.4da7adb1.chunk.js.map +0 -1
  235. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6041.cf326324.chunk.js +0 -3
  236. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6041.cf326324.chunk.js.LICENSE.txt +0 -6
  237. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6041.cf326324.chunk.js.map +0 -1
  238. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/609.e8dfe31e.chunk.js +0 -3
  239. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/609.e8dfe31e.chunk.js.LICENSE.txt +0 -6
  240. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/609.e8dfe31e.chunk.js.map +0 -1
  241. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6119.75d7c926.chunk.js +0 -3
  242. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6119.75d7c926.chunk.js.LICENSE.txt +0 -6
  243. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6119.75d7c926.chunk.js.map +0 -1
  244. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6151.80255cf2.chunk.js +0 -3
  245. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6151.80255cf2.chunk.js.LICENSE.txt +0 -6
  246. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6151.80255cf2.chunk.js.map +0 -1
  247. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6231.4cf8fe8a.chunk.js +0 -3
  248. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6231.4cf8fe8a.chunk.js.LICENSE.txt +0 -6
  249. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6231.4cf8fe8a.chunk.js.map +0 -1
  250. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6239.5f2baa17.chunk.js +0 -3
  251. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6239.5f2baa17.chunk.js.LICENSE.txt +0 -6
  252. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6239.5f2baa17.chunk.js.map +0 -1
  253. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6309.0065e336.chunk.js +0 -3
  254. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6309.0065e336.chunk.js.LICENSE.txt +0 -6
  255. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6309.0065e336.chunk.js.map +0 -1
  256. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6439.61f334ab.chunk.js +0 -3
  257. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6439.61f334ab.chunk.js.LICENSE.txt +0 -6
  258. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6439.61f334ab.chunk.js.map +0 -1
  259. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6453.c870c4ab.chunk.js +0 -2
  260. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6453.c870c4ab.chunk.js.map +0 -1
  261. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/673.9178b845.chunk.js +0 -3
  262. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/673.9178b845.chunk.js.LICENSE.txt +0 -6
  263. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/673.9178b845.chunk.js.map +0 -1
  264. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6775.c167b5f4.chunk.js +0 -3
  265. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6775.c167b5f4.chunk.js.LICENSE.txt +0 -6
  266. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/6775.c167b5f4.chunk.js.map +0 -1
  267. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7.77a06ae1.chunk.js +0 -3
  268. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7.77a06ae1.chunk.js.LICENSE.txt +0 -6
  269. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7.77a06ae1.chunk.js.map +0 -1
  270. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7207.99f7ba6e.chunk.js +0 -3
  271. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7207.99f7ba6e.chunk.js.LICENSE.txt +0 -10
  272. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7207.99f7ba6e.chunk.js.map +0 -1
  273. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7335.e015d82c.chunk.js +0 -3
  274. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7335.e015d82c.chunk.js.LICENSE.txt +0 -6
  275. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7335.e015d82c.chunk.js.map +0 -1
  276. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7547.234e0e38.chunk.js +0 -3
  277. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7547.234e0e38.chunk.js.LICENSE.txt +0 -6
  278. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7547.234e0e38.chunk.js.map +0 -1
  279. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/767.42c371f4.chunk.js +0 -3
  280. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/767.42c371f4.chunk.js.LICENSE.txt +0 -6
  281. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/767.42c371f4.chunk.js.map +0 -1
  282. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7751.81497637.chunk.js +0 -3
  283. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7751.81497637.chunk.js.LICENSE.txt +0 -6
  284. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7751.81497637.chunk.js.map +0 -1
  285. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7763.e872f2fa.chunk.js +0 -3
  286. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7763.e872f2fa.chunk.js.LICENSE.txt +0 -6
  287. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7763.e872f2fa.chunk.js.map +0 -1
  288. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7831.a8a7eb0d.chunk.js +0 -3
  289. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7831.a8a7eb0d.chunk.js.LICENSE.txt +0 -6
  290. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7831.a8a7eb0d.chunk.js.map +0 -1
  291. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7887.7df3e8f8.chunk.js +0 -3
  292. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7887.7df3e8f8.chunk.js.LICENSE.txt +0 -6
  293. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/7887.7df3e8f8.chunk.js.map +0 -1
  294. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/791.28c9c0c6.chunk.js +0 -3
  295. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/791.28c9c0c6.chunk.js.LICENSE.txt +0 -6
  296. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/791.28c9c0c6.chunk.js.map +0 -1
  297. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/807.1fa5b287.chunk.js +0 -3
  298. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/807.1fa5b287.chunk.js.LICENSE.txt +0 -6
  299. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/807.1fa5b287.chunk.js.map +0 -1
  300. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/8211.b3ddbfcf.chunk.js +0 -3
  301. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/8211.b3ddbfcf.chunk.js.LICENSE.txt +0 -6
  302. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/8211.b3ddbfcf.chunk.js.map +0 -1
  303. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/8469.7ef2646d.chunk.js +0 -3
  304. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/8469.7ef2646d.chunk.js.LICENSE.txt +0 -6
  305. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/8469.7ef2646d.chunk.js.map +0 -1
  306. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/8501.6c49dfd0.chunk.js +0 -3
  307. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/8501.6c49dfd0.chunk.js.LICENSE.txt +0 -6
  308. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/8501.6c49dfd0.chunk.js.map +0 -1
  309. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/8775.08c6b0e3.chunk.js +0 -3
  310. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/8775.08c6b0e3.chunk.js.LICENSE.txt +0 -6
  311. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/8775.08c6b0e3.chunk.js.map +0 -1
  312. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9025.23b26a8d.chunk.js +0 -3
  313. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9025.23b26a8d.chunk.js.LICENSE.txt +0 -6
  314. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9025.23b26a8d.chunk.js.map +0 -1
  315. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9031.23bc310b.chunk.js +0 -3
  316. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9031.23bc310b.chunk.js.LICENSE.txt +0 -6
  317. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9031.23bc310b.chunk.js.map +0 -1
  318. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9117.0f3918ee.chunk.js +0 -3
  319. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9117.0f3918ee.chunk.js.LICENSE.txt +0 -6
  320. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9117.0f3918ee.chunk.js.map +0 -1
  321. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9553.6e286345.chunk.js +0 -3
  322. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9553.6e286345.chunk.js.LICENSE.txt +0 -6
  323. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9553.6e286345.chunk.js.map +0 -1
  324. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9671.41deefc5.chunk.js +0 -3
  325. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9671.41deefc5.chunk.js.LICENSE.txt +0 -6
  326. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9671.41deefc5.chunk.js.map +0 -1
  327. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9727.d7112422.chunk.js +0 -3
  328. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9727.d7112422.chunk.js.LICENSE.txt +0 -6
  329. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9727.d7112422.chunk.js.map +0 -1
  330. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9735.59704337.chunk.js +0 -3
  331. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9735.59704337.chunk.js.LICENSE.txt +0 -6
  332. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9735.59704337.chunk.js.map +0 -1
  333. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9911.5e9e0659.chunk.js +0 -3
  334. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9911.5e9e0659.chunk.js.LICENSE.txt +0 -6
  335. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9911.5e9e0659.chunk.js.map +0 -1
  336. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9975.a000b252.chunk.js +0 -3
  337. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9975.a000b252.chunk.js.LICENSE.txt +0 -6
  338. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9975.a000b252.chunk.js.map +0 -1
  339. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9991.d630f7c1.chunk.js +0 -3
  340. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9991.d630f7c1.chunk.js.LICENSE.txt +0 -6
  341. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/9991.d630f7c1.chunk.js.map +0 -1
  342. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/main.671002cd.js +0 -3
  343. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/main.671002cd.js.LICENSE.txt +0 -159
  344. api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/js/main.671002cd.js.map +0 -1
  345. api_logic_server_cli/prototypes/.DS_Store +0 -0
  346. api_logic_server_cli/prototypes/base/.DS_Store +0 -0
  347. api_logic_server_cli/prototypes/base/integration/mcp/.DS_Store +0 -0
  348. api_logic_server_cli/prototypes/basic_demo/.DS_Store +0 -0
  349. api_logic_server_cli/prototypes/basic_demo/customizations/.DS_Store +0 -0
  350. api_logic_server_cli/prototypes/basic_demo/customizations/api/.DS_Store +0 -0
  351. api_logic_server_cli/prototypes/basic_demo/customizations/ui/.DS_Store +0 -0
  352. api_logic_server_cli/prototypes/basic_demo/customizations/ui/admin/.DS_Store +0 -0
  353. api_logic_server_cli/prototypes/basic_demo/customizations/ui/reference_react_app/.DS_Store +0 -0
  354. api_logic_server_cli/prototypes/manager/system/genai/.DS_Store +0 -0
  355. api_logic_server_cli/prototypes/manager/system/genai/app_templates/react-admin-template/.DS_Store +0 -0
  356. api_logic_server_cli/prototypes/manager/system/genai/examples/.DS_Store +0 -0
  357. api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/.DS_Store +0 -0
  358. api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_docs_logic/.DS_Store +0 -0
  359. api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/wg_dev_merge.zip +0 -0
  360. api_logic_server_cli/prototypes/nw/.DS_Store +0 -0
  361. api_logic_server_cli/prototypes/nw/ui/.DS_Store +0 -0
  362. api_logic_server_cli/prototypes/nw/ui/reference_react_app/.DS_Store +0 -0
  363. /api_logic_server_cli/prototypes/base/{README_PROJECT.md → readme_project.md} +0 -0
  364. /api_logic_server_cli/prototypes/basic_demo/{README.md → readme.md} +0 -0
  365. {apilogicserver-15.0.55.dist-info → apilogicserver-15.0.57.dist-info}/WHEEL +0 -0
  366. {apilogicserver-15.0.55.dist-info → apilogicserver-15.0.57.dist-info}/entry_points.txt +0 -0
  367. {apilogicserver-15.0.55.dist-info → apilogicserver-15.0.57.dist-info}/licenses/LICENSE +0 -0
  368. {apilogicserver-15.0.55.dist-info → apilogicserver-15.0.57.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,577 @@
1
+ import { stringify } from 'query-string';
2
+ import { fetchUtils, DataProvider, HttpError } from 'react-admin';
3
+ import merge from 'deepmerge';
4
+ import { defaultSettings } from './default-settings';
5
+ import ResourceLookup from './resourceLookup';
6
+ import Keycloak from 'keycloak-js';
7
+ import {getConf} from '../Config'
8
+ import urlJoin from 'url-join';
9
+
10
+ const conf : { [ key: string] : any } = getConf();
11
+ const duration = 2000;
12
+
13
+ const prepareAttributes = (attributes : any, resource_en : any) => {
14
+ const resource = decodeURI(resource_en)
15
+ // temp: convert all numbers to string to allow FK lookups (jsonapi ids are strings, while FKs may be numbers :////)
16
+ const resource_attr_rels = conf.resources[resource].attributes?.map( (attr : any) => attr.relationship ? attr.name : null)
17
+ const m_attrs = Object.assign({}, attributes)
18
+ for(let [k, v] of Object.entries(attributes)){
19
+ m_attrs[k] = v
20
+ if(typeof v === 'number' && resource_attr_rels.find((n: string) => n === k)){
21
+ m_attrs[k] = v.toString();
22
+ }
23
+ }
24
+ return m_attrs
25
+ }
26
+
27
+ const prepareQueryFilter = (query: any, ids : any, fks : any) => {
28
+ if(ids.length === fks.length){
29
+ for(let i = 0; i<fks.length; i++){
30
+ let fk = fks[i]
31
+ let id = ids[i]
32
+ query[`filter[${fk}]`] = id
33
+ }
34
+ }
35
+ else{
36
+ // fk probably contains an underscore
37
+ // todo: how to fix???
38
+ console.warn("Wrong FK length.. ", ids, fks)
39
+ query[`filter[${fks[0]}]`] = ids && ids.length ? ids[0] : ""
40
+ }
41
+ }
42
+
43
+ export const getKeycloakHeaders = (
44
+ keycloak: Keycloak,
45
+ options: fetchUtils.Options | undefined
46
+ ): Headers => {
47
+ const headers = ((options && options.headers) ||
48
+ new Headers({
49
+ Accept: 'application/json',
50
+ })) as Headers;
51
+ if(keycloak?.isTokenExpired()){
52
+ keycloak.updateToken(30)
53
+ }
54
+ if (keycloak.token) {
55
+ headers.set('Authorization', `Bearer ${keycloak.token}`);
56
+ }
57
+ return headers;
58
+ };
59
+
60
+ export const httpAuthClient = (url: string, options : any) => {
61
+ if (!options.headers) {
62
+ options.headers = new Headers({ Accept: 'application/json' });
63
+ }
64
+ const token : string = localStorage.getItem('auth_token') || "";
65
+ if(token){
66
+ options.headers.set('Authorization', `Bearer ${token}`);
67
+ }
68
+ return fetchUtils.fetchJson(url, options)
69
+ .catch((e:HttpError ) => {
70
+ const msg = e.body?.msg || "Unknown Error."
71
+ console.warn('httpAuthClient httperror', e, e.status, e.body, msg)
72
+ if(e.body?.message?.startsWith('Booting project')){
73
+ // Custom error handling for booting, todo!!
74
+ console.log('WGserver_response: booting', e, e.status, e.body)
75
+ setTimeout(() => document.location.reload(), 3000);
76
+ throw new HttpError(e, e.status,
77
+ {title: "Booting",
78
+ detail:"Booting project, please wait",
79
+ message:"Booting project, please wait",
80
+ code:e.status})
81
+ }
82
+ throw new HttpError(e, e.status, e.body)
83
+ })
84
+ }
85
+
86
+ const createKCHttpAuthClient = (keycloak: Keycloak) => (
87
+ url: any,
88
+ options: fetchUtils.Options | undefined
89
+ ) => {
90
+ if(!keycloak){
91
+ console.error("No keycloak")
92
+ return
93
+ }
94
+ if(keycloak.token){
95
+ localStorage.setItem('auth_token', keycloak.token)
96
+ }
97
+ const requestHeaders = getKeycloakHeaders(keycloak, options);
98
+ return fetchUtils.fetchJson(url, {
99
+ ...options,
100
+ headers: requestHeaders,
101
+ })
102
+ .catch(e => {
103
+ console.warn('KC httpAuthClient httperror', e, e.body)
104
+ if(e.body?.message?.startsWith('Booting project')){
105
+ // Custom error handling for booting, todo!!
106
+ console.log('WGserver_response: booting', e, e.status, e.body)
107
+ setTimeout(() => document.location.reload(), 3000);
108
+ throw new HttpError(e, e.status,
109
+ {title: "Booting",
110
+ detail:"Booting project, please wait",
111
+ message:"Booting project, please wait",
112
+ code:e.status})
113
+ }
114
+ throw new HttpError(e, e.status, e.statusText)
115
+ })
116
+ };
117
+
118
+ /**
119
+ * Based on
120
+ *
121
+ * https://github.com/marmelab/react-admin/blob/master/packages/ra-data-simple-rest/src/index.ts
122
+ * @see https://github.com/marmelab/FakeRest
123
+ *
124
+ */
125
+ export const jsonapiClient = (
126
+ apiUrl: string,
127
+ userSettings = {conf : {}},
128
+ keycloak: Keycloak| null = null,
129
+ httpClient = httpAuthClient,//fetchUtils.fetchJson,
130
+ countHeader: string = 'Content-Range',
131
+ ): DataProvider => {
132
+
133
+ if(keycloak?.isTokenExpired()){
134
+ keycloak.login();
135
+ }
136
+ if(keycloak){
137
+ httpClient = createKCHttpAuthClient(keycloak)
138
+ }
139
+ const settings = merge(defaultSettings, userSettings);
140
+
141
+ return {
142
+ /*******************************************************************************************
143
+ * getList: fetch a collection
144
+ *******************************************************************************************/
145
+ getList: (resource_name_en, params = {}) => {
146
+ const conf = getConf();
147
+ const resource_name = decodeURI(resource_name_en);
148
+ const { page, perPage } = params?.pagination || { page: 1, perPage: 10 };
149
+ if(! conf.resources[resource_name]){
150
+ console.warn(`Invalid resource ${resource_name}`)
151
+ return Promise.reject(new Error(`Invalid resource ${resource_name}`))
152
+ }
153
+ const resource_conf : any = conf.resources[resource_name];
154
+ const sort : string = resource_conf.sort
155
+ // Create query with pagination params.
156
+ const query : {[k: string]: any} = {
157
+ 'page[number]': page,
158
+ 'page[size]': perPage,
159
+ 'page[offset]': (page - 1) * perPage,
160
+ 'page[limit]': perPage
161
+ };
162
+
163
+ if(sort){
164
+ query.sort = sort
165
+ }
166
+ // Add all filter params to query.
167
+ if(params.filter?.q && "resources" in conf){
168
+ // search is requested by react-admin
169
+ const search_cols = resource_conf.search_cols
170
+ const filter = search_cols?.map((col: any) => {
171
+ return {
172
+ "name":col.name,
173
+ "op": col.op? col.op : "ilike",
174
+ "val": col.val ? col.val.format(params.filter.q) : `%${params.filter.q}%`
175
+ };}) || ""
176
+ if(filter){
177
+ query['filter'] = JSON.stringify(filter)
178
+ }
179
+ }
180
+ else{
181
+ Object.keys(params.filter || {}).forEach((key) => {
182
+ query[`filter[${key}]`] = params.filter[key];
183
+ });
184
+ }
185
+
186
+ // Add sort parameter, first check the default configured sorting, then the customized sort
187
+ if (params.sort && params.sort.field) {
188
+ const prefix = params.sort.order?.toLowerCase() === 'desc' ? '-' : ''; // <> ASC
189
+ query.sort = `${prefix}${params.sort.field}`;
190
+ }
191
+ if(!query.sort){
192
+ query.sort = resource_conf.sort || "id"
193
+ }
194
+ const rel_conf = conf.resources[resource_name].relationships || []
195
+ // we only need "toone" rels in getList so we can show the join/user key
196
+ const includes: string[] = rel_conf.filter((rel : any) => rel.direction !== 'tomany').map((rel : any) => rel.name);
197
+ if(params.meta?.include?.length){
198
+ includes.push(...params.meta.include)
199
+ }
200
+ query['include'] = includes.join(',');
201
+
202
+ const url = `${apiUrl}/${resource_name_en}?${stringify(query)}`;
203
+ return httpClient(url, {})
204
+ .then(({ json }) => {
205
+ // const lookup = new ResourceLookup(json.data);
206
+ // When meta data and the 'total' setting is provided try
207
+ // to get the total count.
208
+ let total = 0;
209
+ if (json.meta && settings.total) {
210
+ total = json.meta[settings.total];
211
+ }
212
+ // Use the length of the data array as a fallback.
213
+ total = total || json.data.length;
214
+ const lookup = new ResourceLookup(json);
215
+ const jsonData = json.data.map((resource: any) =>{
216
+ return lookup.unwrapData(resource)
217
+ }
218
+ );
219
+ const validUntil = new Date();
220
+ validUntil.setTime(validUntil.getTime() + duration);
221
+ return {
222
+ data: jsonData,
223
+ included: json.included,
224
+ validUntil : validUntil,
225
+ total: total
226
+ };
227
+ })
228
+ .catch((err: HttpError) => {
229
+ console.warn('getList Error', err, err.body, err.status);
230
+ const errorHandler = settings.errorHandler;
231
+ return Promise.reject(errorHandler(err));
232
+ });
233
+ },
234
+
235
+ /*******************************************************************************************
236
+ getOne
237
+ ********************************************************************************************/
238
+ getOne: (resource_en: any, params: { id: any }) => {
239
+ const conf = getConf();
240
+ const resource = decodeURI(resource_en)
241
+ if(params.id === null || params.id === undefined){
242
+ return new Promise(()=>{return {data: {}}})
243
+ }
244
+ const resource_conf = conf["resources"][resource];
245
+ if(!resource_conf){
246
+ console.warn(`Invalid resource ${resource}`)
247
+ return new Promise(()=>{});
248
+ }
249
+ const rel_conf = resource_conf?.relationships || [];
250
+ const includes: string[] = rel_conf.map((rel : any) => rel.name).join(",")
251
+ const url = `${apiUrl}/${resource}/${params.id}?include=${includes}&page[limit]=1`; // we only need 1 include at most
252
+
253
+ return httpClient(url, {}).then(({ json }) => {
254
+
255
+ let { id, attributes, relationships, type } = json.data;
256
+ if(id === undefined){
257
+ return {data:{}}
258
+ }
259
+ Object.assign(attributes, relationships, {type: type}, {relationships: relationships}, {attributes: {...attributes} });
260
+ attributes = prepareAttributes(attributes, resource)
261
+ const validUntil = new Date();
262
+ validUntil.setTime(validUntil.getTime() + duration);
263
+ return {
264
+ data: {
265
+ id,
266
+ validUntil : validUntil,
267
+ ...attributes
268
+ }
269
+ };
270
+ });
271
+ },
272
+
273
+ /*******************************************************************************************
274
+ getMany
275
+ ********************************************************************************************/
276
+ getMany: (resource_en, params: any) => {
277
+ const conf = getConf();
278
+ if(resource_en === null || resource_en === undefined || resource_en === "" || resource_en === "Location"){
279
+ return new Promise(()=>{return {data: {}}})
280
+ }
281
+ const resource_de = decodeURI(resource_en)
282
+ const resource = capitalize(resource_de);
283
+ let query = `filter[id]=${params.ids instanceof Array ? params.ids.join(',') : JSON.stringify(params.ids)}`
284
+ if(params.meta?.include?.length){
285
+ query += `&include=${(params.meta.include).join(',')}`
286
+ }
287
+
288
+ const url = `${apiUrl}/${resource}?${query}`;
289
+ return httpClient(url, {}).then(({ json }) => {
290
+
291
+ // When meta data and the 'total' setting is provided try
292
+ // to get the total count.
293
+ let total = 0;
294
+ if (json.meta && settings.total) {
295
+ total = json.meta[settings.total];
296
+ }
297
+ // Use the length of the data array as a fallback.
298
+ total = total || json.data.length; // { id: any; attributes: any; }
299
+
300
+ const jsonData = json.data.map((value: any) => {
301
+ const result = Object.assign({ id: value.id, type: value.type, relationships: value.relationships }, prepareAttributes(value.attributes, resource))
302
+ //const related = json.included || [];
303
+ // TODO!!: this is not working, we need to find the included resources
304
+ // for(const [k,v] of Object.entries(value.relationships || {})){
305
+ // console.log('getMany', k, v)
306
+ // if(v instanceof Array){
307
+ // v.forEach((inc: any) => {
308
+ // const type = inc.data?.type
309
+ // if(!type){
310
+ // return
311
+ // }
312
+ // const related = json.included?.find((rel: any) => rel.type === type && rel.id === inc.id)
313
+ // Object.assign(result, { [k]: related})
314
+ // });
315
+ // }
316
+ // }
317
+ return result;
318
+ }
319
+ );
320
+ const validUntil = new Date();
321
+ validUntil.setTime(validUntil.getTime() + duration);
322
+ return {
323
+ data: jsonData,
324
+ validUntil : validUntil,
325
+ total: total
326
+ };
327
+ });
328
+ },
329
+
330
+ /*******************************************************************************************
331
+ getManyReference
332
+ ********************************************************************************************/
333
+ getManyReference: (resource_name_en, params : any) => {
334
+ const conf = getConf();
335
+ const resource_name = decodeURI(resource_name_en)
336
+ const { page, perPage } = params.pagination;
337
+ const { field, order } = params.sort;
338
+
339
+ const query: {[k: string]: any} = { };
340
+
341
+ if (field) {
342
+ const prefix = order === 'DESC' ? '-' : ''; // <> ASC
343
+ query.sort = `${prefix}${field}`;
344
+ }
345
+
346
+
347
+ let fks = params.target.split('_')
348
+ //const ids = fks.length > 1 ? params.id.split('_') : params.id
349
+ let ids = params.id.split('_')
350
+
351
+ if(ids.length !== fks.length){
352
+ console.warn("Wrong FK length ", ids, fks)
353
+ fks = [params.target]
354
+ ids = [params.id]
355
+ }
356
+
357
+ prepareQueryFilter(query, ids, fks);
358
+
359
+ query[`page[limit]`] = perPage
360
+ query[`page[offset]`] = (page - 1) * perPage
361
+
362
+ const options = {};
363
+ const resource_conf = conf["resources"][resource_name];
364
+ const rel_conf = resource_conf?.relationships || [];
365
+ const includes: string[] = rel_conf.map((rel : any) => rel.name).join(",")
366
+ const url = `${apiUrl}/${resource_name}?${stringify(query)}&include=${includes}`
367
+ return httpClient(url, options).then(({ headers, json }) => {
368
+ if (!headers.has(countHeader)) {
369
+ console.debug(
370
+ `The ${countHeader} header is missing in the HTTP Response. The simple REST data provider expects responses for lists of resources to contain this header with the total number of results to build the pagination. If you are using CORS, did you declare ${countHeader} in the Access-Control-Expose-Headers header?`
371
+ );
372
+ }
373
+ let total = json.meta?.total;
374
+ if (json.meta && settings.total) {
375
+ total = json.meta[settings.total];
376
+ }
377
+ // Use the length of the data array as a fallback.
378
+ total = total || json.data.length;
379
+ const lookup = new ResourceLookup(json);
380
+ const jsonData = json.data.map((resource: any) =>{
381
+ return lookup.unwrapData(resource)
382
+ }
383
+ );
384
+
385
+ return {
386
+ data: jsonData,
387
+ total: total
388
+ };
389
+ });
390
+ },
391
+
392
+ update: async(resource_name_en : string, params: any) => {
393
+ const conf = getConf();
394
+ const resource_name = decodeURI(resource_name_en)
395
+ let type = conf.resources[resource_name].type || resource_name;
396
+
397
+ const previousDataFiltered = Object.keys(params.previousData)
398
+ .filter(key => !(key in params.data))
399
+ .reduce((obj, key) => {
400
+ obj[key] = params.previousData[key];
401
+ return obj;
402
+ }, {});
403
+
404
+ let Sendingdata = { ...previousDataFiltered, ...params.data };
405
+ const data = {
406
+ data: {
407
+ id: params.id,
408
+ type: type,
409
+ attributes: Sendingdata
410
+ }
411
+ };
412
+
413
+ console.log('Update ', data)
414
+
415
+ return httpClient(`${apiUrl}/${resource_name}/${params.id}`, {
416
+ method: settings.updateMethod,
417
+ body: JSON.stringify(data)
418
+ })
419
+ .then(({ json }) => {
420
+ const { id, attributes } = json.data;
421
+ return {
422
+ data: {
423
+ id,
424
+ ...attributes
425
+ }
426
+ };
427
+ })
428
+ .catch((err: HttpError) => {
429
+ console.log('catch Error', err.body);
430
+ const errorHandler = settings.errorHandler;
431
+ return Promise.reject(errorHandler(err));
432
+ });
433
+ },
434
+
435
+ // },
436
+
437
+ // simple-rest doesn't handle provide an updateMany route, so we fallback to calling update n times instead
438
+ updateMany: (resource_name, params) => {
439
+ // todo : bulk update
440
+ const conf = getConf();
441
+ return Promise.all(
442
+ params.ids.map((id) => {
443
+ const data = {
444
+ data: {
445
+ attributes: params.data
446
+ }
447
+ };
448
+ return httpClient(`${apiUrl}/${decodeURI(resource_name)}/${id}`, {
449
+ method: 'PATCH',
450
+ body: JSON.stringify(params.data)
451
+ })
452
+ })
453
+ )
454
+ .then((responses) => ({ data: responses.map(({ json }) => json.id) }))
455
+ },
456
+
457
+ create: (resource_name_en : string, params: any) => {
458
+ const conf = getConf();
459
+ const resource_name = decodeURI(resource_name_en)
460
+ let type = conf.resources[resource_name].type || resource_name;
461
+ // use both current (in case of a form reference) and data in case of raw dataProvider.create() call
462
+ let item_data = params.data?.current?.data ?? params.data;
463
+ console.log('creating resource with params', params)
464
+ const data = {
465
+ data: {
466
+ type: type,
467
+ attributes: item_data
468
+ }
469
+ };
470
+ return httpClient(`${apiUrl}/${resource_name}`, {
471
+ method: 'POST',
472
+ body: JSON.stringify(data)
473
+ })
474
+ .then(({ json }) => {
475
+ const { id, attributes } = json.data;
476
+ return {
477
+ data: {
478
+ id,
479
+ ...attributes
480
+ }
481
+ };
482
+ })
483
+ .catch((err: HttpError) => {
484
+ console.log('catch Error', err.body);
485
+ const errorHandler = settings.errorHandler;
486
+ return Promise.reject(errorHandler(err));
487
+ })
488
+ },
489
+
490
+ delete: (resource, params) => {
491
+ const conf = getConf();
492
+ return httpClient(`${apiUrl}/${decodeURI(resource)}/${params.id}`, {
493
+ method: 'DELETE',
494
+ headers: new Headers({
495
+ 'Content-Type': 'text/plain'
496
+ })
497
+ }).then(({ json }) => ({ data: json }))},
498
+
499
+ // simple-rest doesn't handle filters on DELETE route, so we fallback to calling DELETE n times instead
500
+ deleteMany: (resource, params) => {
501
+ const conf = getConf();
502
+ return Promise.all(
503
+ params.ids.map((id) =>
504
+ httpClient(`${apiUrl}/${decodeURI(resource)}/${id}`, {
505
+ method: 'DELETE',
506
+ headers: new Headers({
507
+ 'Content-Type': 'text/plain'
508
+ })
509
+ })
510
+ )
511
+ ).then((responses) => ({
512
+ data: responses.map(({ json }) => json)
513
+ }))
514
+ },
515
+
516
+ getResources: () => {
517
+ const conf = getConf();
518
+ if(conf){
519
+ return Promise.resolve({data: conf});
520
+ };
521
+ return httpClient(`${apiUrl}/schema`, {
522
+ method: 'GET'
523
+ }).then(({json}) => {
524
+ localStorage.setItem('raconf', JSON.stringify(json));
525
+ return { data: json };
526
+ })
527
+ .catch(()=> {return {data : {}} })
528
+ },
529
+
530
+ execute: (resource_name_en: string, command: string, data: { id: string|undefined, data: any, args: any }) => {
531
+ const conf = getConf();
532
+ const resource_name = decodeURI(resource_name_en)
533
+ console.log(`execute rpc on resource ${resource_name} with params`, data)
534
+ const id = data?.id || ""
535
+ if(!command){
536
+ console.warn('No command provided')
537
+ return new Promise(()=>{})
538
+ }
539
+ const endpoint = id ? `${apiUrl}/${resource_name}/${id}/${command}` : `${apiUrl}/${resource_name}/${command}`
540
+ return httpClient(endpoint, {
541
+ method: 'POST',
542
+ body: JSON.stringify(data?.args || {})
543
+ })
544
+ },
545
+ };
546
+ };
547
+
548
+ function capitalize(s: string): string {
549
+ // todo
550
+ return s;
551
+ return s[0].toUpperCase() + s.slice(1);
552
+ }
553
+ export interface includeRelations {
554
+ resource: string;
555
+ includes: string[];
556
+ }
557
+
558
+ /*
559
+ Call safrs jsonapi rpc endpoints
560
+ */
561
+ export const jaRpc = async (endpoint: string, data?: any, options?: RequestInit) => {
562
+ const url = urlJoin(conf.api_root, endpoint);
563
+ console.log('jaRpc', url, data, options);
564
+ console.log('jaRpc', conf);
565
+
566
+ const defaultOptions: RequestInit = {
567
+ method: "POST",
568
+ headers: {
569
+ "Content-Type": "application/json",
570
+ Authorization: `Bearer ${localStorage.getItem("auth_token")}`,
571
+ },
572
+ body: JSON.stringify(data || {}),
573
+ };
574
+ const requestOptions = { ...defaultOptions, ...options };
575
+ const response = await fetch(url, requestOptions);
576
+ return response.json();
577
+ };
@@ -0,0 +1,124 @@
1
+ interface Relationship {
2
+ data: null | { id: string; type: string } | Array<{ id: string; type: string }>;
3
+ relationships?: { [key: string]: Relationship };
4
+ }
5
+
6
+ /**
7
+ * A map-like class that maps resource linkage objects {id: 1, type: "user"} to concrete resources with attributes and
8
+ * relationships
9
+ */
10
+ export default class ResourceLookup {
11
+ lookup: Map<any, any>;
12
+ includes: string[];
13
+
14
+ /**
15
+ * Constructs a new lookup map
16
+ * @param {Object} response A JSON API response, in JSON format
17
+ */
18
+ constructor(response: any) {
19
+ this.lookup = new Map();
20
+ this.includes = [];
21
+
22
+ // If the response wasn't a JSON dictionary, we can't and don't need to build a lookup
23
+ if (typeof response !== 'object') return;
24
+
25
+ let resources;
26
+ // if (response.hasOwnProperty('included')) {
27
+ if (Object.prototype.hasOwnProperty.call(response, 'included')) {
28
+ resources = [...response.data, ...response.included];
29
+ } else {
30
+ resources = response.data;
31
+ }
32
+
33
+ // Iterate over each resource returned and put each in the lookup
34
+ for (const entry of resources) {
35
+ const key = this.getKey(entry);
36
+ this.lookup.set(key, entry);
37
+ }
38
+ }
39
+
40
+ /**
41
+ * Calculates a hashable key for JSON API resources
42
+ * @param resource A resource linkage object
43
+ * @returns {string}
44
+ */
45
+ getKey(resource: any) {
46
+ return `${resource.type}:${resource.id}`;
47
+ }
48
+
49
+ /**
50
+ * Looks up a resource
51
+ * @param resource A resource linkage object
52
+ * @returns {Object}
53
+ */
54
+ get(resource: any) {
55
+ // If we don't have included data for this resource, just return the Resource Linkage object, since that's still
56
+ // useful
57
+ if (this.has(resource)) {
58
+ return this.lookup.get(this.getKey(resource));
59
+ } else {
60
+ return structuredClone(resource);
61
+ }
62
+ }
63
+
64
+ /**
65
+ * Returns true if the resource is in the lookup
66
+ * @param resource
67
+ * @returns {boolean}
68
+ */
69
+ has(resource: any) {
70
+ return this.lookup.has(this.getKey(resource));
71
+ }
72
+
73
+ /**
74
+ * Converts a JSON API data object (with id, type, and attributes fields) into a flattened object
75
+ * @param {Object} response A JSON API data object
76
+ */
77
+ unwrapData(response: any) {
78
+ // The base resource object, merge the attributes and the id/type fields
79
+ const result = Object.assign(
80
+ {
81
+ id: response?.id,
82
+ ja_type: response?.type,
83
+ type: response?.Type || response?.type,
84
+ attributes: response.attributes || {},
85
+ },
86
+ response.attributes
87
+ );
88
+
89
+ // Deal with relationships
90
+ if (Object.prototype.hasOwnProperty.call(response, 'relationships')) {
91
+ result.relationships = response.relationships;
92
+ for (const [relationshipName, relationship] of Object.entries(response.relationships)) {
93
+ if ((relationship ).data === null) {
94
+ result[relationshipName] = null;
95
+ }
96
+
97
+ if (!(relationship ).data) {
98
+ continue;
99
+ } else if (Array.isArray((relationship ).data && (relationship ).data)) {
100
+ result[relationshipName] = (relationship ).data?.map((linkage: any) => {
101
+ const resource = this.get(linkage);
102
+ const lresult = structuredClone(this.unwrapData(resource));
103
+ Object.entries(lresult.attributes || {}).map(([key, value]) => {
104
+ lresult[key] = value;
105
+ });
106
+ result.relationships[relationshipName].data = result[relationshipName];
107
+ return lresult;
108
+ });
109
+ } else if ((relationship ).data?.id) {
110
+ const resource = this.get((relationship ).data);
111
+ result[relationshipName] = this.unwrapData(resource);
112
+ result.relationships[relationshipName].data = result[relationshipName];
113
+ }
114
+ }
115
+ }
116
+
117
+ try {
118
+ JSON.stringify(structuredClone(result));
119
+ } catch (e) {
120
+ return null;
121
+ }
122
+ return structuredClone(result);
123
+ }
124
+ }