@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 +172 -0
- package/README.md +30 -186
- package/dist/walkerOS.json +3 -6
- package/package.json +4 -3
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
105
|
-
|
|
13
|
+
[Documentation](https://www.walkeros.io/docs/stores/server/s3) •
|
|
14
|
+
[NPM Package](https://www.npmjs.com/package/@walkeros/server-store-s3) •
|
|
15
|
+
[Source Code](https://github.com/elbwalker/walkerOS/tree/main/packages/server/stores/s3)
|
|
106
16
|
|
|
107
|
-
##
|
|
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
|
-
|
|
20
|
+
npm install @walkeros/server-store-s3
|
|
119
21
|
```
|
|
120
22
|
|
|
121
|
-
|
|
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
|
-
"
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
"config": {
|
|
135
|
-
|
|
136
|
-
|
|
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
|
-
|
|
39
|
+
## Documentation
|
|
150
40
|
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
|
|
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
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
53
|
+
MIT
|
package/dist/walkerOS.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$meta": {
|
|
3
3
|
"package": "@walkeros/server-store-s3",
|
|
4
|
-
"version": "4.1.0
|
|
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
|
|
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
|
|
36
|
+
"@walkeros/core": "4.1.0",
|
|
36
37
|
"s3mini": "^0.9.1"
|
|
37
38
|
},
|
|
38
39
|
"devDependencies": {},
|