@meltemi/diagrams-cli 0.0.0-stage → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +58 -2
  3. package/dist/assets-command.d.ts +16 -0
  4. package/dist/assets-command.d.ts.map +1 -0
  5. package/dist/assets-command.js +145 -0
  6. package/dist/assets-command.js.map +1 -0
  7. package/dist/assist-command.d.ts +19 -0
  8. package/dist/assist-command.d.ts.map +1 -0
  9. package/dist/assist-command.js +268 -0
  10. package/dist/assist-command.js.map +1 -0
  11. package/dist/auth-command.d.ts +14 -0
  12. package/dist/auth-command.d.ts.map +1 -0
  13. package/dist/auth-command.js +233 -0
  14. package/dist/auth-command.js.map +1 -0
  15. package/dist/bin.d.ts +3 -0
  16. package/dist/bin.d.ts.map +1 -0
  17. package/dist/bin.js +60 -0
  18. package/dist/bin.js.map +1 -0
  19. package/dist/build-command.d.ts +23 -0
  20. package/dist/build-command.d.ts.map +1 -0
  21. package/dist/build-command.js +123 -0
  22. package/dist/build-command.js.map +1 -0
  23. package/dist/cli.d.ts +46 -0
  24. package/dist/cli.d.ts.map +1 -0
  25. package/dist/cli.js +823 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/cloud-client.d.ts +246 -0
  28. package/dist/cloud-client.d.ts.map +1 -0
  29. package/dist/cloud-client.js +591 -0
  30. package/dist/cloud-client.js.map +1 -0
  31. package/dist/cloud-command.d.ts +56 -0
  32. package/dist/cloud-command.d.ts.map +1 -0
  33. package/dist/cloud-command.js +81 -0
  34. package/dist/cloud-command.js.map +1 -0
  35. package/dist/cloud-context.d.ts +106 -0
  36. package/dist/cloud-context.d.ts.map +1 -0
  37. package/dist/cloud-context.js +185 -0
  38. package/dist/cloud-context.js.map +1 -0
  39. package/dist/cloud-errors.d.ts +37 -0
  40. package/dist/cloud-errors.d.ts.map +1 -0
  41. package/dist/cloud-errors.js +46 -0
  42. package/dist/cloud-errors.js.map +1 -0
  43. package/dist/cloud-host.d.ts +72 -0
  44. package/dist/cloud-host.d.ts.map +1 -0
  45. package/dist/cloud-host.js +129 -0
  46. package/dist/cloud-host.js.map +1 -0
  47. package/dist/cloud-manifest.d.ts +12 -0
  48. package/dist/cloud-manifest.d.ts.map +1 -0
  49. package/dist/cloud-manifest.js +21 -0
  50. package/dist/cloud-manifest.js.map +1 -0
  51. package/dist/cloud-paths.d.ts +48 -0
  52. package/dist/cloud-paths.d.ts.map +1 -0
  53. package/dist/cloud-paths.js +104 -0
  54. package/dist/cloud-paths.js.map +1 -0
  55. package/dist/credentials.d.ts +107 -0
  56. package/dist/credentials.d.ts.map +1 -0
  57. package/dist/credentials.js +243 -0
  58. package/dist/credentials.js.map +1 -0
  59. package/dist/export-command.d.ts +35 -0
  60. package/dist/export-command.d.ts.map +1 -0
  61. package/dist/export-command.js +524 -0
  62. package/dist/export-command.js.map +1 -0
  63. package/dist/import-command.d.ts +20 -0
  64. package/dist/import-command.d.ts.map +1 -0
  65. package/dist/import-command.js +254 -0
  66. package/dist/import-command.js.map +1 -0
  67. package/dist/index.d.ts +4 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +4 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/init-command.d.ts +28 -0
  72. package/dist/init-command.d.ts.map +1 -0
  73. package/dist/init-command.js +199 -0
  74. package/dist/init-command.js.map +1 -0
  75. package/dist/login-listener.d.ts +58 -0
  76. package/dist/login-listener.d.ts.map +1 -0
  77. package/dist/login-listener.js +173 -0
  78. package/dist/login-listener.js.map +1 -0
  79. package/dist/messages/en.d.ts +533 -0
  80. package/dist/messages/en.d.ts.map +1 -0
  81. package/dist/messages/en.js +803 -0
  82. package/dist/messages/en.js.map +1 -0
  83. package/dist/messages/es.d.ts +3 -0
  84. package/dist/messages/es.d.ts.map +1 -0
  85. package/dist/messages/es.js +764 -0
  86. package/dist/messages/es.js.map +1 -0
  87. package/dist/messages/index.d.ts +442 -0
  88. package/dist/messages/index.d.ts.map +1 -0
  89. package/dist/messages/index.js +42 -0
  90. package/dist/messages/index.js.map +1 -0
  91. package/dist/messages/push-pull-en.d.ts +84 -0
  92. package/dist/messages/push-pull-en.d.ts.map +1 -0
  93. package/dist/messages/push-pull-en.js +146 -0
  94. package/dist/messages/push-pull-en.js.map +1 -0
  95. package/dist/messages/push-pull-es.d.ts +7 -0
  96. package/dist/messages/push-pull-es.d.ts.map +1 -0
  97. package/dist/messages/push-pull-es.js +144 -0
  98. package/dist/messages/push-pull-es.js.map +1 -0
  99. package/dist/open-url.d.ts +11 -0
  100. package/dist/open-url.d.ts.map +1 -0
  101. package/dist/open-url.js +36 -0
  102. package/dist/open-url.js.map +1 -0
  103. package/dist/plugins-command.d.ts +15 -0
  104. package/dist/plugins-command.d.ts.map +1 -0
  105. package/dist/plugins-command.js +106 -0
  106. package/dist/plugins-command.js.map +1 -0
  107. package/dist/preview.d.ts +54 -0
  108. package/dist/preview.d.ts.map +1 -0
  109. package/dist/preview.js +249 -0
  110. package/dist/preview.js.map +1 -0
  111. package/dist/project-errors.d.ts +17 -0
  112. package/dist/project-errors.d.ts.map +1 -0
  113. package/dist/project-errors.js +85 -0
  114. package/dist/project-errors.js.map +1 -0
  115. package/dist/projects-command.d.ts +13 -0
  116. package/dist/projects-command.d.ts.map +1 -0
  117. package/dist/projects-command.js +85 -0
  118. package/dist/projects-command.js.map +1 -0
  119. package/dist/publish-command.d.ts +41 -0
  120. package/dist/publish-command.d.ts.map +1 -0
  121. package/dist/publish-command.js +311 -0
  122. package/dist/publish-command.js.map +1 -0
  123. package/dist/pull-command.d.ts +21 -0
  124. package/dist/pull-command.d.ts.map +1 -0
  125. package/dist/pull-command.js +300 -0
  126. package/dist/pull-command.js.map +1 -0
  127. package/dist/push-command.d.ts +31 -0
  128. package/dist/push-command.d.ts.map +1 -0
  129. package/dist/push-command.js +391 -0
  130. package/dist/push-command.js.map +1 -0
  131. package/dist/push-review.d.ts +16 -0
  132. package/dist/push-review.d.ts.map +1 -0
  133. package/dist/push-review.js +72 -0
  134. package/dist/push-review.js.map +1 -0
  135. package/dist/push-set.d.ts +126 -0
  136. package/dist/push-set.d.ts.map +1 -0
  137. package/dist/push-set.js +289 -0
  138. package/dist/push-set.js.map +1 -0
  139. package/dist/push-validation.d.ts +20 -0
  140. package/dist/push-validation.d.ts.map +1 -0
  141. package/dist/push-validation.js +70 -0
  142. package/dist/push-validation.js.map +1 -0
  143. package/dist/redact.d.ts +9 -0
  144. package/dist/redact.d.ts.map +1 -0
  145. package/dist/redact.js +22 -0
  146. package/dist/redact.js.map +1 -0
  147. package/dist/review-command.d.ts +44 -0
  148. package/dist/review-command.d.ts.map +1 -0
  149. package/dist/review-command.js +348 -0
  150. package/dist/review-command.js.map +1 -0
  151. package/package.json +56 -3
  152. package/templates/c4/diagrams/views.meltemi +16 -0
  153. package/templates/c4/models/system.meltemi +23 -0
  154. package/templates/ci/github.yml +96 -0
  155. package/templates/ci/gitlab.yml +53 -0
  156. package/templates/flow/diagrams/overview.meltemi +15 -0
  157. package/templates/free/diagrams/slide.meltemi +39 -0
  158. package/templates/purchase/diagrams/architecture.meltemi +36 -0
  159. package/templates/purchase/diagrams/executive.meltemi +52 -0
  160. package/templates/purchase/diagrams/payment.meltemi +42 -0
  161. package/templates/purchase/models/commerce.meltemi +30 -0
  162. package/templates/purchase/stories/purchase.meltemi +38 -0
  163. package/templates/sequence/diagrams/sign-in.meltemi +36 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-command.js","sourceRoot":"","sources":["../src/pull-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,UAAU,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,MAAM,EACN,QAAQ,EACR,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAoB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EACL,SAAS,EACT,KAAK,EACL,UAAU,GAGX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,eAAe,EACf,YAAY,EACZ,WAAW,EACX,aAAa,EACb,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAWlD,yFAAyF;AACzF,SAAS,OAAO,CAAC,IAAY,EAAE,IAAY;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;YACnD,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC5F,CAAC;QACD,IAAI,KAAK,CAAC,cAAc,EAAE;YAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACrD,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACxD,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,oHAAoH;AACpH,SAAS,SAAS,CAAC,MAAc,EAAE,IAAyB;IAC1D,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;IACnF,IAAI,CAAC;QACH,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAWD,iEAAiE;AACjE,SAAS,WAAW,CAAC,IAAsC,EAAE,IAAmB,EAAE,OAAe;IAC/F,IAAI,CAAC;QACH,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,WAAW;gBAAE,OAAO,KAAK,CAAC;YACvD,OAAO,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,OAAO,CAAC;QACxD,CAAC;QACD,qFAAqF;QACrF,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;YACxC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAC7D,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,0FAA0F;QAC1F,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAQD,MAAM,CAAC,MAAM,WAAW,GAAiB,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAC/D,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;IAChC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC;YACjB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;YACf,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC1C,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;aAC7C;YACV,gBAAgB,EAAE,IAAI;YACtB,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAA0C,CAAC;IACjE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1E,IAAI,OAA2B,CAAC;IAChC,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACnE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IACD,wEAAwE;IACxE,IAAI,EAAsB,CAAC;IAC3B,IAAI,KAAyB,CAAC;IAC9B,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,WAA+B,CAAC;SACrF,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC7C,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAAE,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;;YACxE,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC;IAClD,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC1D,MAAM,IAAI,UAAU,CAAC,mBAAmB,EAAE,GAAG,MAAM,8BAA8B,EAAE;YACjF,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;IACD,MAAM,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE;QACrE,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAC,QAAQ,CAAC;IACZ,MAAM,MAAM,GAAG,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC;IACvC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAG,EAAE,IAAI,MAAM,EAAE,OAAO,CAAC;IACtC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,4BAA4B,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC/B,IAAI,EAAE,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;QACjE,MAAM,IAAI,UAAU,CAAC,oBAAoB,EAAE,wCAAwC,EAAE;YACnF,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;SACjD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnF,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,IAAI,CAClB,MAAM,EACN,MAAM,EACN,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAC9C,MAAM,CAAC,KAAK,CACb,CAAC;IAEF,6DAA6D;IAC7D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC5B,SAAS,EAAE,CAAC;QACd,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACpF,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAChC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,UAAU;oBAAE,MAAM,WAAW,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBACvE,MAAM,IAAI,UAAU,CAAC,YAAY,EAAG,KAAe,CAAC,OAAO,EAAE;oBAC3D,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAG,KAAe,CAAC,OAAO,EAAE;iBAChE,CAAC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;IACtD,KAAK,MAAM,IAAI,IAAI,IAAI;QAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;IAExE,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9D,OAAO,CAAC,MAAM,CACZ,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CACpG,CAAC;IACF,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,OAAO,CAAC;IACzC,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;AACjD,CAAC,CAAC;AAEF,wEAAwE;AACxE,KAAK,UAAU,IAAI,CAAC,MAAmB,EAAE,OAAe,EAAE,OAA2B;IACnF,IAAI,CAAC;QACH,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9D,OAAO;YACL,GAAG,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/C,UAAU,EAAE,EAAwB;SACrC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,WAAW,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,IAAI,CACX,MAAc,EACd,MAA+F,EAC/F,KAAwB,EACxB,KAAc;IAEd,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAChE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,OAAO,GAAY,EAAE,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtF,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAE,CAAC;QACpE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACxC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;aAC9D,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;aAC1F,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,CAAC;;YAAM,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,2FAA2F;QAC3F,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;QACxC,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,2BAA2B,KAAK,+CAA+C,EAC/E,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAC7B,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CACpB,OAAqB,EACrB,MAAc,EACd,IAAY,EACZ,OAAe;IAEf,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE;QACpE,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAC,QAAQ,CAAC;IACZ,iGAAiG;IACjG,gGAAgG;IAChG,mFAAmF;IACnF,IAAI,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACvF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,iGAAiG;IACjG,iDAAiD;IACjD,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;QACrC,OAAO,IAAI,UAAU,CAAC,2BAA2B,EAAE,yBAAyB,EAAE;YAC5E,OAAO,EAAE,EAAE,MAAM,EAAE,6DAA6D,EAAE;SACnF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,MAAM,KAAK,IAAI;YAAE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QACzD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,UAAU,CAAC,2BAA2B,EAAG,KAAe,CAAC,OAAO,EAAE;YAC3E,OAAO,EAAE,EAAE,MAAM,EAAG,KAAe,CAAC,OAAO,EAAE;SAC9C,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * `mdg push [folder] [--create [--name <n>]] [--project <id>] [--force] [--check] [--strict]`
