foobara 0.0.91 → 0.0.93

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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -2
  3. data/projects/builtin_types/src/email/validator_base.rb +1 -1
  4. data/projects/command/src/command_pattern_implementation/concerns/reflection.rb +39 -18
  5. data/projects/command/src/transformed_command.rb +85 -40
  6. data/projects/command_connectors/src/command_connector/commands/describe.rb +1 -5
  7. data/projects/command_connectors/src/command_connector.rb +65 -55
  8. data/projects/command_connectors/src/command_registry/exposed_command.rb +2 -2
  9. data/projects/command_connectors/src/command_registry/exposed_domain.rb +10 -3
  10. data/projects/command_connectors/src/command_registry/exposed_organization.rb +2 -2
  11. data/projects/command_connectors/src/command_registry.rb +9 -0
  12. data/projects/command_connectors/src/serializers/atomic_serializer.rb +1 -1
  13. data/projects/command_connectors/src/transformers/load_delegated_attributes_entities_pre_commit_transformer.rb +40 -0
  14. data/projects/common/src/data_path.rb +16 -0
  15. data/projects/common/src/error.rb +35 -5
  16. data/projects/common/src/outcome.rb +11 -5
  17. data/projects/common/src/possible_error.rb +9 -3
  18. data/projects/detached_entity/src/concerns/associations.rb +26 -20
  19. data/projects/detached_entity/src/concerns/reflection.rb +3 -3
  20. data/projects/detached_entity/src/detached_entity_type.rb +8 -3
  21. data/projects/detached_entity/src/extensions/builtin_types/detached_entity/validators/{attributes_declaration.rb → model_instance_is_valid.rb} +1 -1
  22. data/projects/domain/src/domain_module_extension.rb +12 -4
  23. data/projects/domain/src/extensions/foobara.rb +31 -28
  24. data/projects/domain/src/is_manifestable.rb +6 -2
  25. data/projects/domain/src/organization_module_extension.rb +6 -2
  26. data/projects/entity/src/concerns/queries.rb +29 -31
  27. data/projects/entity/src/extensions/builtin_types/entity/validators/{attributes_declaration.rb → model_instance_is_valid.rb} +1 -1
  28. data/projects/model/src/concerns/reflection.rb +8 -2
  29. data/projects/model/src/concerns/types.rb +121 -23
  30. data/projects/model/src/extensions/builtin_types/model/supported_transformers/mutable.rb +1 -2
  31. data/projects/model/src/extensions/builtin_types/model/validators/{attributes_declaration.rb → model_instance_is_valid.rb} +1 -1
  32. data/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/array_with_symbolic_elements.rb +29 -0
  33. data/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/delegates_desugarizer.rb +39 -0
  34. data/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/delegates_validator.rb +44 -0
  35. data/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/move_private_from_element_types_to_root.rb +48 -0
  36. data/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/symbolize_private.rb +34 -0
  37. data/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/to_type_transformer.rb +34 -2
  38. data/projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/valid_attribute_names.rb +54 -0
  39. data/projects/model/src/model.rb +9 -0
  40. data/projects/model_attribute_helpers/src/attribute_helpers.rb +25 -4
  41. data/projects/namespace/src/is_namespace.rb +34 -15
  42. data/projects/persistence/src/entity_attributes_crud_driver.rb +25 -1
  43. data/projects/persistence/src/entity_base/transaction_table.rb +28 -3
  44. data/projects/type_declarations/src/desugarizer.rb +1 -1
  45. data/projects/type_declarations/src/remove_sensitive_values_transformer.rb +6 -0
  46. data/projects/type_declarations/src/type_builder.rb +42 -39
  47. data/projects/type_declarations/src/type_declaration_handler.rb +1 -1
  48. data/projects/type_declarations/src/type_declaration_handler_registry.rb +1 -1
  49. data/projects/type_declarations/src/type_declaration_validator.rb +1 -1
  50. data/projects/type_declarations/src/type_declarations.rb +39 -10
  51. data/projects/types/src/extensions/error.rb +3 -3
  52. data/projects/types/src/type/concerns/reflection.rb +79 -4
  53. data/projects/types/src/type.rb +42 -17
  54. data/projects/value/src/caster.rb +1 -1
  55. data/projects/value/src/mutator.rb +1 -1
  56. data/projects/value/src/processor/casting.rb +1 -1
  57. data/projects/value/src/processor/pipeline.rb +1 -1
  58. data/projects/value/src/processor/selection.rb +1 -1
  59. data/projects/value/src/processor.rb +13 -5
  60. data/projects/value/src/transformer.rb +1 -1
  61. data/projects/value/src/validator.rb +1 -1
  62. metadata +12 -5
