hecks 0.2.0 → 0.3.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 (408) hide show
  1. checksums.yaml +5 -5
  2. data/lib/hecks/adapters/driven/claude_code.adapter +3 -0
  3. data/lib/hecks/adapters/driven/claude_code.rb +127 -0
  4. data/lib/hecks/adapters/driven/d1.adapter +12 -0
  5. data/lib/hecks/adapters/driven/d1.rb +403 -0
  6. data/lib/hecks/adapters/driven/folder.adapter +3 -0
  7. data/lib/hecks/adapters/driven/folder.rb +199 -0
  8. data/lib/hecks/adapters/driven/google_authentication.adapter +3 -0
  9. data/lib/hecks/adapters/driven/google_authentication.rb +100 -0
  10. data/lib/hecks/adapters/driven/governance_authorization.adapter +3 -0
  11. data/lib/hecks/adapters/driven/governance_authorization.rb +62 -0
  12. data/lib/hecks/adapters/driven/heki/journal.rb +51 -0
  13. data/lib/hecks/adapters/driven/heki/saga_store.rb +0 -0
  14. data/lib/hecks/adapters/driven/heki/snapshot.rb +38 -0
  15. data/lib/hecks/adapters/driven/heki.adapter +4 -0
  16. data/lib/hecks/adapters/driven/heki.rb +148 -0
  17. data/lib/hecks/adapters/driven/identity_registry.adapter +3 -0
  18. data/lib/hecks/adapters/driven/identity_registry.rb +26 -0
  19. data/lib/hecks/adapters/driven/in_memory_ordering.rb +51 -0
  20. data/lib/hecks/adapters/driven/lambda/client.rb +63 -0
  21. data/lib/hecks/adapters/driven/lambda.adapter +4 -0
  22. data/lib/hecks/adapters/driven/lambda.rb +131 -0
  23. data/lib/hecks/adapters/driven/memory.adapter +3 -0
  24. data/lib/hecks/adapters/driven/memory.rb +103 -0
  25. data/lib/hecks/adapters/driven/mock_stripe_adapter.adapter +3 -0
  26. data/lib/hecks/adapters/driven/mock_stripe_adapter.rb +28 -0
  27. data/lib/hecks/adapters/driven/postgres/codec.rb +80 -0
  28. data/lib/hecks/adapters/driven/postgres/schema_builder.rb +168 -0
  29. data/lib/hecks/adapters/driven/postgres.adapter +5 -0
  30. data/lib/hecks/adapters/driven/postgres.rb +391 -0
  31. data/lib/hecks/adapters/driven/postgres_era/lineage/era_store.rb +171 -0
  32. data/lib/hecks/adapters/driven/postgres_era/lineage/field_cache.rb +190 -0
  33. data/lib/hecks/adapters/driven/postgres_era/lineage/head_compiler.rb +429 -0
  34. data/lib/hecks/adapters/driven/postgres_era/lineage/mint_transaction.rb +166 -0
  35. data/lib/hecks/adapters/driven/postgres_era/lineage/provisioning.rb +286 -0
  36. data/lib/hecks/adapters/driven/postgres_era/lineage/resumable_backfill.rb +168 -0
  37. data/lib/hecks/adapters/driven/postgres_era/lineage/tail_merge.rb +163 -0
  38. data/lib/hecks/adapters/driven/postgres_era/lineage/transform_installer.rb +114 -0
  39. data/lib/hecks/adapters/driven/postgres_era/lineage.rb +137 -0
  40. data/lib/hecks/adapters/driven/postgres_era/lineage_manager/coverage_check.rb +89 -0
  41. data/lib/hecks/adapters/driven/postgres_era/lineage_manager/era_resolver.rb +82 -0
  42. data/lib/hecks/adapters/driven/postgres_era/lineage_manager/merge_coordinator.rb +43 -0
  43. data/lib/hecks/adapters/driven/postgres_era/lineage_manager/minter.rb +132 -0
  44. data/lib/hecks/adapters/driven/postgres_era/lineage_manager.rb +74 -0
  45. data/lib/hecks/adapters/driven/postgres_era.adapter +6 -0
  46. data/lib/hecks/adapters/driven/postgres_era.rb +671 -0
  47. data/lib/hecks/adapters/driven/prism.adapter +3 -0
  48. data/lib/hecks/adapters/driven/prism.rb +80 -0
  49. data/lib/hecks/adapters/driven/secure_random_identity.adapter +3 -0
  50. data/lib/hecks/adapters/driven/secure_random_identity.rb +14 -0
  51. data/lib/hecks/adapters/driven/sql_query_builder.rb +221 -0
  52. data/lib/hecks/adapters/driven/sqlite/codec.rb +63 -0
  53. data/lib/hecks/adapters/driven/sqlite/projection.rb +105 -0
  54. data/lib/hecks/adapters/driven/sqlite/schema_builder.rb +180 -0
  55. data/lib/hecks/adapters/driven/sqlite.adapter +9 -0
  56. data/lib/hecks/adapters/driven/sqlite.rb +285 -0
  57. data/lib/hecks/adapters/driven/system_clock.adapter +3 -0
  58. data/lib/hecks/adapters/driven/system_clock.rb +14 -0
  59. data/lib/hecks/adapters/driven.rb +36 -0
  60. data/lib/hecks/adapters.rb +6 -0
  61. data/lib/hecks/behaviors/dsl.rb +96 -0
  62. data/lib/hecks/behaviors/expectations.rb +280 -0
  63. data/lib/hecks/behaviors/ir.rb +31 -0
  64. data/lib/hecks/behaviors/rspec.rb +42 -0
  65. data/lib/hecks/behaviors/runner.rb +96 -0
  66. data/lib/hecks/behaviors.rb +25 -0
  67. data/lib/hecks/bluebook/aggregate.rb +108 -0
  68. data/lib/hecks/bluebook/assembly/aggregate_assembly.rb +134 -0
  69. data/lib/hecks/bluebook/assembly/build.rb +48 -0
  70. data/lib/hecks/bluebook/assembly/contract.rb +112 -0
  71. data/lib/hecks/bluebook/assembly/contracts.rb +409 -0
  72. data/lib/hecks/bluebook/assembly/marks.rb +227 -0
  73. data/lib/hecks/bluebook/assembly/specializer.rb +70 -0
  74. data/lib/hecks/bluebook/assembly.rb +78 -0
  75. data/lib/hecks/bluebook/attribute.rb +96 -0
  76. data/lib/hecks/bluebook/behaviour/aggregate.rb +83 -0
  77. data/lib/hecks/bluebook/behaviour/attribute.rb +27 -0
  78. data/lib/hecks/bluebook/behaviour/chapter.rb +72 -0
  79. data/lib/hecks/bluebook/behaviour/command.rb +116 -0
  80. data/lib/hecks/bluebook/behaviour/domain_port.rb +25 -0
  81. data/lib/hecks/bluebook/behaviour/entity.rb +59 -0
  82. data/lib/hecks/bluebook/behaviour/hexagon.rb +50 -0
  83. data/lib/hecks/bluebook/behaviour/lifecycle.rb +51 -0
  84. data/lib/hecks/bluebook/behaviour/policy.rb +52 -0
  85. data/lib/hecks/bluebook/behaviour/process_manager.rb +38 -0
  86. data/lib/hecks/bluebook/behaviour/query.rb +10 -0
  87. data/lib/hecks/bluebook/behaviour/read_model.rb +29 -0
  88. data/lib/hecks/bluebook/behaviour/traits.rb +81 -0
  89. data/lib/hecks/bluebook/behaviour/value_object.rb +33 -0
  90. data/lib/hecks/bluebook/chapter.rb +68 -0
  91. data/lib/hecks/bluebook/command.rb +124 -0
  92. data/lib/hecks/bluebook/domain_port.rb +102 -0
  93. data/lib/hecks/bluebook/dsl/adapter_builder.rb +34 -0
  94. data/lib/hecks/bluebook/dsl/aggregate_builder.rb +906 -0
  95. data/lib/hecks/bluebook/dsl/attribute_collector.rb +327 -0
  96. data/lib/hecks/bluebook/dsl/binding_proxy.rb +71 -0
  97. data/lib/hecks/bluebook/dsl/bluebook_builder.rb +1018 -0
  98. data/lib/hecks/bluebook/dsl/command_builder.rb +626 -0
  99. data/lib/hecks/bluebook/dsl/const_shim.rb +81 -0
  100. data/lib/hecks/bluebook/dsl/domain_port_builder.rb +79 -0
  101. data/lib/hecks/bluebook/dsl/entity_builder.rb +305 -0
  102. data/lib/hecks/bluebook/dsl/generic_dispatch.rb +366 -0
  103. data/lib/hecks/bluebook/dsl/hecksagon_builder.rb +163 -0
  104. data/lib/hecks/bluebook/dsl/identity_declaration.rb +191 -0
  105. data/lib/hecks/bluebook/dsl/lifecycle_builder.rb +44 -0
  106. data/lib/hecks/bluebook/dsl/malformed.rb +7 -0
  107. data/lib/hecks/bluebook/dsl/policy_builder.rb +120 -0
  108. data/lib/hecks/bluebook/dsl/port_builder.rb +30 -0
  109. data/lib/hecks/bluebook/dsl/port_operation_builder.rb +142 -0
  110. data/lib/hecks/bluebook/dsl/process_manager_builder.rb +207 -0
  111. data/lib/hecks/bluebook/dsl/query_builder.rb +113 -0
  112. data/lib/hecks/bluebook/dsl/read_model_builder.rb +233 -0
  113. data/lib/hecks/bluebook/dsl/rule_reference.rb +172 -0
  114. data/lib/hecks/bluebook/dsl/translation_builder.rb +243 -0
  115. data/lib/hecks/bluebook/dsl/value_object_builder.rb +178 -0
  116. data/lib/hecks/bluebook/dsl/word_gate.rb +221 -0
  117. data/lib/hecks/bluebook/dsl/world_builder.rb +77 -0
  118. data/lib/hecks/bluebook/dsl.rb +45 -0
  119. data/lib/hecks/bluebook/entity.rb +103 -0
  120. data/lib/hecks/bluebook/expression/canonical_form.rb +55 -0
  121. data/lib/hecks/bluebook/expression/evaluator.rb +261 -0
  122. data/lib/hecks/bluebook/expression/projection.json +170 -0
  123. data/lib/hecks/bluebook/expression/resolver/block_predicates.rb +233 -0
  124. data/lib/hecks/bluebook/expression/resolver.rb +630 -0
  125. data/lib/hecks/bluebook/expression.rb +13 -0
  126. data/lib/hecks/bluebook/hexagon.rb +60 -0
  127. data/lib/hecks/bluebook/lifecycle.rb +42 -0
  128. data/lib/hecks/bluebook/meta_validator/adapter_judge.rb +54 -0
  129. data/lib/hecks/bluebook/meta_validator/judge.rb +559 -0
  130. data/lib/hecks/bluebook/meta_validator/plan.rb +332 -0
  131. data/lib/hecks/bluebook/meta_validator/port_judge.rb +47 -0
  132. data/lib/hecks/bluebook/meta_validator/readings.rb +350 -0
  133. data/lib/hecks/bluebook/meta_validator/reconstruction.rb +312 -0
  134. data/lib/hecks/bluebook/meta_validator/shapes.rb +246 -0
  135. data/lib/hecks/bluebook/meta_validator/syntax_boot.rb +255 -0
  136. data/lib/hecks/bluebook/meta_validator/translation_judge.rb +138 -0
  137. data/lib/hecks/bluebook/meta_validator/world_judge.rb +78 -0
  138. data/lib/hecks/bluebook/meta_validator.rb +452 -0
  139. data/lib/hecks/bluebook/model_check.rb +318 -0
  140. data/lib/hecks/bluebook/pattern_subset.rb +120 -0
  141. data/lib/hecks/bluebook/policy.rb +41 -0
  142. data/lib/hecks/bluebook/process_manager.rb +86 -0
  143. data/lib/hecks/bluebook/project_discovery.rb +30 -0
  144. data/lib/hecks/bluebook/project_loader.rb +40 -0
  145. data/lib/hecks/bluebook/project_register.rb +82 -0
  146. data/lib/hecks/bluebook/query.rb +61 -0
  147. data/lib/hecks/bluebook/read_model.rb +109 -0
  148. data/lib/hecks/bluebook/reference.rb +74 -0
  149. data/lib/hecks/bluebook/smoke_test.rb +166 -0
  150. data/lib/hecks/bluebook/synthesizer.rb +95 -0
  151. data/lib/hecks/bluebook/translation.rb +92 -0
  152. data/lib/hecks/bluebook/value_object.rb +58 -0
  153. data/lib/hecks/bluebook.rb +74 -0
  154. data/lib/hecks/codemod.rb +342 -0
  155. data/lib/hecks/construct.rb +71 -0
  156. data/lib/hecks/deploy/bluebook/deploy.bluebook +219 -0
  157. data/lib/hecks/deploy/bluebook/deploy.hecksagon +4 -0
  158. data/lib/hecks/deploy/oidc.json +18 -0
  159. data/lib/hecks/doc/reference.rb +389 -0
  160. data/lib/hecks/embryonaut_bluebook.rb +75 -0
  161. data/lib/hecks/facade/cli_door.rb +116 -0
  162. data/lib/hecks/facade/cli_runner.rb +190 -0
  163. data/lib/hecks/facade/command_request.rb +105 -0
  164. data/lib/hecks/facade/handle.rb +173 -0
  165. data/lib/hecks/facade/json_door.rb +154 -0
  166. data/lib/hecks/facade/surface/aggregate_door.rb +185 -0
  167. data/lib/hecks/facade/surface/chapter.rb +107 -0
  168. data/lib/hecks/facade/surface.rb +48 -0
  169. data/lib/hecks/facade.rb +44 -0
  170. data/lib/hecks/forms/app.rb +300 -0
  171. data/lib/hecks/forms/command_form_renderer.rb +113 -0
  172. data/lib/hecks/forms/examples/banking_console.bluebook +3 -0
  173. data/lib/hecks/forms/field_renderer.rb +170 -0
  174. data/lib/hecks/forms/field_shape.rb +232 -0
  175. data/lib/hecks/forms/html.rb +53 -0
  176. data/lib/hecks/forms/index_renderer.rb +35 -0
  177. data/lib/hecks/forms/page.rb +157 -0
  178. data/lib/hecks/forms/params.rb +132 -0
  179. data/lib/hecks/forms/query_form_renderer.rb +114 -0
  180. data/lib/hecks/forms/record_renderer.rb +115 -0
  181. data/lib/hecks/forms/record_table.rb +63 -0
  182. data/lib/hecks/forms/reference_options.rb +30 -0
  183. data/lib/hecks/forms/value_object_shape.rb +46 -0
  184. data/lib/hecks/forms.rb +54 -0
  185. data/lib/hecks/fqn.rb +94 -0
  186. data/lib/hecks/framework/bluebook/compliance.bluebook +1 -0
  187. data/lib/hecks/framework/bluebook/console_settings.bluebook +489 -0
  188. data/lib/hecks/framework/bluebook/framework.hecksagon +32 -0
  189. data/lib/hecks/framework/bluebook/governance.bluebook +130 -0
  190. data/lib/hecks/framework/bluebook/identity.bluebook +90 -0
  191. data/lib/hecks/framework/oidc.json +39 -0
  192. data/lib/hecks/framework.rb +90 -0
  193. data/lib/hecks/freezer.rb +67 -0
  194. data/lib/hecks/fuzzing/invalid_value_generator.rb +86 -0
  195. data/lib/hecks/fuzzing/isolated_boot.rb +92 -0
  196. data/lib/hecks/fuzzing/properties.rb +1146 -0
  197. data/lib/hecks/fuzzing/replay.rb +635 -0
  198. data/lib/hecks/fuzzing/sequence_generator/catalog.rb +93 -0
  199. data/lib/hecks/fuzzing/sequence_generator/outcome_tracker.rb +54 -0
  200. data/lib/hecks/fuzzing/sequence_generator/picker.rb +96 -0
  201. data/lib/hecks/fuzzing/sequence_generator/step_builder.rb +185 -0
  202. data/lib/hecks/fuzzing/sequence_generator.rb +130 -0
  203. data/lib/hecks/fuzzing/value_generator.rb +177 -0
  204. data/lib/hecks/fuzzing.rb +12 -0
  205. data/lib/hecks/grammar/evolve.rb +291 -0
  206. data/lib/hecks/grammar/expression.bluebook +417 -0
  207. data/lib/hecks/grammar/expression_operators.json +1152 -0
  208. data/lib/hecks/grammar/grammar.hecksagon +20 -0
  209. data/lib/hecks/grammar/oidc.json +69 -0
  210. data/lib/hecks/grammar/translation.bluebook +203 -0
  211. data/lib/hecks/grammar.rb +178 -0
  212. data/lib/hecks/ir.rb +126 -0
  213. data/lib/hecks/language/adapter.bluebook +116 -0
  214. data/lib/hecks/language/bluebook/aggregate.bluebook +581 -0
  215. data/lib/hecks/language/bluebook/attaches/paging.bluebook +76 -0
  216. data/lib/hecks/language/bluebook/bluebook.bluebook +256 -0
  217. data/lib/hecks/language/bluebook/bluebook.hecksagon +24 -0
  218. data/lib/hecks/language/bluebook/command.bluebook +437 -0
  219. data/lib/hecks/language/bluebook/entity.bluebook +316 -0
  220. data/lib/hecks/language/bluebook/policy.bluebook +172 -0
  221. data/lib/hecks/language/bluebook/process_manager.bluebook +264 -0
  222. data/lib/hecks/language/bluebook/projection.bluebook +267 -0
  223. data/lib/hecks/language/bluebook/query.bluebook +245 -0
  224. data/lib/hecks/language/bluebook/shape.bluebook +292 -0
  225. data/lib/hecks/language/bluebook/syntax.bluebook +447 -0
  226. data/lib/hecks/language/bluebook/vocabulary.bluebook +364 -0
  227. data/lib/hecks/language/hecksagon/adapter_binding.bluebook +51 -0
  228. data/lib/hecks/language/hecksagon/domain_port.bluebook +76 -0
  229. data/lib/hecks/language/hecksagon/hecksagon.bluebook +131 -0
  230. data/lib/hecks/language/hecksagon/port_operation.bluebook +102 -0
  231. data/lib/hecks/language/oidc.json +313 -0
  232. data/lib/hecks/language/port.bluebook +92 -0
  233. data/lib/hecks/language/translation/translation.bluebook +110 -0
  234. data/lib/hecks/language/translation/translation_aggregate.bluebook +267 -0
  235. data/lib/hecks/language/world/wiring.bluebook +62 -0
  236. data/lib/hecks/language/world/world.bluebook +84 -0
  237. data/lib/hecks/literal.rb +125 -0
  238. data/lib/hecks/naming.rb +121 -0
  239. data/lib/hecks/ports/access_control.port +4 -0
  240. data/lib/hecks/ports/access_control.rb +62 -0
  241. data/lib/hecks/ports/agent/answers.rb +104 -0
  242. data/lib/hecks/ports/agent.port +4 -0
  243. data/lib/hecks/ports/agent.rb +167 -0
  244. data/lib/hecks/ports/authentication.port +4 -0
  245. data/lib/hecks/ports/authentication.rb +50 -0
  246. data/lib/hecks/ports/authorization.port +4 -0
  247. data/lib/hecks/ports/authorization.rb +59 -0
  248. data/lib/hecks/ports/clock.port +4 -0
  249. data/lib/hecks/ports/clock.rb +62 -0
  250. data/lib/hecks/ports/extraction.port +4 -0
  251. data/lib/hecks/ports/extraction.rb +37 -0
  252. data/lib/hecks/ports/identity_assignment.port +4 -0
  253. data/lib/hecks/ports/identity_assignment.rb +45 -0
  254. data/lib/hecks/ports/identity_generation.port +4 -0
  255. data/lib/hecks/ports/identity_generation.rb +49 -0
  256. data/lib/hecks/ports/identity_resolution.port +4 -0
  257. data/lib/hecks/ports/identity_resolution.rb +40 -0
  258. data/lib/hecks/ports/loading.port +4 -0
  259. data/lib/hecks/ports/loading.rb +13 -0
  260. data/lib/hecks/ports/persistence/append_only.rb +102 -0
  261. data/lib/hecks/ports/persistence/binding_policy.rb +56 -0
  262. data/lib/hecks/ports/persistence/execution.rb +18 -0
  263. data/lib/hecks/ports/persistence/lineage.rb +277 -0
  264. data/lib/hecks/ports/persistence/null_saga_store.rb +25 -0
  265. data/lib/hecks/ports/persistence/remote_runtime.rb +42 -0
  266. data/lib/hecks/ports/persistence/repository_factory.rb +30 -0
  267. data/lib/hecks/ports/persistence.port +4 -0
  268. data/lib/hecks/ports/persistence.rb +39 -0
  269. data/lib/hecks/ports/projection.port +4 -0
  270. data/lib/hecks/ports/projection.rb +76 -0
  271. data/lib/hecks/ports/query/in_memory.rb +60 -0
  272. data/lib/hecks/ports/query/ordering.rb +41 -0
  273. data/lib/hecks/ports/query.rb +36 -0
  274. data/lib/hecks/ports.rb +27 -0
  275. data/lib/hecks/projections/diagrams.rb +413 -0
  276. data/lib/hecks/projections/ir.rb +18 -0
  277. data/lib/hecks/projections/model/deviations.rb +98 -0
  278. data/lib/hecks/projections/model.rb +145 -0
  279. data/lib/hecks/projections/oidc.rb +110 -0
  280. data/lib/hecks/projections/parser_table.rb +159 -0
  281. data/lib/hecks/projections/reference.rb +38 -0
  282. data/lib/hecks/projections/shape.rb +31 -0
  283. data/lib/hecks/projections/statements.rb +110 -0
  284. data/lib/hecks/projections/vocabulary.rb +100 -0
  285. data/lib/hecks/projections.rb +32 -0
  286. data/lib/hecks/projector/cli_projector.rb +437 -0
  287. data/lib/hecks/projector/docs_projector.rb +321 -0
  288. data/lib/hecks/projector/exporter.rb +141 -0
  289. data/lib/hecks/projector/ir_projector.rb +18 -0
  290. data/lib/hecks/projector/narrate_projector.rb +243 -0
  291. data/lib/hecks/projector/target.rb +97 -0
  292. data/lib/hecks/projector.rb +186 -0
  293. data/lib/hecks/query_ir.rb +392 -0
  294. data/lib/hecks/query_specification/common/authorization_spec.rb +9 -0
  295. data/lib/hecks/query_specification/common/comparators.rb +25 -0
  296. data/lib/hecks/query_specification/common/comparison.rb +174 -0
  297. data/lib/hecks/query_specification/common/cursor_spec.rb +9 -0
  298. data/lib/hecks/query_specification/common/dsl.rb +58 -0
  299. data/lib/hecks/query_specification/common/inspection_spec.rb +9 -0
  300. data/lib/hecks/query_specification/common/limit_spec.rb +9 -0
  301. data/lib/hecks/query_specification/common/null_policy.rb +80 -0
  302. data/lib/hecks/query_specification/common/null_semantics.rb +11 -0
  303. data/lib/hecks/query_specification/common/offset_spec.rb +9 -0
  304. data/lib/hecks/query_specification/common/options.rb +32 -0
  305. data/lib/hecks/query_specification/common/order_by.rb +9 -0
  306. data/lib/hecks/query_specification/common/specification.rb +10 -0
  307. data/lib/hecks/query_specification/common/where_clause.rb +9 -0
  308. data/lib/hecks/query_specification/field_path.rb +89 -0
  309. data/lib/hecks/query_specification/hop_path.rb +130 -0
  310. data/lib/hecks/query_specification/read_model/specification.rb +18 -0
  311. data/lib/hecks/query_specification.rb +14 -0
  312. data/lib/hecks/rendering.rb +48 -0
  313. data/lib/hecks/router/namespace_installer.rb +157 -0
  314. data/lib/hecks/router.rb +70 -0
  315. data/lib/hecks/runtime/caller.rb +50 -0
  316. data/lib/hecks/runtime/capability_graph.rb +44 -0
  317. data/lib/hecks/runtime/command_interpreter/argument_gate.rb +124 -0
  318. data/lib/hecks/runtime/command_interpreter/mutation_applier.rb +248 -0
  319. data/lib/hecks/runtime/command_interpreter.rb +413 -0
  320. data/lib/hecks/runtime/command_rules/admissibility.rb +307 -0
  321. data/lib/hecks/runtime/command_rules/arithmetic.rb +254 -0
  322. data/lib/hecks/runtime/command_rules/authorization.rb +64 -0
  323. data/lib/hecks/runtime/command_rules/emission.rb +34 -0
  324. data/lib/hecks/runtime/command_rules/references.rb +181 -0
  325. data/lib/hecks/runtime/command_rules.rb +28 -0
  326. data/lib/hecks/runtime/dependency_planning.rb +231 -0
  327. data/lib/hecks/runtime/dispatcher.rb +286 -0
  328. data/lib/hecks/runtime/entity_element.rb +253 -0
  329. data/lib/hecks/runtime/entity_interpreter.rb +228 -0
  330. data/lib/hecks/runtime/era_check.rb +136 -0
  331. data/lib/hecks/runtime/era_guard/shape_diff.rb +128 -0
  332. data/lib/hecks/runtime/era_guard.rb +193 -0
  333. data/lib/hecks/runtime/era_tamper.rb +61 -0
  334. data/lib/hecks/runtime/errors.rb +100 -0
  335. data/lib/hecks/runtime/event.rb +51 -0
  336. data/lib/hecks/runtime/identity.rb +128 -0
  337. data/lib/hecks/runtime/instance.rb +120 -0
  338. data/lib/hecks/runtime/interpreting.rb +69 -0
  339. data/lib/hecks/runtime/loader.rb +143 -0
  340. data/lib/hecks/runtime/policy_interpreter.rb +366 -0
  341. data/lib/hecks/runtime/port_operation_interpreter.rb +210 -0
  342. data/lib/hecks/runtime/query_interpreter.rb +254 -0
  343. data/lib/hecks/runtime/reaction_invocation.rb +245 -0
  344. data/lib/hecks/runtime/read_model_interpreter.rb +266 -0
  345. data/lib/hecks/runtime/rebuild_sweep.rb +74 -0
  346. data/lib/hecks/runtime/reference_hop.rb +99 -0
  347. data/lib/hecks/runtime/refusal_wording.rb +124 -0
  348. data/lib/hecks/runtime/registry/saga_persistence.rb +70 -0
  349. data/lib/hecks/runtime/registry/verification.rb +158 -0
  350. data/lib/hecks/runtime/registry.rb +218 -0
  351. data/lib/hecks/runtime/remote_dispatcher.rb +143 -0
  352. data/lib/hecks/runtime/routing.rb +96 -0
  353. data/lib/hecks/runtime/saga_interpreter/correlation.rb +97 -0
  354. data/lib/hecks/runtime/saga_interpreter.rb +301 -0
  355. data/lib/hecks/runtime/storage_shape.rb +120 -0
  356. data/lib/hecks/runtime/tenant_check.rb +84 -0
  357. data/lib/hecks/runtime/tenant_scope.rb +55 -0
  358. data/lib/hecks/runtime/value/admission.rb +112 -0
  359. data/lib/hecks/runtime/value/coercion.rb +500 -0
  360. data/lib/hecks/runtime/value/invariant_violation.rb +5 -0
  361. data/lib/hecks/runtime/value.rb +125 -0
  362. data/lib/hecks/runtime.rb +95 -0
  363. data/lib/hecks/translation/audit/approval_digest.rb +31 -0
  364. data/lib/hecks/translation/audit/layer_one.rb +37 -0
  365. data/lib/hecks/translation/audit/layer_two.rb +77 -0
  366. data/lib/hecks/translation/audit/unfed_report.rb +42 -0
  367. data/lib/hecks/translation/audit.rb +70 -0
  368. data/lib/hecks/translation/reattest.rb +72 -0
  369. data/lib/hecks/translation/rule_compiler.rb +120 -0
  370. data/lib/hecks/translation/scaffold/differ.rb +183 -0
  371. data/lib/hecks/translation/scaffold/renderer.rb +41 -0
  372. data/lib/hecks/translation/scaffold/writer.rb +28 -0
  373. data/lib/hecks/translation/scaffold.rb +30 -0
  374. data/lib/hecks/translation.rb +11 -0
  375. data/lib/hecks/version.rb +16 -0
  376. data/lib/hecks/vocabulary.rb +213 -0
  377. data/lib/hecks.rb +118 -6
  378. metadata +401 -222
  379. data/bin/hecks +0 -7
  380. data/bin/hecks-package +0 -65
  381. data/bin/hecks_console +0 -12
  382. data/bin/hecks_serverless +0 -6
  383. data/lib/cli/build.rb +0 -14
  384. data/lib/cli/command_runner.rb +0 -28
  385. data/lib/cli/console.rb +0 -10
  386. data/lib/cli/generate.rb +0 -37
  387. data/lib/cli/hecks-cli.rb +0 -27
  388. data/lib/cli/test.rb +0 -57
  389. data/lib/console/commands.rb +0 -8
  390. data/lib/console/hecks-console.rb +0 -1
  391. data/lib/packager/README.md +0 -0
  392. data/lib/packager/app_runner.rb +0 -21
  393. data/lib/packager/args.rb +0 -26
  394. data/lib/packager/compatibility/fixnum.rb +0 -6
  395. data/lib/packager/hecks.rb +0 -39
  396. data/lib/packager/query_runner.rb +0 -21
  397. data/lib/packager/resources/Dockerfile +0 -11
  398. data/lib/packager/resources/app_binary +0 -7
  399. data/lib/packager/resources/bundle_config +0 -3
  400. data/lib/packager/resources/traveling-ruby-20150715-2.2.2-linux-x86_64.tar.gz +0 -0
  401. data/lib/packager/resources/traveling-ruby-20150715-2.2.2-osx.tar.gz +0 -0
  402. data/lib/serverless/Domain +0 -32
  403. data/lib/serverless/cli.rb +0 -75
  404. data/lib/serverless/resources/command_name.js +0 -5
  405. data/lib/serverless/resources/environment.js +0 -7
  406. data/lib/serverless/resources/handler.js.tt +0 -28
  407. data/lib/serverless/resources/run_binary.js +0 -22
  408. data/lib/serverless/resources/serverless.yml +0 -20
