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.
- checksums.yaml +5 -5
- data/lib/hecks/adapters/driven/claude_code.adapter +3 -0
- data/lib/hecks/adapters/driven/claude_code.rb +127 -0
- data/lib/hecks/adapters/driven/d1.adapter +12 -0
- data/lib/hecks/adapters/driven/d1.rb +403 -0
- data/lib/hecks/adapters/driven/folder.adapter +3 -0
- data/lib/hecks/adapters/driven/folder.rb +199 -0
- data/lib/hecks/adapters/driven/google_authentication.adapter +3 -0
- data/lib/hecks/adapters/driven/google_authentication.rb +100 -0
- data/lib/hecks/adapters/driven/governance_authorization.adapter +3 -0
- data/lib/hecks/adapters/driven/governance_authorization.rb +62 -0
- data/lib/hecks/adapters/driven/heki/journal.rb +51 -0
- data/lib/hecks/adapters/driven/heki/saga_store.rb +0 -0
- data/lib/hecks/adapters/driven/heki/snapshot.rb +38 -0
- data/lib/hecks/adapters/driven/heki.adapter +4 -0
- data/lib/hecks/adapters/driven/heki.rb +148 -0
- data/lib/hecks/adapters/driven/identity_registry.adapter +3 -0
- data/lib/hecks/adapters/driven/identity_registry.rb +26 -0
- data/lib/hecks/adapters/driven/in_memory_ordering.rb +51 -0
- data/lib/hecks/adapters/driven/lambda/client.rb +63 -0
- data/lib/hecks/adapters/driven/lambda.adapter +4 -0
- data/lib/hecks/adapters/driven/lambda.rb +131 -0
- data/lib/hecks/adapters/driven/memory.adapter +3 -0
- data/lib/hecks/adapters/driven/memory.rb +103 -0
- data/lib/hecks/adapters/driven/mock_stripe_adapter.adapter +3 -0
- data/lib/hecks/adapters/driven/mock_stripe_adapter.rb +28 -0
- data/lib/hecks/adapters/driven/postgres/codec.rb +80 -0
- data/lib/hecks/adapters/driven/postgres/schema_builder.rb +168 -0
- data/lib/hecks/adapters/driven/postgres.adapter +5 -0
- data/lib/hecks/adapters/driven/postgres.rb +391 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage/era_store.rb +171 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage/field_cache.rb +190 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage/head_compiler.rb +429 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage/mint_transaction.rb +166 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage/provisioning.rb +286 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage/resumable_backfill.rb +168 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage/tail_merge.rb +163 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage/transform_installer.rb +114 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage.rb +137 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager/coverage_check.rb +89 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager/era_resolver.rb +82 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager/merge_coordinator.rb +43 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager/minter.rb +132 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager.rb +74 -0
- data/lib/hecks/adapters/driven/postgres_era.adapter +6 -0
- data/lib/hecks/adapters/driven/postgres_era.rb +671 -0
- data/lib/hecks/adapters/driven/prism.adapter +3 -0
- data/lib/hecks/adapters/driven/prism.rb +80 -0
- data/lib/hecks/adapters/driven/secure_random_identity.adapter +3 -0
- data/lib/hecks/adapters/driven/secure_random_identity.rb +14 -0
- data/lib/hecks/adapters/driven/sql_query_builder.rb +221 -0
- data/lib/hecks/adapters/driven/sqlite/codec.rb +63 -0
- data/lib/hecks/adapters/driven/sqlite/projection.rb +105 -0
- data/lib/hecks/adapters/driven/sqlite/schema_builder.rb +180 -0
- data/lib/hecks/adapters/driven/sqlite.adapter +9 -0
- data/lib/hecks/adapters/driven/sqlite.rb +285 -0
- data/lib/hecks/adapters/driven/system_clock.adapter +3 -0
- data/lib/hecks/adapters/driven/system_clock.rb +14 -0
- data/lib/hecks/adapters/driven.rb +36 -0
- data/lib/hecks/adapters.rb +6 -0
- data/lib/hecks/behaviors/dsl.rb +96 -0
- data/lib/hecks/behaviors/expectations.rb +280 -0
- data/lib/hecks/behaviors/ir.rb +31 -0
- data/lib/hecks/behaviors/rspec.rb +42 -0
- data/lib/hecks/behaviors/runner.rb +96 -0
- data/lib/hecks/behaviors.rb +25 -0
- data/lib/hecks/bluebook/aggregate.rb +108 -0
- data/lib/hecks/bluebook/assembly/aggregate_assembly.rb +134 -0
- data/lib/hecks/bluebook/assembly/build.rb +48 -0
- data/lib/hecks/bluebook/assembly/contract.rb +112 -0
- data/lib/hecks/bluebook/assembly/contracts.rb +409 -0
- data/lib/hecks/bluebook/assembly/marks.rb +227 -0
- data/lib/hecks/bluebook/assembly/specializer.rb +70 -0
- data/lib/hecks/bluebook/assembly.rb +78 -0
- data/lib/hecks/bluebook/attribute.rb +96 -0
- data/lib/hecks/bluebook/behaviour/aggregate.rb +83 -0
- data/lib/hecks/bluebook/behaviour/attribute.rb +27 -0
- data/lib/hecks/bluebook/behaviour/chapter.rb +72 -0
- data/lib/hecks/bluebook/behaviour/command.rb +116 -0
- data/lib/hecks/bluebook/behaviour/domain_port.rb +25 -0
- data/lib/hecks/bluebook/behaviour/entity.rb +59 -0
- data/lib/hecks/bluebook/behaviour/hexagon.rb +50 -0
- data/lib/hecks/bluebook/behaviour/lifecycle.rb +51 -0
- data/lib/hecks/bluebook/behaviour/policy.rb +52 -0
- data/lib/hecks/bluebook/behaviour/process_manager.rb +38 -0
- data/lib/hecks/bluebook/behaviour/query.rb +10 -0
- data/lib/hecks/bluebook/behaviour/read_model.rb +29 -0
- data/lib/hecks/bluebook/behaviour/traits.rb +81 -0
- data/lib/hecks/bluebook/behaviour/value_object.rb +33 -0
- data/lib/hecks/bluebook/chapter.rb +68 -0
- data/lib/hecks/bluebook/command.rb +124 -0
- data/lib/hecks/bluebook/domain_port.rb +102 -0
- data/lib/hecks/bluebook/dsl/adapter_builder.rb +34 -0
- data/lib/hecks/bluebook/dsl/aggregate_builder.rb +906 -0
- data/lib/hecks/bluebook/dsl/attribute_collector.rb +327 -0
- data/lib/hecks/bluebook/dsl/binding_proxy.rb +71 -0
- data/lib/hecks/bluebook/dsl/bluebook_builder.rb +1018 -0
- data/lib/hecks/bluebook/dsl/command_builder.rb +626 -0
- data/lib/hecks/bluebook/dsl/const_shim.rb +81 -0
- data/lib/hecks/bluebook/dsl/domain_port_builder.rb +79 -0
- data/lib/hecks/bluebook/dsl/entity_builder.rb +305 -0
- data/lib/hecks/bluebook/dsl/generic_dispatch.rb +366 -0
- data/lib/hecks/bluebook/dsl/hecksagon_builder.rb +163 -0
- data/lib/hecks/bluebook/dsl/identity_declaration.rb +191 -0
- data/lib/hecks/bluebook/dsl/lifecycle_builder.rb +44 -0
- data/lib/hecks/bluebook/dsl/malformed.rb +7 -0
- data/lib/hecks/bluebook/dsl/policy_builder.rb +120 -0
- data/lib/hecks/bluebook/dsl/port_builder.rb +30 -0
- data/lib/hecks/bluebook/dsl/port_operation_builder.rb +142 -0
- data/lib/hecks/bluebook/dsl/process_manager_builder.rb +207 -0
- data/lib/hecks/bluebook/dsl/query_builder.rb +113 -0
- data/lib/hecks/bluebook/dsl/read_model_builder.rb +233 -0
- data/lib/hecks/bluebook/dsl/rule_reference.rb +172 -0
- data/lib/hecks/bluebook/dsl/translation_builder.rb +243 -0
- data/lib/hecks/bluebook/dsl/value_object_builder.rb +178 -0
- data/lib/hecks/bluebook/dsl/word_gate.rb +221 -0
- data/lib/hecks/bluebook/dsl/world_builder.rb +77 -0
- data/lib/hecks/bluebook/dsl.rb +45 -0
- data/lib/hecks/bluebook/entity.rb +103 -0
- data/lib/hecks/bluebook/expression/canonical_form.rb +55 -0
- data/lib/hecks/bluebook/expression/evaluator.rb +261 -0
- data/lib/hecks/bluebook/expression/projection.json +170 -0
- data/lib/hecks/bluebook/expression/resolver/block_predicates.rb +233 -0
- data/lib/hecks/bluebook/expression/resolver.rb +630 -0
- data/lib/hecks/bluebook/expression.rb +13 -0
- data/lib/hecks/bluebook/hexagon.rb +60 -0
- data/lib/hecks/bluebook/lifecycle.rb +42 -0
- data/lib/hecks/bluebook/meta_validator/adapter_judge.rb +54 -0
- data/lib/hecks/bluebook/meta_validator/judge.rb +559 -0
- data/lib/hecks/bluebook/meta_validator/plan.rb +332 -0
- data/lib/hecks/bluebook/meta_validator/port_judge.rb +47 -0
- data/lib/hecks/bluebook/meta_validator/readings.rb +350 -0
- data/lib/hecks/bluebook/meta_validator/reconstruction.rb +312 -0
- data/lib/hecks/bluebook/meta_validator/shapes.rb +246 -0
- data/lib/hecks/bluebook/meta_validator/syntax_boot.rb +255 -0
- data/lib/hecks/bluebook/meta_validator/translation_judge.rb +138 -0
- data/lib/hecks/bluebook/meta_validator/world_judge.rb +78 -0
- data/lib/hecks/bluebook/meta_validator.rb +452 -0
- data/lib/hecks/bluebook/model_check.rb +318 -0
- data/lib/hecks/bluebook/pattern_subset.rb +120 -0
- data/lib/hecks/bluebook/policy.rb +41 -0
- data/lib/hecks/bluebook/process_manager.rb +86 -0
- data/lib/hecks/bluebook/project_discovery.rb +30 -0
- data/lib/hecks/bluebook/project_loader.rb +40 -0
- data/lib/hecks/bluebook/project_register.rb +82 -0
- data/lib/hecks/bluebook/query.rb +61 -0
- data/lib/hecks/bluebook/read_model.rb +109 -0
- data/lib/hecks/bluebook/reference.rb +74 -0
- data/lib/hecks/bluebook/smoke_test.rb +166 -0
- data/lib/hecks/bluebook/synthesizer.rb +95 -0
- data/lib/hecks/bluebook/translation.rb +92 -0
- data/lib/hecks/bluebook/value_object.rb +58 -0
- data/lib/hecks/bluebook.rb +74 -0
- data/lib/hecks/codemod.rb +342 -0
- data/lib/hecks/construct.rb +71 -0
- data/lib/hecks/deploy/bluebook/deploy.bluebook +219 -0
- data/lib/hecks/deploy/bluebook/deploy.hecksagon +4 -0
- data/lib/hecks/deploy/oidc.json +18 -0
- data/lib/hecks/doc/reference.rb +389 -0
- data/lib/hecks/embryonaut_bluebook.rb +75 -0
- data/lib/hecks/facade/cli_door.rb +116 -0
- data/lib/hecks/facade/cli_runner.rb +190 -0
- data/lib/hecks/facade/command_request.rb +105 -0
- data/lib/hecks/facade/handle.rb +173 -0
- data/lib/hecks/facade/json_door.rb +154 -0
- data/lib/hecks/facade/surface/aggregate_door.rb +185 -0
- data/lib/hecks/facade/surface/chapter.rb +107 -0
- data/lib/hecks/facade/surface.rb +48 -0
- data/lib/hecks/facade.rb +44 -0
- data/lib/hecks/forms/app.rb +300 -0
- data/lib/hecks/forms/command_form_renderer.rb +113 -0
- data/lib/hecks/forms/examples/banking_console.bluebook +3 -0
- data/lib/hecks/forms/field_renderer.rb +170 -0
- data/lib/hecks/forms/field_shape.rb +232 -0
- data/lib/hecks/forms/html.rb +53 -0
- data/lib/hecks/forms/index_renderer.rb +35 -0
- data/lib/hecks/forms/page.rb +157 -0
- data/lib/hecks/forms/params.rb +132 -0
- data/lib/hecks/forms/query_form_renderer.rb +114 -0
- data/lib/hecks/forms/record_renderer.rb +115 -0
- data/lib/hecks/forms/record_table.rb +63 -0
- data/lib/hecks/forms/reference_options.rb +30 -0
- data/lib/hecks/forms/value_object_shape.rb +46 -0
- data/lib/hecks/forms.rb +54 -0
- data/lib/hecks/fqn.rb +94 -0
- data/lib/hecks/framework/bluebook/compliance.bluebook +1 -0
- data/lib/hecks/framework/bluebook/console_settings.bluebook +489 -0
- data/lib/hecks/framework/bluebook/framework.hecksagon +32 -0
- data/lib/hecks/framework/bluebook/governance.bluebook +130 -0
- data/lib/hecks/framework/bluebook/identity.bluebook +90 -0
- data/lib/hecks/framework/oidc.json +39 -0
- data/lib/hecks/framework.rb +90 -0
- data/lib/hecks/freezer.rb +67 -0
- data/lib/hecks/fuzzing/invalid_value_generator.rb +86 -0
- data/lib/hecks/fuzzing/isolated_boot.rb +92 -0
- data/lib/hecks/fuzzing/properties.rb +1146 -0
- data/lib/hecks/fuzzing/replay.rb +635 -0
- data/lib/hecks/fuzzing/sequence_generator/catalog.rb +93 -0
- data/lib/hecks/fuzzing/sequence_generator/outcome_tracker.rb +54 -0
- data/lib/hecks/fuzzing/sequence_generator/picker.rb +96 -0
- data/lib/hecks/fuzzing/sequence_generator/step_builder.rb +185 -0
- data/lib/hecks/fuzzing/sequence_generator.rb +130 -0
- data/lib/hecks/fuzzing/value_generator.rb +177 -0
- data/lib/hecks/fuzzing.rb +12 -0
- data/lib/hecks/grammar/evolve.rb +291 -0
- data/lib/hecks/grammar/expression.bluebook +417 -0
- data/lib/hecks/grammar/expression_operators.json +1152 -0
- data/lib/hecks/grammar/grammar.hecksagon +20 -0
- data/lib/hecks/grammar/oidc.json +69 -0
- data/lib/hecks/grammar/translation.bluebook +203 -0
- data/lib/hecks/grammar.rb +178 -0
- data/lib/hecks/ir.rb +126 -0
- data/lib/hecks/language/adapter.bluebook +116 -0
- data/lib/hecks/language/bluebook/aggregate.bluebook +581 -0
- data/lib/hecks/language/bluebook/attaches/paging.bluebook +76 -0
- data/lib/hecks/language/bluebook/bluebook.bluebook +256 -0
- data/lib/hecks/language/bluebook/bluebook.hecksagon +24 -0
- data/lib/hecks/language/bluebook/command.bluebook +437 -0
- data/lib/hecks/language/bluebook/entity.bluebook +316 -0
- data/lib/hecks/language/bluebook/policy.bluebook +172 -0
- data/lib/hecks/language/bluebook/process_manager.bluebook +264 -0
- data/lib/hecks/language/bluebook/projection.bluebook +267 -0
- data/lib/hecks/language/bluebook/query.bluebook +245 -0
- data/lib/hecks/language/bluebook/shape.bluebook +292 -0
- data/lib/hecks/language/bluebook/syntax.bluebook +447 -0
- data/lib/hecks/language/bluebook/vocabulary.bluebook +364 -0
- data/lib/hecks/language/hecksagon/adapter_binding.bluebook +51 -0
- data/lib/hecks/language/hecksagon/domain_port.bluebook +76 -0
- data/lib/hecks/language/hecksagon/hecksagon.bluebook +131 -0
- data/lib/hecks/language/hecksagon/port_operation.bluebook +102 -0
- data/lib/hecks/language/oidc.json +313 -0
- data/lib/hecks/language/port.bluebook +92 -0
- data/lib/hecks/language/translation/translation.bluebook +110 -0
- data/lib/hecks/language/translation/translation_aggregate.bluebook +267 -0
- data/lib/hecks/language/world/wiring.bluebook +62 -0
- data/lib/hecks/language/world/world.bluebook +84 -0
- data/lib/hecks/literal.rb +125 -0
- data/lib/hecks/naming.rb +121 -0
- data/lib/hecks/ports/access_control.port +4 -0
- data/lib/hecks/ports/access_control.rb +62 -0
- data/lib/hecks/ports/agent/answers.rb +104 -0
- data/lib/hecks/ports/agent.port +4 -0
- data/lib/hecks/ports/agent.rb +167 -0
- data/lib/hecks/ports/authentication.port +4 -0
- data/lib/hecks/ports/authentication.rb +50 -0
- data/lib/hecks/ports/authorization.port +4 -0
- data/lib/hecks/ports/authorization.rb +59 -0
- data/lib/hecks/ports/clock.port +4 -0
- data/lib/hecks/ports/clock.rb +62 -0
- data/lib/hecks/ports/extraction.port +4 -0
- data/lib/hecks/ports/extraction.rb +37 -0
- data/lib/hecks/ports/identity_assignment.port +4 -0
- data/lib/hecks/ports/identity_assignment.rb +45 -0
- data/lib/hecks/ports/identity_generation.port +4 -0
- data/lib/hecks/ports/identity_generation.rb +49 -0
- data/lib/hecks/ports/identity_resolution.port +4 -0
- data/lib/hecks/ports/identity_resolution.rb +40 -0
- data/lib/hecks/ports/loading.port +4 -0
- data/lib/hecks/ports/loading.rb +13 -0
- data/lib/hecks/ports/persistence/append_only.rb +102 -0
- data/lib/hecks/ports/persistence/binding_policy.rb +56 -0
- data/lib/hecks/ports/persistence/execution.rb +18 -0
- data/lib/hecks/ports/persistence/lineage.rb +277 -0
- data/lib/hecks/ports/persistence/null_saga_store.rb +25 -0
- data/lib/hecks/ports/persistence/remote_runtime.rb +42 -0
- data/lib/hecks/ports/persistence/repository_factory.rb +30 -0
- data/lib/hecks/ports/persistence.port +4 -0
- data/lib/hecks/ports/persistence.rb +39 -0
- data/lib/hecks/ports/projection.port +4 -0
- data/lib/hecks/ports/projection.rb +76 -0
- data/lib/hecks/ports/query/in_memory.rb +60 -0
- data/lib/hecks/ports/query/ordering.rb +41 -0
- data/lib/hecks/ports/query.rb +36 -0
- data/lib/hecks/ports.rb +27 -0
- data/lib/hecks/projections/diagrams.rb +413 -0
- data/lib/hecks/projections/ir.rb +18 -0
- data/lib/hecks/projections/model/deviations.rb +98 -0
- data/lib/hecks/projections/model.rb +145 -0
- data/lib/hecks/projections/oidc.rb +110 -0
- data/lib/hecks/projections/parser_table.rb +159 -0
- data/lib/hecks/projections/reference.rb +38 -0
- data/lib/hecks/projections/shape.rb +31 -0
- data/lib/hecks/projections/statements.rb +110 -0
- data/lib/hecks/projections/vocabulary.rb +100 -0
- data/lib/hecks/projections.rb +32 -0
- data/lib/hecks/projector/cli_projector.rb +437 -0
- data/lib/hecks/projector/docs_projector.rb +321 -0
- data/lib/hecks/projector/exporter.rb +141 -0
- data/lib/hecks/projector/ir_projector.rb +18 -0
- data/lib/hecks/projector/narrate_projector.rb +243 -0
- data/lib/hecks/projector/target.rb +97 -0
- data/lib/hecks/projector.rb +186 -0
- data/lib/hecks/query_ir.rb +392 -0
- data/lib/hecks/query_specification/common/authorization_spec.rb +9 -0
- data/lib/hecks/query_specification/common/comparators.rb +25 -0
- data/lib/hecks/query_specification/common/comparison.rb +174 -0
- data/lib/hecks/query_specification/common/cursor_spec.rb +9 -0
- data/lib/hecks/query_specification/common/dsl.rb +58 -0
- data/lib/hecks/query_specification/common/inspection_spec.rb +9 -0
- data/lib/hecks/query_specification/common/limit_spec.rb +9 -0
- data/lib/hecks/query_specification/common/null_policy.rb +80 -0
- data/lib/hecks/query_specification/common/null_semantics.rb +11 -0
- data/lib/hecks/query_specification/common/offset_spec.rb +9 -0
- data/lib/hecks/query_specification/common/options.rb +32 -0
- data/lib/hecks/query_specification/common/order_by.rb +9 -0
- data/lib/hecks/query_specification/common/specification.rb +10 -0
- data/lib/hecks/query_specification/common/where_clause.rb +9 -0
- data/lib/hecks/query_specification/field_path.rb +89 -0
- data/lib/hecks/query_specification/hop_path.rb +130 -0
- data/lib/hecks/query_specification/read_model/specification.rb +18 -0
- data/lib/hecks/query_specification.rb +14 -0
- data/lib/hecks/rendering.rb +48 -0
- data/lib/hecks/router/namespace_installer.rb +157 -0
- data/lib/hecks/router.rb +70 -0
- data/lib/hecks/runtime/caller.rb +50 -0
- data/lib/hecks/runtime/capability_graph.rb +44 -0
- data/lib/hecks/runtime/command_interpreter/argument_gate.rb +124 -0
- data/lib/hecks/runtime/command_interpreter/mutation_applier.rb +248 -0
- data/lib/hecks/runtime/command_interpreter.rb +413 -0
- data/lib/hecks/runtime/command_rules/admissibility.rb +307 -0
- data/lib/hecks/runtime/command_rules/arithmetic.rb +254 -0
- data/lib/hecks/runtime/command_rules/authorization.rb +64 -0
- data/lib/hecks/runtime/command_rules/emission.rb +34 -0
- data/lib/hecks/runtime/command_rules/references.rb +181 -0
- data/lib/hecks/runtime/command_rules.rb +28 -0
- data/lib/hecks/runtime/dependency_planning.rb +231 -0
- data/lib/hecks/runtime/dispatcher.rb +286 -0
- data/lib/hecks/runtime/entity_element.rb +253 -0
- data/lib/hecks/runtime/entity_interpreter.rb +228 -0
- data/lib/hecks/runtime/era_check.rb +136 -0
- data/lib/hecks/runtime/era_guard/shape_diff.rb +128 -0
- data/lib/hecks/runtime/era_guard.rb +193 -0
- data/lib/hecks/runtime/era_tamper.rb +61 -0
- data/lib/hecks/runtime/errors.rb +100 -0
- data/lib/hecks/runtime/event.rb +51 -0
- data/lib/hecks/runtime/identity.rb +128 -0
- data/lib/hecks/runtime/instance.rb +120 -0
- data/lib/hecks/runtime/interpreting.rb +69 -0
- data/lib/hecks/runtime/loader.rb +143 -0
- data/lib/hecks/runtime/policy_interpreter.rb +366 -0
- data/lib/hecks/runtime/port_operation_interpreter.rb +210 -0
- data/lib/hecks/runtime/query_interpreter.rb +254 -0
- data/lib/hecks/runtime/reaction_invocation.rb +245 -0
- data/lib/hecks/runtime/read_model_interpreter.rb +266 -0
- data/lib/hecks/runtime/rebuild_sweep.rb +74 -0
- data/lib/hecks/runtime/reference_hop.rb +99 -0
- data/lib/hecks/runtime/refusal_wording.rb +124 -0
- data/lib/hecks/runtime/registry/saga_persistence.rb +70 -0
- data/lib/hecks/runtime/registry/verification.rb +158 -0
- data/lib/hecks/runtime/registry.rb +218 -0
- data/lib/hecks/runtime/remote_dispatcher.rb +143 -0
- data/lib/hecks/runtime/routing.rb +96 -0
- data/lib/hecks/runtime/saga_interpreter/correlation.rb +97 -0
- data/lib/hecks/runtime/saga_interpreter.rb +301 -0
- data/lib/hecks/runtime/storage_shape.rb +120 -0
- data/lib/hecks/runtime/tenant_check.rb +84 -0
- data/lib/hecks/runtime/tenant_scope.rb +55 -0
- data/lib/hecks/runtime/value/admission.rb +112 -0
- data/lib/hecks/runtime/value/coercion.rb +500 -0
- data/lib/hecks/runtime/value/invariant_violation.rb +5 -0
- data/lib/hecks/runtime/value.rb +125 -0
- data/lib/hecks/runtime.rb +95 -0
- data/lib/hecks/translation/audit/approval_digest.rb +31 -0
- data/lib/hecks/translation/audit/layer_one.rb +37 -0
- data/lib/hecks/translation/audit/layer_two.rb +77 -0
- data/lib/hecks/translation/audit/unfed_report.rb +42 -0
- data/lib/hecks/translation/audit.rb +70 -0
- data/lib/hecks/translation/reattest.rb +72 -0
- data/lib/hecks/translation/rule_compiler.rb +120 -0
- data/lib/hecks/translation/scaffold/differ.rb +183 -0
- data/lib/hecks/translation/scaffold/renderer.rb +41 -0
- data/lib/hecks/translation/scaffold/writer.rb +28 -0
- data/lib/hecks/translation/scaffold.rb +30 -0
- data/lib/hecks/translation.rb +11 -0
- data/lib/hecks/version.rb +16 -0
- data/lib/hecks/vocabulary.rb +213 -0
- data/lib/hecks.rb +118 -6
- metadata +401 -222
- data/bin/hecks +0 -7
- data/bin/hecks-package +0 -65
- data/bin/hecks_console +0 -12
- data/bin/hecks_serverless +0 -6
- data/lib/cli/build.rb +0 -14
- data/lib/cli/command_runner.rb +0 -28
- data/lib/cli/console.rb +0 -10
- data/lib/cli/generate.rb +0 -37
- data/lib/cli/hecks-cli.rb +0 -27
- data/lib/cli/test.rb +0 -57
- data/lib/console/commands.rb +0 -8
- data/lib/console/hecks-console.rb +0 -1
- data/lib/packager/README.md +0 -0
- data/lib/packager/app_runner.rb +0 -21
- data/lib/packager/args.rb +0 -26
- data/lib/packager/compatibility/fixnum.rb +0 -6
- data/lib/packager/hecks.rb +0 -39
- data/lib/packager/query_runner.rb +0 -21
- data/lib/packager/resources/Dockerfile +0 -11
- data/lib/packager/resources/app_binary +0 -7
- data/lib/packager/resources/bundle_config +0 -3
- data/lib/packager/resources/traveling-ruby-20150715-2.2.2-linux-x86_64.tar.gz +0 -0
- data/lib/packager/resources/traveling-ruby-20150715-2.2.2-osx.tar.gz +0 -0
- data/lib/serverless/Domain +0 -32
- data/lib/serverless/cli.rb +0 -75
- data/lib/serverless/resources/command_name.js +0 -5
- data/lib/serverless/resources/environment.js +0 -7
- data/lib/serverless/resources/handler.js.tt +0 -28
- data/lib/serverless/resources/run_binary.js +0 -22
- 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
data/lib/cli/build.rb
DELETED
data/lib/cli/command_runner.rb
DELETED
|
@@ -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
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
|
data/lib/console/commands.rb
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require_relative 'commands'
|
data/lib/packager/README.md
DELETED
|
File without changes
|
data/lib/packager/app_runner.rb
DELETED
|
@@ -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
|
data/lib/packager/hecks.rb
DELETED
|
@@ -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
|
|
Binary file
|
|
Binary file
|
data/lib/serverless/Domain
DELETED
|
@@ -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
|
data/lib/serverless/cli.rb
DELETED
|
@@ -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,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:
|