@blamejs/core 0.6.36 → 0.6.58

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.
@@ -27,15 +27,17 @@
27
27
  * delete(key) → boolean (true if deleted, false if missing)
28
28
  * list(prefix, opts?) → { items: [{ key, size, lastModified }], truncated }
29
29
  */
30
- var localProto = require("./local");
31
- var httpPutProto = require("./http-put");
32
- var sigv4Proto = require("./sigv4");
33
- var sigv4BucketOps = require("./sigv4-bucket-ops");
34
- var gcsProto = require("./gcs");
35
- var azureBlobProto = require("./azure-blob");
36
- var retryHelper = require("./retry");
37
- var protocolDispatcher = require("../protocol-dispatcher");
38
- var { ObjectStoreError } = require("../framework-error");
30
+ var localProto = require("./local");
31
+ var httpPutProto = require("./http-put");
32
+ var sigv4Proto = require("./sigv4");
33
+ var sigv4BucketOps = require("./sigv4-bucket-ops");
34
+ var gcsProto = require("./gcs");
35
+ var gcsBucketOps = require("./gcs-bucket-ops");
36
+ var azureBlobProto = require("./azure-blob");
37
+ var azureBlobBucketOps = require("./azure-blob-bucket-ops");
38
+ var retryHelper = require("./retry");
39
+ var protocolDispatcher = require("../protocol-dispatcher");
40
+ var { ObjectStoreError } = require("../framework-error");
39
41
 
40
42
  // All currently advertised protocols are bundled. The dispatcher's
41
43
  // `deferred` slot is the hook for adding deferred ones later.
@@ -134,13 +136,62 @@ function buildBackend(config) {
134
136
  };
135
137
  }
136
138
 
139
+ // ---- Bucket-level ops dispatcher ----
140
+ //
141
+ // Bucket lifecycle (create / delete / list) + lifecycle / CORS rules
142
+ // are service-scoped, not bucket-scoped — `b.objectStore.bucketOps`
143
+ // resolves a per-cloud factory by protocol. Each cloud's ops shape
144
+ // differs (S3 sigv4 vs Azure Shared Key vs GCS OAuth) so the
145
+ // per-protocol modules each own their own validation, signing, and
146
+ // REST-API translation; this dispatcher just routes.
147
+ //
148
+ // Operator entry point — unchanged from v0.6.x:
149
+ //
150
+ // var ops = b.objectStore.bucketOps.create({
151
+ // protocol: 'sigv4' | 'azure-blob' | 'gcs',
152
+ // // ... protocol-specific creds ...
153
+ // });
154
+ //
155
+ // Each returned ops object exposes (where supported per-cloud):
156
+ // ops.create(name, opts?)
157
+ // ops.delete(name)
158
+ // ops.list(opts?)
159
+ // ops.setLifecycle(name, rules)
160
+ // ops.setCorsRules(name, rules) // sigv4 + gcs accept (name, rules);
161
+ // // azure-blob accepts (rules) — its
162
+ // // CORS is account-level.
163
+ var BUCKET_OPS_BY_PROTOCOL = {
164
+ "sigv4": sigv4BucketOps,
165
+ "gcs": gcsBucketOps,
166
+ "azure-blob": azureBlobBucketOps,
167
+ };
168
+ function _bucketOpsCreate(config) {
169
+ if (!config) {
170
+ throw _err("BAD_OPT",
171
+ "objectStore.bucketOps.create: config required (must include " +
172
+ "{ protocol })", true);
173
+ }
174
+ var protoMod = BUCKET_OPS_BY_PROTOCOL[config.protocol];
175
+ if (!protoMod) {
176
+ throw _err("UNKNOWN_PROTOCOL",
177
+ "objectStore.bucketOps.create: unknown protocol '" + config.protocol +
178
+ "' (supported: " + Object.keys(BUCKET_OPS_BY_PROTOCOL).join(", ") +
179
+ ")", true);
180
+ }
181
+ return protoMod.create(config);
182
+ }
183
+
137
184
  module.exports = {
138
185
  buildBackend: buildBackend,
139
186
  PROTOCOLS: dispatcher.protocols,
140
187
  DEFERRED_PROTOCOLS: dispatcher.deferred,
141
- // Bucket-level (lifecycle / CORS / create / delete / list) ops are
142
- // service-scoped, not bucket-scoped — they get their own factory.
143
- // SigV4 only; GCS / Azure bucket lifecycle differs substantially per
144
- // cloud and is operator-managed (Terraform / CDK / Pulumi).
145
- bucketOps: sigv4BucketOps,
188
+ bucketOps: {
189
+ create: _bucketOpsCreate,
190
+ PROTOCOLS: Object.keys(BUCKET_OPS_BY_PROTOCOL),
191
+ // Per-protocol modules exposed for advanced operators wiring
192
+ // their own dispatch / testing harnesses against a specific cloud.
193
+ sigv4: sigv4BucketOps,
194
+ gcs: gcsBucketOps,
195
+ "azure-blob": azureBlobBucketOps,
196
+ },
146
197
  };