@@ -327,7 +327,9 @@ module Foobara
327
327
  scoped_full_name
328
328
  end
329
329
 
330
- def reference_or_declaration_data(declaration_data = self.declaration_data, remove_sensitive: false)
330
+ def reference_or_declaration_data(declaration_data = self.declaration_data)
331
+ remove_sensitive = TypeDeclarations.foobara_manifest_context_remove_sensitive?
332
+
331
333
  if registered?
332
334
  # TODO: we should just use the symbol and nothing else in this context instead of a hash with 1 element.
333
335
  { type: foobara_manifest_reference.to_sym }
@@ -343,18 +345,23 @@ module Foobara
343
345
  scoped_full_name
344
346
  end
345
347
 
346
- def foobara_manifest(to_include: Set.new, remove_sensitive: false)
348
+ def foobara_manifest
349
+ to_include = TypeDeclarations.foobara_manifest_context_to_include
350
+ remove_sensitive = TypeDeclarations.foobara_manifest_context_remove_sensitive?
351
+
347
352
  types = []
348
353
 
349
- types_depended_on(remove_sensitive:).each do |dependent_type|
354
+ types_depended_on.each do |dependent_type|
350
355
  if dependent_type.registered?
351
356
  types << dependent_type.foobara_manifest_reference
352
- to_include << dependent_type
357
+ if to_include
358
+ to_include << dependent_type
359
+ end
353
360
  end
354
361
  end
355
362
 
356
363
  possible_errors_manifests = possible_errors.map do |possible_error|
357
- [possible_error.key.to_s, possible_error.foobara_manifest(to_include:, remove_sensitive:)]
364
+ [possible_error.key.to_s, possible_error.foobara_manifest]
358
365
  end.sort.to_h
359
366
 
360
367
  declaration_data = self.declaration_data
@@ -381,14 +388,14 @@ module Foobara
381
388
  end
382
389
 
383
390
  h.merge!(
384
- supported_processor_manifest(to_include, remove_sensitive:).merge(
385
- Util.remove_blank(processors: processor_manifest(to_include, remove_sensitive:))
391
+ supported_processor_manifest.merge(
392
+ Util.remove_blank(processors: processor_manifest)
386
393
  )
387
394
  )
388
395
 
389
396
  target_classes.sort_by(&:name).each do |target_class|
390
397
  if target_class.respond_to?(:foobara_manifest)
391
- h.merge!(target_class.foobara_manifest(to_include:, remove_sensitive:))
398
+ h.merge!(target_class.foobara_manifest)
392
399
  end
393
400
  end
394
401
 
@@ -403,14 +410,18 @@ module Foobara
403
410
  base_type
404
411
  end
405
412
 
406
- def supported_processor_manifest(to_include, remove_sensitive: false)
413
+ def supported_processor_manifest
414
+ to_include = TypeDeclarations.foobara_manifest_context_to_include
415
+
407
416
  supported_casters = []
408
417
  supported_transformers = []
409
418
  supported_validators = []
410
419
  supported_processors = []
411
420
 
412
421
  all_supported_processor_classes.each do |processor_class|
413
- to_include << processor_class
422
+ if to_include
423
+ to_include << processor_class
424
+ end
414
425
 
415
426
  target = if processor_class < Value::Caster
416
427
  supported_casters
@@ -433,7 +444,9 @@ module Foobara
433
444
  )
434
445
  end
435
446
 
436
- def processor_manifest(to_include, remove_sensitive: false)
447
+ def processor_manifest
448
+ to_include = TypeDeclarations.foobara_manifest_context_to_include
449
+
437
450
  casters_manifest = []
438
451
  transformers_manifest = []
439
452
  validators_manifest = []
@@ -443,33 +456,45 @@ module Foobara
443
456
 
444
457
  casters.each do |caster|
445
458
  klass = caster.class
446
- to_include << klass
459
+ if to_include
460
+ to_include << klass
461
+ end
447
462
  caster_classes_manifest << klass.foobara_manifest_reference
448
463
 
449
464
  if caster.scoped_path_set?
450
- to_include << caster
465
+ if to_include
466
+ to_include << caster
467
+ end
451
468
  casters_manifest << caster.foobara_manifest_reference
452
469
  end
453
470
  end
454
471
 
455
472
  transformers.each do |transformer|
456
473
  klass = transformer.class