data/bin/hecks-package DELETED
@@ -1,65 +0,0 @@
1
- #!/usr/bin/env ruby
2
- resources_path = File.expand_path(File.dirname(__FILE__)) + '/../lib/packager/resources'
3
- lib_path = File.expand_path(File.dirname(__FILE__)) + '/../lib/packager'
4
-
5
- bash_script =
6
- <<-BASH_SCRIPT
7
- set -xe
8
-
9
- rm -rf package_build
10
- rm -rf package
11
- mkdir -p package_build
12
-
13
- cp Gemfile package_build
14
-
15
- cp Hecksfile package_build
16
-
17
- bundle package --gemfile package_build/Gemfile
18
- cp #{resources_path}/Dockerfile package_build
19
-
20
- mkdir -p package_build/package/linux/ruby
21
- mkdir -p package_build/package/linux/lib
22
- mkdir -p package_build/package/linux/.bundle
23
-
24
- mkdir -p package_build/package/osx/ruby
25
- mkdir -p package_build/package/osx/lib
26
- mkdir -p package_build/package/osx/.bundle
27
-
28
- tar -xzf #{resources_path}/traveling-ruby-20150715-2.2.2-linux-x86_64.tar.gz -C package_build/package/linux/ruby
29
- tar -xzf #{resources_path}/traveling-ruby-20150715-2.2.2-osx.tar.gz -C package_build/package/osx/ruby
30
-
31
- docker build package_build -t binary_builder
32
-
33
- CONTAINER_ID=`docker create binary_builder:latest`
34
-
35
- docker cp $CONTAINER_ID:/usr/src/app/vendor package_build
36
- docker cp $CONTAINER_ID:/usr/src/app/Gemfile.lock package_build
37
- docker rm $CONTAINER_ID
38
-
39
- cp -r package_build/Gemfile package_build/package/linux
40
- cp -r package_build/Gemfile package_build/package/osx
41
- cp -r package_build/Gemfile.lock package_build/package/linux
42
- cp -r package_build/Gemfile.lock package_build/package/osx
43
-
44
- cp -r package_build/vendor package_build/package/linux
45
- cp -r package_build/vendor package_build/package/osx
46
-
47
- cp #{resources_path}/app_binary package_build/package/linux/app
48
- cp #{resources_path}/app_binary package_build/package/osx/app
49
-
50
- cp #{resources_path}/bundle_config package_build/package/linux/.bundle/config
51
- cp #{resources_path}/bundle_config package_build/package/osx/.bundle/config
52
-
53
- cp -r #{lib_path}/** package_build/package/osx/lib
54
- cp -r #{lib_path}/** package_build/package/linux/lib
55
-
56
- cp -r package_build/package .
57
- cp package_build/Gemfile.lock package/linux/osx
58
- cp package_build/Gemfile.lock package/linux/linux
59
-
60
- rm -rf package_build
61
- BASH_SCRIPT
62
-
63
- bash_script.split("/n").each do |command|
64
- puts `#{command}`
65
- end
data/bin/hecks_console DELETED
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require_relative '../lib/hecks'
4
- require HecksConsole.full_path
5
-
6
- puts File.dirname(__FILE__)
7
-
8
- puts "Hecks Loaded!"
9
- puts "Using the " + HecksConsole.domain_name + " domain"
10
-
11
- IRB::ExtendCommandBundle.include(HecksConsole::Commands)
12
- IRB.start
data/bin/hecks_serverless DELETED
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'hecks'
3
- load(File.dirname(__FILE__) + '/../lib/serverless/Domain')
4
- require_relative(File.dirname(__FILE__) + '/../lib/serverless/cli')
5
-
6
- HecksServerless::CLI.start(ARGV)
data/lib/cli/build.rb DELETED
@@ -1,14 +0,0 @@
1
- module Hecks
2
- # Build subcommands
3
- class CLI < Thor
4
- include Thor::Actions
5
-
6
- desc 'build', 'build and install the hecks gem'
7
-
8
- def build
9
- run('hecks generate readme')
10
- run('gem build hecks')
11
- run('gem install hecks')
12
- end
13
- end
14
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
- class HecksCLI < Thor
3
- class CommandRunner
4
- # Runs CLI Commands
5
- def initialize(hexagon, name, dry_run = false)
6
- @hexagon = hexagon
7
- @dry_run = dry_run
8
- @name = name
9
- end
10
-
11
- def call(command)
12
- output = full_command(command)
13
- unless File.directory?('tmp')
14
- FileUtils.mkdir('tmp')
15
- end
16
- File.open('tmp/hecks', 'a') { |file| file.write(output + "\n") }
17
- return if dry_run
18
- end
19
-
20
- private
21
-
22
- attr_reader :hexagon, :dry_run, :name
23
-
24
- def full_command(command)
25
- (['hecks'] + command).join(' ')
26
- end
27
- end
28
- end
data/lib/cli/console.rb DELETED
@@ -1,10 +0,0 @@
1
- module Hecks
2
- # Run a console with easy access to your domain
3
- class CLI < Thor
4
- desc 'console','REPL with domain helpers'
5
- def console
6
- exec "#{ENV['HECKS_PATH']}/bin/hecks_console" if ENV['HECKS_PATH']
7
- exec 'hecks_console'
8
- end
9
- end
10
- end
data/lib/cli/generate.rb DELETED
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Generate Subcommands
4
- class Generate < Thor
5
- desc 'domain_objects', 'generate domain objects'
6
- method_option :type,
7
- aliases: '-t',
8
- required: true,
9
- desc: 'The type of the domain object you want to generate',
10
- banner: '[OBJECT_TYPE]',
11
- enum: %w(entity value_object aggregate reference) if File.file?('Domain') || File.file?('hecks.gemspec')
12
-
13
- register(HecksDomain::CLI::GenerateDomainObject,
14
- 'domain_object',
15
- 'domain_object',
16
- 'Generate Domain Objects') if File.file?('Domain')
17
-
18
- desc 'resource_server', 'generate resource_server adapter'
19
- register(HecksAdapters::ResourceServer::CLI::GenerateResourceServer,
20
- 'resource_server',
21
- 'resource_server',
22
- 'Generate A Resource Server for a domain') if File.file?('Domain')
23
-
24
- desc 'sql_database', 'generate SQL database adapter'
25
- register(HecksAdapters::SQLDatabase::CLI::GenerateSQLDatabase,
26
- 'sql_database',
27
- 'sql_database',
28
- 'Generate a SQL Server Database adapter') if File.file?('Domain')
29
-
30
- desc 'domain_migrations', 'generate migrations for the sql database adapter based on your domain'
31
- register(HecksAdapters::SQLDatabase::CLI::GenerateDomainMigrations,
32
- 'domain_migrations',
33
- 'domain_migrations',
34
- 'Generate Domain Migrations')
35
-
36
- desc 'readme', 'Generate the hecks Readme with the latest examples'
37
- end
data/lib/cli/hecks-cli.rb DELETED
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'active_support/inflector'
3
- require 'hecks-adapters-resource-server'
4
- require 'hecks-adapters-sql-database'
5
-
6
- require_relative 'generate'
7
- require_relative 'test'
8
- require_relative 'console'
9
- require_relative 'command_runner'
10
- require_relative 'build'
11
-
12
-
13
- # A command line interface for generating and interacting with Hecks domains
14
- class HecksCLI < Thor
15
- package_name 'hecks'
16
-
17
- desc 'generate', 'generate'
18
- subcommand('generate', Generate)
19
-
20
- desc 'test', 'test'
21
- subcommand('test', Test) if File.file?('hecks.gemspec')
22
-
23
- long_desc 'Generate a domain'
24
- method_option :dryrun, aliases: '-d', type: :boolean, desc: 'Output commands without running'
25
-
26
- register(HecksDomain::CLI::New, 'new', 'new', 'Create a new Domain') if File.file?('Domain')
27
- end
data/lib/cli/test.rb DELETED
@@ -1,57 +0,0 @@
1
- # Test subcommands
2
- class Test < Thor
3
- include Thor::Actions
4
-
5
- class_option :no_cache, aliases: '-n', desc: 'download resources', default: false, type: :boolean
6
-
7
- desc 'ci', 'Run and test the generators'
8
- def ci
9
- examples
10
- packages
11
- domain_adapters
12
- end
13
-
14
- desc 'domain_adapters', "run the domain adapter specs"
15
- def domain_adapters
16
- generate_resource_server('pizza_builder')
17
- generate_sql_database('pizza_builder')
18
- end
19
-
20
- desc 'examples', 'Generate and run the example specs'
21
- def examples
22
- reset_example('pizza_builder')
23
- run('rspec -f d')
24
- end
25
-
26
- desc 'packages', 'Generate and run the package specs'
27
- def packages
28
- build_binary_package('pizza_builder')
29
- build_lambda_package('pizza_builder')
30
- end
31
-
32
- private
33
-
34
- def generate_sql_database(name)
35
- run("cd ../example/#{name} && hecks generate sql_database")
36
- end
37
-
38
- def reset_example(name)
39
- run("cd ../example/#{name} && rm -rf lib")
40
- run("cd ../example/#{name} && rm -rf spec")
41
- run("cd ../example/#{name} && hecks new")
42
- end
43
-
44
- def build_binary_package(name)
45
- run("cd ../example/#{name} && hecks package binary #{'-n' if options[:no_cache]}")
46
- end
47
-
48
- def build_lambda_package(name)
49
- run("cd ../example/#{name} && hecks package lambda")
50
- end
51
-
52
- def generate_resource_server(name)
53
- run("cd ../example/#{name} && rm -rf config.ru")
54
- run("cd ../example/#{name} && hecks generate resource_server")
55
- run("cd ../example/#{name}")
56
- end
57
- end
@@ -1,8 +0,0 @@
1
- module HecksConsole
2
- # mixin methods to the console
3
- module Commands
4
- def app
5
- @app ||= HecksApplication.new(domain: HecksConsole.domain)
6
- end
7
- end
8
- end
@@ -1 +0,0 @@
1
- require_relative 'commands'
File without changes
@@ -1,21 +0,0 @@
1
- module HecksPackager
2
- # Runs operations on the domain
3
- class AppRunner
4
- def initialize(args:, application:)
5
- @args = Args.new(args)
6
- @application = application
7
- end
8
-
9
- def call
10
- domain_module.send(args.method, args.data).call
11
- end
12
-
13
- private
14
-
15
- attr_reader :args, :application
16
-
17
- def domain_module
18
- application[args.domain_module]
19
- end
20
- end
21
- end
data/lib/packager/args.rb DELETED
@@ -1,26 +0,0 @@
1
- module HecksPackager
2
- # represents the args passed in
3
- class Args
4
- attr_reader :method
5
-
6
- def initialize(command_args)
7
- @domain_module = command_args[0]
8
- @method = command_args[1]
9
- @data = command_args[2]
10
- end
11
-
12
- def domain_module
13
- @domain_module.to_sym
14
- end
15
-
16
- def data
17
- json = JSON.parse(@data, symbolize_names: true)
18
-
19
- if(@method == 'delete')
20
- return json[:id]
21
- else
22
- json
23
- end
24
- end
25
- end
26
- end
@@ -1,6 +0,0 @@
1
- # Ruby 2.2.2 doesn't support Fixnum#positive?, so monkey patch it.
2
- class Fixnum
3
- def positive?
4
- self > 0
5
- end
6
- end
@@ -1,39 +0,0 @@
1
- require 'bundler'
2
- require 'getoptlong'
3
-
4
- Bundler.require
5
-
6
- require_relative 'args'
7
- require_relative 'compatibility/fixnum'
8
- require_relative 'app_runner'
9
- require_relative 'query_runner'
10
-
11
- load('Hecksfile')
12
-
13
- opts = GetoptLong.new(
14
- [ '--module', '-m', GetoptLong::REQUIRED_ARGUMENT ],
15
- [ '--command', '-c', GetoptLong::REQUIRED_ARGUMENT ],
16
- [ '--data', '-d', GetoptLong::REQUIRED_ARGUMENT ]
17
- )
18
-
19
- domain_module = ''
20
- command = ''
21
- data = ''
22
- opts.each do |opt, arg|
23
- case opt
24
- when '--module'
25
- domain_module = arg
26
- when '--command'
27
- command = arg
28
- when '--query'
29
- query = arg
30
- when '--data'
31
- data = arg
32
- end
33
- end
34
-
35
- if command == 'read'
36
- puts HecksPackager::QueryRunner.new(args: [domain_module, command, data], application: HecksApp).call.to_json
37
- else
38
- puts HecksPackager::AppRunner.new(args: [domain_module, command, data], application: HecksApp).call.result.to_json
39
- end
@@ -1,21 +0,0 @@
1
- module HecksPackager
2
- # A Query runner
3
- class QueryRunner
4
- def initialize(args:, application:)
5
- @args = Args.new(args)
6
- @application = application
7
- end
8
-
9
- def call
10
- domain_module.send(args.method, args.data)
11
- end
12
-
13
- private
14
-
15
- attr_reader :args, :application
16
-
17
- def domain_module
18
- application[args.domain_module]
19
- end
20
- end
21
- end
@@ -1,11 +0,0 @@
1
- FROM ruby:2.2
2
-
3
- COPY vendor /usr/src/app/vendor
4
-
5
- COPY Gemfile /usr/src/app/Gemfile
6
- COPY Gemfile.lock /usr/src/app/Gemfile.lock
7
- run gem uninstall -i /usr/local/lib/ruby/gems/2.2.0 bundler --force -x
8
- run gem install bundler -v 1.9.9
9
- run gem list bundler
10
- RUN cd /usr/src/app/ && ls
11
- RUN cd /usr/src/app/ && bundle install --path vendor
@@ -1,7 +0,0 @@
1
- #!/bin/bash
2
- set -e
3
- SELFDIR="`dirname \"$0\"`"
4
- SELFDIR="`cd \"$SELFDIR\" && pwd`"
5
- export BUNDLE_GEMFILE="$SELFDIR/Gemfile"
6
- unset BUNDLE_IGNORE_CONFIG
7
- exec "$SELFDIR/ruby/bin/ruby" -rbundler/setup -rreadline "$SELFDIR/lib/hecks.rb" "$@"
@@ -1,3 +0,0 @@
1
- BUNDLE_PATH: ./vendor
2
- BUNDLE_WITHOUT: development
3
- BUNDLE_DISABLE_SHARED_GEMS: '1'
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # New builder format (drop the types!):
4
- # Pizzas::Pizza(:name, :description)
5
- # *Toppings
6
- # named_by :Chef
7
- # Pizzas::Chef(:name)
8
- #
9
- # Orders::Order
10
- # \*LineItem(:pizza_name, :quantity, :price)
11
- # \Pizzas::Pizza
12
- # NOTE: Domain should generate english sentences
13
- # A pizza has many toppings, a name, and a description
14
- # A pizza is named by a chef
15
- # A chef has a name
16
- # An Order has many line items
17
- # A Line Item has a a pizza, pizza_name, a quantity and a price
18
-
19
-
20
- DOMAIN ||= HecksDomainBuilder.build "pizza_builder" do |pizza_builder|
21
- pizza_builder.module 'Pizzas' do |pizzas|
22
- pizzas.head("Pizza").attributes('name:string', 'description:string', 'toppings:[topping]', 'chef:chef')
23
- pizzas.value("Topping").attributes('name:string')
24
- pizzas.value("Chef").attributes('name:string')
25
- end
26
-
27
- pizza_builder.module 'Orders' do |orders|
28
- orders.head("Order").attributes('line_items:[line_item]')
29
- orders.value("LineItem").attributes('pizza_name:string', 'quantity:integer', 'price:currency', "pizza:pizzas::pizza")
30
- orders.reference("pizzas::pizza")
31
- end
32
- end
@@ -1,75 +0,0 @@
1
- module HecksServerless
2
- # Generators to build a serverless config
3
- class CLI < Thor
4
- include Thor::Actions
5
- package_name 'hecks_serverless'
6
- SELF_PATH = File.dirname(__FILE__)
7
- DESCRIPTION = "Generate domain functions on lambda"
8
- COMMAND_NAME = "generate"
9
- RESOURCES_FOLDER = "#{SELF_PATH}/resources"
10
- SERVERLESS_FILE = "serverless.yml"
11
- CRUD_METHODS = %w{create read update delete}
12
- HANDLER_TEMPLATE = 'handler.js'
13
- ENVIRONMENT_FILE = 'environment.js'
14
-
15
- desc COMMAND_NAME, DESCRIPTION
16
- def generate
17
- create_serverless_file
18
- create_domain_module_files
19
- insert_handlers_into_serverless_file
20
- end
21
-
22
- def self.source_root
23
- RESOURCES_FOLDER
24
- end
25
-
26
- private
27
-
28
- attr_reader :locals
29
-
30
- def insert_handlers_into_serverless_file
31
- insert_into_file SERVERLESS_FILE, handlers, :after => "functions:"
32
- end
33
-
34
- def create_serverless_file
35
- copy_file SERVERLESS_FILE
36
- end
37
-
38
- def create_domain_module_files
39
- domain_modules.each { |dmodule| create_handler_files(dmodule) }
40
- end
41
-
42
- def create_handler_files(dmodule)
43
- self.locals = {domain_module: dmodule.name.downcase}
44
- template HANDLER_TEMPLATE, "serverless/#{dmodule.name.downcase}.js"
45
- copy_file ENVIRONMENT_FILE, 'serverless/environment.js'
46
- copy_file 'run_binary.js', 'serverless/run_binary.js'
47
- copy_file 'command_name.js', 'serverless/command_name.js'
48
- end
49
-
50
- def locals=(value)
51
- @locals ||= {}
52
- @locals.merge!(value)
53
- end
54
-
55
- def handlers
56
- "\n" + domain_modules.flat_map { |mod| crud(mod) }.join("\n")
57
- end
58
-
59
- def crud(domain_module)
60
- self.locals = {domain_module: domain_module.name.downcase}
61
- CRUD_METHODS.flat_map {|function| line(function, domain_module)}
62
- end
63
-
64
- def domain_modules
65
- DOMAIN.domain_modules.values
66
- end
67
-
68
- def line(function, domain_module)
69
- <<-HEREDOC
70
- #{domain_module.name.downcase}_#{function}:
71
- handler: serverless/#{domain_module.name.downcase}.#{function}
72
- HEREDOC
73
- end
74
- end
75
- end
@@ -1,5 +0,0 @@
1
- var environment = require('./environment')
2
-
3
- module.exports = function (context, event, command) {
4
- return "package/" + environment(context['functionName']) + "/app -m pizzas -c " + command + " -d '" + JSON.stringify(event) + "'"
5
- }
@@ -1,7 +0,0 @@
1
- module.exports = function (functionName) {
2
- if(functionName.indexOf('-dev-') > -1) {
3
- return 'osx'
4
- } else {
5
- return 'linux'
6
- }
7
- }
@@ -1,28 +0,0 @@
1
- 'use strict';
2
- var runBinary = require('./run_binary')
3
- var commandName = require('./command_name')
4
- const exec = require('child_process').exec
5
-
6
- module.exports.create = (event, context, callback) => {
7
- exec(commandName(context, event, 'create'), (err, stdout, stderr) => {
8
- callback(null, runBinary('create', '<%= locals[:domain_module] %>', err, stdout, stderr, event));
9
- });
10
- };
11
-
12
- module.exports.read = (event, context, callback) => {
13
- exec(commandName(context, event, 'read'), (err, stdout, stderr) => {
14
- callback(null, runBinary('read', '<%= locals[:domain_module] %>', err, stdout, stderr, event));
15
- });
16
- };
17
-
18
- module.exports.update = (event, context, callback) => {
19
- exec(commandName(context, event, 'update'), (err, stdout, stderr) => {
20
- callback(null, runBinary('update', '<%= locals[:domain_module] %>', err, stdout, stderr, event));
21
- });
22
- };
23
-
24
- module.exports.delete = (event, context, callback) => {
25
- exec(commandName(context, event, 'delete'), (err, stdout, stderr) => {
26
- callback(null, runBinary('delete', '<%= locals[:domain_module] %>', err, stdout, stderr, event));
27
- });
28
- };
@@ -1,22 +0,0 @@
1
- module.exports = function(command, module, err, stdout, stderr, event) {
2
- if (err) { console.error(err); return }
3
-
4
- var result = JSON.parse(stdout)
5
-
6
- if(result && result.errors) {
7
- var statusCode = Object.keys(result.errors).length > 0 ? 500 : 200
8
- } else {
9
- var statusCode = 200
10
- }
11
-
12
- return {
13
- statusCode: statusCode,
14
- body: {
15
- command: command,
16
- module: module,
17
- input: event,
18
- result: result,
19
- errors: result ? result.errors : []
20
- }
21
- };
22
- }
@@ -1,20 +0,0 @@
1
- service: pizza-builder
2
- provider:
3
- name: aws
4
- runtime: nodejs4.3
5
- iamRoleStatements:
6
- - Effect: Allow
7
- Action:
8
- - dynamodb:Query
9
- - dynamodb:Scan
10
- - dynamodb:GetItem
11
- - dynamodb:PutItem
12
- - dynamodb:UpdateItem
13
- - dynamodb:DeleteItem
14
- Resource: "arn:aws:dynamodb:${opt:region, self:provider.region}:*:table/*"
15
- package:
16
- exclude:
17
- - spec/**
18
- - tmp/**
19
- - package/osx/**
20
- functions: