The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Nephia;
use 5.008005;
use strict;
use warnings;
use Nephia::Incognito;

our $VERSION = "0.87";

sub import {
    my ($class, %opts) = @_;
    my $caller = caller;
    Nephia::Incognito->incognito(%opts, caller => $caller);
}

sub call {
    my ($class, $codepath) = @_;
    my $caller = caller;
    Nephia::Incognito->unmask($caller)->call($codepath);
}

sub run {
    my $caller = caller;
    Nephia::Incognito->unmask($caller)->run(@_);
}

1;
__END__

=encoding utf-8

=head1 NAME

Nephia - A microcore architecture WAF

=head1 SYNOPSIS

    use Nephia plugins => [...];
    app {
        my $req  = req;         ### Request object
        my $id   = param('id'); ### query-param that named "id" 
        my $body = sprintf('ID is %s', $id);
        [200, [], $body];
    };

=head1 DESCRIPTION

Nephia is microcore architecture WAF. 

=head1 GETTING STARTED

Let's try to create your project.

    nephia-setup YourApp::Web

Then, you may plackup on your project directory.

Please see L<Nephia::Setup::Plugin::Basic> for detail.

=head1 BOOTSTRAP A MINIMALIST STRUCTURE

Use "--plugins Minimal" option to minimalistic setup.

    nephia-setup --plugins Minimal YourApp::Mini

Please see L<Nephia::Setup::Plugin::Minimal> for detail.

=head1 LOAD OPTIONS 

Please see L<Nephia::Core>.

=head1 DSL

=head2 app

    app { ... };

Specify code-block of your webapp.

=head2 other two basic DSL

Please see L<Nephia::Plugin::Basic>.

=head2 dispatcher DSL

Please see L<Nephia::Plugin::Dispatch>.

=head1 EXPORTS

=head2 run

In app.psgi, run() method returns your webapp as coderef.

    use YourApp::Web;
    YourApp::Web->run;

=head1 CLASS METHOD

=head2 call

Returns external logic as coderef.

    my $external_logic = Nephia->call('C::Root#index');

=head1 LICENSE

Copyright (C) ytnobody.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

=head1 AUTHOR

ytnobody E<lt>ytnobody@gmail.comE<gt>

=cut