Exponential-Workload
1f5a403786
Some checks failed
Build & Test Packages / build (push) Has been cancelled
- Move to a central "base" tsconfig.json - Enable strict mode project-wide - Skip Default Lib Check; Typescript's .d.ts files are assumed to be correct |
||
---|---|---|
.changeset | ||
.forgejo/workflows | ||
.vscode | ||
ico | ||
packages | ||
scripts | ||
.gitignore | ||
.npmrc | ||
.prettierignore | ||
.prettierrc | ||
base-tsconfig.json | ||
LICENSE | ||
nx.json | ||
package.json | ||
pnpm-lock.yaml | ||
pnpm-workspace.yaml | ||
README.md |
We've moved!
Written has moved from Expo/Written
to Written/Written
on Codeberg! If you've cloned the repo, please run the below command:
git remote set-url origin git@codeberg.org:Written/Written.git
Written
Filling the small gap between Appwrite and a perfect Developer Experience by providing an extensive suite of FOSS tools for Appwrite.
Packages
Templating Packages
The below packages are designed to be used in pnpm create
or npm init
commands, as they will initialize a Written project.
- create-written (
pnpm create written
,npm init written
) - A simple, yet powerful, project initializer for Written projects. It will initialize a Written project with the base setup, and will install the necessary dependencies for you. You need an Appwrite instance to use this package. Uses@written/base-monorepo-setup
under the hood. - @written/create-function (
pnpm create written-function
,npm init written-function
) - A utility to create a new Written Function in your existing Written project.
Core Packages
- @written/app - A simple, yet powerful, Appwrite Function Framework. Allows you to have Routing and Middleware in your Appwrite Functions, similar to Koa or Express.
- @written/appwrite-types - TypeScript types for Appwrite's Functions, allowing you to gain typesafety over primitive Appwrite Functions. Designed for
@written/app
, but is perfectly usable in any Appwrite Function.
Middleware Packages
The below packages are designed to be used with @written/app
as middleware.
- @written/cors-setup - A CORS wrapper, for use with
@written/wrap
. This is integrated into@written/app
underApp.cors()
; the recommended way to use this. - @written/static - A microscopic static file server middleware for
@written/app
, allowing you to easily serve static files in your Appwrite Functions. - @written/throwables - Error handling made easy.
Utility Packages
- @written/mkctx - A utility library for creating Appwrite Contexts, useful for testing, mocking and using Appwrite Functions outside of Appwrite.
- @written/wrap - A tool for wrapping an Appwrite default function, as to modify either the request or response object. Works without written.
- @written/httpcompat - Convert from/to node native http request/response objects to/from Appwrite's default function request/response objects.
Appwrite SDK Tooling
- @written-client/sdk - Minimal wrapping around the Appwrite SDK with some utilities added.
- @written-client/svelte - Svelte SDK, adding stores for authentication amongst other shenanigans.
Generic Function Utilities
- @awfn/define-handler - Simple alternative to
satisfies AppwriteDefault
that also gives you intellisense in plain-JS projects (and works fine in TS ones). Inspired by any configurations that have adefine<LibraryNameHere>
function. - @awfn/cli - A helper for Appwrite Functions, allowing tasks like automatically redeploying your function on changes, amongst other things. Cleans up the
scripts
section of your functions'package.json
s.
Generic Packages
The below packages are not designed to be Appwrite-specific, and are designed for use anywhere.
- @written/trailing-slash - A simple utility to add or remove trailing slashes from URLs.
- @written/route-parameters - Extracted Types from Express for converting route parameters to a type-safe params object.
- @written/base-monorepo-setup - A simple, yet powerful, base monorepo setup library for
create-
packages, for making a simplenx
-based Monorepo. Used increate-written
.
Version
A large chunk of written is pre-1.x. This means that minor version bumps (y
in vx.y.z
increasing) may introduce breaking changes. We will try to keep this to a minimum, but it may happen.
Assuming your semver range is limited to the nearest patch version, written is considered stable for production use. Note that create-written
will limit to the nearest minor version; please adjust this to the nearest patch if you plan to deploy to production prior to a ?=1.y.z of a package being released.
Exceptions to this are the following packages:
- @written/throwables
- @written/wrap
@written/appwrite-types(will be stable in the very near future, hopefully)
These packages are considered stable for production use, and will not introduce breaking changes in minor version bumps.
Transitive dependencies are not considered stable for production use, even in these. If you depend on a dependency of a dependency, include it aswell; patch versions may bump major versions of transitive dependencies. (btw, please use a package manager like pnpm
that can handle multiple versions of the same package)
Notice
This is a 3rd-party project and, while being made for Appwrite, is not affiliated with it.
License
This project is licensed under the MIT License. See the LICENSE file for details.