cmdx 1.7.5 → 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 (150) hide show
  1. checksums.yaml +4 -4
  2. data/.DS_Store +0 -0
  3. data/.cursor/prompts/docs.md +3 -3
  4. data/.cursor/prompts/llms.md +1 -3
  5. data/.cursor/prompts/rspec.md +1 -1
  6. data/.irbrc +14 -2
  7. data/CHANGELOG.md +62 -29
  8. data/LLM.md +203 -78
  9. data/README.md +23 -85
  10. data/docs/.DS_Store +0 -0
  11. data/docs/assets/favicon.ico +0 -0
  12. data/docs/assets/favicon.svg +1 -0
  13. data/docs/attributes/coercions.md +19 -29
  14. data/docs/attributes/defaults.md +3 -16
  15. data/docs/attributes/definitions.md +29 -39
  16. data/docs/attributes/naming.md +3 -13
  17. data/docs/attributes/transformations.md +63 -0
  18. data/docs/attributes/validations.md +23 -40
  19. data/docs/basics/chain.md +14 -23
  20. data/docs/basics/context.md +13 -22
  21. data/docs/basics/execution.md +8 -26
  22. data/docs/basics/setup.md +8 -19
  23. data/docs/callbacks.md +19 -32
  24. data/docs/deprecation.md +8 -25
  25. data/docs/getting_started.md +101 -77
  26. data/docs/index.md +120 -0
  27. data/docs/internationalization.md +6 -18
  28. data/docs/interruptions/exceptions.md +10 -16
  29. data/docs/interruptions/faults.md +8 -25
  30. data/docs/interruptions/halt.md +31 -25
  31. data/docs/logging.md +7 -17
  32. data/docs/middlewares.md +13 -29
  33. data/docs/outcomes/result.md +21 -38
  34. data/docs/outcomes/states.md +8 -22
  35. data/docs/outcomes/statuses.md +10 -21
  36. data/docs/stylesheets/extra.css +42 -0
  37. data/docs/tips_and_tricks.md +7 -46
  38. data/docs/workflows.md +23 -38
  39. data/examples/active_record_query_tagging.md +46 -0
  40. data/examples/paper_trail_whatdunnit.md +39 -0
  41. data/lib/cmdx/attribute.rb +9 -2
  42. data/lib/cmdx/attribute_value.rb +31 -10
  43. data/lib/cmdx/callback_registry.rb +12 -2
  44. data/lib/cmdx/coercions/hash.rb +6 -1
  45. data/lib/cmdx/configuration.rb +10 -2
  46. data/lib/cmdx/deprecator.rb +3 -3
  47. data/lib/cmdx/errors.rb +1 -1
  48. data/lib/cmdx/executor.rb +97 -9
  49. data/lib/cmdx/log_formatters/logstash.rb +4 -4
  50. data/lib/cmdx/pipeline.rb +4 -4
  51. data/lib/cmdx/railtie.rb +9 -0
  52. data/lib/cmdx/result.rb +10 -1
  53. data/lib/cmdx/task.rb +12 -7
  54. data/lib/cmdx/version.rb +1 -1
  55. data/lib/cmdx.rb +1 -0
  56. data/lib/generators/cmdx/templates/install.rb +9 -0
  57. data/lib/locales/af.yml +2 -2
  58. data/lib/locales/ar.yml +2 -2
  59. data/lib/locales/az.yml +2 -2
  60. data/lib/locales/be.yml +2 -2
  61. data/lib/locales/bg.yml +2 -2
  62. data/lib/locales/bn.yml +2 -2
  63. data/lib/locales/bs.yml +2 -2
  64. data/lib/locales/ca.yml +2 -2
  65. data/lib/locales/cnr.yml +2 -2
  66. data/lib/locales/cs.yml +2 -2
  67. data/lib/locales/cy.yml +2 -2
  68. data/lib/locales/da.yml +2 -2
  69. data/lib/locales/de.yml +2 -2
  70. data/lib/locales/dz.yml +2 -2
  71. data/lib/locales/el.yml +2 -2
  72. data/lib/locales/en.yml +2 -2
  73. data/lib/locales/eo.yml +2 -2
  74. data/lib/locales/es.yml +2 -2
  75. data/lib/locales/et.yml +2 -2
  76. data/lib/locales/eu.yml +2 -2
  77. data/lib/locales/fa.yml +2 -2
  78. data/lib/locales/fi.yml +2 -2
  79. data/lib/locales/fr.yml +2 -2
  80. data/lib/locales/fy.yml +2 -2
  81. data/lib/locales/gd.yml +2 -2
  82. data/lib/locales/gl.yml +2 -2
  83. data/lib/locales/he.yml +2 -2
  84. data/lib/locales/hi.yml +2 -2
  85. data/lib/locales/hr.yml +2 -2
  86. data/lib/locales/hu.yml +2 -2
  87. data/lib/locales/hy.yml +2 -2
  88. data/lib/locales/id.yml +2 -2
  89. data/lib/locales/is.yml +2 -2
  90. data/lib/locales/it.yml +2 -2
  91. data/lib/locales/ja.yml +2 -2
  92. data/lib/locales/ka.yml +2 -2
  93. data/lib/locales/kk.yml +2 -2
  94. data/lib/locales/km.yml +2 -2
  95. data/lib/locales/kn.yml +2 -2
  96. data/lib/locales/ko.yml +2 -2
  97. data/lib/locales/lb.yml +2 -2
  98. data/lib/locales/lo.yml +2 -2
  99. data/lib/locales/lt.yml +2 -2
  100. data/lib/locales/lv.yml +2 -2
  101. data/lib/locales/mg.yml +2 -2
  102. data/lib/locales/mk.yml +2 -2
  103. data/lib/locales/ml.yml +2 -2
  104. data/lib/locales/mn.yml +2 -2
  105. data/lib/locales/mr-IN.yml +2 -2
  106. data/lib/locales/ms.yml +2 -2
  107. data/lib/locales/nb.yml +2 -2
  108. data/lib/locales/ne.yml +2 -2
  109. data/lib/locales/nl.yml +2 -2
  110. data/lib/locales/nn.yml +2 -2
  111. data/lib/locales/oc.yml +2 -2
  112. data/lib/locales/or.yml +2 -2
  113. data/lib/locales/pa.yml +2 -2
  114. data/lib/locales/pl.yml +2 -2
  115. data/lib/locales/pt.yml +2 -2
  116. data/lib/locales/rm.yml +2 -2
  117. data/lib/locales/ro.yml +2 -2
  118. data/lib/locales/ru.yml +2 -2
  119. data/lib/locales/sc.yml +2 -2
  120. data/lib/locales/sk.yml +2 -2
  121. data/lib/locales/sl.yml +2 -2
  122. data/lib/locales/sq.yml +2 -2
  123. data/lib/locales/sr.yml +2 -2
  124. data/lib/locales/st.yml +2 -2
  125. data/lib/locales/sv.yml +2 -2
  126. data/lib/locales/sw.yml +2 -2
  127. data/lib/locales/ta.yml +2 -2
  128. data/lib/locales/te.yml +2 -2
  129. data/lib/locales/th.yml +2 -2
  130. data/lib/locales/tl.yml +2 -2
  131. data/lib/locales/tr.yml +2 -2
  132. data/lib/locales/tt.yml +2 -2
  133. data/lib/locales/ug.yml +2 -2
  134. data/lib/locales/uk.yml +2 -2
  135. data/lib/locales/ur.yml +2 -2
  136. data/lib/locales/uz.yml +2 -2
  137. data/lib/locales/vi.yml +2 -2
  138. data/lib/locales/wo.yml +2 -2
  139. data/lib/locales/zh-CN.yml +2 -2
  140. data/lib/locales/zh-HK.yml +2 -2
  141. data/lib/locales/zh-TW.yml +2 -2
  142. data/lib/locales/zh-YUE.yml +2 -2
  143. data/mkdocs.yml +122 -0
  144. data/src/cmdx-dark-logo.png +0 -0
  145. data/src/cmdx-favicon.svg +1 -0
  146. data/src/cmdx-light-logo.png +0 -0
  147. data/src/cmdx-logo.svg +1 -0
  148. metadata +15 -4
  149. data/lib/cmdx/freezer.rb +0 -51
  150. data/src/cmdx-logo.png +0 -0
