@cratis/showrunner.boxoffice 1.11.0 → 1.16.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/README.md +49 -16
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Showrunner
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Cratis Showrunner adds support, licensing, announcements, product feedback and email to applications built on [Cratis](https://www.cratis.io). It provides .NET libraries, TypeScript clients generated from backend commands and queries, and React components. It also includes Stage Manager, a Kubernetes operator for running applications.
|
|
4
|
+
|
|
5
|
+
Choose the part that matches what your application needs. The libraries run inside the application that hosts them; Stage Manager runs as a service in your cluster. The sections below lead to setup instructions for each part.
|
|
4
6
|
|
|
5
7
|
[](LICENSE)
|
|
6
8
|
[](https://github.com/Cratis/Showrunner/actions/workflows/build.yml)
|
|
@@ -9,24 +11,42 @@
|
|
|
9
11
|
|
|
10
12
|
## Usher
|
|
11
13
|
|
|
12
|
-
|
|
14
|
+
Usher lets users report issues and carry on support conversations from the application. Its backend adds commands, queries and events to the host's Arc application and Chronicle event store; its frontend packages supply the generated TypeScript clients and React components.
|
|
15
|
+
|
|
16
|
+
Usher captures errors and lets a reporter grant time-limited support access through AuthProxy's on-behalf sessions, where support acts as the reporter. Public events connect the application to a support desk. Start with [the Usher documentation](./Documentation/Usher/index.md) to connect those two sides.
|
|
17
|
+
|
|
18
|
+
## Box Office
|
|
19
|
+
|
|
20
|
+
Box Office lets a managed product honor the licensing decisions its operator makes for each tenant: trials, seats, modules, compute allowances and suspension. The product receives those decisions and reports back through public events. The operator's catalog holds offers and prices; the product declares what it sells and meters compute use. Follow [the Box Office documentation](./Documentation/BoxOffice/index.md) to separate the operator's responsibilities from the product's.
|
|
21
|
+
|
|
22
|
+
## Marquee
|
|
23
|
+
|
|
24
|
+
Marquee brings product announcements to the people they concern. The people running the product choose the audience, display and time window; the product shows the announcement as a banner or dialog. Add `<Marquee />` to the application shell to use its queries and commands. Follow [the Marquee documentation](./Documentation/Marquee/index.md) to add announcements or host the authoring side.
|
|
13
25
|
|
|
14
|
-
|
|
26
|
+
## Notes
|
|
15
27
|
|
|
16
|
-
|
|
28
|
+
Notes connects product feedback to what the user was looking at: a slice of application behavior, a screen or a single component. The people building the application receive that context as events and answer the note. The application hosts `Cratis.Showrunner.Notes`; the builder hosts `Cratis.Showrunner.Notes.Collecting`. Use [the Notes documentation](./Documentation/Notes/index.md) to connect feedback collection and replies.
|
|
17
29
|
|
|
18
|
-
|
|
30
|
+
## Herald
|
|
19
31
|
|
|
20
|
-
|
|
32
|
+
Herald sends application email from templates and records what happened. The application supplies an email kind, such as an invitation, a language and its values. Herald fills the template, makes the HTML safe for email clients, embeds images and sends it over SMTP. Failed sends are queued and retried. Start with [the Herald documentation](./Documentation/Herald/index.md) to configure templates and delivery.
|
|
21
33
|
|
|
22
|
-
|
|
34
|
+
## Stage Manager
|
|
35
|
+
|
|
36
|
+
Stage Manager runs applications in Kubernetes. Install it as a service with the `cratis/showrunner-operator` Helm chart. A `Performance` runs an application with its AuthProxy and, when onboarding is configured, its own Ante from a Cratis environment. The application is reachable only through AuthProxy. A Performance can also run a published Stage application.
|
|
37
|
+
|
|
38
|
+
`Performance` is reconciled: the operator acts on it to run the application. The other resources have schemas only; nothing acts on them yet. Follow [the Stage Manager documentation](./Documentation/StageManager/index.md) to install the operator and run an application.
|
|
23
39
|
|
|
24
40
|
## Packages
|
|
25
41
|
|
|
42
|
+
Choose the backend packages for the part you are hosting, then add its TypeScript proxies or React components if the application needs a frontend. The contract packages contain the public events exchanged between hosts. Stage Manager ships separately as a container image and Helm chart, not a NuGet package.
|
|
43
|
+
|
|
26
44
|
| Package | Registry | What it is |
|
|
27
45
|
| --- | --- | --- |
|
|
46
|
+
| `Cratis.Showrunner.BoxOffice` | NuGet | Product-side licensing: receives the operator's decisions and enforces tenant entitlements |
|
|
28
47
|
| `Cratis.Showrunner.BoxOffice.Catalog` | NuGet | Box Office's catalog — offers (seat plans, modules, compute packs), prices and the pricing arithmetic, published to products |
|
|
29
48
|
| `Cratis.Showrunner.BoxOffice.Offering` | NuGet | Box Office for a product — declares what the product sells (modules, meters, seat licensing) and measures its compute per tenant and day |
|
|
49
|
+
| `Cratis.Showrunner.BoxOffice.Product` | NuGet | Box Office for a managed product, in one call — creates the tenants the operator registers and reports them ready, answers whether a person may take a seat and whether a tenant is read-only, and reports who was active |
|
|
30
50
|
| `Cratis.Showrunner.BoxOffice.Contracts` | NuGet | Box Office's event contracts: what an operator decides about a tenant and what a product reports back |
|
|
31
51
|
| `Cratis.Showrunner.Herald.Contracts` | NuGet | Herald's event contracts: the facts recorded when an email was sent, failed or bounced |
|
|
32
52
|
| `Cratis.Showrunner.Herald` | NuGet | Herald's backend — templates, strict rendering, images, SMTP and folder transports, queued delivery with retries, recorded in the application's Chronicle event store |
|
|
@@ -36,15 +56,24 @@ Usher is in its earliest stage: the packages are scaffolded and published, but c
|
|
|
36
56
|
| `Cratis.Showrunner.Marquee.Authoring` | NuGet | Marquee's authoring backend — commands, query and outbox for writing announcements, built on Arc and Chronicle |
|
|
37
57
|
| `Cratis.Showrunner.Marquee` | NuGet | Marquee's backend for products — receives announcements once, shows each tenant what its audience matches and records acknowledgements |
|
|
38
58
|
| `Cratis.Showrunner.Usher` | NuGet | Usher's backend — Arc commands and queries over Chronicle |
|
|
39
|
-
|
|
|
40
|
-
|
|
|
59
|
+
| `Cratis.Showrunner.Notes.Contracts` | NuGet | Notes' event contracts: the public events an application and the people building it exchange about product feedback |
|
|
60
|
+
| `Cratis.Showrunner.Notes` | NuGet | Notes' backend for applications — commands to give, suggest and withdraw notes, the live list of a user's notes with their status, and the outbox that publishes them |
|
|
61
|
+
| `Cratis.Showrunner.Notes.Collecting` | NuGet | Notes' receiving side for the builder of an application — reads the applications' notes into the tenant's namespace and answers them |
|
|
62
|
+
| `@cratis/showrunner.boxoffice` | npm | Generated TypeScript proxies for the product's licensing frontend |
|
|
63
|
+
| `@cratis/showrunner.boxoffice.react` | npm | React components for entitlements, module filtering, trials, suspension, seats, usage and plans |
|
|
64
|
+
| `@cratis/showrunner.marquee` | npm | Generated TypeScript proxies for Marquee's receiving commands and queries |
|
|
65
|
+
| `@cratis/showrunner.marquee.authoring` | npm | Generated TypeScript proxies for Marquee's authoring commands and query |
|
|
41
66
|
| `@cratis/showrunner.marquee.react` | npm | The Marquee drop-in React component: banners and dialogs for a product's announcements, built on `@cratis/arc.react` and `@cratis/components` |
|
|
42
|
-
| `@cratis/showrunner.usher` | npm |
|
|
67
|
+
| `@cratis/showrunner.usher` | npm | Generated TypeScript proxies for Usher's commands and queries |
|
|
43
68
|
| `@cratis/showrunner.usher.react` | npm | React components for Usher, built on `@cratis/arc.react` and `@cratis/components` |
|
|
69
|
+
| `@cratis/showrunner.notes` | npm | Generated TypeScript proxies for Notes' commands and queries |
|
|
70
|
+
| `@cratis/showrunner.notes.react` | npm | React components for Notes: the feedback button with its context drop-down, the feedback dialogs, the component picker and the user's own feedback, built on `@cratis/arc.react` and `@cratis/components` |
|
|
44
71
|
|
|
45
72
|
## Building
|
|
46
73
|
|
|
47
|
-
|
|
74
|
+
To work on Showrunner, use the .NET SDK selected by [`global.json`](./global.json) and Node.js 20 or later with Corepack enabled (`corepack enable`). Yarn is checked in under `.yarn/releases`.
|
|
75
|
+
|
|
76
|
+
Run the commands below from the repository root. The full solution test command includes container-based integration specifications, so Docker must be running.
|
|
48
77
|
|
|
49
78
|
```shell
|
|
50
79
|
# Backend: Debug builds compile the inline specs and regenerate the TypeScript proxies
|
|
@@ -62,18 +91,22 @@ yarn test
|
|
|
62
91
|
yarn build
|
|
63
92
|
```
|
|
64
93
|
|
|
65
|
-
Specifications live beside the code they specify
|
|
94
|
+
Specifications live beside the code they specify: `for_*/when_*/` folders compiled into Debug builds only for .NET, and Vitest specs in the same layout for TypeScript. The Debug build regenerates TypeScript proxies from the backend; do not edit the generated proxies by hand. The pull request build checks that regeneration leaves the committed proxies unchanged.
|
|
95
|
+
|
|
96
|
+
For a focused integration run, [`Integration`](./Integration) runs Usher and a desk against Chronicle in a container. [`Integration.Notes`](./Integration.Notes) runs an application and a collecting host using the same container fixture code. For these two projects, set `USHER_CHRONICLE_IMAGE` to choose another kernel image and `USHER_INTEGRATION_LOG` to a file path to keep the hosts' logs.
|
|
66
97
|
|
|
67
|
-
|
|
98
|
+
`Integration.Herald/` also tests against Chronicle in a container; its image override is `HERALD_CHRONICLE_IMAGE`. `Integration.BoxOffice/` tests metering storage against MongoDB in Docker.
|
|
68
99
|
|
|
69
100
|
## Releasing
|
|
70
101
|
|
|
71
|
-
Every pull request carries exactly one of the `major`, `minor`, `patch` or `no-release` labels. Merging a version-labelled pull request to `main` releases
|
|
102
|
+
Every pull request carries exactly one of the `major`, `minor`, `patch` or `no-release` labels. Merging a version-labelled pull request to `main` releases the NuGet and npm packages under one semantic version through [`cratis/release-action`](https://github.com/Cratis/release-action). Use `no-release` to skip publishing. Stage Manager's container image and Helm chart are released with the same version.
|
|
103
|
+
|
|
104
|
+
NuGet and npm use trusted publishing through OpenID Connect (OIDC), with provenance for npm. Build and pack jobs have no publishing rights; separate publish jobs receive short-lived publishing credentials and push the packed artifacts. The npm publisher disables lifecycle scripts when publishing the tarballs.
|
|
72
105
|
|
|
73
106
|
## Part of the Cratis ecosystem
|
|
74
107
|
|
|
75
|
-
Showrunner is a [Cratis](https://www.cratis.io) project
|
|
108
|
+
Showrunner is a [Cratis](https://www.cratis.io) project. Its application libraries use [Chronicle](https://github.com/Cratis/Chronicle) to store changes as events. Those with commands and queries use [Arc](https://github.com/Cratis/Arc) to handle writes and reads separately, the pattern called CQRS. The React components build on [`@cratis/components`](https://github.com/Cratis/Components). Join the community on [Discord](https://discord.gg/kt4AMpV8WV).
|
|
76
109
|
|
|
77
110
|
## License
|
|
78
111
|
|
|
79
|
-
|
|
112
|
+
See the [MIT License](LICENSE) for the terms covering this repository.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@cratis/showrunner.boxoffice",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.16.0",
|
|
5
5
|
"description": "Generated TypeScript proxies for Box Office — the Showrunner part that honors what the operator of a managed product decides about a tenant, built on Cratis Arc.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"cratis",
|
|
@@ -59,13 +59,13 @@
|
|
|
59
59
|
"up": "yarn g:up"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
|
-
"@cratis/arc": "22.
|
|
63
|
-
"@cratis/arc.react": "22.
|
|
62
|
+
"@cratis/arc": "22.155.0",
|
|
63
|
+
"@cratis/arc.react": "22.155.0",
|
|
64
64
|
"@cratis/fundamentals": "7.27.0"
|
|
65
65
|
},
|
|
66
66
|
"peerDependencies": {
|
|
67
|
-
"@cratis/arc": "^22.
|
|
68
|
-
"@cratis/arc.react": "^22.
|
|
67
|
+
"@cratis/arc": "^22.155.0",
|
|
68
|
+
"@cratis/arc.react": "^22.155.0",
|
|
69
69
|
"@cratis/fundamentals": "^7.27.0"
|
|
70
70
|
}
|
|
71
71
|
}
|