457
- to_include << klass
474
+ if to_include
475
+ to_include << klass
476
+ end
458
477
  transformer_classes_manifest << klass.foobara_manifest_reference
459
478
 
460
479
  if transformer.scoped_path_set?
461
- to_include << transformer
480
+ if to_include
481
+ to_include << transformer
482
+ end
462
483
  transformers_manifest << transformer.foobara_manifest_reference
463
484
  end
464
485
  end
465
486
 
466
487
  validators.each do |validator|
467
488
  klass = validator.class
468
- to_include << klass
489
+ if to_include
490
+ to_include << klass
491
+ end
469
492
  validator_classes_manifest << klass.foobara_manifest_reference
470
493
 
471
494
  if validator.scoped_path_set?
472
- to_include << validator
495
+ if to_include
496
+ to_include << validator
497
+ end
473
498
  validators_manifest << validator.foobara_manifest_reference
474
499
  end
475
500
  end
@@ -3,7 +3,7 @@ module Foobara
3
3
  # TODO: do we really need these?? Can't just use a transformer?
4
4
  class Caster < Transformer
5
5
  class << self
6
- def foobara_manifest(to_include: Set.new, remove_sensitive: false)
6
+ def foobara_manifest
7
7
  super.merge(processor_type: :caster)
8
8
  end
9
9
 
@@ -2,7 +2,7 @@ module Foobara
2
2
  module Value
3
3
  class Mutator < Processor
4
4
  class << self
5
- def foobara_manifest(to_include: Set.new, remove_sensitive: false)
5
+ def foobara_manifest
6
6
  super.merge(processor_type: :mutator)
7
7
  end
8
8
 
@@ -22,7 +22,7 @@ module Foobara
22
22
  end
23
23
 
24
24
  class << self
25
- def foobara_manifest(to_include: Set.new, remove_sensitive: false)
25
+ def foobara_manifest
26
26
  # :nocov:
27
27
  super.merge(processor_type: :casting)
28
28
  # :nocov:
@@ -5,7 +5,7 @@ module Foobara
5
5
  class Processor
6
6
  class Pipeline < Multi
7
7
  class << self
8
- def foobara_manifest(to_include: Set.new, remove_sensitive: false)
8
+ def foobara_manifest
9
9
  # :nocov:
10
10
  super.merge(processor_type: :pipeline)
11
11
  # :nocov:
@@ -9,7 +9,7 @@ module Foobara
9
9
  class MoreThanOneApplicableProcessorError < DataError; end
10
10
 
11
11
  class << self
12
- def foobara_manifest(to_include: Set.new, remove_sensitive: false)
12
+ def foobara_manifest
13
13
  # :nocov:
14
14
  super.merge(processor_type: :selection)
15
15
  # :nocov:
@@ -25,9 +25,13 @@ module Foobara
25
25
  true
26
26
  end
27
27
 
28
- def foobara_manifest(to_include: Set.new, remove_sensitive: false)
28
+ def foobara_manifest
29
+ to_include = TypeDeclarations.foobara_manifest_context_to_include
30
+
29
31
  errors = error_classes.map do |error_class|
30
- to_include << error_class
32
+ if to_include
33
+ to_include << error_class
34
+ end
31
35
  error_class.foobara_manifest_reference
32
36
  end
33
37
 
@@ -317,15 +321,19 @@ module Foobara
317
321
 
318
322
  # TODO: is this in the wrong place? Should this be an extension?
319
323
 
320
- def foobara_manifest(to_include: Set.new, remove_sensitive: false)
324
+ def foobara_manifest
325
+ to_include = TypeDeclarations.foobara_manifest_context_to_include
326
+
321
327
  possible_errors = self.possible_errors.map do |possible_error|
322
- [possible_error.key.to_s, possible_error.foobara_manifest(to_include:, remove_sensitive:)]
328
+ [possible_error.key.to_s, possible_error.foobara_manifest]
323
329
  end
324
330
 
325
331
  manifest = super.dup
326
332
 
327
333
  if scoped_category == :processor
328
- to_include << self.class
334
+ if to_include
335
+ to_include << self.class
336
+ end
329
337
  manifest[:processor_class] = self.class.foobara_manifest_reference
330
338
  end
331
339
 
@@ -10,7 +10,7 @@ module Foobara
10
10
  end
11
11
 
12
12
  class << self
13
- def foobara_manifest(to_include: Set.new, remove_sensitive: false)
13
+ def foobara_manifest
14
14
  super.merge(processor_type: :transformer)
