Security News
The Unpaid Backbone of Open Source: Solo Maintainers Face Increasing Security Demands
Solo open source maintainers face burnout and security challenges, with 60% unpaid and 60% considering quitting.
Provide clientside multiplayer and optimistic updates over any s3-compatible storage API
⚠️ Under development - bugs and contributions welcome
Written to provide a fast path for multiplayer without vendor lockin.
You can use this library over S3, Backblaze, R2(no object versioning) or self-hosted solutions like Minio.
coming soon
The mps3 client wraps an S3 API and provides a key-value store interface: put, get, subscribe. Each key is a path of a JSON object into an s3 bucket.
To enable additional semantics, groups of objects are managed by a manifest file. The manifest file enables atomic bulk updates, serializability and improves sync performance. The manifest primarily lists all objects and their versions.
When using putAll, the values are first written and then the manifest is written with the new object versions, so the bulk operation is observerved atomically. You can think of the manifest as the final commit step in a write-ahead-log.
It is possible multiple clients update the manifest at the same time. If we assumed the latest manifest was the source of truth this would lead to lost writes under contention. Instead, each manifest references the previous manifest version it was based upon and includes the JSON-merge-patch operation that was intended. At read time several manifest versions are read and the latest state is derived by applying the merge-patches sequentially if needed. Thanks to S3's recent consistency upgrades this works out.
Puts are buffered in a local cache, and raised to local subscriptions immediately. Long term it is indended we materialize the caching for local first experiences.
Constructs a new client.
config: {
defaultBucket: string;
defaultManifest?: {
key: string
bucket?: string
}
s3Config: S3ClientConfig;
}
Writes a value (or values) as a JSON object in a bucket. To delete an object use the value undefined
options: {
bucket?: string,
manifests?: {
key: string
bucket?: string
}[]
}
Reads a value
options: {
bucket?: string,
manifest?: {
key: string
bucket?: string
}
}
Subscribe to changes of a key.
options: {
bucket?: string,
manifest?: {
key: string
bucket?: string
}
}
FAQs
Provide clientside multiplayer and optimistic updates over any s3-compatible storage API
We found that mps3 demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Solo open source maintainers face burnout and security challenges, with 60% unpaid and 60% considering quitting.
Security News
License exceptions modify the terms of open source licenses, impacting how software can be used, modified, and distributed. Developers should be aware of the legal implications of these exceptions.
Security News
A developer is accusing Tencent of violating the GPL by modifying a Python utility and changing its license to BSD, highlighting the importance of copyleft compliance.