data/lib/locales/pl.yml CHANGED
@@ -9,8 +9,8 @@ pl:
9
9
  into_any: "nie można przekonwertować na jeden z: %{types}"
10
10
  unknown: "nieznany typ konwersji %{type}"
11
11
  faults:
12
- invalid: "Nieprawidłowe dane wejściowe"
13
- unspecified: "Nie podano powodu"
12
+ invalid: "Nieprawidłowe"
13
+ unspecified: "Nieokreślone"
14
14
  types:
15
15
  array: "tablica"
16
16
  big_decimal: "duża liczba dziesiętna"
data/lib/locales/pt.yml CHANGED
@@ -9,8 +9,8 @@ pt:
9
9
  into_any: "não foi possível converter em um de: %{types}"
10
10
  unknown: "tipo de conversão %{type} desconhecido"
11
11
  faults:
12
- invalid: "Entradas inválidas"
13
- unspecified: "Nenhuma razão fornecida"
12
+ invalid: "Inválidas"
13
+ unspecified: "Não especificada"
14
14
  types:
15
15
  array: "array"
16
16
  big_decimal: "decimal grande"
data/lib/locales/rm.yml CHANGED
@@ -9,8 +9,8 @@ rm:
9
9
  into_any: "na pudeva betg vegnir convertì en in da: %{types}"
