Changelog for Beam-Wire

1.030     2026-02-04 10:51:47-06:00 America/Chicago

  [Added]

  - Added '$version' key to require a certain version of a given '$class'.
    Thanks @XSven for the PR! [Github #89][Github #92]

1.029     2026-02-03 08:18:11-06:00 America/Chicago

  [Fixed]

  - Fixed test failure when missing a not-required (but recommended) requirement of
    Data::DPath. Thanks @eserte for the report and @XSven for the fix! [Github #88]

1.028     2026-01-21 12:32:24-06:00 America/Chicago

  [Fixed]

  - Fixed confusing error message when relative inner container file did not exist.
    Thanks @XSven for the report! [Github #87].

1.027     2025-12-06 11:32:40-06:00 America/Chicago

  [Added]

  - Added $env references to get values from environment variables. Thanks
    @XSven for the idea! [Github #82]
  - Added BEAM_PATH environment variable to add more directories to find
    nested containers and relative config files.
  - Added $default for a fallback to $env, $config, and nested containers.

  [Changed]

  - Data::DPath is now a "recommended" dependency and is not installed by default.
    This greatly reduces the size of Beam::Wire's dependency chain. Thanks @XSven
    for the patch! [Github #86]
  - Fixed compatibility with Perl 5.10. Thanks @djerius for the patch!
    [Github #84]

1.026     2024-09-13 09:28:36-05:00 America/Chicago

  [Added]

  - Added bare `$ref` services. Now a new service can be created as
    a reference to (or a method $call or $path lookup from) another
    service. Thanks @djerius for the patch! [Github #80]
  - Added merging for single hash-ref arguments. This is a special case
    for those constructors that don't just take a list of key-value
    pairs. Thanks @XSven for the patch! [Github #83]

  [Fixed]

  - Fixed `beam-wire` command exit status to exit non-zero on a failure.
    Thanks @mauke for the patch! [Github #78]

1.025     2021-07-08 10:21:29-05:00 America/Chicago

    [Fixed]

    - Fixed using false/undef values as value services. Thanks
      @al-tom-ru for providing this patch! [Github #75]

1.024     2021-04-26 23:17:42-05:00 America/Chicago

    [Fixed]

    - Fixed calling multiple constructor methods on classes that
      overload `bool`. Thanks @XSven for reporting this and providing
      the fix! [Github #73]

1.023     2019-03-23 16:19:26-05:00 America/Chicago

    [Added]

    - Added `configure_service` and `build_service` events. These allow
      notification and control of service objects' lifecycle.

    [Fixed]

    - Fixed child containers not being able to reference local services.
      Now, referencing a service in a child container that also
      references a service in the child container works correctly.

1.022     2018-08-01 22:38:58-05:00 America/Chicago

    [Fixed]

    - Fixed missing minimum Perl version in prereqs. Thanks @manwar!
      [Github #67]

1.021     2018-03-18 12:26:40-05:00 America/Chicago

    [Fixed]

    - Fixed a test failing when file paths have regex metacharacters.
      Thanks @mohawk2!

1.020     2017-05-05 00:21:19-05:00 America/Chicago

    [Added]

    - Objects that compose the Beam::Service role will now get their
      name and the container they came from as attributes to their
      constructor. This allows an object to look up services later if it
      wants to (if, for some reason, those services can't be declared as
      dependencies). [Github #56]

1.019 2016-03-04T04:20:22
 - Stop shipping README.mkdn to CPAN
 - Replace ReadmeMarkdownFromPod with ReadmeAnyFromPod
 - Inject travis markdown stuff in source tree, not build tree.
 - Replace ReadmeFromPod with Readme::Brief
 - Stop copying "README" from "CPAN" to "Source"
 - Filter out the Readme plugin from @Basic
 - Correct apparently backwards POD Link
 - Add -SingleEncoding to weaver config

1.018 2016-02-29T01:30:05Z
 - add better error when object config incomplete
 - fix unprefixed metadata allowed outside the root
 - add debugging info with BEAM_WIRE_DEBUG envvar

1.017 2016-02-28T05:43:50Z
 - add bare services
 - rewrite and expand the documentation

1.016 2016-02-24T23:37:58Z
 - Compose Roles _before_ instantiation so attrs will work in init

1.015 2016-02-23T14:33:00Z
 - remove Build.PL
 - Add META.json to the built dist
 - Avoid using YAML::XS 0.61 where possible
 - fix minimum test prereqs
 - update travis config to test core, hide modules

1.014 2015-11-02T21:22:53Z
 - allow empty hashref in service args
 - add exception class for config errors
 - upgrade perl in travis config
 - remove ModuleBuild to prevent toolchain confusion
 - Implement -a, allow -h to work without file
 - Add beam-wire script with checks for all but method chain & serial

1.013 2015-03-30T04:07:22Z
 - deprecate $method in dependency to get a value
 - add $call to get a dependency by calling a method
 - test that extended configs remain unchanged
 - add current service name to args and ref resolver
 - fix docs for event listeners
 - more deprecation test to a directory
 - compose roles into service objects
 - fix categorization of some tests
 - write all tests in terms of new example modules
 - remove inline packages from test scripts
 - categorize tests with directories

1.012 2015-03-09T03:47:33Z
 - fix some more inline package lookups
 - add deprecation warn for $method in event handlers
 - add test for anonymous event handler args
 - rename "method" in event handler to "sub"
 - fix "Can't locate Foo.pm in @INC" in tests

1.011 2015-03-02T04:06:51Z
 - allow $class and $extends in event listeners
 - allow array of hashes in event listeners
 - remove JSON from TestRequires prereqs
 - allow Path::Tiny in addition to path strings
 - stringify all exceptions to useful error messages
 - throw an exception if the conf file does not exist
 - allow config services to be used as all arguments
 - add config key to load config files as services
 - add event listeners to services in configuration
 - remove List::MoreUtils dependency
 - switch to Module::Runtime
 - switch to using Type::Tiny

1.010 2015-02-07T21:55:50Z
 - update Data::DPath to fix warning on perl 5.20
 - add dzil plugin for prereqs and compile tests
 - remove root dotfiles and root ini files from dist
 - switch to dzil Git::GatherDir
 - fix mailmap only supports one e-mail map per line
 - fix contributors dependency
 - add link to #beam on irc.perl.org
 - update copyright year
 - add contributors dzil plugin for proper attribution
 - only ignore bundles in the dist root
 - only remove .ini files from the dist root
 - add dzil tag annotation with name, date, and changelog
 - allow cpanfile to be dirty
 - update weaver.ini from new skeleton

1.009 2014-11-03T00:07:31Z
 - fully excise Test::Most
 - add comments to dist.ini
 - update abstract with what kind of DI we are

1.008 2014-11-02T23:33:29Z
 - release v1.008
 - fix release not finding CHANGES file

1.007 2014-11-02T23:07:36Z
 - release v1.007
 - do not allow dist.ini to be dirty
 - those debug sections of dist.ini did not work

1.006 2014-11-02T23:01:55Z
 - set up debug sections for easier DZ debugging
 - add debug sections to dist.ini
 - try to build the CHANGES file at the right time

1.005 2014-11-02T22:38:24Z
 - release v1.005
 - create the changes file before trying to commit it

1.004 2014-11-02T22:36:27Z
 - release v1.004
 - more cleanup to align with standards and practices
 - add coveralls badge and rebuild project
 - remove Contributors plugin from Pod::Weaver
 - remove Test::Most for the individual modules
 - update dist.ini and rebuild project
 - SurgicalPodWeaver -> PodWeaver

1.003 2014-05-04T08:26:50Z
 - fix incorrect absolute paths on windows

1.002 2014-05-03T03:44:57Z
 - update build artifacts
 - use splitpath instead of dirname

1.001 2014-04-28T04:13:42Z
 - add contributing docs
 - update build artifacts
 - fix "Cannot modify private array" in test
 - changes suggested by my brand-new Perl::Critic configuration

1.000 2013-08-02T19:53:11Z
 - release v1.000
 - add exceptions using Throwable
 - ignore build artifacts
 - fix #28: Cannot extend service from inner container
 - add error message when service not found
 - add error message when service extends service that does not exist

0.016 2013-07-26T12:59:19Z
 - allow anonymous services to extend existing services
 - test cleanup: reduce number of scripts. keep concepts together
 - move test config files into t/share
 - clean up tests a bit using Test::Lib
 - add anonymous services for use as references
 - refactor find_refs to make the next change a bit easier
 - refactor parse_args to take only class and args, not entire service hash
 - add multi-methods and chained methods

0.015 2013-07-06T01:35:27Z
 - do not build a config from file if there is no file
 - add "eager" services that get created when container is instanciated

0.014 2013-06-02T20:37:10Z
 - don't rely on hash ordering to detect references
 - add meta prefix to avoid potential collisions with existing data
   structures
 - add get() overrides to create anonymous services

0.013 2013-05-21T19:42:16Z
 - add "factory" lifecycle

0.012 2013-05-19T18:23:51Z
 - add some better diagnostics for CPANTESTERS

0.011 2013-05-19T03:50:37Z
 - removed the dependency without removing the unused reference

0.010 2013-05-19T03:41:39Z
 - add Build.PL to the files captured and moved to the repository root
 - add test dependency on JSON and YAML

0.009 2013-05-10T02:39:26Z
 - add docs on 'extends' attribute
 - add "extends" for services to inherit properties from other services
 - move Greeting test class into its own file
 - too many layers of subtest
 - allow methods to be called while referencing a service
 - Test the "args are a non-ref scalar" case
 - allow value services to be retrieved via get()
 - updated POD and readme
 - added support for raw-value services
 - added test with inlone packages
 - allow deep references of data structures
 - loads config files using Config::Any
 - reformatted distribution and added additional POD
 - fix: specified the wrong dependency

0.007 2013-03-28T05:10:49Z
 - add the test for method property
 - update README from POD
 - add "method" service property to allow for DBI->connect as a constructor

0.006 2013-03-26T21:01:11Z
 - silence a warning when there are no args to parse

0.005 2013-03-26T20:41:27Z
 - fix: load the class before trying to create the object

0.004 2013-03-26T00:19:00Z
 - update README from pod
 - refactor create_service for easier sub-classing
 - inner container files should be relative based on the parent container
   dir
 - rename "sub" containers to "inner"

0.003 2013-03-11T03:57:09Z
 - remove given/when to work on 5.8.9

0.002 2013-03-10T07:44:17Z
 - update README from POD
 - test arrayref arguments and hashref arguments to increase coverage
 - test service refs inside subcontainer
 - document subcontainers
 - add sub containers

0.001 2013-03-10T00:55:49Z
 - update README for github
 - a basic dependency injection container

