@walkeros/server-store-s3 4.1.0-next-1778668930820 → 4.1.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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,172 @@
1
+ # @walkeros/server-store-s3
2
+
3
+ ## 4.1.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [e155ff8]
8
+ - Updated dependencies [e800974]
9
+ - Updated dependencies [e155ff8]
10
+ - Updated dependencies [1a8f2d7]
11
+ - Updated dependencies [1a8f2d7]
12
+ - Updated dependencies [b276173]
13
+ - Updated dependencies [dd9f5ad]
14
+ - Updated dependencies [c60ef35]
15
+ - Updated dependencies [adeebea]
16
+ - Updated dependencies [13aaeaa]
17
+ - Updated dependencies [e800974]
18
+ - Updated dependencies [adeebea]
19
+ - Updated dependencies [e800974]
20
+ - Updated dependencies [e800974]
21
+ - Updated dependencies [058f7ed]
22
+ - Updated dependencies [28a8ac2]
23
+ - Updated dependencies [fd6076e]
24
+ - @walkeros/core@4.1.0
25
+
26
+ ## 4.0.2
27
+
28
+ ### Patch Changes
29
+
30
+ - Updated dependencies [a6a0ea7]
31
+ - @walkeros/core@4.0.2
32
+
33
+ ## 4.0.1
34
+
35
+ ### Patch Changes
36
+
37
+ - Updated dependencies [381dfe7]
38
+ - Updated dependencies [1524275]
39
+ - Updated dependencies [03d7055]
40
+ - @walkeros/core@4.0.1
41
+
42
+ ## 4.0.0
43
+
44
+ ### Patch Changes
45
+
46
+ - Updated dependencies [93ea9c4]
47
+ - Updated dependencies [465775c]
48
+ - Updated dependencies [942a7fe]
49
+ - Updated dependencies [cfc7469]
50
+ - Updated dependencies [8e06b1f]
51
+ - Updated dependencies [3d50dd6]
52
+ - Updated dependencies [1ef33d9]
53
+ - @walkeros/core@4.0.0
54
+
55
+ ## 3.4.2
56
+
57
+ ### Patch Changes
58
+
59
+ - @walkeros/core@3.4.2
60
+
61
+ ## 3.4.1
62
+
63
+ ### Patch Changes
64
+
65
+ - Updated dependencies [12adf24]
66
+ - Updated dependencies [75aa26b]
67
+ - @walkeros/core@3.4.1
68
+
69
+ ## 3.4.0
70
+
71
+ ### Minor Changes
72
+
73
+ - 724f97e: Migrate every step example in every walkerOS package to the
74
+ standardized `[callable, ...args][]` shape introduced in `@walkeros/core`.
75
+ Every step example's `out` is now an array of effect tuples whose first
76
+ element is the callable's public SDK name (`'gtag'`, `'analytics.track'`,
77
+ `'fbq'`, `'dataLayer.push'`, `'sendServer'`, `'fetch'`, `'trackClient.track'`,
78
+ `'amplitude.track'`, `'fs.writeFile'`, `'producer.send'`, `'client.xadd'`,
79
+ `'client.send'`, `'dataset.table.insert'`, etc.). Source examples use `'elb'`
80
+ as the callable; transformer examples use the reserved `'return'` keyword;
81
+ store examples use store-operation callables (`'get'`, `'set'`). Tests capture
82
+ real calls on each component's spy and assert against `example.out` directly —
83
+ the hardcoded `PACKAGE_CALLS` registry in the app is no longer consulted
84
+ (emptied; plan #3 removes it structurally).
85
+
86
+ ### Patch Changes
87
+
88
+ - Updated dependencies [74940cc]
89
+ - Updated dependencies [525f5d9]
90
+ - @walkeros/core@3.4.0
91
+
92
+ ## 3.3.1
93
+
94
+ ### Patch Changes
95
+
96
+ - @walkeros/core@3.3.1
97
+
98
+ ## 3.3.0
99
+
100
+ ### Patch Changes
101
+
102
+ - Updated dependencies [2849acb]
103
+ - Updated dependencies [08c365a]
104
+ - Updated dependencies [08c365a]
105
+ - Updated dependencies [08c365a]
106
+ - Updated dependencies [08c365a]
107
+ - @walkeros/core@3.3.0
108
+
109
+ ## 3.2.0
110
+
111
+ ### Patch Changes
112
+
113
+ - Updated dependencies [eb865e1]
114
+ - Updated dependencies [c0a53f9]
115
+ - Updated dependencies [f007c9f]
116
+ - Updated dependencies [bf2dc5b]
117
+ - Updated dependencies [da0b640]
118
+ - @walkeros/core@3.2.0
119
+
120
+ ## 3.1.1
121
+
122
+ ### Patch Changes
123
+
124
+ - @walkeros/core@3.1.1
125
+
126
+ ## 3.1.0
127
+
128
+ ### Patch Changes
129
+
130
+ - Updated dependencies [dfc6738]
131
+ - Updated dependencies [966342b]
132
+ - Updated dependencies [bee8ba7]
133
+ - Updated dependencies [966342b]
134
+ - Updated dependencies [df990d4]
135
+ - @walkeros/core@3.1.0
136
+
137
+ ## 3.0.2
138
+
139
+ ### Patch Changes
140
+
141
+ - @walkeros/core@3.0.2
142
+
143
+ ## 3.0.1
144
+
145
+ ### Patch Changes
146
+
147
+ - @walkeros/core@3.0.1
148
+
149
+ ## 3.0.0
150
+
151
+ ### Patch Changes
152
+
153
+ - f3b3e6a: Add S3-compatible object storage store using s3mini. Works with AWS
154
+ S3, Cloudflare R2, Scaleway, DigitalOcean Spaces, Backblaze B2, MinIO, and any
155
+ S3-compatible provider.
156
+ - 499e27a: Add sideEffects declarations to all packages for bundler tree-shaking
157
+ support.
158
+ - Updated dependencies [2b259b6]
159
+ - Updated dependencies [2614014]
160
+ - Updated dependencies [6ae0ee3]
161
+ - Updated dependencies [37299a9]
162
+ - Updated dependencies [499e27a]
163
+ - Updated dependencies [0e5eede]
164
+ - Updated dependencies [d11f574]
165
+ - Updated dependencies [d11f574]
166
+ - Updated dependencies [1fe337a]
167
+ - Updated dependencies [5cb84c1]
168
+ - Updated dependencies [23f218a]
169
+ - Updated dependencies [499e27a]
170
+ - Updated dependencies [c83d909]
171
+ - Updated dependencies [b6c8fa8]
172
+ - @walkeros/core@3.0.0
package/README.md CHANGED
@@ -1,209 +1,53 @@
1
- # @walkeros/server-store-s3
1
+ <p align="left">
2
+ <a href="https://www.walkeros.io">
3
+ <img alt="walkerOS" title="walkerOS" src="https://www.walkeros.io/img/walkerOS_logo.svg" width="256px"/>
4
+ </a>
5
+ </p>
2
6
 
3
- S3-compatible object storage for walkerOS server flows.
7
+ # @walkeros/server-store-s3
4
8
 
9
+ S3-compatible object storage store using s3mini (~20 KB, zero dependencies).
5
10
  Works with AWS S3, Cloudflare R2, Scaleway, DigitalOcean Spaces, Backblaze B2,
6
- MinIO, and any S3-compatible provider. Uses
7
- [s3mini](https://github.com/good-lly/s3mini) (~20 KB, zero dependencies).
8
-
9
- ## Quick Start (Bundled Mode)
10
-
11
- ```json
12
- {
13
- "version": 3,
14
- "flows": {
15
- "default": {
16
- "server": {},
17
- "stores": {
18
- "assets": {
19
- "package": "@walkeros/server-store-s3",
20
- "config": {
21
- "settings": {
22
- "bucket": "my-assets",
23
- "endpoint": "https://s3.eu-west-1.amazonaws.com",
24
- "accessKeyId": "$env.S3_ACCESS_KEY",
25
- "secretAccessKey": "$env.S3_SECRET_KEY",
26
- "region": "eu-west-1",
27
- "prefix": "public"
28
- }
29
- }
30
- }
31
- },
32
- "transformers": {
33
- "file": {
34
- "package": "@walkeros/server-transformer-file",
35
- "config": { "settings": { "prefix": "/static" } },
36
- "env": { "store": "$store.assets" }
37
- }
38
- }
39
- }
40
- }
41
- }
42
- ```
43
-
44
- ## Integrated Mode
45
-
46
- ```typescript
47
- import { storeS3Init } from '@walkeros/server-store-s3';
48
-
49
- const store = await storeS3Init({
50
- collector,
51
- logger,
52
- id: 'assets',
53
- config: {
54
- settings: {
55
- bucket: 'my-assets',
56
- endpoint: 'https://s3.eu-west-1.amazonaws.com',
57
- accessKeyId: process.env.S3_ACCESS_KEY!,
58
- secretAccessKey: process.env.S3_SECRET_KEY!,
59
- region: 'eu-west-1',
60
- prefix: 'public',
61
- },
62
- },
63
- env: {},
64
- });
65
-
66
- const file = await store.get('walker.js'); // Buffer | undefined
67
- await store.set('cache/data.json', Buffer.from('{}'));
68
- await store.delete('old-file.txt');
69
- ```
70
-
71
- ## Configuration
72
-
73
- | Setting | Type | Required | Default | Description |
74
- | ----------------- | -------- | -------- | -------- | -------------------------- |
75
- | `bucket` | `string` | Yes | — | S3 bucket name |
76
- | `endpoint` | `string` | Yes | — | S3-compatible endpoint URL |
77
- | `accessKeyId` | `string` | Yes | — | S3 access key ID |
78
- | `secretAccessKey` | `string` | Yes | — | S3 secret access key |
79
- | `region` | `string` | No | `"auto"` | AWS region (SigV4 signing) |
80
- | `prefix` | `string` | No | — | Key prefix for scoping |
81
-
82
- ## Provider Examples
83
-
84
- | Provider | Endpoint | Notes |
85
- | ------------- | -------------------------------------------- | ---------------- |
86
- | AWS S3 | `https://s3.<region>.amazonaws.com` | Standard |
87
- | Cloudflare R2 | `https://<account>.r2.cloudflarestorage.com` | No egress fees |
88
- | Scaleway | `https://s3.<region>.scw.cloud` | EU hosting |
89
- | DigitalOcean | `https://<region>.digitaloceanspaces.com` | Simple pricing |
90
- | Backblaze B2 | `https://s3.<region>.backblazeb2.com` | Cheapest storage |
91
- | MinIO | `http://localhost:9000` | Self-hosted |
92
-
93
- ## Credentials
94
-
95
- Use `$env.` references in Flow.Config to avoid hardcoding secrets:
96
-
97
- ```json
98
- {
99
- "accessKeyId": "$env.S3_ACCESS_KEY",
100
- "secretAccessKey": "$env.S3_SECRET_KEY"
101
- }
102
- ```
11
+ MinIO, and any S3-compatible provider.
103
12
 
104
- Unlike the AWS SDK, `s3mini` has no implicit credential chain — `accessKeyId`
105
- and `secretAccessKey` are always required.
13
+ [Documentation](https://www.walkeros.io/docs/stores/server/s3) &bull;
14
+ [NPM Package](https://www.npmjs.com/package/@walkeros/server-store-s3) &bull;
15
+ [Source Code](https://github.com/elbwalker/walkerOS/tree/main/packages/server/stores/s3)
106
16
 
107
- ## Managed Deployments (Mode D)
108
-
109
- This is the recommended store for managed walkerOS deployments. Files live in a
110
- bucket rather than needing to be baked into a Docker image, enabling hot-swap of
111
- static assets.
112
-
113
- ## Provisioning the bucket
114
-
115
- Run setup once to create the bucket idempotently:
17
+ ## Installation
116
18
 
117
19
  ```bash
118
- walkeros setup store.assets
20
+ npm install @walkeros/server-store-s3
119
21
  ```
120
22
 
121
- The CLI imports the package, reads `default.setup`, and calls it with the
122
- component's resolved config. Setup is idempotent: if the bucket already exists
123
- (your account or a concurrent caller), it returns `{ bucketCreated: false }` and
124
- exits ok. If the global bucket name is taken by a different AWS account, setup
125
- fails with an actionable error so you pick a different name.
126
-
127
- Configure provisioning under `config.setup`:
23
+ ## Quick start
128
24
 
129
25
  ```json
130
26
  {
131
- "stores": {
132
- "assets": {
133
- "package": "@walkeros/server-store-s3",
134
- "config": {
135
- "settings": {
136
- "bucket": "my-assets",
137
- "endpoint": "https://s3.eu-central-1.amazonaws.com",
138
- "accessKeyId": "$env.S3_ACCESS_KEY",
139
- "secretAccessKey": "$env.S3_SECRET_KEY",
140
- "region": "eu-central-1"
141
- },
142
- "setup": true
27
+ "version": 4,
28
+ "flows": {
29
+ "default": {
30
+ "config": { "platform": "server" },
31
+ "stores": {
32
+ "assets": { "package": "@walkeros/server-store-s3", "config": {} }
143
33
  }
144
34
  }
145
35
  }
146
36
  }
147
37
  ```
148
38
 
149
- `setup: true` enables provisioning with defaults. Pass an object to override:
39
+ ## Documentation
150
40
 
151
- ```json
152
- "setup": { "region": "eu-central-1" }
153
- ```
154
-
155
- Setup options (Variant B, minimal):
156
-
157
- | Option | Type | Default | Description |
158
- | -------- | -------- | -------------- | ----------------------------------------------------------------------------------------------------------------- |
159
- | `region` | `string` | `eu-central-1` | Region the bucket is created in (LocationConstraint). Falls back to `settings.region` when concrete (not `auto`). |
160
-
161
- ### What setup does NOT apply
41
+ Full configuration, mapping, and examples live in the docs:
42
+ **https://www.walkeros.io/docs/stores/server/s3**
162
43
 
163
- `s3mini` is a minimal S3 client. It exposes `createBucket` and `bucketExists`,
164
- but not the bucket-level admin operations (encryption, public-access block,
165
- versioning, lifecycle rules, tags). To configure those, run them once via the
166
- AWS Console or `aws s3api`:
44
+ ## Contribute
167
45
 
168
- ```bash
169
- aws s3api put-public-access-block --bucket my-assets \
170
- --public-access-block-configuration \
171
- "BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true"
172
-
173
- aws s3api put-bucket-encryption --bucket my-assets \
174
- --server-side-encryption-configuration \
175
- '{"Rules":[{"ApplyServerSideEncryptionByDefault":{"SSEAlgorithm":"AES256"}}]}'
176
- ```
46
+ Feel free to contribute by submitting an
47
+ [issue](https://github.com/elbwalker/walkerOS/issues), starting a
48
+ [discussion](https://github.com/elbwalker/walkerOS/discussions), or getting in
49
+ [contact](https://calendly.com/elb-alexander/30min).
177
50
 
178
- ## Init-time bucket guard
179
-
180
- `storeS3Init` probes `bucketExists()` once when the collector wires the store.
181
- If the bucket is missing, init throws an actionable error instead of letting
182
- later `get`/`set` calls return undefined or throw raw provider errors:
183
-
184
- ```
185
- S3 bucket not found: my-assets at https://s3.eu-central-1.amazonaws.com.
186
- Run "walkeros setup store.assets" to create it.
187
- ```
188
-
189
- Run `walkeros setup store.<id>` once to provision the bucket, then redeploy.
190
-
191
- ## Default export shape
192
-
193
- The package's default export is an object describing the store's lifecycle:
194
-
195
- ```ts
196
- {
197
- type: 's3',
198
- init: storeS3Init,
199
- setup,
200
- }
201
- ```
202
-
203
- The CLI reads `default.setup`. Named imports continue to work:
204
-
205
- ```ts
206
- import { storeS3Init } from '@walkeros/server-store-s3';
207
- ```
51
+ ## License
208
52
 
209
- Default-import callers must call `.init` on the returned object.
53
+ MIT
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$meta": {
3
3
  "package": "@walkeros/server-store-s3",
4
- "version": "4.1.0-next-1778668930820",
4
+ "version": "4.1.0",
5
5
  "type": "store",
6
6
  "platform": [
7
7
  "server"
@@ -48,8 +48,7 @@
48
48
  "bucket",
49
49
  "endpoint",
50
50
  "accessKeyId",
51
- "secretAccessKey",
52
- "region"
51
+ "secretAccessKey"
53
52
  ],
54
53
  "additionalProperties": false
55
54
  },
@@ -63,9 +62,7 @@
63
62
  "type": "string"
64
63
  }
65
64
  },
66
- "required": [
67
- "region"
68
- ],
65
+ "required": [],
69
66
  "additionalProperties": false,
70
67
  "description": "Provisioning options for \"walkeros setup store.<id>\". Idempotent: only the bucket is created. Encryption, public-access block, versioning, lifecycle rules, and tags are not applied here (s3mini does not expose those operations); configure them once via the AWS Console or \"aws s3api\"."
71
68
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@walkeros/server-store-s3",
3
3
  "description": "S3-compatible object storage for walkerOS server flows",
4
- "version": "4.1.0-next-1778668930820",
4
+ "version": "4.1.0",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.mjs",
@@ -20,7 +20,8 @@
20
20
  "./walkerOS.json": "./dist/walkerOS.json"
21
21
  },
22
22
  "files": [
23
- "dist/**"
23
+ "dist/**",
24
+ "CHANGELOG.md"
24
25
  ],
25
26
  "scripts": {
26
27
  "build": "tsup --silent",
@@ -32,7 +33,7 @@
32
33
  "update": "npx npm-check-updates -u && npm update"
33
34
  },
34
35
  "dependencies": {
35
- "@walkeros/core": "4.1.0-next-1778668930820",
36
+ "@walkeros/core": "4.1.0",
36
37
  "s3mini": "^0.9.1"
37
38
  },
38
39
  "devDependencies": {},