10
10
  unknown: "tip da conversiun %{type} nunenconuschent"
11
11
  faults:
12
- invalid: "Inputs nunvalidas"
13
- unspecified: "Nagin motiv dà"
12
+ invalid: "Nunvalidas"
13
+ unspecified: "Betg specificà"
14
14
  types:
15
15
  array: "array"
16
16
  big_decimal: "decimal grond"
data/lib/locales/ro.yml CHANGED
@@ -9,8 +9,8 @@ ro:
9
9
  into_any: "nu a putut fi convertit în unul din: %{types}"
10
10
  unknown: "tip de conversie %{type} necunoscut"
11
11
  faults:
12
- invalid: "Intrări invalide"
13
- unspecified: "Nu s-a dat niciun motiv"
12
+ invalid: "Invalide"
13
+ unspecified: "Nespecificat"
14
14
  types:
15
15
  array: "array"
16
16
  big_decimal: "decimal mare"
data/lib/locales/ru.yml CHANGED
@@ -9,8 +9,8 @@ ru:
9
9
  into_any: "не удалось преобразовать в один из: %{types}"
10
10
  unknown: "неизвестный тип преобразования %{type}"
11
11
  faults:
12
- invalid: "Неверные входные данные"
13
- unspecified: "Причина не указана"
12
+ invalid: "Неверные"
13
+ unspecified: "Не указано"
14
14
  types:
15
15
  array: "массив"
16
16
  big_decimal: "большое десятичное число"
data/lib/locales/sc.yml CHANGED
@@ -9,8 +9,8 @@ sc:
9
9
  into_any: "no s'est podidu cunvertire in unu de: %{types}"
10
10
  unknown: "tipu de cunversione %{type} disconnotu"
11
11
  faults:
12
- invalid: "Inputs non vàlidos"
13
- unspecified: "Perunu motivu dadu"
12
+ invalid: "Non vàlidos"
13
+ unspecified: "Non specificadu"
14
14
  types:
15
15
  array: "array"
16
16
  big_decimal: "decimale mannu"
data/lib/locales/sk.yml CHANGED
@@ -9,8 +9,8 @@ sk:
9
9
  into_any: "nepodarilo sa previesť na jeden z: %{types}"
10
10
  unknown: "neznámy typ konverzie %{type}"
11
11
  faults:
12
- invalid: "Neplatné vstupy"
13
- unspecified: "Nie je uvedený dôvod"
12
+ invalid: "Neplatné"
13
+ unspecified: "Nešpecifikované"
14
14
  types:
15
15
  array: "pole"
16
16
  big_decimal: "veľké desatinné číslo"
data/lib/locales/sl.yml CHANGED
@@ -9,8 +9,8 @@ sl:
9
9
  into_any: "ni bilo mogoče pretvoriti v enega od: %{types}"
10
10
  unknown: "neznan tip pretvorbe %{type}"
11
11
  faults:
12
- invalid: "Neveljavni vnosi"
13
- unspecified: "Razlog ni naveden"
12
+ invalid: "Neveljavni"
13
+ unspecified: "Nedoločeno"
14
14
  types:
15
15
  array: "matrika"
16
16
  big_decimal: "veliko decimalno število"
data/lib/locales/sq.yml CHANGED
@@ -9,8 +9,8 @@ sq:
9
9
  into_any: "nuk mund të konvertohet në një nga: %{types}"
10
10
  unknown: "tip i panjohur konvertimi %{type}"
11
11
  faults:
12
- invalid: "Hyrje pavlefshme"
13
- unspecified: "Nuk është dhënë arsye"
12
+ invalid: " pavlefshme"
13
+ unspecified: "E papërcaktuar"
14
14
  types:
15
15
  array: "array"
16
16
  big_decimal: "decimal i madh"
data/lib/locales/sr.yml CHANGED
@@ -9,8 +9,8 @@ sr:
9
9
  into_any: "није могао да се конвертује у један од: %{types}"
10
10
  unknown: "непознат тип конверзије %{type}"
11
11
  faults:
12
- invalid: "Неисправни улази"
13
- unspecified: "Разлог није наведен"
12
+ invalid: "Неисправни"
13
+ unspecified: "Није наведен"
14
14
  types:
15
15
  array: "низ"
16
16
  big_decimal: "велики децимални број"
data/lib/locales/st.yml CHANGED
@@ -9,8 +9,8 @@ st:
9
9
  into_any: "ha e ka fetolelwa ho e mong oa: %{types}"
10
10
  unknown: "mofuta o sa tsejoang oa phetoho %{type}"