3
+ * (`cli-cloud`, "Push"): makes a cloud project equal to a folder, in one transaction, and never
4
+ * overwrites what it has not shown.
5
+ *
6
+ * The order of things, each step before any later one can change the cloud:
7
+ *
8
+ * 1. the arguments, the folder and its manifest; the host (a `cloud.host` of the manifest that is
9
+ * not the resolved host is `cloud.host-mismatch`) and the token (`cloud.not-signed-in`, exit 3);
10
+ * 2. the push set (`push-set.ts`) and the limits of the cloud, refused with the service's own codes
11
+ * (`doc.too-large`, `quota.binary`, `quota.files`) before a request is made;
12
+ * 3. the validation diagnostics, as `validate` prints them; `--strict` stops here when there are
13
+ * errors, or files that cannot be sent (`push.strict`);
14
+ * 4. the cloud's files and revision, fetched once, and the comparison of every path; the differing
15
+ * paths are listed beside the review by id. Nothing differs: nothing to push. `--check` stops
16
+ * here (exit 1 when something differs);
17
+ * 5. what differs is asked about on a terminal ("Overwrite these changes in the cloud?") and refused
18
+ * without one (`push.differs`) unless `--force`;
19
+ * 6. the images and fonts that differ are uploaded (skipping the hashes the cloud has), then
20
+ * `PUT …/files` carries the texts that differ, the deletions and the binaries' hashes with
21
+ * `ifRevision`. An upload that changes the room advances its revision by one, so the revision
22
+ * the push carries is the one fetched plus the uploads that were made. `409 revision.mismatch`
23
+ * sends the command back to step 4, once, with the new state: it is compared and asked about
24
+ * again, never overwritten.
25
+ *
26
+ * `--create` makes the project first (the folder's texts), records it in `project.json` and then
27
+ * pushes the rest without asking, as the new project holds nothing the folder has not shown.
28
+ */
29
+ import { type CloudCommand } from "./cloud-context.js";
30
+ export declare const pushCommand: CloudCommand;
31
+ //# sourceMappingURL=push-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-command.d.ts","sourceRoot":"","sources":["../src/push-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAeH,OAAO,EAIL,KAAK,YAAY,EAElB,MAAM,oBAAoB,CAAC;AA+B5B,eAAO,MAAM,WAAW,EAAE,YAuHzB,CAAC"}
@@ -0,0 +1,391 @@
1
+ /**
2
+ * `mdg push [folder] [--create [--name <n>]] [--project <id>] [--force] [--check] [--strict]`
3
+ * (`cli-cloud`, "Push"): makes a cloud project equal to a folder, in one transaction, and never
4
+ * overwrites what it has not shown.
5
+ *
6
+ * The order of things, each step before any later one can change the cloud:
7
+ *
8
+ * 1. the arguments, the folder and its manifest; the host (a `cloud.host` of the manifest that is
9
+ * not the resolved host is `cloud.host-mismatch`) and the token (`cloud.not-signed-in`, exit 3);
10
+ * 2. the push set (`push-set.ts`) and the limits of the cloud, refused with the service's own codes
11
+ * (`doc.too-large`, `quota.binary`, `quota.files`) before a request is made;
12
+ * 3. the validation diagnostics, as `validate` prints them; `--strict` stops here when there are
13
+ * errors, or files that cannot be sent (`push.strict`);
14
+ * 4. the cloud's files and revision, fetched once, and the comparison of every path; the differing
15
+ * paths are listed beside the review by id. Nothing differs: nothing to push. `--check` stops
16
+ * here (exit 1 when something differs);
17
+ * 5. what differs is asked about on a terminal ("Overwrite these changes in the cloud?") and refused
18
+ * without one (`push.differs`) unless `--force`;
19
+ * 6. the images and fonts that differ are uploaded (skipping the hashes the cloud has), then
20
+ * `PUT …/files` carries the texts that differ, the deletions and the binaries' hashes with
21
+ * `ifRevision`. An upload that changes the room advances its revision by one, so the revision
22
+ * the push carries is the one fetched plus the uploads that were made. `409 revision.mismatch`
23
+ * sends the command back to step 4, once, with the new state: it is compared and asked about
24
+ * again, never overwritten.
25
+ *
26
+ * `--create` makes the project first (the folder's texts), records it in `project.json` and then
27
+ * pushes the rest without asking, as the new project holds nothing the folder has not shown.
28
+ */
29
+ import { existsSync, readFileSync, statSync, writeFileSync } from "node:fs";
30
+ import { basename, join, resolve } from "node:path";
31
+ import { parseArgs } from "node:util";
32
+ import { LANGUAGE_VERSION } from "@meltemi/diagrams-language";
33
+ import { MANIFEST_NAME, isCleanPath, readManifest, toProjectPath } from "@meltemi/diagrams-project";
34
+ import { createNodeHost } from "@meltemi/diagrams-project/node";
35
+ import { MAX_PUSH_BYTES, sha256Hex, } from "./cloud-client.js";
36
+ import { openCloud, usage, usageError, } from "./cloud-context.js";
37
+ import { CloudError, EXIT_FAILED, EXIT_OK, EXIT_USAGE, isCloudError } from "./cloud-errors.js";
38
+ import { withCloudField } from "./cloud-manifest.js";
39
+ import { printablePath } from "./cloud-paths.js";
40
+ import { isYes, messages } from "./messages/index.js";
41
+ import { compareWithCloud, limitError, planPush, readPushSet, } from "./push-set.js";
42
+ import { reviewLines, reviewTexts } from "./push-review.js";
43
+ import { validateFolder } from "./push-validation.js";
44
+ import { withDetails } from "./project-errors.js";
45
+ /** Something shaped like an id, to check that a manifest can take the `cloud` field before it is made. */
46
+ const PLACEHOLDER_PROJECT = "a".repeat(20);
47
+ export const pushCommand = async (args, context) => {
48
+ const help = messages().help.push;
49
+ const t = messages().cloud.push;
50
+ let parsed;
51
+ try {
52
+ parsed = parseArgs({
53
+ args: [...args],
54
+ options: {
55
+ host: { type: "string" },
56
+ create: { type: "boolean", default: false },
57
+ name: { type: "string" },
58
+ project: { type: "string" },
59
+ force: { type: "boolean", default: false },
60
+ check: { type: "boolean", default: false },
61
+ strict: { type: "boolean", default: false },
62
+ help: { type: "boolean", short: "h", default: false },
63
+ },
64
+ allowPositionals: true,
65
+ strict: true,
66
+ });
67
+ }
68
+ catch (error) {
69
+ return usageError(context, error, help);
70
+ }
71
+ const values = parsed.values;
72
+ if (values.help) {
73
+ context.stdout(help);
74
+ return EXIT_OK;
75
+ }
76
+ if (parsed.positionals.length > 1)
77
+ return usage(context, t.oneFolder, help);
78
+ if (values.name !== undefined && !values.create)
79
+ return usage(context, t.nameNeedsCreate, help);
80
+ if (values.name !== undefined && values.name.trim() === "") {
81
+ return usage(context, t.nameEmpty, help);
82
+ }
83
+ if (values.create && values.project !== undefined) {
84
+ return usage(context, t.createWithProject, help);
85
+ }
86
+ if (values.create && values.check)
87
+ return usage(context, t.checkWithCreate, help);
88
+ const given = parsed.positionals[0] ?? ".";
89
+ const folder = resolve(context.cwd, given);
90
+ let isFolder;
91
+ try {
92
+ isFolder = statSync(folder).isDirectory();
93
+ }
94
+ catch {
95
+ context.stderr(`${context.name} ${context.command}: ${messages().common.pathNotFound(given)}\n`);
96
+ return EXIT_USAGE;
97
+ }
98
+ if (!isFolder) {
99
+ context.stderr(`${context.name} ${context.command}: ${t.notAFolder(context.display(folder))}\n`);
100
+ return EXIT_USAGE;
101
+ }
102
+ // The manifest names the project and the host it belongs to; the host a token goes to is never its.
103
+ const manifestResult = readManifest(createNodeHost(), toProjectPath(folder), {
104
+ toolVersion: context.toolVersion,
105
+ });
106
+ const manifest = manifestResult.manifest;
107
+ const linked = manifest?.cloud ?? null;
108
+ const { host, client } = openCloud(context, {
109
+ host: values.host,
110
+ manifestHost: linked?.host,
111
+ });
112
+ let project;
113
+ if (values.create) {
114
+ if (linked !== null) {
115
+ throw new CloudError("push.already-linked", "project.json already names a cloud project.", {
116
+ details: { project: linked.project },
117
+ });
118
+ }
119
+ }
120
+ else {
121
+ project = values.project ?? linked?.project;
122
+ if (project === undefined) {
123
+ throw new CloudError("cloud.no-project", "No cloud project is named.");
124
+ }
125
+ context.used.project = project;
126
+ }
127
+ const set = readPushSet(folder, manifest);
128
+ // `--project` wins over the manifest, but the project.json that goes up carries its `cloud`
129
+ // setting into the project it goes to: left as it is, the other project would be linked to the
130
+ // first one, and the next push from a copy of it would overwrite the wrong project. What is sent
131
+ // names the project it goes to; the file in the folder is not touched.
132
+ if (project !== undefined && linked !== null && linked.project !== project) {
133
+ const sent = set.texts.get(MANIFEST_NAME);
134
+ if (sent !== undefined) {
135
+ try {
136
+ set.texts.set(MANIFEST_NAME, withCloudField(sent, host, project));
137
+ }
138
+ catch {
139
+ // A manifest that cannot be edited was reported when it was read.
140
+ }
141
+ }
142
+ }
143
+ const refused = limitError(set);
144
+ if (refused)
145
+ throw refused;
146
+ printProblems(context, set);
147
+ const validation = validateFolder(folder, {
148
+ toolVersion: context.toolVersion,
149
+ display: context.display,
150
+ });
151
+ if (validation.lines.length > 0) {
152
+ for (const line of validation.lines)
153
+ context.stdout(`${line}\n`);
154
+ context.stdout(`${messages().validate.summary(validation.files, validation.errors, validation.warnings)}\n`);
155
+ }
156
+ if (values.strict && (validation.errors > 0 || set.notSent.length > 0)) {
157
+ throw new CloudError("push.strict", "Validation found problems and --strict is given.", {
158
+ details: { errors: validation.errors, unsent: set.notSent.length },
159
+ });
160
+ }
161
+ if (values.create)
162
+ return createAndPush(context, client, host, set, values);
163
+ return pushToProject(context, client, host, project, set, values);
164
+ };
165
+ // ------------------------------------------------------------------------------------ reporting
166
+ /** The files that are not sent, and the kinds the cloud does not keep: said before anything is asked. */
167
+ function printProblems(context, set) {
168
+ const t = messages().cloud.push;
169
+ for (const item of set.notSent) {
170
+ const reason = item.reason === "unreadable"
171
+ ? t.reasons.unreadable(item.detail ?? "?")
172
+ : t.reasons[item.reason];
173
+ context.stdout(`${t.notSent(item.path, reason)}\n`);
174
+ }
175
+ if (set.ignored.length > 0) {
176
+ const examples = set.ignored.slice(0, 5).join(", ");
177
+ context.stdout(`${t.ignored(set.ignored.length, set.ignored.length > 5 ? `${examples}, …` : examples)}\n`);
178
+ }
179
+ }
180
+ /** The copies two people made at once in the cloud, which a push never touches. */
181
+ function printCollisions(context, comparison) {
182
+ const t = messages().cloud.push;
183
+ for (const { path } of comparison.left.filter((item) => item.why === "collision")) {
184
+ context.stdout(`${t.collision(printablePath(path))}\n`);
185
+ }
186
+ }
187
+ /** The paths that differ and the review by id, as they are shown before anything is asked. */
188
+ function printComparison(context, set, cloud, comparison) {
189
+ const t = messages().cloud.push;
190
+ printCollisions(context, comparison);
191
+ context.stdout(`${t.differs(comparison.differences.length)}\n`);
192
+ for (const { path, change } of comparison.differences) {
193
+ const line = change === "added"
194
+ ? t.pathAdded(path)
195
+ : change === "deleted"
196
+ ? t.pathDeleted(path)
197
+ : t.pathChanged(path);
198
+ context.stdout(`${line}\n`);
199
+ }
200
+ // Binaries are not in the review: it sees the diagrams of the sources.
201
+ if (!comparison.differences.some((d) => d.kind === "text"))
202
+ return;
203
+ try {
204
+ const before = new Map(Object.entries(cloud.files).filter(([path]) => isCleanPath(path)));
205
+ const review = reviewTexts(set.folder, before, set.texts, context.toolVersion);
206
+ context.stdout(`${t.review}\n`);
207
+ for (const line of reviewLines(review))
208
+ context.stdout(`${line}\n`);
209
+ }
210
+ catch {
211
+ // The paths that differ are the answer; a review that cannot be made is not a reason to stop.
212
+ }
213
+ }
214
+ // ------------------------------------------------------------------------------- push to a project
215
+ /** The cloud's files and revision; a project that is not there says which one. */
216
+ async function load(client, project) {
217
+ try {
218
+ return await client.files(project);
219
+ }
220
+ catch (error) {
221
+ throw withDetails(error, { project });
222
+ }
223
+ }
224
+ async function pushToProject(context, client, host, project, set, options) {
225
+ const t = messages().cloud.push;
226
+ let cloud = await load(client, project);
227
+ for (let round = 0;; round++) {
228
+ const comparison = compareWithCloud(set, cloud);
229
+ if (comparison.differences.length === 0) {
230
+ printCollisions(context, comparison);
231
+ context.stdout(`${t.identical(project)}\n`);
232
+ return EXIT_OK;
233
+ }
234
+ printComparison(context, set, cloud, comparison);
235
+ if (options.check) {
236
+ context.stdout(`${t.checkDiffers(comparison.differences.length)}\n`);
237
+ return EXIT_FAILED;
238
+ }
239
+ if (!options.force) {
240
+ if (context.ask === undefined) {
241
+ throw new CloudError("push.differs", "The cloud project differs from the folder.", {
242
+ details: { count: comparison.differences.length },
243
+ });
244
+ }
245
+ if (!isYes(await context.ask(t.overwrite))) {
246
+ throw new CloudError("push.declined", "Nothing was pushed.");
247
+ }
248
+ }
249
+ try {
250
+ const plan = planPush(set, comparison, cloud);
251
+ const uploaded = await apply(client, project, plan, cloud.revision);
252
+ const deleted = comparison.differences.filter((d) => d.change === "deleted").length;
253
+ context.stdout(`${t.pushed(project, comparison.differences.length - deleted, deleted, uploaded)}\n`);
254
+ context.stdout(`${t.open(`${host}/p/${project}`)}\n`);
255
+ return EXIT_OK;
256
+ }
257
+ catch (error) {
258
+ // Somebody else changed the project since it was read: look again, never overwrite blindly.
259
+ if (!isCloudError(error, "revision.mismatch") || round >= 1)
260
+ throw withDetails(error, { project });
261
+ context.stdout(`${t.retrying}\n`);
262
+ cloud = await load(client, project);
263
+ }
264
+ }
265
+ }
266
+ /**
267
+ * Puts the plan into the cloud: uploads the images and fonts it needs, then pushes the texts, the
268
+ * hashes and the deletions in one transaction carrying the revision. Answers how many images and
269
+ * fonts were uploaded.
270
+ */
271
+ async function apply(client, project, plan, revision) {
272
+ const body = (ifRevision) => ({
273
+ files: plan.texts,
274
+ binaries: plan.binaries,
275
+ ifRevision,
276
+ });
277
+ // Refused before the first upload, so that a push that cannot be made changes nothing.
278
+ if (Buffer.byteLength(JSON.stringify(body(revision))) > MAX_PUSH_BYTES) {
279
+ throw new CloudError("doc.too-large", "The push is larger than the service accepts.");
280
+ }
281
+ let uploaded = 0;
282
+ const put = async ({ path, binary }) => {
283
+ let bytes;
284
+ try {
285
+ bytes = new Uint8Array(readFileSync(binary.file));
286
+ }
287
+ catch (error) {
288
+ throw new CloudError("push.file-changed", error.message, { details: { path } });
289
+ }
290
+ // What was compared is what is sent: a file that changed since it was read is not.
291
+ if (sha256Hex(bytes) !== binary.hash) {
292
+ throw new CloudError("push.file-changed", `${path} changed while it was being pushed.`, {
293
+ details: { path },
294
+ });
295
+ }
296
+ // The service's refusal of an upload (`binary.invalid`, `quota.storage`) names no file: this does.
297
+ const stored = await client.putBinary(project, path, bytes).catch((error) => {
298
+ throw withDetails(error, { path });
299
+ });
300
+ if (stored !== binary.hash) {
301
+ throw new CloudError("push.file-changed", `${path} was stored as another file.`, {
302
+ details: { path },
303
+ });
304
+ }
305
+ uploaded++;
306
+ };
307
+ const skipped = [];
308
+ for (const upload of plan.uploads) {
309
+ // The cloud has these bytes already (under another name, or from before): nothing to upload.
310
+ if (await client.blobExists(project, upload.binary.hash))
311
+ skipped.push(upload);
312
+ else
313
+ await put(upload);
314
+ }
315
+ try {
316
+ // An upload that changes the room advances its revision by one: those are ours.
317
+ await client.pushFiles(project, body(revision + uploaded));
318
+ }
319
+ catch (error) {
320
+ // A hash the cloud had only in an old version is not one the project can use: upload it after all.
321
+ if (!isCloudError(error, "blob.unknown") || skipped.length === 0)
322
+ throw error;
323
+ for (const upload of skipped)
324
+ await put(upload);
325
+ await client.pushFiles(project, body(revision + uploaded));
326
+ }
327
+ return uploaded;
328
+ }
329
+ // ------------------------------------------------------------------------------------- --create
330
+ /**
331
+ * `--create`: makes the project with the folder's texts, records it in `project.json` (making one
332
+ * when the folder has none) and pushes what is left (the images and fonts, and the manifest with
333
+ * its new field) without asking.
334
+ */
335
+ async function createAndPush(context, client, host, set, options) {
336
+ const t = messages().cloud.push;
337
+ const manifestPath = join(set.folder, MANIFEST_NAME);
338
+ let text = set.texts.get(MANIFEST_NAME);
339
+ if (text === undefined && existsSync(manifestPath)) {
340
+ // A project.json that is there but could not be read is never replaced by a new one.
341
+ throw new CloudError("push.manifest-invalid", "project.json cannot be read as UTF-8 text.", {
342
+ details: { reason: "it cannot be read as UTF-8 text" },
343
+ });
344
+ }
345
+ const name = (options.name ??
346
+ readManifest(createNodeHost(), toProjectPath(set.folder), {
347
+ toolVersion: context.toolVersion,
348
+ }).manifest?.name ??
349
+ basename(set.folder))
350
+ .trim()
351
+ .slice(0, 100);
352
+ if (text === undefined) {
353
+ text = `${JSON.stringify({ name: name || "diagrams", language: LANGUAGE_VERSION }, null, 2)}\n`;
354
+ set.texts.set(MANIFEST_NAME, text);
355
+ }
356
+ try {
357
+ withCloudField(text, host, PLACEHOLDER_PROJECT);
358
+ }
359
+ catch (error) {
360
+ throw new CloudError("push.manifest-invalid", error.message, {
361
+ details: { reason: error.message },
362
+ });
363
+ }
364
+ const created = await client.createProject({
365
+ name: name || "diagrams",
366
+ files: Object.fromEntries(set.texts),
367
+ });
368
+ context.stdout(`${t.created(created.id, created.name)}\n`);
369
+ const recorded = withCloudField(text, host, created.id);
370
+ try {
371
+ writeFileSync(manifestPath, recorded, "utf8");
372
+ }
373
+ catch (error) {
374
+ throw new CloudError("push.manifest-not-written", error.message, {
375
+ details: { project: created.id, host, reason: error.message },
376
+ });
377
+ }
378
+ set.texts.set(MANIFEST_NAME, recorded);
379
+ context.stdout(`${t.recorded(context.display(manifestPath))}\n`);
380
+ // What the new project lacks is ours to give: no question, nothing there to overwrite.
381
+ const cloud = await load(client, created.id);
382
+ const comparison = compareWithCloud(set, cloud);
383
+ let uploaded = 0;
384
+ if (comparison.differences.length > 0) {
385
+ uploaded = await apply(client, created.id, planPush(set, comparison, cloud), cloud.revision);
386
+ }
387
+ context.stdout(`${t.pushed(created.id, set.texts.size + set.binaries.size, 0, uploaded)}\n`);
388
+ context.stdout(`${t.open(`${host}/p/${created.id}`)}\n`);
389
+ return EXIT_OK;
390
+ }
391
+ //# sourceMappingURL=push-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-command.js","sourceRoot":"","sources":["../src/push-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The review by id of a push (`cli-cloud`, "Push"): what pushing the folder would change in the
3
+ * diagrams of the cloud project, by element id, printed beside the list of paths that differ.
4
+ *
5
+ * It is the existing review (`reviewProjects`, decision 0028) with the cloud's texts as the version
6
+ * before and the folder's push set as the version after, both held in memory and rooted at the
7
+ * folder, so that what is compared is exactly what a push would make of the cloud. It sees only the
8
+ * semantic changes of the sources: a difference in `project.json`, a comment or an image is in the
9
+ * list of paths but not in the review.
10
+ */
11
+ import type { Review } from "@meltemi/diagrams-editor/node";
12
+ /** The review from the cloud's texts to the folder's, both by path. */
13
+ export declare function reviewTexts(folder: string, cloudTexts: ReadonlyMap<string, string>, folderTexts: ReadonlyMap<string, string>, toolVersion: string): Review;
14
+ /** What `review` prints for a review: every file's lines, then the summary (or that nothing changed). */
15
+ export declare function reviewLines(review: Review): string[];
16
+ //# sourceMappingURL=push-review.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-review.d.ts","sourceRoot":"","sources":["../src/push-review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,+BAA+B,CAAC;AAMxE,uEAAuE;AACvE,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,WAAW,EAAE,MAAM,GAClB,MAAM,CAUR;AAiCD,yGAAyG;AACzG,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAkBpD"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * The review by id of a push (`cli-cloud`, "Push"): what pushing the folder would change in the
3
+ * diagrams of the cloud project, by element id, printed beside the list of paths that differ.
4
+ *
5
+ * It is the existing review (`reviewProjects`, decision 0028) with the cloud's texts as the version
6
+ * before and the folder's push set as the version after, both held in memory and rooted at the
7
+ * folder, so that what is compared is exactly what a push would make of the cloud. It sees only the
8
+ * semantic changes of the sources: a difference in `project.json`, a comment or an image is in the
9
+ * list of paths but not in the review.
10
+ */
11
+ import { ProjectSessions, reviewProjects } from "@meltemi/diagrams-editor/node";
12
+ import { describeChange } from "@meltemi/diagrams-model";
13
+ import { createMemoryHost, joinPath, toProjectPath } from "@meltemi/diagrams-project";
14
+ import { printablePath } from "./cloud-paths.js";
15
+ import { messages } from "./messages/index.js";
16
+ /** The review from the cloud's texts to the folder's, both by path. */
17
+ export function reviewTexts(folder, cloudTexts, folderTexts, toolVersion) {
18
+ const root = toProjectPath(folder);
19
+ const side = (texts) => {
20
+ const host = createMemoryHost(Object.fromEntries([...texts].map(([path, text]) => [joinPath(root, path), text])));
21
+ const projects = new ProjectSessions({ toolVersion, host });
22
+ return { workspace: projects.forFolder(root), projects, scope: null };
23
+ };
24
+ return reviewProjects(side(cloudTexts), side(folderTexts), { images: false });
25
+ }
26
+ const SIGNS = {
27
+ added: "+",
28
+ removed: "-",
29
+ renamed: ">",
30
+ changed: "~",
31
+ };
32
+ /** The lines `review` prints for a file: its path and the changes under it, by id. */
33
+ function fileLines(file) {
34
+ const head = file.status === "renamed" ? `${file.from} → ${file.path}` : `${file.path}`;
35
+ const lines = [`${SIGNS[file.status]} ${head}`];
36
+ const top = file.changes.filter((c) => c.scope === null);
37
+ for (const c of top) {
38
+ lines.push(` ${describeChange(c)}`);
39
+ for (const x of file.changes.filter((x) => x.scope === c.id)) {
40
+ lines.push(` ${describeChange(x)}`);
41
+ }
42
+ }
43
+ const scopes = [...new Set(file.changes.map((c) => c.scope).filter((s) => s !== null))];
44
+ const t = messages().review;
45
+ for (const scope of scopes) {
46
+ if (top.some((c) => c.id === scope))
47
+ continue;
48
+ const kind = file.scopes[scope];
49
+ lines.push(` ${kind === undefined ? t.block : t.scopes[kind]} ${scope}`);
50
+ for (const x of file.changes.filter((c) => c.scope === scope)) {
51
+ lines.push(` ${describeChange(x)}`);
52
+ }
53
+ }
54
+ return lines;
55
+ }
56
+ /** What `review` prints for a review: every file's lines, then the summary (or that nothing changed). */
57
+ export function reviewLines(review) {
58
+ const t = messages().review;
59
+ const counts = { added: 0, removed: 0, renamed: 0, changed: 0 };
60
+ for (const file of review.files)
61
+ for (const change of file.changes)
62
+ counts[change.kind]++;
63
+ return [
64
+ // Labels and values come from the cloud's texts, which a collaborator wrote: control characters
65
+ // (an escape sequence could repaint the screen that precedes the question) are written out.
66
+ ...review.files.flatMap(fileLines).map(printablePath),
67
+ review.files.length === 0
68
+ ? t.none
69
+ : t.summary(review.files.length, counts.added, counts.removed, counts.renamed, counts.changed),
70
+ ];
71
+ }
72
+ //# sourceMappingURL=push-review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-review.js","sourceRoot":"","sources":["../src/push-review.ts"],"names":[],"mappings":"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"}