capsium 0.3.0 → 0.6.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 +4 -4
- data/.rubocop.yml +7 -3
- data/CHANGELOG.md +197 -0
- data/README.adoc +323 -14
- data/capsium.gemspec +2 -0
- data/lib/capsium/cli/package.rb +62 -25
- data/lib/capsium/cli/reactor.rb +112 -6
- data/lib/capsium/cli.rb +29 -0
- data/lib/capsium/log_buffer.rb +47 -0
- data/lib/capsium/package/bundle.rb +136 -0
- data/lib/capsium/package/cipher.rb +73 -17
- data/lib/capsium/package/composition.rb +28 -12
- data/lib/capsium/package/dataset.rb +20 -0
- data/lib/capsium/package/dependency_resolver.rb +39 -9
- data/lib/capsium/package/encryption_config.rb +7 -3
- data/lib/capsium/package/manifest.rb +1 -1
- data/lib/capsium/package/merged_view.rb +4 -2
- data/lib/capsium/package/metadata.rb +1 -1
- data/lib/capsium/package/metadata_config.rb +9 -1
- data/lib/capsium/package/open_pgp.rb +65 -0
- data/lib/capsium/package/open_pgp_cipher.rb +66 -0
- data/lib/capsium/package/open_pgp_signer.rb +176 -0
- data/lib/capsium/package/security_config.rb +6 -2
- data/lib/capsium/package/signer.rb +18 -3
- data/lib/capsium/package/store.rb +27 -0
- data/lib/capsium/package/validator.rb +27 -2
- data/lib/capsium/package/verification.rb +7 -5
- data/lib/capsium/package.rb +24 -5
- data/lib/capsium/packager.rb +64 -22
- data/lib/capsium/reactor/content_api.rb +110 -0
- data/lib/capsium/reactor/data_api.rb +154 -0
- data/lib/capsium/reactor/endpoints.rb +37 -0
- data/lib/capsium/reactor/graphql_api.rb +123 -0
- data/lib/capsium/reactor/graphql_schema.rb +138 -0
- data/lib/capsium/reactor/introspection.rb +151 -34
- data/lib/capsium/reactor/metrics.rb +30 -0
- data/lib/capsium/reactor/mount.rb +206 -0
- data/lib/capsium/reactor/overlay.rb +248 -0
- data/lib/capsium/reactor/package_saver.rb +99 -0
- data/lib/capsium/reactor/responses.rb +41 -0
- data/lib/capsium/reactor/serving.rb +90 -11
- data/lib/capsium/reactor.rb +96 -49
- data/lib/capsium/registry/local.rb +120 -0
- data/lib/capsium/registry/remote.rb +105 -0
- data/lib/capsium/registry.rb +190 -0
- data/lib/capsium/version.rb +1 -1
- data/lib/capsium.rb +2 -0
- data/sig/capsium/log_buffer.rbs +30 -0
- data/sig/capsium/package/bundle.rbs +43 -0
- data/sig/capsium/package/cipher.rbs +12 -1
- data/sig/capsium/package/composition.rbs +4 -3
- data/sig/capsium/package/dataset.rbs +8 -0
- data/sig/capsium/package/dependency_resolver.rbs +8 -4
- data/sig/capsium/package/encryption_config.rbs +6 -2
- data/sig/capsium/package/merged_view.rbs +2 -1
- data/sig/capsium/package/metadata.rbs +1 -0
- data/sig/capsium/package/open_pgp.rbs +38 -0
- data/sig/capsium/package/open_pgp_cipher.rbs +15 -0
- data/sig/capsium/package/open_pgp_signer.rbs +46 -0
- data/sig/capsium/package/security_config.rbs +6 -3
- data/sig/capsium/package/signer.rbs +8 -1
- data/sig/capsium/package/store.rbs +6 -0
- data/sig/capsium/package/verification.rbs +5 -3
- data/sig/capsium/package.rbs +8 -3
- data/sig/capsium/reactor/content_api.rbs +19 -0
- data/sig/capsium/reactor/data_api.rbs +23 -0
- data/sig/capsium/reactor/endpoints.rbs +16 -0
- data/sig/capsium/reactor/graphql_api.rbs +27 -0
- data/sig/capsium/reactor/graphql_schema.rbs +20 -0
- data/sig/capsium/reactor/introspection.rbs +27 -7
- data/sig/capsium/reactor/metrics.rbs +13 -0
- data/sig/capsium/reactor/mount.rbs +83 -0
- data/sig/capsium/reactor/overlay.rbs +72 -0
- data/sig/capsium/reactor/package_saver.rbs +12 -0
- data/sig/capsium/reactor/responses.rbs +23 -0
- data/sig/capsium/reactor/serving.rbs +28 -4
- data/sig/capsium/reactor.rbs +17 -2
- data/sig/capsium/registry/local.rbs +16 -0
- data/sig/capsium/registry/remote.rbs +18 -0
- data/sig/capsium/registry.rbs +83 -0
- data/sig/graphql.rbs +12 -0
- metadata +66 -1
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
module Capsium
|
|
2
|
+
class Reactor
|
|
3
|
+
# The writable top overlay layer of a mounted package
|
|
4
|
+
# (ARCHITECTURE.md section 5a): an append-only record of writes in
|
|
5
|
+
# the reactor workdir (content files, tombstones, per-dataset
|
|
6
|
+
# mutation logs). The immutable package never changes on disk.
|
|
7
|
+
class Overlay
|
|
8
|
+
# Base class for the typed overlay errors the APIs map to HTTP
|
|
9
|
+
# statuses.
|
|
10
|
+
class Error < Capsium::Error
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# The addressed item does not exist in the merged collection (404).
|
|
14
|
+
class ItemNotFoundError < Error
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# The write conflicts with existing state (409).
|
|
18
|
+
class ConflictError < Error
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# The dataset cannot take item writes or the path is unsafe.
|
|
22
|
+
class UnsupportedDatasetError < Error
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# The candidate document violates the dataset's JSON schema (422).
|
|
26
|
+
class SchemaViolationError < Error
|
|
27
|
+
attr_reader messages: Array[String]
|
|
28
|
+
|
|
29
|
+
def initialize: (Array[String] messages) -> void
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
TOMBSTONE_FILE: String
|
|
33
|
+
SAFE_NAME_PATTERN: Regexp
|
|
34
|
+
|
|
35
|
+
attr_reader root: String
|
|
36
|
+
attr_reader tombstones: Set[String]
|
|
37
|
+
|
|
38
|
+
def initialize: (root: String root) -> void
|
|
39
|
+
|
|
40
|
+
def content_root: () -> String
|
|
41
|
+
|
|
42
|
+
def data_root: () -> String
|
|
43
|
+
|
|
44
|
+
# The overlay as the topmost MergedView layer.
|
|
45
|
+
def layer: () -> Package::MergedView::Layer
|
|
46
|
+
|
|
47
|
+
def write_content: (String content_relative, String body) -> void
|
|
48
|
+
|
|
49
|
+
def delete_content: (String content_relative) -> void
|
|
50
|
+
|
|
51
|
+
# The dataset as served: base data merged with the mutation log.
|
|
52
|
+
def dataset_data: (Package::Dataset dataset) -> untyped
|
|
53
|
+
|
|
54
|
+
# The merged item collection.
|
|
55
|
+
def items: (Package::Dataset dataset) -> Array[untyped]
|
|
56
|
+
|
|
57
|
+
def item: (Package::Dataset dataset, String id) -> untyped
|
|
58
|
+
|
|
59
|
+
def append_item: (Package::Dataset dataset, untyped item) -> String
|
|
60
|
+
|
|
61
|
+
def replace_item: (Package::Dataset dataset, String id, untyped item) -> void
|
|
62
|
+
|
|
63
|
+
def delete_item: (Package::Dataset dataset, String id) -> nil
|
|
64
|
+
|
|
65
|
+
# Whether the dataset has recorded mutations.
|
|
66
|
+
def mutations?: (String name) -> bool
|
|
67
|
+
|
|
68
|
+
# The item id convention: an "id" field, else nil (positional).
|
|
69
|
+
def item_id: (untyped item) -> String?
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module Capsium
|
|
2
|
+
class Reactor
|
|
3
|
+
# Folds a mounted package's base plus its overlay into a NEW
|
|
4
|
+
# versioned .cap (name-version+patch.cap) in the reactor workdir.
|
|
5
|
+
class PackageSaver
|
|
6
|
+
def initialize: (Mount mount) -> void
|
|
7
|
+
|
|
8
|
+
# Saves and returns the {"path", "sha256", "name", "version"} hash.
|
|
9
|
+
def save: (String workdir) -> Hash[String, String]
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Capsium
|
|
2
|
+
class Reactor
|
|
3
|
+
# Plain HTTP response writers shared by the reactor dispatch, the
|
|
4
|
+
# route serving and the API handlers (data, GraphQL, save).
|
|
5
|
+
module Responses
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
def respond_not_found: (untyped response) -> untyped
|
|
9
|
+
|
|
10
|
+
def respond_forbidden: (untyped response) -> untyped
|
|
11
|
+
|
|
12
|
+
def respond_not_implemented: (untyped response) -> untyped
|
|
13
|
+
|
|
14
|
+
def respond_method_not_allowed: (untyped response) -> untyped
|
|
15
|
+
|
|
16
|
+
def respond_text: (untyped response, Integer status, String body) -> untyped
|
|
17
|
+
|
|
18
|
+
def respond_json: (untyped response, Integer status, untyped body) -> untyped
|
|
19
|
+
|
|
20
|
+
def respond_error: (untyped response, Integer status, String message, ?messages: Array[String]? messages) -> untyped
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -4,19 +4,43 @@ module Capsium
|
|
|
4
4
|
# datasets, handler-route 501s), mixed into Reactor. Includes route
|
|
5
5
|
# inheritance processing per 05x-routing.
|
|
6
6
|
module Serving
|
|
7
|
+
include Responses
|
|
8
|
+
|
|
7
9
|
private
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
# One request metric and one log line per served request.
|
|
12
|
+
def record_request: (untyped request, untyped response) -> untyped
|
|
13
|
+
|
|
14
|
+
# The mount answering a request path: longest matching prefix wins.
|
|
15
|
+
def resolve_mount: (String path) -> Mount?
|
|
16
|
+
|
|
17
|
+
def mounts_by_length: () -> Array[Mount]
|
|
18
|
+
|
|
19
|
+
# The root ("/") mount, or the first mount when nothing is mounted
|
|
20
|
+
# at the root.
|
|
21
|
+
def root_mount: () -> Mount
|
|
22
|
+
|
|
23
|
+
# Serves a request that matched a mount.
|
|
24
|
+
def serve_mounted_request: (Mount mount, untyped identity, untyped request, untyped response) -> untyped
|
|
25
|
+
|
|
26
|
+
def serve_data_api: (Mount mount, untyped identity, String inner, untyped request, untyped response) -> untyped
|
|
27
|
+
|
|
28
|
+
def serve_content_api: (Mount mount, untyped identity, String inner, untyped request, untyped response) -> untyped
|
|
29
|
+
|
|
30
|
+
# Route-level access control; false when the response was written.
|
|
31
|
+
def authorized?: (untyped identity, Package::Route route, untyped response) -> bool
|
|
32
|
+
|
|
33
|
+
def serve_route: (Mount mount, Package::Route route, untyped response) -> untyped
|
|
10
34
|
|
|
11
|
-
def serve_file: (Package::Route route, untyped response) -> untyped
|
|
35
|
+
def serve_file: (Mount mount, Package::Route route, untyped response) -> untyped
|
|
12
36
|
|
|
13
37
|
def inherited_processing: (Package::Route route, String body, Hash[String, String] headers) -> [String, Hash[String, String]]
|
|
14
38
|
|
|
15
|
-
def content_type_for: (Package::Route route, String content_path) -> String
|
|
39
|
+
def content_type_for: (Mount mount, Package::Route route, String content_path) -> String
|
|
16
40
|
|
|
17
41
|
def headers_for: (Package::Route route) -> Hash[String, String]
|
|
18
42
|
|
|
19
|
-
def serve_dataset: (String dataset_name, untyped response) -> untyped
|
|
43
|
+
def serve_dataset: (Mount mount, String dataset_name, untyped response) -> untyped
|
|
20
44
|
end
|
|
21
45
|
end
|
|
22
46
|
end
|
data/sig/capsium/reactor.rbs
CHANGED
|
@@ -3,10 +3,13 @@ module Capsium
|
|
|
3
3
|
# Monitoring HTTP API (ARCHITECTURE.md section 7) and reloads the
|
|
4
4
|
# package on filesystem changes.
|
|
5
5
|
class Reactor
|
|
6
|
+
include Responses
|
|
7
|
+
include Endpoints
|
|
6
8
|
include Serving
|
|
7
9
|
|
|
8
10
|
DEFAULT_PORT: Integer
|
|
9
11
|
DEFAULT_CACHE_CONTROL: String
|
|
12
|
+
PACKAGE_SAVE_PATTERN: Regexp
|
|
10
13
|
|
|
11
14
|
attr_reader package: Package
|
|
12
15
|
attr_reader package_path: String
|
|
@@ -17,12 +20,22 @@ module Capsium
|
|
|
17
20
|
attr_reader server_thread: Thread?
|
|
18
21
|
attr_reader introspection: Introspection
|
|
19
22
|
attr_reader authenticator: Authenticator
|
|
23
|
+
attr_reader store: (Package::Store | String)?
|
|
24
|
+
attr_reader registry: (Capsium::Registry | String)?
|
|
25
|
+
attr_reader started_at: Time
|
|
26
|
+
attr_reader metrics: Metrics
|
|
27
|
+
attr_reader log_buffer: Capsium::LogBuffer
|
|
28
|
+
attr_reader mounts: Array[Mount]
|
|
29
|
+
attr_reader workdir: String
|
|
20
30
|
|
|
21
|
-
def initialize: (package: Package | String package, ?
|
|
31
|
+
def initialize: (?package: (Package | String)? package, ?mounts: Array[Mount]? mounts,
|
|
32
|
+
?port: Integer port,
|
|
22
33
|
?cache_control: String? cache_control,
|
|
23
34
|
?do_not_listen: bool do_not_listen,
|
|
24
35
|
?store: (Package::Store | String)? store,
|
|
25
|
-
?deploy: (Hash[String, untyped] | String)? deploy
|
|
36
|
+
?deploy: (Hash[String, untyped] | String)? deploy,
|
|
37
|
+
?registry: (Capsium::Registry | String)? registry,
|
|
38
|
+
?workdir: String? workdir) -> void
|
|
26
39
|
|
|
27
40
|
def serve: () -> untyped
|
|
28
41
|
|
|
@@ -31,5 +44,7 @@ module Capsium
|
|
|
31
44
|
def mount_routes: () -> void
|
|
32
45
|
|
|
33
46
|
def restart_server: () -> Thread
|
|
47
|
+
|
|
48
|
+
def cleanup: () -> void
|
|
34
49
|
end
|
|
35
50
|
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module Capsium
|
|
2
|
+
class Registry
|
|
3
|
+
# A static registry in a local directory (read-write).
|
|
4
|
+
class Local < Registry
|
|
5
|
+
attr_reader dir: String
|
|
6
|
+
|
|
7
|
+
def initialize: (String dir) -> void
|
|
8
|
+
|
|
9
|
+
def location: () -> String
|
|
10
|
+
|
|
11
|
+
# Validates cap_path, copies it into the registry and records it
|
|
12
|
+
# in index.json. Returns the recorded Entry.
|
|
13
|
+
def push: (String cap_path) -> Entry
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Capsium
|
|
2
|
+
class Registry
|
|
3
|
+
# A read-only static registry behind an https base URL (plain http
|
|
4
|
+
# for loopback hosts only).
|
|
5
|
+
class Remote < Registry
|
|
6
|
+
OPEN_TIMEOUT: Integer
|
|
7
|
+
READ_TIMEOUT: Integer
|
|
8
|
+
MAX_REDIRECTS: Integer
|
|
9
|
+
LOOPBACK_NETWORKS: Array[untyped]
|
|
10
|
+
|
|
11
|
+
attr_reader base_url: String
|
|
12
|
+
|
|
13
|
+
def initialize: (String base_url) -> void
|
|
14
|
+
|
|
15
|
+
def location: () -> String
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
module Capsium
|
|
2
|
+
# A static package registry (directory or https base URL with an
|
|
3
|
+
# index.json): Capsium::Registry::Local (read-write) and
|
|
4
|
+
# Capsium::Registry::Remote (read-only). See lib/capsium/registry.rb.
|
|
5
|
+
class Registry
|
|
6
|
+
INDEX_FILE: String
|
|
7
|
+
ENV_VAR: String
|
|
8
|
+
|
|
9
|
+
# Base error for every registry failure.
|
|
10
|
+
class RegistryError < Capsium::Error
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# No registry reference was given (neither flag nor CAPSIUM_REGISTRY).
|
|
14
|
+
class RegistryNotConfiguredError < RegistryError
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# The registry itself is unusable (bad path or URL, unreadable index).
|
|
18
|
+
class InvalidRegistryError < RegistryError
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# A .cap offered to push failed package validation.
|
|
22
|
+
class InvalidPackageError < RegistryError
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# The index has no entry for the requested package GUID.
|
|
26
|
+
class PackageNotFoundError < RegistryError
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# The registry has the GUID but no version satisfies the constraint.
|
|
30
|
+
class UnsatisfiableConstraintError < RegistryError
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# A fetched .cap does not match the sha256 declared in the index.
|
|
34
|
+
class ChecksumMismatchError < RegistryError
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# A registry file could not be retrieved (network or HTTP failure).
|
|
38
|
+
class FetchError < RegistryError
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# One indexed version of a registry package.
|
|
42
|
+
class Entry
|
|
43
|
+
def self.new: (guid: String, name: String, version: Package::Version,
|
|
44
|
+
file: String, sha256: String, size: Integer) -> void
|
|
45
|
+
|
|
46
|
+
def guid: () -> String
|
|
47
|
+
def name: () -> String
|
|
48
|
+
def version: () -> Package::Version
|
|
49
|
+
def file: () -> String
|
|
50
|
+
def sha256: () -> String
|
|
51
|
+
def size: () -> Integer
|
|
52
|
+
|
|
53
|
+
# The canonical store file name for this entry's .cap.
|
|
54
|
+
def cap_file_name: () -> String
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# The registry at the given reference: a Local directory or a Remote
|
|
58
|
+
# http(s) base URL. Raises RegistryNotConfiguredError when no
|
|
59
|
+
# reference is given.
|
|
60
|
+
def self.fetch: (String? ref) -> Registry
|
|
61
|
+
|
|
62
|
+
# The registry named by the CAPSIUM_REGISTRY environment variable,
|
|
63
|
+
# or nil when unset.
|
|
64
|
+
def self.default: () -> Registry?
|
|
65
|
+
|
|
66
|
+
def initialize: () -> void
|
|
67
|
+
|
|
68
|
+
# Where this registry lives (directory path or base URL).
|
|
69
|
+
def location: () -> String
|
|
70
|
+
|
|
71
|
+
# The newest indexed version of the package GUID satisfying the
|
|
72
|
+
# semver constraint.
|
|
73
|
+
def resolve: (String guid, ?String constraint) -> Entry
|
|
74
|
+
|
|
75
|
+
# Resolves, fetches, checksum-verifies and installs the newest
|
|
76
|
+
# satisfying .cap into the package store, returning the store path.
|
|
77
|
+
def install: (String guid, ?String constraint,
|
|
78
|
+
store: (Package::Store | String) store) -> String
|
|
79
|
+
|
|
80
|
+
# Only Local registries are writable.
|
|
81
|
+
def push: (String cap_path) -> Entry
|
|
82
|
+
end
|
|
83
|
+
end
|
data/sig/graphql.rbs
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Minimal RBS stubs for the graphql gem: only the constants capsium's
|
|
2
|
+
# own signatures reference (the gem ships full sigs, but this project
|
|
3
|
+
# does not use an RBS collection).
|
|
4
|
+
module GraphQL
|
|
5
|
+
class Schema
|
|
6
|
+
def self.execute: (String query, ?variables: Hash[String, untyped] variables, ?operation_name: String? operation_name) -> untyped
|
|
7
|
+
|
|
8
|
+
class Scalar
|
|
9
|
+
def self.graphql_name: (?String name) -> void
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: capsium
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
@@ -37,6 +37,20 @@ dependencies:
|
|
|
37
37
|
- - ">="
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
39
|
version: '0'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: graphql
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '0'
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0'
|
|
40
54
|
- !ruby/object:Gem::Dependency
|
|
41
55
|
name: json
|
|
42
56
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -113,6 +127,20 @@ dependencies:
|
|
|
113
127
|
- - ">="
|
|
114
128
|
- !ruby/object:Gem::Version
|
|
115
129
|
version: '0'
|
|
130
|
+
- !ruby/object:Gem::Dependency
|
|
131
|
+
name: rnp
|
|
132
|
+
requirement: !ruby/object:Gem::Requirement
|
|
133
|
+
requirements:
|
|
134
|
+
- - ">="
|
|
135
|
+
- !ruby/object:Gem::Version
|
|
136
|
+
version: '1.0'
|
|
137
|
+
type: :runtime
|
|
138
|
+
prerelease: false
|
|
139
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
140
|
+
requirements:
|
|
141
|
+
- - ">="
|
|
142
|
+
- !ruby/object:Gem::Version
|
|
143
|
+
version: '1.0'
|
|
116
144
|
- !ruby/object:Gem::Dependency
|
|
117
145
|
name: rubyzip
|
|
118
146
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -223,9 +251,11 @@ files:
|
|
|
223
251
|
- lib/capsium/cli/reactor.rb
|
|
224
252
|
- lib/capsium/converters.rb
|
|
225
253
|
- lib/capsium/converters/jekyll.rb
|
|
254
|
+
- lib/capsium/log_buffer.rb
|
|
226
255
|
- lib/capsium/package.rb
|
|
227
256
|
- lib/capsium/package/authentication.rb
|
|
228
257
|
- lib/capsium/package/authentication_config.rb
|
|
258
|
+
- lib/capsium/package/bundle.rb
|
|
229
259
|
- lib/capsium/package/cipher.rb
|
|
230
260
|
- lib/capsium/package/composition.rb
|
|
231
261
|
- lib/capsium/package/dataset.rb
|
|
@@ -236,6 +266,9 @@ files:
|
|
|
236
266
|
- lib/capsium/package/merged_view.rb
|
|
237
267
|
- lib/capsium/package/metadata.rb
|
|
238
268
|
- lib/capsium/package/metadata_config.rb
|
|
269
|
+
- lib/capsium/package/open_pgp.rb
|
|
270
|
+
- lib/capsium/package/open_pgp_cipher.rb
|
|
271
|
+
- lib/capsium/package/open_pgp_signer.rb
|
|
239
272
|
- lib/capsium/package/preparation.rb
|
|
240
273
|
- lib/capsium/package/routes.rb
|
|
241
274
|
- lib/capsium/package/routes_config.rb
|
|
@@ -260,18 +293,33 @@ files:
|
|
|
260
293
|
- lib/capsium/packager.rb
|
|
261
294
|
- lib/capsium/reactor.rb
|
|
262
295
|
- lib/capsium/reactor/authenticator.rb
|
|
296
|
+
- lib/capsium/reactor/content_api.rb
|
|
297
|
+
- lib/capsium/reactor/data_api.rb
|
|
263
298
|
- lib/capsium/reactor/deploy.rb
|
|
299
|
+
- lib/capsium/reactor/endpoints.rb
|
|
300
|
+
- lib/capsium/reactor/graphql_api.rb
|
|
301
|
+
- lib/capsium/reactor/graphql_schema.rb
|
|
264
302
|
- lib/capsium/reactor/htpasswd.rb
|
|
265
303
|
- lib/capsium/reactor/introspection.rb
|
|
304
|
+
- lib/capsium/reactor/metrics.rb
|
|
305
|
+
- lib/capsium/reactor/mount.rb
|
|
266
306
|
- lib/capsium/reactor/oauth2.rb
|
|
307
|
+
- lib/capsium/reactor/overlay.rb
|
|
308
|
+
- lib/capsium/reactor/package_saver.rb
|
|
309
|
+
- lib/capsium/reactor/responses.rb
|
|
267
310
|
- lib/capsium/reactor/serving.rb
|
|
268
311
|
- lib/capsium/reactor/session.rb
|
|
312
|
+
- lib/capsium/registry.rb
|
|
313
|
+
- lib/capsium/registry/local.rb
|
|
314
|
+
- lib/capsium/registry/remote.rb
|
|
269
315
|
- lib/capsium/thor_ext.rb
|
|
270
316
|
- lib/capsium/version.rb
|
|
271
317
|
- sig/capsium.rbs
|
|
318
|
+
- sig/capsium/log_buffer.rbs
|
|
272
319
|
- sig/capsium/package.rbs
|
|
273
320
|
- sig/capsium/package/authentication.rbs
|
|
274
321
|
- sig/capsium/package/authentication_config.rbs
|
|
322
|
+
- sig/capsium/package/bundle.rbs
|
|
275
323
|
- sig/capsium/package/cipher.rbs
|
|
276
324
|
- sig/capsium/package/composition.rbs
|
|
277
325
|
- sig/capsium/package/dataset.rbs
|
|
@@ -282,6 +330,9 @@ files:
|
|
|
282
330
|
- sig/capsium/package/merged_view.rbs
|
|
283
331
|
- sig/capsium/package/metadata.rbs
|
|
284
332
|
- sig/capsium/package/metadata_config.rbs
|
|
333
|
+
- sig/capsium/package/open_pgp.rbs
|
|
334
|
+
- sig/capsium/package/open_pgp_cipher.rbs
|
|
335
|
+
- sig/capsium/package/open_pgp_signer.rbs
|
|
285
336
|
- sig/capsium/package/preparation.rbs
|
|
286
337
|
- sig/capsium/package/routes.rbs
|
|
287
338
|
- sig/capsium/package/routes_config.rbs
|
|
@@ -306,12 +357,26 @@ files:
|
|
|
306
357
|
- sig/capsium/packager.rbs
|
|
307
358
|
- sig/capsium/reactor.rbs
|
|
308
359
|
- sig/capsium/reactor/authenticator.rbs
|
|
360
|
+
- sig/capsium/reactor/content_api.rbs
|
|
361
|
+
- sig/capsium/reactor/data_api.rbs
|
|
309
362
|
- sig/capsium/reactor/deploy.rbs
|
|
363
|
+
- sig/capsium/reactor/endpoints.rbs
|
|
364
|
+
- sig/capsium/reactor/graphql_api.rbs
|
|
365
|
+
- sig/capsium/reactor/graphql_schema.rbs
|
|
310
366
|
- sig/capsium/reactor/htpasswd.rbs
|
|
311
367
|
- sig/capsium/reactor/introspection.rbs
|
|
368
|
+
- sig/capsium/reactor/metrics.rbs
|
|
369
|
+
- sig/capsium/reactor/mount.rbs
|
|
312
370
|
- sig/capsium/reactor/oauth2.rbs
|
|
371
|
+
- sig/capsium/reactor/overlay.rbs
|
|
372
|
+
- sig/capsium/reactor/package_saver.rbs
|
|
373
|
+
- sig/capsium/reactor/responses.rbs
|
|
313
374
|
- sig/capsium/reactor/serving.rbs
|
|
314
375
|
- sig/capsium/reactor/session.rbs
|
|
376
|
+
- sig/capsium/registry.rbs
|
|
377
|
+
- sig/capsium/registry/local.rbs
|
|
378
|
+
- sig/capsium/registry/remote.rbs
|
|
379
|
+
- sig/graphql.rbs
|
|
315
380
|
homepage: https://github.com/capsiums/capsium
|
|
316
381
|
licenses:
|
|
317
382
|
- MIT
|