11
11
  faults:
12
- invalid: "Litekanyetso tse sa sebetseng"
13
- unspecified: "Ha ho na lebaka le fanoeng"
12
+ invalid: "Tse sa sebetseng"
13
+ unspecified: "Ha e hlalosoe"
14
14
  types:
15
15
  array: "array"
16
16
  big_decimal: "decimal e kgolo"
data/lib/locales/sv.yml CHANGED
@@ -9,8 +9,8 @@ sv:
9
9
  into_any: "kunde inte konverteras till en av: %{types}"
10
10
  unknown: "okänd %{type} konverteringstyp"
11
11
  faults:
12
- invalid: "Ogiltiga indata"
13
- unspecified: "Ingen anledning angiven"
12
+ invalid: "Ogiltiga"
13
+ unspecified: "Ospecificerat"
14
14
  types:
15
15
  array: "array"
16
16
  big_decimal: "stort decimaltal"
data/lib/locales/sw.yml CHANGED
@@ -9,8 +9,8 @@ sw:
9
9
  into_any: "haikuweza kubadilishwa kuwa moja ya: %{types}"
10
10
  unknown: "aina isiyojulikana ya mabadiliko %{type}"
11
11
  faults:
12
- invalid: "Ingizo zisizofaa"
13
- unspecified: "Hakuna sababu iliyotolewa"
12
+ invalid: "Zisizofaa"
13
+ unspecified: "Haijaspecifikwa"
14
14
  types:
15
15
  array: "safu"
16
16
  big_decimal: "desimali kubwa"
data/lib/locales/ta.yml CHANGED
@@ -9,8 +9,8 @@ ta:
9
9
  into_any: "பின்வருவனவற்றில் ஒன்றாக மாற்ற முடியவில்லை: %{types}"
10
10
  unknown: "தெரியாத %{type} மாற்ற வகை"
11
11
  faults:
12
- invalid: "தவறான உள்ளீடு"
13
- unspecified: "எந்த காரணமும் கொடுக்கப்படவில்லை"
12
+ invalid: "தவறான"
13
+ unspecified: "குறிப்பிடப்படாத"
14
14
  types:
15
15
  array: "வரிசை"
16
16
  big_decimal: "பெரிய தசமம்"
data/lib/locales/te.yml CHANGED
@@ -9,8 +9,8 @@ te:
9
9
  into_any: "ఈ క్రింది వాటిలో ఒకటిగా మార్చలేకపోయింది: %{types}"
10
10
  unknown: "తెలియని %{type} మార్పు రకం"
11
11
  faults:
12
- invalid: "చెల్లని ఇన్పుట్"
13
- unspecified: "ఎలాంటి కారణం ఇవ్వలేదు"
12
+ invalid: "చెల్లని"
13
+ unspecified: "నిర్దిష్టం కాదు"
14
14
  types:
15
15
  array: "అరే"
16
16
  big_decimal: "పెద్ద దశాంశం"
data/lib/locales/th.yml CHANGED
@@ -9,8 +9,8 @@ th:
9
9
  into_any: "ไม่สามารถแปลงเป็นหนึ่งใน: %{types} ได้"
10
10
  unknown: "ประเภทการแปลง %{type} ที่ไม่รู้จัก"
11
11
  faults:
12
- invalid: "ข้อมูลนำเข้าที่ไม่ถูกต้อง"
13
- unspecified: "ไม่มีการระบุเหตุผล"
12
+ invalid: "ไม่ถูกต้อง"
13
+ unspecified: "ไม่ระบุ"
14
14
  types:
15
15
  array: "อาร์เรย์"
16
16
  big_decimal: "ทศนิยมขนาดใหญ่"
data/lib/locales/tl.yml CHANGED
@@ -9,8 +9,8 @@ tl:
9
9
  into_any: "hindi ma-convert sa isa sa: %{types}"
10
10
  unknown: "hindi kilalang %{type} conversion type"
11
11
  faults:
12
- invalid: "Hindi wastong input"
13
- unspecified: "Walang dahilan na binigay"
12
+ invalid: "Hindi wasto"
13
+ unspecified: "Hindi tinukoy"
14
14
  types:
15
15
  array: "array"
16
16
  big_decimal: "malaking decimal"
data/lib/locales/tr.yml CHANGED
@@ -9,8 +9,8 @@ tr:
9
9
  into_any: "şunlardan birine dönüştürülemedi: %{types}"
10
10
  unknown: "bilinmeyen %{type} dönüştürme türü"
11
11
  faults:
12
- invalid: "Geçersiz girdi"
13
- unspecified: "Neden belirtilmedi"
12
+ invalid: "Geçersiz"
13
+ unspecified: "Belirtilmemiş"
14
14
  types:
15
15
  array: "dizi"
16
16
  big_decimal: "büyük ondalık"
data/lib/locales/tt.yml CHANGED
@@ -9,8 +9,8 @@ tt:
9
9
  into_any: "боларның берсенә күчерә алмады: %{types}"
10
10
  unknown: "билгесез %{type} күчерү төре"
11
11
  faults:
12
- invalid: "Дөрес булмаган кертү"
13
- unspecified: "Сәбәп күрсәтелмәгән"
12
+ invalid: "Дөрес булмаган"
13
+ unspecified: "Күрсәтелмәгән"
14
14
  types:
15
15
  array: "массив"
16
16
  big_decimal: "зур унарлы"
data/lib/locales/ug.yml CHANGED
@@ -9,8 +9,8 @@ ug:
9
9
  into_any: "بۇلارنىڭ بىرىگە ئايلاندۇرالمايدۇ: %{types}"
10
10
  unknown: "نامەلۇم %{type} ئايلاندۇرۇش تىپى"
11
11
  faults:
12
- invalid: "ئىناۋەتسىز كىرگۈزۈش"
13
- unspecified: "سەۋەب كۆرسىتىلمىگەن"
12
+ invalid: "ئىناۋەتسىز"
13
+ unspecified: "بەلگىلەنمىگەن"
14
14
  types:
15
15
  array: "تىزىملىك"
16
16
  big_decimal: "چوڭ ئونلۇق"
data/lib/locales/uk.yml CHANGED
@@ -9,8 +9,8 @@ uk:
9
9
  into_any: "не вдалося перетворити на один з: %{types}"
10
10
  unknown: "невідомий тип перетворення %{type}"
11
11
  faults:
12
- invalid: "Невірні вхідні дані"
13
- unspecified: "Причина не вказана"
12
+ invalid: "Невірні"
13
+ unspecified: "Не вказано"
14
14
  types:
15
15
  array: "масив"
16
16
  big_decimal: "велике десяткове число"
data/lib/locales/ur.yml CHANGED
@@ -9,8 +9,8 @@ ur:
9
9
  into_any: "ان میں سے کسی ایک میں تبدیل نہیں کر سکا: %{types}"
10
10
  unknown: "نامعلوم %{type} تبدیلی کی قسم"
11
11
  faults:
12
- invalid: "غلط ان پٹ"
13
- unspecified: "کوئی وجہ نہیں دی گئی"
12
+ invalid: "غلط"
13
+ unspecified: "غیر متعین"
14
14
  types:
15
15
  array: "آرے"
16
16
  big_decimal: "بڑا اعشاری"
data/lib/locales/uz.yml CHANGED
@@ -9,8 +9,8 @@ uz:
9
9
  into_any: "bularning biriga o'tkazib bo'lmadi: %{types}"
10
10
  unknown: "noma'lum %{type} o'tkazish turi"
11
11
  faults:
12
- invalid: "Noto'g'ri kiritish"
13
- unspecified: "Sabab ko'rsatilmagan"
12
+ invalid: "Noto'g'ri"
13
+ unspecified: "Ko'rsatilmagan"
14
14
  types:
15
15
  array: "massiv"
16
16
  big_decimal: "katta o'nlik"
data/lib/locales/vi.yml CHANGED
@@ -9,8 +9,8 @@ vi:
9
9
  into_any: "không thể chuyển đổi thành một trong: %{types}"
10
10
  unknown: "kiểu chuyển đổi %{type} không xác định"
11
11
  faults:
12
- invalid: "Đầu vào không hợp lệ"
13
- unspecified: "Không lý do được cung cấp"
12
+ invalid: "Không hợp lệ"
13
+ unspecified: "Không xác định"
14
14
  types:
15
15
  array: "mảng"
16
16
  big_decimal: "số thập phân lớn"
data/lib/locales/wo.yml CHANGED
@@ -9,8 +9,8 @@ wo:
9
9
  into_any: "duñu ko man a soppi ci benn ci: %{types}"
10
10
  unknown: "xam-xam bu ñu waxul bu soppi %{type}"
11
11
  faults:
12
- invalid: "Dugg yi ñu waxul"
13
- unspecified: "Duñu wax sabab"
12
+ invalid: "Ñu waxul"
13
+ unspecified: "Duñu wax"
14
14
  types:
15
15
  array: "array"
16
16
  big_decimal: "desimal bu góor"
@@ -9,8 +9,8 @@ zh-CN:
9
9
  into_any: "无法转换为以下之一: %{types}"
10
10
  unknown: "未知的 %{type} 转换类型"
11
11
  faults:
12
- invalid: "无效输入"
13
- unspecified: "未提供原因"
12
+ invalid: "无效"
13
+ unspecified: "未指定"
14
14
  types:
15
15
  array: "数组"
16
16
  big_decimal: "大十进制数"
@@ -9,8 +9,8 @@ zh-HK:
9
9
  into_any: "無法強制轉換成其中一個:%{types}"
10
10
  unknown: "未知的 %{type} 強制轉換類型"
11
11
  faults:
12
- invalid: "無效輸入"
13
- unspecified: "沒有提供原因"
12
+ invalid: "無效"
13
+ unspecified: "未指定"
14
14
  types:
15
15
  array: "陣列"
16
16
  big_decimal: "大十進位"
@@ -9,8 +9,8 @@ zh-TW:
9
9
  into_any: "無法強制轉換成其中一個:%{types}"
10
10
  unknown: "未知的 %{type} 強制轉換類型"
11
11
  faults:
12
- invalid: "無效輸入"
13
- unspecified: "沒有提供原因"
12
+ invalid: "無效"
13
+ unspecified: "未指定"
14
14
  types:
15
15
  array: "陣列"
16
16
  big_decimal: "大十進位"
@@ -9,8 +9,8 @@ zh-YUE:
9
9
  into_any: "無法強制轉換成其中一個:%{types}"
10
10
  unknown: "未知嘅 %{type} 強制轉換類型"
11
11
  faults:
12
- invalid: "無效輸入"
13
- unspecified: "冇提供原因"
12
+ invalid: "無效"
13
+ unspecified: "未指定"
14
14
  types:
15
15
  array: "陣列"
16
16
  big_decimal: "大十進位"