15
15
  end
16
16
 
@@ -6,7 +6,7 @@ module Foobara
6
6
  end
7
7
 
8
8
  class << self
9
- def foobara_manifest(to_include: Set.new, remove_sensitive: false)
9
+ def foobara_manifest
10
10
  super.merge(processor_type: :transformer)
11
11
  end
12
12
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foobara
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.91
4
+ version: 0.0.93
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Georgi
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-31 00:00:00.000000000 Z
10
+ date: 2025-04-06 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: bigdecimal
@@ -193,6 +193,7 @@ files:
193
193
  - projects/command_connectors/src/serializers/yaml_serializer.rb
194
194
  - projects/command_connectors/src/transformers/auth_errors_transformer.rb
195
195
  - projects/command_connectors/src/transformers/load_aggregates_pre_commit_transformer.rb
196
+ - projects/command_connectors/src/transformers/load_delegated_attributes_entities_pre_commit_transformer.rb
196
197
  - projects/common/lib/foobara/common.rb
197
198
  - projects/common/src/data_path.rb
198
199
  - projects/common/src/error.rb
@@ -217,7 +218,7 @@ files:
217
218
  - projects/detached_entity/src/detached_entity_type.rb
218
219
  - projects/detached_entity/src/extensions/builtin_types/detached_entity.rb
219
220
  - projects/detached_entity/src/extensions/builtin_types/detached_entity/casters/hash.rb
220
- - projects/detached_entity/src/extensions/builtin_types/detached_entity/validators/attributes_declaration.rb
221
+ - projects/detached_entity/src/extensions/builtin_types/detached_entity/validators/model_instance_is_valid.rb
221
222
  - projects/detached_entity/src/extensions/type_declarations/handlers/extend_detached_entity_type_declaration.rb
222
223
  - projects/detached_entity/src/extensions/type_declarations/handlers/extend_detached_entity_type_declaration/attributes_handler_desugarizer.rb
223
224
  - projects/detached_entity/src/extensions/type_declarations/handlers/extend_detached_entity_type_declaration/hash_desugarizer.rb
@@ -256,7 +257,7 @@ files:
256
257
  - projects/entity/src/extensions/builtin_types/entity.rb
257
258
  - projects/entity/src/extensions/builtin_types/entity/casters/hash.rb
258
259
  - projects/entity/src/extensions/builtin_types/entity/casters/primary_key.rb
259
- - projects/entity/src/extensions/builtin_types/entity/validators/attributes_declaration.rb
260
+ - projects/entity/src/extensions/builtin_types/entity/validators/model_instance_is_valid.rb
260
261
  - projects/entity/src/extensions/type_declarations/handlers/extend_entity_type_declaration.rb
261
262
  - projects/entity/src/extensions/type_declarations/handlers/extend_entity_type_declaration/attributes_handler_desugarizer.rb
262
263
  - projects/entity/src/extensions/type_declarations/handlers/extend_entity_type_declaration/hash_desugarizer.rb
@@ -304,12 +305,18 @@ files:
304
305
  - projects/model/src/concerns/types.rb
305
306
  - projects/model/src/extensions/builtin_types/model/casters/hash.rb
306
307
  - projects/model/src/extensions/builtin_types/model/supported_transformers/mutable.rb
307
- - projects/model/src/extensions/builtin_types/model/validators/attributes_declaration.rb
308
+ - projects/model/src/extensions/builtin_types/model/validators/model_instance_is_valid.rb
308
309
  - projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration.rb
310
+ - projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/array_with_symbolic_elements.rb
309
311
  - projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/attributes_handler_desugarizer.rb
312
+ - projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/delegates_desugarizer.rb
313
+ - projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/delegates_validator.rb
310
314
  - projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/hash_desugarizer.rb
311
315
  - projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/model_class_desugarizer.rb
316
+ - projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/move_private_from_element_types_to_root.rb
317
+ - projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/symbolize_private.rb
312
318
  - projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/to_type_transformer.rb
319
+ - projects/model/src/extensions/type_declarations/handlers/extend_model_type_declaration/valid_attribute_names.rb
313
320
  - projects/model/src/extensions/type_declarations/handlers/extend_registered_model_type_declaration.rb
314
321
  - projects/model/src/extensions/type_declarations/handlers/extend_registered_model_type_declaration/hash_desugarizer.rb
315
322
  - projects/model/src/extensions/type_declarations/handlers/extend_registered_model_type_declaration/model_class_type_desugarizer.rb