@hitslop/slurp 0.1.0 → 0.1.1
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 +12 -0
- package/README.md +2 -2
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.1
|
|
4
|
+
|
|
5
|
+
Run `slurp cloud upgrade` to put the fixes below on an existing Worker (your data and settings are kept).
|
|
6
|
+
|
|
7
|
+
- **RevenueCat webhooks (Preview)**: `slurp project webhook PROJECT revenuecat` gives the URL and the Authorization header value to paste into RevenueCat. Purchases, renewals, cancellations and refunds arrive as `revenuecat.<type>` events (retries are one row), and a `revenue` view in SQL lists them. RevenueCat's optional HMAC signing is not supported yet.
|
|
8
|
+
- **Fixed: a redelivered webhook could stop `slurp sync`.** A webhook with no time of its own was stamped with its arrival time, so a redelivery had the same id and a different time, which the importer treats as a conflict. Such a delivery now keeps the time it first arrived. A generic POST with no `Idempotency-Key` and no body `timestamp` is its own event each time. See [webhooks](docs/webhooks.md).
|
|
9
|
+
- **Fixed: archives stay unpublished after a long R2 outage.** Cloudflare retries a failing alarm six times and then stops. Publishing now schedules its own retries with backoff until R2 answers, so a quiet project publishes by itself once R2 is back (`ARCHIVE_RETRY_MS`).
|
|
10
|
+
- **Fixed: oversized bodies were buffered before being refused.** `/v1/events` now reads its body as a capped stream and stops at the limit, even with no `Content-Length`.
|
|
11
|
+
- **Fixed: an impossible timestamp such as `1e300` failed a whole Sentry envelope.** Sentry and Segment events with a time that is not a real date now fall back to `sent_at`, then the arrival time.
|
|
12
|
+
- Archive listings sign every URL with one key and one expiry, and report that expiry.
|
|
13
|
+
- **slurp.run measures itself with Slurp** (see `dogfood/`): page views, the feedback widget and two clicks go to a Worker in the maintainers' account, and the report that reads them is committed as an example. The site also got a mobile pass.
|
|
14
|
+
|
|
3
15
|
## 0.1.0
|
|
4
16
|
|
|
5
17
|
The first release.
|
package/README.md
CHANGED
|
@@ -94,7 +94,7 @@ Each project is one event stream on your Worker (many senders can write to it: a
|
|
|
94
94
|
|
|
95
95
|
## Send events
|
|
96
96
|
|
|
97
|
-
Every way lands in the same place: your Worker accepts the event durably, and `slurp sync` can read it after the next archive seal (about 10 minutes by default). `slurp init` prints your
|
|
97
|
+
Every way lands in the same place: your Worker accepts the event durably, and `slurp sync` can read it after the next archive seal (about 10 minutes by default). You do not make the endpoint or the key by hand: `slurp init` creates your project on the Worker together with its first publishable key, and prints your ingest URL and that key. Those two values are all an SDK needs. A publishable key can only send events, so it is safe in a web page or an app. `slurp project setup PROJECT` shows them again, and `slurp project key create PROJECT --scope publishable --name ios` makes one key per sender. [Where they come from](docs/sdks.md#where-the-endpoint-and-key-come-from).
|
|
98
98
|
|
|
99
99
|
| Send from | Install | Status |
|
|
100
100
|
|---|---|---|
|
|
@@ -145,7 +145,7 @@ SlurpClient.shared.screen("Home")
|
|
|
145
145
|
SlurpClient.shared.track("purchase_completed", ["total": 49])
|
|
146
146
|
```
|
|
147
147
|
|
|
148
|
-
**GitHub, Stripe or any webhook?** `slurp project webhook PROJECT github` prints a URL and a secret to paste into the provider. Releases, deployments and
|
|
148
|
+
**GitHub, Stripe, RevenueCat or any webhook?** `slurp project webhook PROJECT github` prints a URL and a secret to paste into the provider. Releases, deployments, payments and app purchases then arrive as events (named for the sender, stored whole), a `releases` view lists GitHub releases and deployments so a metric change can be lined up with the release behind it, and a `revenue` view lists RevenueCat purchases and renewals. Preview: [docs/webhooks.md](docs/webhooks.md).
|
|
149
149
|
|
|
150
150
|
**Already using Segment?** Keep the SDK and point it at your Worker. Your publishable key is the write key; `page`, `screen`, `group` and `alias` are stored as `track` events with those names:
|
|
151
151
|
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"hasInstallScript": true,
|
|
20
20
|
"license": "MIT",
|
|
21
21
|
"name": "@hitslop/slurp",
|
|
22
|
-
"version": "0.1.
|
|
22
|
+
"version": "0.1.1"
|
|
23
23
|
},
|
|
24
24
|
"node_modules/detect-libc": {
|
|
25
25
|
"engines": {
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
50
|
"requires": true,
|
|
51
|
-
"version": "0.1.
|
|
51
|
+
"version": "0.1.1"
|
|
52
52
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"artifactDownloadUrls": [
|
|
3
|
-
"https://github.com/hitSlop/slurp/releases/download/v0.1.
|
|
3
|
+
"https://github.com/hitSlop/slurp/releases/download/v0.1.1"
|
|
4
4
|
],
|
|
5
5
|
"bin": {
|
|
6
6
|
"slurp": "run-slurp.js"
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"zipExt": ".tar.xz"
|
|
59
59
|
}
|
|
60
60
|
},
|
|
61
|
-
"version": "0.1.
|
|
61
|
+
"version": "0.1.1",
|
|
62
62
|
"volta": {
|
|
63
63
|
"node": "18.14.1",
|
|
64
64
|
"npm": "9.5.0"
|