data/mkdocs.yml ADDED
@@ -0,0 +1,122 @@
1
+ # yaml-language-server: $schema=https://squidfunk.github.io/mkdocs-material/schema.json
2
+
3
+ site_name: CMDx
4
+ site_url: https://drexed.github.io/cmdx/
5
+ site_description: Build business logic that's powerful, predictable, and chaos-free.
6
+ site_author: drexed
7
+ repo_name: drexed/cmdx
8
+ repo_url: https://github.com/drexed/cmdx
9
+ edit_uri: edit/main/docs/
10
+ copyright: Drexed, Inc. © 2025 - EoT
11
+
12
+ theme:
13
+ name: material
14
+ logo: assets/favicon.svg
15
+ favicon: assets/favicon.ico
16
+ icon:
17
+ repo: fontawesome/brands/github
18
+ font:
19
+ text: Inter
20
+ code: IBM Plex Mono
21
+ palette:
22
+ # Palette toggle for automatic mode
23
+ - media: "(prefers-color-scheme)"
24
+ primary: custom
25
+ accent: custom
26
+ toggle:
27
+ icon: material/brightness-auto
28
+ name: Switch to light mode
29
+ # Palette toggle for light mode
30
+ - media: "(prefers-color-scheme: light)"
31
+ scheme: default
32
+ primary: custom
33
+ accent: custom
34
+ toggle:
35
+ icon: material/brightness-7
36
+ name: Switch to dark mode
37
+ # Palette toggle for dark mode
38
+ - media: "(prefers-color-scheme: dark)"
39
+ scheme: slate
40
+ primary: custom
41
+ accent: custom
42
+ toggle:
43
+ icon: material/brightness-4
44
+ name: Switch to system preference
45
+ features:
46
+ - navigation.footer
47
+ - navigation.instant
48
+ - navigation.instant.prefetch
49
+ - navigation.instant.progress
50
+ - navigation.tracking
51
+ - navigation.sections
52
+ - navigation.expand
53
+ - navigation.path
54
+ - navigation.top
55
+ - search.share
56
+ - search.suggest
57
+ - search.highlight
58
+ - content.code.copy
59
+ - content.code.annotate
60
+ - content.tabs.link
61
+ - content.tooltips
62
+
63
+ markdown_extensions:
64
+ - admonition
65
+ - pymdownx.details
66
+ - pymdownx.superfences
67
+ - pymdownx.highlight:
68
+ anchor_linenums: true
69
+ line_spans: __span
70
+ pygments_lang_class: true
71
+ - pymdownx.inlinehilite
72
+ - pymdownx.snippets
73
+ - pymdownx.tabbed:
74
+ alternate_style: true
75
+ - tables
76
+ - attr_list
77
+ - md_in_html
78
+ - toc:
79
+ permalink: true
80
+
81
+ plugins:
82
+ - search
83
+
84
+ nav:
85
+ - Home: index.md
86
+ - Getting Started: getting_started.md
87
+ - Basics:
88
+ - Setup: basics/setup.md
89
+ - Execution: basics/execution.md
90
+ - Context: basics/context.md
91
+ - Chain: basics/chain.md
92
+ - Interruptions:
93
+ - Halt: interruptions/halt.md
94
+ - Faults: interruptions/faults.md
95
+ - Exceptions: interruptions/exceptions.md
96
+ - Outcomes:
97
+ - Result: outcomes/result.md
98
+ - States: outcomes/states.md
99
+ - Statuses: outcomes/statuses.md
100
+ - Attributes:
101
+ - Definitions: attributes/definitions.md
102
+ - Naming: attributes/naming.md
103
+ - Coercions: attributes/coercions.md
104
+ - Validations: attributes/validations.md
105
+ - Defaults: attributes/defaults.md
106
+ - Transformations: attributes/transformations.md
107
+ - Callbacks: callbacks.md
108
+ - Middlewares: middlewares.md
109
+ - Logging: logging.md
110
+ - Internationalization: internationalization.md
111
+ - Deprecation: deprecation.md
112
+ - Workflows: workflows.md
113
+ - Tips and Tricks: tips_and_tricks.md
114
+
115
+ extra:
116
+ generator: false
117
+ social:
118
+ - icon: fontawesome/brands/github
119
+ link: https://github.com/drexed/cmdx
120
+
121
+ extra_css:
122
+ - stylesheets/extra.css
Binary file
@@ -0,0 +1 @@
1
+ <svg width="104.098" height="112.266" viewBox="0 0 60 64.708" xmlns="http://www.w3.org/2000/svg"><path d="M29.907 17.723 26.4 23.17 13.384 3.323h3.507l9.508 14.77 1.938-3.139L18.737 0H7.291L26.4 29.262 45.045 0h-3.97L30 17.54zM9.23 61.293H6.091l18.646-29.447L4.43.093H.46l20.308 31.846L0 64.708l10.985-.092 39.138-61.2h3.323L31.57 37.754l13.662 21.415h3.97L35.445 37.754 59.537.093H48.37zm29.63-23.262 15.047 23.262H43.384l-13.662-20.77-15.508 24.093h3.97l11.63-18 11.723 18H60L41.17 35.354l-.278-.461z" fill="#000"/></svg>
Binary file
data/src/cmdx-logo.svg ADDED
@@ -0,0 +1 @@
1
+ <svg width="352.2" height="112.266" viewBox="0 0 203 64.708" xmlns="http://www.w3.org/2000/svg" xmlSpace="preserve"><path d="M172.908 17.723 169.4 23.17 156.385 3.323h3.507l9.508 14.77 1.938-3.139L161.738 0h-11.446L169.4 29.262 188.046 0h-3.97L173 17.54zm-20.677 43.57h-3.139l18.646-29.447L147.431.093h-3.97l20.308 31.846L143 64.708l10.985-.092 39.138-61.2h3.323L174.57 37.754l13.662 21.415h3.969l-13.754-21.415L202.538.093H191.37zm29.63-23.262 15.047 23.262h-10.523l-13.662-20.77-15.508 24.093h3.97l11.63-18 11.723 18H203l-18.83-29.262-.278-.461z" fill="#fe1817"/><path d="M41.667 14v12.8h-23.42c-3.214.272-5.665 3.05-5.665 6.318s2.45 5.937 5.664 6.318H33.17v4.248H18.246a10.65 10.65 0 0 1-9.858-10.62c0-5.447 4.194-10.077 9.64-10.512h19.39v-4.303H18.246v.054A14.823 14.823 0 0 0 4.248 33.118c0 7.898 6.21 14.38 13.998 14.815h19.172v-8.497h4.249v12.745h-23.42A19.063 19.063 0 0 1 0 33.118a19.033 19.033 0 0 1 18.246-19.063zM75 35.623 87.2 14h13.508v38.181H87.963v-14.27l-8.116 14.27h-9.749L57.734 30.504v-8.007l14.87 25.436h4.792l14.815-25.436v25.436h4.249V18.249H89.65l-14.76 25.49-14.542-25.49H53.54v29.684h4.194v-8.007l4.249 7.299v4.956H49.292v-38.18H62.8zM108.333 14h23.42C141.94 14.436 150 22.824 150 33.064c0 10.294-8.061 18.681-18.246 19.117h-23.42V22.497h23.42a10.65 10.65 0 0 1 9.858 10.621c0 5.447-4.194 10.13-9.64 10.566H116.83V30.286h4.248v9.15l10.676-.054c3.213-.273 5.664-3.05 5.664-6.264 0-2.778-1.743-5.065-4.194-5.991-.926-.382-1.47-.382-2.94-.382h-17.702v21.188h19.172a14.84 14.84 0 0 0 13.998-14.87c0-7.897-6.21-14.379-13.998-14.814h-23.42z"/></svg>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cmdx
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.5
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Gomez
@@ -214,10 +214,14 @@ files:
214
214
  - LLM.md
215
215
  - README.md
216
216
  - Rakefile
217
+ - docs/.DS_Store
218
+ - docs/assets/favicon.ico
219
+ - docs/assets/favicon.svg
217
220
  - docs/attributes/coercions.md
218
221
  - docs/attributes/defaults.md
219
222
  - docs/attributes/definitions.md
220
223
  - docs/attributes/naming.md
224
+ - docs/attributes/transformations.md
221
225
  - docs/attributes/validations.md
222
226
  - docs/basics/chain.md
223
227
  - docs/basics/context.md
@@ -226,6 +230,7 @@ files:
226
230
  - docs/callbacks.md
227
231
  - docs/deprecation.md
228
232
  - docs/getting_started.md
233
+ - docs/index.md
229
234
  - docs/internationalization.md
230
235
  - docs/interruptions/exceptions.md
231
236
  - docs/interruptions/faults.md
@@ -235,8 +240,11 @@ files:
235
240
  - docs/outcomes/result.md
236
241
  - docs/outcomes/states.md
237
242
  - docs/outcomes/statuses.md
243
+ - docs/stylesheets/extra.css
238
244
  - docs/tips_and_tricks.md
239
245
  - docs/workflows.md
246
+ - examples/active_record_query_tagging.md
247
+ - examples/paper_trail_whatdunnit.md
240
248
  - lib/cmdx.rb
241
249
  - lib/cmdx/.DS_Store
242
250
  - lib/cmdx/attribute.rb
@@ -265,7 +273,6 @@ files:
265
273
  - lib/cmdx/exceptions.rb
266
274
  - lib/cmdx/executor.rb
267
275
  - lib/cmdx/faults.rb
268
- - lib/cmdx/freezer.rb
269
276
  - lib/cmdx/identifier.rb
270
277
  - lib/cmdx/locale.rb
271
278
  - lib/cmdx/log_formatters/json.rb
@@ -386,7 +393,11 @@ files:
386
393
  - lib/locales/zh-HK.yml
387
394
  - lib/locales/zh-TW.yml
388
395
  - lib/locales/zh-YUE.yml
389
- - src/cmdx-logo.png
396
+ - mkdocs.yml
397
+ - src/cmdx-dark-logo.png
398
+ - src/cmdx-favicon.svg
399
+ - src/cmdx-light-logo.png
400
+ - src/cmdx-logo.svg
390
401
  homepage: https://github.com/drexed/cmdx
391
402
  licenses:
392
403
  - MIT
@@ -411,7 +422,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
411
422
  - !ruby/object:Gem::Version
412
423
  version: '0'
413
424
  requirements: []
414
- rubygems_version: 3.7.1
425
+ rubygems_version: 3.7.2
415
426
  specification_version: 4
416
427
  summary: CMDx is a framework for building maintainable business processes.
417
428
  test_files: []
data/lib/cmdx/freezer.rb DELETED
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module CMDx
4
- # Provides freezing functionality for CMDx tasks and their associated objects.
5
- #
6
- # The Freezer module is responsible for making task objects immutable after execution
7
- # to prevent accidental modifications and ensure data integrity. It can be disabled
8
- # via environment variable for testing or debugging purposes.
9
- module Freezer
10
-
11
- extend self
12
-
13
- # Freezes a task and its associated objects to prevent modifications.
14
- #
15
- # This method makes the task, result, context, and chain immutable after execution.
16
- # Freezing can be skipped by setting the SKIP_CMDX_FREEZING environment variable.
17
- #
18
- # @param task [Task] The task instance to freeze
19
- # @option ENV["SKIP_CMDX_FREEZING"] [String, Boolean] Set to "true" or true to skip freezing
20
- #
21
- # @raise [RuntimeError] If attempting to stub on frozen objects
22
- #
23
- # @example Freeze a completed task
24
- # task = MyTask.new
25
- # task.execute
26
- # CMDx::Freezer.immute(task)
27
- # # task, result, context, and chain are now frozen
28
- # @example Skip freezing for testing
29
- # ENV["SKIP_CMDX_FREEZING"] = "true"
30
- # CMDx::Freezer.immute(task)
31
- # # No freezing occurs
32
- def immute(task)
33
- # Stubbing on frozen objects is not allowed
34
- skip_freezing = ENV.fetch("SKIP_CMDX_FREEZING", false)
35
- return if Coercions::Boolean.call(skip_freezing)
36
-
37
- task.freeze
38
- task.result.freeze
39
-
40
- # Freezing the context and chain can only be done
41
- # once the outer-most task has completed.
42
- return unless task.result.index.zero?
43
-
44
- task.context.freeze
45
- task.chain.freeze
46
-
47
- Chain.clear
48
- end
49
-
50
- end
51
- end
data/src/cmdx-logo.png DELETED
Binary file