@cratis/showrunner.notes 0.0.0-stage → 1.15.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/Availability/NotesAvailability.ts +59 -0
- package/Availability/index.ts +4 -0
- package/Contracts/Components/PickedComponent.ts +43 -0
- package/Contracts/Components/index.ts +4 -0
- package/Contracts/Context/NoteContext.ts +58 -0
- package/Contracts/Context/NoteDialog.ts +25 -0
- package/Contracts/Context/NoteScreen.ts +30 -0
- package/Contracts/Context/index.ts +6 -0
- package/Contracts/Giving/NoteKind.ts +14 -0
- package/Contracts/Giving/index.ts +4 -0
- package/Contracts/Reporting/SliceLocation.ts +30 -0
- package/Contracts/Reporting/index.ts +4 -0
- package/Giving/GiveNoteOnComponent/GiveNoteOnComponent.ts +146 -0
- package/Giving/GiveNoteOnComponent/index.ts +4 -0
- package/Giving/GiveNoteOnContext/GiveNoteOnContext.ts +126 -0
- package/Giving/GiveNoteOnContext/index.ts +4 -0
- package/Giving/GiveNoteOnScreen/GiveNoteOnScreen.ts +126 -0
- package/Giving/GiveNoteOnScreen/index.ts +4 -0
- package/Giving/GiveNoteOnSlices/GiveNoteOnSlices.ts +145 -0
- package/Giving/GiveNoteOnSlices/index.ts +4 -0
- package/Giving/SuggestComponentPropertyChange/SuggestComponentPropertyChange.ts +164 -0
- package/Giving/SuggestComponentPropertyChange/index.ts +4 -0
- package/Listing/MyNote.ts +303 -0
- package/Listing/NoteStatus.ts +15 -0
- package/Listing/NoteTarget.ts +14 -0
- package/Listing/SuggestedPropertyChange.ts +30 -0
- package/Listing/index.ts +7 -0
- package/README.md +86 -2
- package/Withdrawing/WithdrawNote/WithdrawNote.ts +61 -0
- package/Withdrawing/WithdrawNote/index.ts +4 -0
- package/dist/cjs/Availability/NotesAvailability.d.ts +21 -0
- package/dist/cjs/Availability/NotesAvailability.d.ts.map +1 -0
- package/dist/cjs/Availability/NotesAvailability.js +66 -0
- package/dist/cjs/Availability/NotesAvailability.js.map +1 -0
- package/dist/cjs/Availability/index.d.ts +2 -0
- package/dist/cjs/Availability/index.d.ts.map +1 -0
- package/dist/cjs/Contracts/Components/PickedComponent.d.ts +9 -0
- package/dist/cjs/Contracts/Components/PickedComponent.d.ts.map +1 -0
- package/dist/cjs/Contracts/Components/PickedComponent.js +65 -0
- package/dist/cjs/Contracts/Components/PickedComponent.js.map +1 -0
- package/dist/cjs/Contracts/Components/index.d.ts +2 -0
- package/dist/cjs/Contracts/Components/index.d.ts.map +1 -0
- package/dist/cjs/Contracts/Context/NoteContext.d.ts +14 -0
- package/dist/cjs/Contracts/Context/NoteContext.d.ts.map +1 -0
- package/dist/cjs/Contracts/Context/NoteContext.js +81 -0
- package/dist/cjs/Contracts/Context/NoteContext.js.map +1 -0
- package/dist/cjs/Contracts/Context/NoteDialog.d.ts +6 -0
- package/dist/cjs/Contracts/Context/NoteDialog.d.ts.map +1 -0
- package/dist/cjs/Contracts/Context/NoteDialog.js +44 -0
- package/dist/cjs/Contracts/Context/NoteDialog.js.map +1 -0
- package/dist/cjs/Contracts/Context/NoteScreen.d.ts +6 -0
- package/dist/cjs/Contracts/Context/NoteScreen.d.ts.map +1 -0
- package/dist/cjs/Contracts/Context/NoteScreen.js +50 -0
- package/dist/cjs/Contracts/Context/NoteScreen.js.map +1 -0
- package/dist/cjs/Contracts/Context/index.d.ts +4 -0
- package/dist/cjs/Contracts/Context/index.d.ts.map +1 -0
- package/dist/cjs/Contracts/Giving/NoteKind.d.ts +7 -0
- package/dist/cjs/Contracts/Giving/NoteKind.d.ts.map +1 -0
- package/dist/cjs/Contracts/Giving/NoteKind.js +18 -0
- package/dist/cjs/Contracts/Giving/NoteKind.js.map +1 -0
- package/dist/cjs/Contracts/Giving/index.d.ts +2 -0
- package/dist/cjs/Contracts/Giving/index.d.ts.map +1 -0
- package/dist/cjs/Contracts/Reporting/SliceLocation.d.ts +6 -0
- package/dist/cjs/Contracts/Reporting/SliceLocation.d.ts.map +1 -0
- package/dist/cjs/Contracts/Reporting/SliceLocation.js +50 -0
- package/dist/cjs/Contracts/Reporting/SliceLocation.js.map +1 -0
- package/dist/cjs/Contracts/Reporting/index.d.ts +2 -0
- package/dist/cjs/Contracts/Reporting/index.d.ts.map +1 -0
- package/dist/cjs/Giving/GiveNoteOnComponent/GiveNoteOnComponent.d.ts +40 -0
- package/dist/cjs/Giving/GiveNoteOnComponent/GiveNoteOnComponent.d.ts.map +1 -0
- package/dist/cjs/Giving/GiveNoteOnComponent/GiveNoteOnComponent.js +101 -0
- package/dist/cjs/Giving/GiveNoteOnComponent/GiveNoteOnComponent.js.map +1 -0
- package/dist/cjs/Giving/GiveNoteOnComponent/index.d.ts +2 -0
- package/dist/cjs/Giving/GiveNoteOnComponent/index.d.ts.map +1 -0
- package/dist/cjs/Giving/GiveNoteOnContext/GiveNoteOnContext.d.ts +36 -0
- package/dist/cjs/Giving/GiveNoteOnContext/GiveNoteOnContext.d.ts.map +1 -0
- package/dist/cjs/Giving/GiveNoteOnContext/GiveNoteOnContext.js +88 -0
- package/dist/cjs/Giving/GiveNoteOnContext/GiveNoteOnContext.js.map +1 -0
- package/dist/cjs/Giving/GiveNoteOnContext/index.d.ts +2 -0
- package/dist/cjs/Giving/GiveNoteOnContext/index.d.ts.map +1 -0
- package/dist/cjs/Giving/GiveNoteOnScreen/GiveNoteOnScreen.d.ts +36 -0
- package/dist/cjs/Giving/GiveNoteOnScreen/GiveNoteOnScreen.d.ts.map +1 -0
- package/dist/cjs/Giving/GiveNoteOnScreen/GiveNoteOnScreen.js +88 -0
- package/dist/cjs/Giving/GiveNoteOnScreen/GiveNoteOnScreen.js.map +1 -0
- package/dist/cjs/Giving/GiveNoteOnScreen/index.d.ts +2 -0
- package/dist/cjs/Giving/GiveNoteOnScreen/index.d.ts.map +1 -0
- package/dist/cjs/Giving/GiveNoteOnSlices/GiveNoteOnSlices.d.ts +40 -0
- package/dist/cjs/Giving/GiveNoteOnSlices/GiveNoteOnSlices.d.ts.map +1 -0
- package/dist/cjs/Giving/GiveNoteOnSlices/GiveNoteOnSlices.js +100 -0
- package/dist/cjs/Giving/GiveNoteOnSlices/GiveNoteOnSlices.js.map +1 -0
- package/dist/cjs/Giving/GiveNoteOnSlices/index.d.ts +2 -0
- package/dist/cjs/Giving/GiveNoteOnSlices/index.d.ts.map +1 -0
- package/dist/cjs/Giving/SuggestComponentPropertyChange/SuggestComponentPropertyChange.d.ts +42 -0
- package/dist/cjs/Giving/SuggestComponentPropertyChange/SuggestComponentPropertyChange.d.ts.map +1 -0
- package/dist/cjs/Giving/SuggestComponentPropertyChange/SuggestComponentPropertyChange.js +113 -0
- package/dist/cjs/Giving/SuggestComponentPropertyChange/SuggestComponentPropertyChange.js.map +1 -0
- package/dist/cjs/Giving/SuggestComponentPropertyChange/index.d.ts +2 -0
- package/dist/cjs/Giving/SuggestComponentPropertyChange/index.d.ts.map +1 -0
- package/dist/cjs/Listing/MyNote.d.ts +111 -0
- package/dist/cjs/Listing/MyNote.d.ts.map +1 -0
- package/dist/cjs/Listing/MyNote.js +315 -0
- package/dist/cjs/Listing/MyNote.js.map +1 -0
- package/dist/cjs/Listing/NoteStatus.d.ts +8 -0
- package/dist/cjs/Listing/NoteStatus.d.ts.map +1 -0
- package/dist/cjs/Listing/NoteStatus.js +19 -0
- package/dist/cjs/Listing/NoteStatus.js.map +1 -0
- package/dist/cjs/Listing/NoteTarget.d.ts +7 -0
- package/dist/cjs/Listing/NoteTarget.d.ts.map +1 -0
- package/dist/cjs/Listing/NoteTarget.js +18 -0
- package/dist/cjs/Listing/NoteTarget.js.map +1 -0
- package/dist/cjs/Listing/SuggestedPropertyChange.d.ts +6 -0
- package/dist/cjs/Listing/SuggestedPropertyChange.d.ts.map +1 -0
- package/dist/cjs/Listing/SuggestedPropertyChange.js +50 -0
- package/dist/cjs/Listing/SuggestedPropertyChange.js.map +1 -0
- package/dist/cjs/Listing/index.d.ts +5 -0
- package/dist/cjs/Listing/index.d.ts.map +1 -0
- package/dist/cjs/Withdrawing/WithdrawNote/WithdrawNote.d.ts +21 -0
- package/dist/cjs/Withdrawing/WithdrawNote/WithdrawNote.d.ts.map +1 -0
- package/dist/cjs/Withdrawing/WithdrawNote/WithdrawNote.js +44 -0
- package/dist/cjs/Withdrawing/WithdrawNote/WithdrawNote.js.map +1 -0
- package/dist/cjs/Withdrawing/WithdrawNote/index.d.ts +2 -0
- package/dist/cjs/Withdrawing/WithdrawNote/index.d.ts.map +1 -0
- package/dist/cjs/index.d.ts +13 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +47 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/esm/Availability/NotesAvailability.d.ts +21 -0
- package/dist/esm/Availability/NotesAvailability.d.ts.map +1 -0
- package/dist/esm/Availability/NotesAvailability.js +63 -0
- package/dist/esm/Availability/NotesAvailability.js.map +1 -0
- package/dist/esm/Availability/index.d.ts +2 -0
- package/dist/esm/Availability/index.d.ts.map +1 -0
- package/dist/esm/Availability/index.js +2 -0
- package/dist/esm/Availability/index.js.map +1 -0
- package/dist/esm/Contracts/Components/PickedComponent.d.ts +9 -0
- package/dist/esm/Contracts/Components/PickedComponent.d.ts.map +1 -0
- package/dist/esm/Contracts/Components/PickedComponent.js +63 -0
- package/dist/esm/Contracts/Components/PickedComponent.js.map +1 -0
- package/dist/esm/Contracts/Components/index.d.ts +2 -0
- package/dist/esm/Contracts/Components/index.d.ts.map +1 -0
- package/dist/esm/Contracts/Components/index.js +2 -0
- package/dist/esm/Contracts/Components/index.js.map +1 -0
- package/dist/esm/Contracts/Context/NoteContext.d.ts +14 -0
- package/dist/esm/Contracts/Context/NoteContext.d.ts.map +1 -0
- package/dist/esm/Contracts/Context/NoteContext.js +79 -0
- package/dist/esm/Contracts/Context/NoteContext.js.map +1 -0
- package/dist/esm/Contracts/Context/NoteDialog.d.ts +6 -0
- package/dist/esm/Contracts/Context/NoteDialog.d.ts.map +1 -0
- package/dist/esm/Contracts/Context/NoteDialog.js +42 -0
- package/dist/esm/Contracts/Context/NoteDialog.js.map +1 -0
- package/dist/esm/Contracts/Context/NoteScreen.d.ts +6 -0
- package/dist/esm/Contracts/Context/NoteScreen.d.ts.map +1 -0
- package/dist/esm/Contracts/Context/NoteScreen.js +48 -0
- package/dist/esm/Contracts/Context/NoteScreen.js.map +1 -0
- package/dist/esm/Contracts/Context/index.d.ts +4 -0
- package/dist/esm/Contracts/Context/index.d.ts.map +1 -0
- package/dist/esm/Contracts/Context/index.js +4 -0
- package/dist/esm/Contracts/Context/index.js.map +1 -0
- package/dist/esm/Contracts/Giving/NoteKind.d.ts +7 -0
- package/dist/esm/Contracts/Giving/NoteKind.d.ts.map +1 -0
- package/dist/esm/Contracts/Giving/NoteKind.js +16 -0
- package/dist/esm/Contracts/Giving/NoteKind.js.map +1 -0
- package/dist/esm/Contracts/Giving/index.d.ts +2 -0
- package/dist/esm/Contracts/Giving/index.d.ts.map +1 -0
- package/dist/esm/Contracts/Giving/index.js +2 -0
- package/dist/esm/Contracts/Giving/index.js.map +1 -0
- package/dist/esm/Contracts/Reporting/SliceLocation.d.ts +6 -0
- package/dist/esm/Contracts/Reporting/SliceLocation.d.ts.map +1 -0
- package/dist/esm/Contracts/Reporting/SliceLocation.js +48 -0
- package/dist/esm/Contracts/Reporting/SliceLocation.js.map +1 -0
- package/dist/esm/Contracts/Reporting/index.d.ts +2 -0
- package/dist/esm/Contracts/Reporting/index.d.ts.map +1 -0
- package/dist/esm/Contracts/Reporting/index.js +2 -0
- package/dist/esm/Contracts/Reporting/index.js.map +1 -0
- package/dist/esm/Giving/GiveNoteOnComponent/GiveNoteOnComponent.d.ts +40 -0
- package/dist/esm/Giving/GiveNoteOnComponent/GiveNoteOnComponent.d.ts.map +1 -0
- package/dist/esm/Giving/GiveNoteOnComponent/GiveNoteOnComponent.js +98 -0
- package/dist/esm/Giving/GiveNoteOnComponent/GiveNoteOnComponent.js.map +1 -0
- package/dist/esm/Giving/GiveNoteOnComponent/index.d.ts +2 -0
- package/dist/esm/Giving/GiveNoteOnComponent/index.d.ts.map +1 -0
- package/dist/esm/Giving/GiveNoteOnComponent/index.js +2 -0
- package/dist/esm/Giving/GiveNoteOnComponent/index.js.map +1 -0
- package/dist/esm/Giving/GiveNoteOnContext/GiveNoteOnContext.d.ts +36 -0
- package/dist/esm/Giving/GiveNoteOnContext/GiveNoteOnContext.d.ts.map +1 -0
- package/dist/esm/Giving/GiveNoteOnContext/GiveNoteOnContext.js +85 -0
- package/dist/esm/Giving/GiveNoteOnContext/GiveNoteOnContext.js.map +1 -0
- package/dist/esm/Giving/GiveNoteOnContext/index.d.ts +2 -0
- package/dist/esm/Giving/GiveNoteOnContext/index.d.ts.map +1 -0
- package/dist/esm/Giving/GiveNoteOnContext/index.js +2 -0
- package/dist/esm/Giving/GiveNoteOnContext/index.js.map +1 -0
- package/dist/esm/Giving/GiveNoteOnScreen/GiveNoteOnScreen.d.ts +36 -0
- package/dist/esm/Giving/GiveNoteOnScreen/GiveNoteOnScreen.d.ts.map +1 -0
- package/dist/esm/Giving/GiveNoteOnScreen/GiveNoteOnScreen.js +85 -0
- package/dist/esm/Giving/GiveNoteOnScreen/GiveNoteOnScreen.js.map +1 -0
- package/dist/esm/Giving/GiveNoteOnScreen/index.d.ts +2 -0
- package/dist/esm/Giving/GiveNoteOnScreen/index.d.ts.map +1 -0
- package/dist/esm/Giving/GiveNoteOnScreen/index.js +2 -0
- package/dist/esm/Giving/GiveNoteOnScreen/index.js.map +1 -0
- package/dist/esm/Giving/GiveNoteOnSlices/GiveNoteOnSlices.d.ts +40 -0
- package/dist/esm/Giving/GiveNoteOnSlices/GiveNoteOnSlices.d.ts.map +1 -0
- package/dist/esm/Giving/GiveNoteOnSlices/GiveNoteOnSlices.js +97 -0
- package/dist/esm/Giving/GiveNoteOnSlices/GiveNoteOnSlices.js.map +1 -0
- package/dist/esm/Giving/GiveNoteOnSlices/index.d.ts +2 -0
- package/dist/esm/Giving/GiveNoteOnSlices/index.d.ts.map +1 -0
- package/dist/esm/Giving/GiveNoteOnSlices/index.js +2 -0
- package/dist/esm/Giving/GiveNoteOnSlices/index.js.map +1 -0
- package/dist/esm/Giving/SuggestComponentPropertyChange/SuggestComponentPropertyChange.d.ts +42 -0
- package/dist/esm/Giving/SuggestComponentPropertyChange/SuggestComponentPropertyChange.d.ts.map +1 -0
- package/dist/esm/Giving/SuggestComponentPropertyChange/SuggestComponentPropertyChange.js +110 -0
- package/dist/esm/Giving/SuggestComponentPropertyChange/SuggestComponentPropertyChange.js.map +1 -0
- package/dist/esm/Giving/SuggestComponentPropertyChange/index.d.ts +2 -0
- package/dist/esm/Giving/SuggestComponentPropertyChange/index.d.ts.map +1 -0
- package/dist/esm/Giving/SuggestComponentPropertyChange/index.js +2 -0
- package/dist/esm/Giving/SuggestComponentPropertyChange/index.js.map +1 -0
- package/dist/esm/Listing/MyNote.d.ts +111 -0
- package/dist/esm/Listing/MyNote.d.ts.map +1 -0
- package/dist/esm/Listing/MyNote.js +312 -0
- package/dist/esm/Listing/MyNote.js.map +1 -0
- package/dist/esm/Listing/NoteStatus.d.ts +8 -0
- package/dist/esm/Listing/NoteStatus.d.ts.map +1 -0
- package/dist/esm/Listing/NoteStatus.js +17 -0
- package/dist/esm/Listing/NoteStatus.js.map +1 -0
- package/dist/esm/Listing/NoteTarget.d.ts +7 -0
- package/dist/esm/Listing/NoteTarget.d.ts.map +1 -0
- package/dist/esm/Listing/NoteTarget.js +16 -0
- package/dist/esm/Listing/NoteTarget.js.map +1 -0
- package/dist/esm/Listing/SuggestedPropertyChange.d.ts +6 -0
- package/dist/esm/Listing/SuggestedPropertyChange.d.ts.map +1 -0
- package/dist/esm/Listing/SuggestedPropertyChange.js +48 -0
- package/dist/esm/Listing/SuggestedPropertyChange.js.map +1 -0
- package/dist/esm/Listing/index.d.ts +5 -0
- package/dist/esm/Listing/index.d.ts.map +1 -0
- package/dist/esm/Listing/index.js +5 -0
- package/dist/esm/Listing/index.js.map +1 -0
- package/dist/esm/Withdrawing/WithdrawNote/WithdrawNote.d.ts +21 -0
- package/dist/esm/Withdrawing/WithdrawNote/WithdrawNote.d.ts.map +1 -0
- package/dist/esm/Withdrawing/WithdrawNote/WithdrawNote.js +42 -0
- package/dist/esm/Withdrawing/WithdrawNote/WithdrawNote.js.map +1 -0
- package/dist/esm/Withdrawing/WithdrawNote/index.d.ts +2 -0
- package/dist/esm/Withdrawing/WithdrawNote/index.d.ts.map +1 -0
- package/dist/esm/Withdrawing/WithdrawNote/index.js +2 -0
- package/dist/esm/Withdrawing/WithdrawNote/index.js.map +1 -0
- package/dist/esm/index.d.ts +13 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +18 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/index.ts +15 -0
- package/package.json +69 -4
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
// **DO NOT EDIT** - This file is an automatically generated file.
|
|
5
|
+
// @generated by Cratis. Source: Cratis.Showrunner.Notes.Listing.MyNote, Cratis.Showrunner.Notes.Listing.MyNote. Time: 2026-11-01T11:55:12.6707473Z. Hash: 53DA8F14A2D0432B6BEC55A2F1B97626D62BEC349F30D0775C0AF36A4B481266
|
|
6
|
+
import { ChangeSet, ObservableQueryFor, Paging, QueryResultWithState, Sorting, SortingActions, SortingActionsForObservableQuery } from '@cratis/arc/queries';
|
|
7
|
+
import { ObservableQueryWhen, SetPage, SetPageSize, SetSorting, useChangeStream, useObservableQuery, useObservableQueryWithPaging, useSuspenseObservableQuery, useSuspenseObservableQueryWithPaging } from '@cratis/arc.react/queries';
|
|
8
|
+
import { SliceLocation as ArcSliceLocation, ParameterDescriptor } from '@cratis/arc/reflection';
|
|
9
|
+
import { Guid, field } from '@cratis/fundamentals';
|
|
10
|
+
import { NoteKind } from '../Contracts/Giving/NoteKind';
|
|
11
|
+
import { NoteScreen } from '../Contracts/Context/NoteScreen';
|
|
12
|
+
import { NoteStatus } from './NoteStatus';
|
|
13
|
+
import { NoteTarget } from './NoteTarget';
|
|
14
|
+
import { SliceLocation } from '../Contracts/Reporting/SliceLocation';
|
|
15
|
+
import { SuggestedPropertyChange } from './SuggestedPropertyChange';
|
|
16
|
+
|
|
17
|
+
class MyNotesSortBy {
|
|
18
|
+
private _component: SortingActionsForObservableQuery<MyNote[]>;
|
|
19
|
+
private _givenAt: SortingActionsForObservableQuery<MyNote[]>;
|
|
20
|
+
private _givenBy: SortingActionsForObservableQuery<MyNote[]>;
|
|
21
|
+
private _id: SortingActionsForObservableQuery<MyNote[]>;
|
|
22
|
+
private _kind: SortingActionsForObservableQuery<MyNote[]>;
|
|
23
|
+
private _lastActivityAt: SortingActionsForObservableQuery<MyNote[]>;
|
|
24
|
+
private _location: SortingActionsForObservableQuery<MyNote[]>;
|
|
25
|
+
private _propertyChanges: SortingActionsForObservableQuery<MyNote[]>;
|
|
26
|
+
private _screen: SortingActionsForObservableQuery<MyNote[]>;
|
|
27
|
+
private _slices: SortingActionsForObservableQuery<MyNote[]>;
|
|
28
|
+
private _status: SortingActionsForObservableQuery<MyNote[]>;
|
|
29
|
+
private _statusDetail: SortingActionsForObservableQuery<MyNote[]>;
|
|
30
|
+
private _target: SortingActionsForObservableQuery<MyNote[]>;
|
|
31
|
+
private _text: SortingActionsForObservableQuery<MyNote[]>;
|
|
32
|
+
|
|
33
|
+
constructor(readonly query: MyNotes) {
|
|
34
|
+
this._component = new SortingActionsForObservableQuery<MyNote[]>('component', query);
|
|
35
|
+
this._givenAt = new SortingActionsForObservableQuery<MyNote[]>('givenAt', query);
|
|
36
|
+
this._givenBy = new SortingActionsForObservableQuery<MyNote[]>('givenBy', query);
|
|
37
|
+
this._id = new SortingActionsForObservableQuery<MyNote[]>('id', query);
|
|
38
|
+
this._kind = new SortingActionsForObservableQuery<MyNote[]>('kind', query);
|
|
39
|
+
this._lastActivityAt = new SortingActionsForObservableQuery<MyNote[]>('lastActivityAt', query);
|
|
40
|
+
this._location = new SortingActionsForObservableQuery<MyNote[]>('location', query);
|
|
41
|
+
this._propertyChanges = new SortingActionsForObservableQuery<MyNote[]>('propertyChanges', query);
|
|
42
|
+
this._screen = new SortingActionsForObservableQuery<MyNote[]>('screen', query);
|
|
43
|
+
this._slices = new SortingActionsForObservableQuery<MyNote[]>('slices', query);
|
|
44
|
+
this._status = new SortingActionsForObservableQuery<MyNote[]>('status', query);
|
|
45
|
+
this._statusDetail = new SortingActionsForObservableQuery<MyNote[]>('statusDetail', query);
|
|
46
|
+
this._target = new SortingActionsForObservableQuery<MyNote[]>('target', query);
|
|
47
|
+
this._text = new SortingActionsForObservableQuery<MyNote[]>('text', query);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
get component(): SortingActionsForObservableQuery<MyNote[]> {
|
|
51
|
+
return this._component;
|
|
52
|
+
}
|
|
53
|
+
get givenAt(): SortingActionsForObservableQuery<MyNote[]> {
|
|
54
|
+
return this._givenAt;
|
|
55
|
+
}
|
|
56
|
+
get givenBy(): SortingActionsForObservableQuery<MyNote[]> {
|
|
57
|
+
return this._givenBy;
|
|
58
|
+
}
|
|
59
|
+
get id(): SortingActionsForObservableQuery<MyNote[]> {
|
|
60
|
+
return this._id;
|
|
61
|
+
}
|
|
62
|
+
get kind(): SortingActionsForObservableQuery<MyNote[]> {
|
|
63
|
+
return this._kind;
|
|
64
|
+
}
|
|
65
|
+
get lastActivityAt(): SortingActionsForObservableQuery<MyNote[]> {
|
|
66
|
+
return this._lastActivityAt;
|
|
67
|
+
}
|
|
68
|
+
get location(): SortingActionsForObservableQuery<MyNote[]> {
|
|
69
|
+
return this._location;
|
|
70
|
+
}
|
|
71
|
+
get propertyChanges(): SortingActionsForObservableQuery<MyNote[]> {
|
|
72
|
+
return this._propertyChanges;
|
|
73
|
+
}
|
|
74
|
+
get screen(): SortingActionsForObservableQuery<MyNote[]> {
|
|
75
|
+
return this._screen;
|
|
76
|
+
}
|
|
77
|
+
get slices(): SortingActionsForObservableQuery<MyNote[]> {
|
|
78
|
+
return this._slices;
|
|
79
|
+
}
|
|
80
|
+
get status(): SortingActionsForObservableQuery<MyNote[]> {
|
|
81
|
+
return this._status;
|
|
82
|
+
}
|
|
83
|
+
get statusDetail(): SortingActionsForObservableQuery<MyNote[]> {
|
|
84
|
+
return this._statusDetail;
|
|
85
|
+
}
|
|
86
|
+
get target(): SortingActionsForObservableQuery<MyNote[]> {
|
|
87
|
+
return this._target;
|
|
88
|
+
}
|
|
89
|
+
get text(): SortingActionsForObservableQuery<MyNote[]> {
|
|
90
|
+
return this._text;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
class MyNotesSortByWithoutQuery {
|
|
95
|
+
private _component: SortingActions = new SortingActions('component');
|
|
96
|
+
private _givenAt: SortingActions = new SortingActions('givenAt');
|
|
97
|
+
private _givenBy: SortingActions = new SortingActions('givenBy');
|
|
98
|
+
private _id: SortingActions = new SortingActions('id');
|
|
99
|
+
private _kind: SortingActions = new SortingActions('kind');
|
|
100
|
+
private _lastActivityAt: SortingActions = new SortingActions('lastActivityAt');
|
|
101
|
+
private _location: SortingActions = new SortingActions('location');
|
|
102
|
+
private _propertyChanges: SortingActions = new SortingActions('propertyChanges');
|
|
103
|
+
private _screen: SortingActions = new SortingActions('screen');
|
|
104
|
+
private _slices: SortingActions = new SortingActions('slices');
|
|
105
|
+
private _status: SortingActions = new SortingActions('status');
|
|
106
|
+
private _statusDetail: SortingActions = new SortingActions('statusDetail');
|
|
107
|
+
private _target: SortingActions = new SortingActions('target');
|
|
108
|
+
private _text: SortingActions = new SortingActions('text');
|
|
109
|
+
|
|
110
|
+
get component(): SortingActions {
|
|
111
|
+
return this._component;
|
|
112
|
+
}
|
|
113
|
+
get givenAt(): SortingActions {
|
|
114
|
+
return this._givenAt;
|
|
115
|
+
}
|
|
116
|
+
get givenBy(): SortingActions {
|
|
117
|
+
return this._givenBy;
|
|
118
|
+
}
|
|
119
|
+
get id(): SortingActions {
|
|
120
|
+
return this._id;
|
|
121
|
+
}
|
|
122
|
+
get kind(): SortingActions {
|
|
123
|
+
return this._kind;
|
|
124
|
+
}
|
|
125
|
+
get lastActivityAt(): SortingActions {
|
|
126
|
+
return this._lastActivityAt;
|
|
127
|
+
}
|
|
128
|
+
get location(): SortingActions {
|
|
129
|
+
return this._location;
|
|
130
|
+
}
|
|
131
|
+
get propertyChanges(): SortingActions {
|
|
132
|
+
return this._propertyChanges;
|
|
133
|
+
}
|
|
134
|
+
get screen(): SortingActions {
|
|
135
|
+
return this._screen;
|
|
136
|
+
}
|
|
137
|
+
get slices(): SortingActions {
|
|
138
|
+
return this._slices;
|
|
139
|
+
}
|
|
140
|
+
get status(): SortingActions {
|
|
141
|
+
return this._status;
|
|
142
|
+
}
|
|
143
|
+
get statusDetail(): SortingActions {
|
|
144
|
+
return this._statusDetail;
|
|
145
|
+
}
|
|
146
|
+
get target(): SortingActions {
|
|
147
|
+
return this._target;
|
|
148
|
+
}
|
|
149
|
+
get text(): SortingActions {
|
|
150
|
+
return this._text;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Observes the notes the signed-in user gave, in the current tenant, most recent activity first.
|
|
157
|
+
*/
|
|
158
|
+
export class MyNotes extends ObservableQueryFor<MyNote[]> {
|
|
159
|
+
static readonly sliceLocation: ArcSliceLocation = new ArcSliceLocation('', '', 'Listing');
|
|
160
|
+
readonly route: string = '/api/listing/my-notes';
|
|
161
|
+
readonly queryName: string = 'Cratis.Showrunner.Notes.Listing.MyNote.MyNotes';
|
|
162
|
+
readonly treatWarningsAsErrors: boolean = false;
|
|
163
|
+
readonly roles: string[] = [];
|
|
164
|
+
readonly defaultValue: MyNote[] = [];
|
|
165
|
+
private readonly _sortBy: MyNotesSortBy;
|
|
166
|
+
private static readonly _sortBy: MyNotesSortByWithoutQuery = new MyNotesSortByWithoutQuery();
|
|
167
|
+
|
|
168
|
+
constructor() {
|
|
169
|
+
super(MyNote, true);
|
|
170
|
+
this._sortBy = new MyNotesSortBy(this);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
get requiredRequestParameters(): string[] {
|
|
174
|
+
return [
|
|
175
|
+
];
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
readonly parameterDescriptors: ParameterDescriptor[] = [
|
|
179
|
+
];
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
get sortBy(): MyNotesSortBy {
|
|
183
|
+
return this._sortBy;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
static get sortBy(): MyNotesSortByWithoutQuery {
|
|
187
|
+
return this._sortBy;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
static use(sorting?: Sorting): [QueryResultWithState<MyNote[]>, SetSorting] {
|
|
191
|
+
return useObservableQuery<MyNote[], MyNotes>(MyNotes, undefined, sorting);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
static useWithPaging(pageSize: number, sorting?: Sorting): [QueryResultWithState<MyNote[]>, SetSorting, SetPage, SetPageSize] {
|
|
195
|
+
return useObservableQueryWithPaging<MyNote[], MyNotes>(MyNotes, new Paging(0, pageSize), undefined, sorting);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
static useSuspense(sorting?: Sorting): [QueryResultWithState<MyNote[]>, SetSorting] {
|
|
199
|
+
return useSuspenseObservableQuery<MyNote[], MyNotes>(MyNotes, undefined, sorting);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
static useSuspenseWithPaging(pageSize: number, sorting?: Sorting): [QueryResultWithState<MyNote[]>, SetSorting, SetPage, SetPageSize] {
|
|
203
|
+
return useSuspenseObservableQueryWithPaging<MyNote[], MyNotes>(MyNotes, new Paging(0, pageSize), undefined, sorting);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
static useChangeStream(getKey?: (item: MyNote) => unknown, sorting?: Sorting): ChangeSet<MyNote> {
|
|
207
|
+
return useChangeStream<MyNote, MyNotes>(MyNotes, undefined, getKey, sorting);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
static when(condition: boolean): ObservableQueryWhen<MyNotes, MyNote[]> {
|
|
211
|
+
return new ObservableQueryWhen<MyNotes, MyNote[]>(MyNotes, condition);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* One of the user's notes, as the list of their notes shows it, with where it is: given, acknowledged, addressed, declined or withdrawn.
|
|
217
|
+
*/
|
|
218
|
+
export class MyNote {
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* The note.
|
|
222
|
+
*/
|
|
223
|
+
@field(Guid)
|
|
224
|
+
id!: Guid;
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Who gave the note.
|
|
228
|
+
*/
|
|
229
|
+
@field(String)
|
|
230
|
+
givenBy!: string;
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* What the note is about.
|
|
234
|
+
*/
|
|
235
|
+
@field(Number)
|
|
236
|
+
target!: NoteTarget;
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* What kind of feedback it is.
|
|
240
|
+
*/
|
|
241
|
+
@field(Number)
|
|
242
|
+
kind!: NoteKind;
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* What the giver wrote; empty on a note that has suggested property changes only.
|
|
246
|
+
*/
|
|
247
|
+
@field(String)
|
|
248
|
+
text!: string;
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Where in the application the giver was.
|
|
252
|
+
*/
|
|
253
|
+
@field(SliceLocation)
|
|
254
|
+
location!: SliceLocation;
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* The screen the giver was on.
|
|
258
|
+
*/
|
|
259
|
+
@field(NoteScreen)
|
|
260
|
+
screen!: NoteScreen;
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* The slices the giver picked; empty unless the note is about slices.
|
|
264
|
+
*/
|
|
265
|
+
@field(SliceLocation, true)
|
|
266
|
+
slices!: SliceLocation[];
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* The name of the component the giver picked; {@link NotSet} unless the note is about a component.
|
|
270
|
+
*/
|
|
271
|
+
@field(String)
|
|
272
|
+
component!: string;
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* The property changes the giver suggested.
|
|
276
|
+
*/
|
|
277
|
+
@field(SuggestedPropertyChange, true)
|
|
278
|
+
propertyChanges!: SuggestedPropertyChange[];
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Where the note is.
|
|
282
|
+
*/
|
|
283
|
+
@field(Number)
|
|
284
|
+
status!: NoteStatus;
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* The version that addresses the note or why it is declined; empty otherwise.
|
|
288
|
+
*/
|
|
289
|
+
@field(String)
|
|
290
|
+
statusDetail!: string;
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* When the giver gave it.
|
|
294
|
+
*/
|
|
295
|
+
@field(Date)
|
|
296
|
+
givenAt!: Date;
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* When anything last happened on it.
|
|
300
|
+
*/
|
|
301
|
+
@field(Date)
|
|
302
|
+
lastActivityAt!: Date;
|
|
303
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
// **DO NOT EDIT** - This file is an automatically generated file.
|
|
5
|
+
// @generated by Cratis. Source: Cratis.Showrunner.Notes.Listing.NoteStatus. Time: 2026-11-01T11:55:12.6707473Z. Hash: 8A4EB1CDFDCC33226EDCA2C905DF131D826F8B88D67FAA027E76B9CEBAF7BB0B
|
|
6
|
+
/**
|
|
7
|
+
* Where a note is, as the giver sees it.
|
|
8
|
+
*/
|
|
9
|
+
export enum NoteStatus {
|
|
10
|
+
given = 0,
|
|
11
|
+
acknowledged = 1,
|
|
12
|
+
addressed = 2,
|
|
13
|
+
declined = 3,
|
|
14
|
+
withdrawn = 4,
|
|
15
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
// **DO NOT EDIT** - This file is an automatically generated file.
|
|
5
|
+
// @generated by Cratis. Source: Cratis.Showrunner.Notes.Listing.NoteTarget. Time: 2026-11-01T11:55:12.6707473Z. Hash: D3CEBE50C47D6F88D67A3005BEFAB6B0794F6B872FB64C0108B8B94B3B5B4585
|
|
6
|
+
/**
|
|
7
|
+
* What a note is about.
|
|
8
|
+
*/
|
|
9
|
+
export enum NoteTarget {
|
|
10
|
+
context = 0,
|
|
11
|
+
slices = 1,
|
|
12
|
+
screen = 2,
|
|
13
|
+
component = 3,
|
|
14
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
// **DO NOT EDIT** - This file is an automatically generated file.
|
|
5
|
+
// @generated by Cratis. Source: Cratis.Showrunner.Notes.Listing.SuggestedPropertyChange. Time: 2026-11-01T11:55:12.6707473Z. Hash: 12DABFA7B05F41B5A25C6FEB38D618AC0FFF2E30C1C4637FD08A8E4212F95C5E
|
|
6
|
+
import { field } from '@cratis/fundamentals';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A presentation property change the giver suggested on a note.
|
|
10
|
+
*/
|
|
11
|
+
export class SuggestedPropertyChange {
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The property.
|
|
15
|
+
*/
|
|
16
|
+
@field(String)
|
|
17
|
+
property!: string;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The value it has.
|
|
21
|
+
*/
|
|
22
|
+
@field(String)
|
|
23
|
+
currentValue!: string;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The value the giver suggests.
|
|
27
|
+
*/
|
|
28
|
+
@field(String)
|
|
29
|
+
suggestedValue!: string;
|
|
30
|
+
}
|
package/Listing/index.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
export * from './MyNote';
|
|
5
|
+
export * from './NoteStatus';
|
|
6
|
+
export * from './NoteTarget';
|
|
7
|
+
export * from './SuggestedPropertyChange';
|
package/README.md
CHANGED
|
@@ -1,3 +1,87 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Showrunner
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> Showrunner is a set of ready-made product parts for applications built on [Cratis](https://www.cratis.io) — drop-in backend and frontend packages, built as Arc and Chronicle vertical slices.
|
|
4
|
+
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](https://github.com/Cratis/Showrunner/actions/workflows/build.yml)
|
|
7
|
+
[](https://github.com/Cratis/Showrunner/actions/workflows/publish.yml)
|
|
8
|
+
[](https://discord.gg/kt4AMpV8WV)
|
|
9
|
+
|
|
10
|
+
## Usher
|
|
11
|
+
|
|
12
|
+
**Usher** is the support part: it lets the users of an application report issues and hold support conversations with the people running it. It is a library an application hosts, not a service of its own — the backend package adds Usher's commands, queries and events to the host's Arc application and Chronicle event store, and the frontend packages give the host's React UI the generated proxies and components to drive them.
|
|
13
|
+
|
|
14
|
+
Usher covers reporting an issue, error capture, the conversation, time-limited support access through AuthProxy's on-behalf sessions and the exchange of events with a desk; see [Documentation](./Documentation/Usher/index.md).
|
|
15
|
+
|
|
16
|
+
**Box Office** is the licensing part: trials, seats, modules, compute allowances and suspension, decided by the operator of a managed product and honored by the product. Its event contracts, its catalog of offers and prices, and a product's offering declaration and compute metering are in place; see [Documentation](./Documentation/BoxOffice/index.md).
|
|
17
|
+
|
|
18
|
+
**Marquee** is the announcements part: the people running a product write an announcement with an audience, a display and an exact window, and the product shows it to the people it reaches, as a banner or a dialog. Drop `<Marquee />` into the application shell and it brings its own queries and commands; see [Documentation](./Documentation/Marquee/index.md).
|
|
19
|
+
|
|
20
|
+
**Notes** is the product feedback part: the users of an application give a note about what they are looking at — the slice, the screen or a single component — and the people building the application receive it as events and answer it. The application hosts `Cratis.Showrunner.Notes`, the builder hosts `Cratis.Showrunner.Notes.Collecting`; see [Documentation](./Documentation/Notes/index.md).
|
|
21
|
+
|
|
22
|
+
**Herald** is the email part: an application asks it to send an email of a kind, such as an invitation, and it fills the template for that kind and language, makes the HTML safe for email clients, embeds the images, sends it over SMTP and records the outcome. Failed sends are queued and retried; see [Documentation](./Documentation/Herald/index.md).
|
|
23
|
+
|
|
24
|
+
**Stage Manager** is the Kubernetes operator. Unlike the other parts it is a service you install with the `cratis/showrunner-operator` Helm chart: a `Performance` runs an application, or a published Stage application, with its AuthProxy and its own Ante from a Cratis environment, reachable only through AuthProxy; see [Documentation](./Documentation/StageManager/index.md).
|
|
25
|
+
|
|
26
|
+
## Packages
|
|
27
|
+
|
|
28
|
+
| Package | Registry | What it is |
|
|
29
|
+
| --- | --- | --- |
|
|
30
|
+
| `Cratis.Showrunner.BoxOffice.Catalog` | NuGet | Box Office's catalog — offers (seat plans, modules, compute packs), prices and the pricing arithmetic, published to products |
|
|
31
|
+
| `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 |
|
|
32
|
+
| `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 |
|
|
33
|
+
| `Cratis.Showrunner.BoxOffice.Contracts` | NuGet | Box Office's event contracts: what an operator decides about a tenant and what a product reports back |
|
|
34
|
+
| `Cratis.Showrunner.Herald.Contracts` | NuGet | Herald's event contracts: the facts recorded when an email was sent, failed or bounced |
|
|
35
|
+
| `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
|
+
| `cratis/showrunner-operator` | Docker Hub, Helm (OCI) | Stage Manager, the Kubernetes operator, as a container image and a Helm chart released with the same version |
|
|
37
|
+
| `Cratis.Showrunner.Usher.Contracts` | NuGet | Usher's event contracts, for hosts that react to what Usher records |
|
|
38
|
+
| `Cratis.Showrunner.Marquee.Contracts` | NuGet | Marquee's event contracts: the public events a product receives announcements through |
|
|
39
|
+
| `Cratis.Showrunner.Marquee.Authoring` | NuGet | Marquee's authoring backend — commands, query and outbox for writing announcements, built on Arc and Chronicle |
|
|
40
|
+
| `Cratis.Showrunner.Marquee` | NuGet | Marquee's backend for products — receives announcements once, shows each tenant what its audience matches and records acknowledgements |
|
|
41
|
+
| `Cratis.Showrunner.Usher` | NuGet | Usher's backend — Arc commands and queries over Chronicle |
|
|
42
|
+
| `Cratis.Showrunner.Notes.Contracts` | NuGet | Notes' event contracts: the public events an application and the people building it exchange about product feedback |
|
|
43
|
+
| `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 |
|
|
44
|
+
| `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 |
|
|
45
|
+
| `@cratis/showrunner.marquee` | npm | The generated TypeScript proxies for Marquee's receiving commands and queries; no UI framework dependency |
|
|
46
|
+
| `@cratis/showrunner.marquee.authoring` | npm | The generated TypeScript proxies for Marquee's authoring commands and query; no UI framework dependency |
|
|
47
|
+
| `@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` |
|
|
48
|
+
| `@cratis/showrunner.usher` | npm | The generated TypeScript proxies for Usher's commands and queries; no UI framework dependency |
|
|
49
|
+
| `@cratis/showrunner.usher.react` | npm | React components for Usher, built on `@cratis/arc.react` and `@cratis/components` |
|
|
50
|
+
| `@cratis/showrunner.notes` | npm | The generated TypeScript proxies for Notes' commands and queries; no UI framework dependency |
|
|
51
|
+
| `@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` |
|
|
52
|
+
|
|
53
|
+
## Building
|
|
54
|
+
|
|
55
|
+
Prerequisites: the .NET SDK from [`global.json`](./global.json) (10.0.400 or later) and Node.js 20 or later with Corepack enabled (`corepack enable`); Yarn itself is checked in under `.yarn/releases`.
|
|
56
|
+
|
|
57
|
+
```shell
|
|
58
|
+
# Backend: Debug builds compile the inline specs and regenerate the TypeScript proxies
|
|
59
|
+
dotnet build Showrunner.slnx --configuration Debug
|
|
60
|
+
dotnet test Showrunner.slnx --configuration Debug --no-build
|
|
61
|
+
|
|
62
|
+
# Release is warnings-as-errors; clearing CratisProxiesOutputPath skips proxy generation
|
|
63
|
+
dotnet build Showrunner.slnx --configuration Release -p:CratisProxiesOutputPath=
|
|
64
|
+
|
|
65
|
+
# Frontend
|
|
66
|
+
yarn install
|
|
67
|
+
yarn lint:ci
|
|
68
|
+
yarn compile
|
|
69
|
+
yarn test
|
|
70
|
+
yarn build
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
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.
|
|
74
|
+
|
|
75
|
+
The end-to-end specifications in [`Integration`](./Integration) run Usher and a desk against a real Chronicle kernel in a container, so `dotnet test Showrunner.slnx` needs Docker. The end-to-end specifications for Notes in [`Integration.Notes`](./Integration.Notes) run an application and a collecting host the same way, sharing Usher's kernel container. Set `USHER_CHRONICLE_IMAGE` to run them against another kernel image, and `USHER_INTEGRATION_LOG` to a file path to keep the application's log.
|
|
76
|
+
|
|
77
|
+
## Releasing
|
|
78
|
+
|
|
79
|
+
Every pull request carries exactly one of the `major`, `minor`, `patch` or `no-release` labels. Merging a version-labelled pull request to `main` releases all four packages under one semantic version through [`cratis/release-action`](https://github.com/Cratis/release-action) — NuGet packages through NuGet trusted publishing and npm packages through npm trusted publishing with provenance. The packages are built and packed in jobs without publishing rights; separate jobs that run no build or install script hold the short-lived OIDC token and only push what was packed.
|
|
80
|
+
|
|
81
|
+
## Part of the Cratis ecosystem
|
|
82
|
+
|
|
83
|
+
Showrunner is a [Cratis](https://www.cratis.io) project, built on event sourcing with [Chronicle](https://github.com/Cratis/Chronicle) and CQRS with [Arc](https://github.com/Cratis/Arc), with frontends on [`@cratis/components`](https://github.com/Cratis/Components). Join the community on [Discord](https://discord.gg/kt4AMpV8WV).
|
|
84
|
+
|
|
85
|
+
## License
|
|
86
|
+
|
|
87
|
+
Showrunner is licensed under the [MIT License](LICENSE) and free to use.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
// **DO NOT EDIT** - This file is an automatically generated file.
|
|
5
|
+
// @generated by Cratis. Source: Cratis.Showrunner.Notes.Withdrawing.WithdrawNote.WithdrawNote. Time: 2026-11-01T11:55:12.6707473Z. Hash: 6187372217CAB22FD8266A2E14512A47E2170C4FB9DF46D463F85BDBBF911481
|
|
6
|
+
import { Command } from '@cratis/arc/commands';
|
|
7
|
+
import { ClearCommandValues, SetCommandValues, useCommand } from '@cratis/arc.react/commands';
|
|
8
|
+
import { SliceLocation as ArcSliceLocation, PropertyDescriptor } from '@cratis/arc/reflection';
|
|
9
|
+
import { Guid } from '@cratis/fundamentals';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The giver withdraws one of their notes; the people building the application no longer need to act on it.
|
|
13
|
+
*/
|
|
14
|
+
export interface IWithdrawNote {
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The note to withdraw.
|
|
18
|
+
*/
|
|
19
|
+
noteId?: Guid;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The giver withdraws one of their notes; the people building the application no longer need to act on it.
|
|
25
|
+
*/
|
|
26
|
+
export class WithdrawNote extends Command<IWithdrawNote> implements IWithdrawNote {
|
|
27
|
+
static readonly sliceLocation: ArcSliceLocation = new ArcSliceLocation('', 'Withdrawing', 'WithdrawNote');
|
|
28
|
+
readonly route: string = '/api/withdrawing/withdraw-note';
|
|
29
|
+
readonly treatWarningsAsErrors: boolean = false;
|
|
30
|
+
readonly roles: string[] = [];
|
|
31
|
+
readonly propertyDescriptors: PropertyDescriptor[] = [
|
|
32
|
+
new PropertyDescriptor('noteId', Guid, false),
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
#noteId!: Guid;
|
|
36
|
+
|
|
37
|
+
constructor() {
|
|
38
|
+
super(Object, false);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
get requestParameters(): string[] {
|
|
42
|
+
return [
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* The note to withdraw.
|
|
48
|
+
*/
|
|
49
|
+
get noteId(): Guid {
|
|
50
|
+
return this.#noteId;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
set noteId(value: Guid) {
|
|
54
|
+
this.#noteId = value;
|
|
55
|
+
this.propertyChanged('noteId');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
static use(initialValues?: IWithdrawNote): [WithdrawNote, SetCommandValues<IWithdrawNote>, ClearCommandValues] {
|
|
59
|
+
return useCommand<WithdrawNote, IWithdrawNote>(WithdrawNote, initialValues);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { QueryFor, QueryResultWithState } from '@cratis/arc/queries';
|
|
2
|
+
import { PerformQuery, QueryWhen, SetSorting } from '@cratis/arc.react/queries';
|
|
3
|
+
import { SliceLocation as ArcSliceLocation, ParameterDescriptor } from '@cratis/arc/reflection';
|
|
4
|
+
export declare class Availability extends QueryFor<NotesAvailability> {
|
|
5
|
+
static readonly sliceLocation: ArcSliceLocation;
|
|
6
|
+
readonly route: string;
|
|
7
|
+
readonly queryName: string;
|
|
8
|
+
readonly treatWarningsAsErrors: boolean;
|
|
9
|
+
readonly roles: string[];
|
|
10
|
+
readonly defaultValue: NotesAvailability;
|
|
11
|
+
constructor();
|
|
12
|
+
get requiredRequestParameters(): string[];
|
|
13
|
+
readonly parameterDescriptors: ParameterDescriptor[];
|
|
14
|
+
static use(): [QueryResultWithState<NotesAvailability>, PerformQuery, SetSorting];
|
|
15
|
+
static useSuspense(): [QueryResultWithState<NotesAvailability>, PerformQuery, SetSorting];
|
|
16
|
+
static when(condition: boolean): QueryWhen<Availability, NotesAvailability>;
|
|
17
|
+
}
|
|
18
|
+
export declare class NotesAvailability {
|
|
19
|
+
isEnabled: boolean;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=NotesAvailability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotesAvailability.d.ts","sourceRoot":"","sources":["../../../Availability/NotesAvailability.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAA8B,MAAM,2BAA2B,CAAC;AAC5G,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAMhG,qBAAa,YAAa,SAAQ,QAAQ,CAAC,iBAAiB,CAAC;IACzD,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAgD;IAC/F,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAoC;IAC1D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAyE;IACnG,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAS;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAM;IAC9B,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAA2B;;IAMnE,IAAI,yBAAyB,IAAI,MAAM,EAAE,CAGxC;IAED,QAAQ,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,CAClD;IAIF,MAAM,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC;IAIjF,MAAM,CAAC,WAAW,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC;IAIzF,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC,YAAY,EAAE,iBAAiB,CAAC;CAG9E;AAKD,qBAAa,iBAAiB;IAM1B,SAAS,EAAG,OAAO,CAAC;CACvB"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var queries = require('@cratis/arc/queries');
|
|
4
|
+
var queries$1 = require('@cratis/arc.react/queries');
|
|
5
|
+
var reflection = require('@cratis/arc/reflection');
|
|
6
|
+
var fundamentals = require('@cratis/fundamentals');
|
|
7
|
+
|
|
8
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
9
|
+
var c = arguments.length, r = c < 3 ? target : desc, d;
|
|
10
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") {
|
|
11
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
12
|
+
} else {
|
|
13
|
+
for(var i = decorators.length - 1; i >= 0; i--){
|
|
14
|
+
if (d = decorators[i]) {
|
|
15
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
20
|
+
}
|
|
21
|
+
function _ts_metadata(metadataKey, metadataValue) {
|
|
22
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") {
|
|
23
|
+
return Reflect.metadata(metadataKey, metadataValue);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Gets whether Notes is switched on. It is the same answer for everyone, so it needs no sign-in: the button shows only to a signed-in user anyway, and the commands refuse everyone else.
|
|
28
|
+
*/ class Availability extends queries.QueryFor {
|
|
29
|
+
static sliceLocation = new reflection.SliceLocation('', '', 'Availability');
|
|
30
|
+
route = '/api/availability/availability';
|
|
31
|
+
queryName = 'Cratis.Showrunner.Notes.Availability.NotesAvailability.Availability';
|
|
32
|
+
treatWarningsAsErrors = false;
|
|
33
|
+
roles = [];
|
|
34
|
+
defaultValue = {};
|
|
35
|
+
constructor(){
|
|
36
|
+
super(NotesAvailability, false);
|
|
37
|
+
}
|
|
38
|
+
get requiredRequestParameters() {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
parameterDescriptors = [];
|
|
42
|
+
static use() {
|
|
43
|
+
return queries$1.useQuery(Availability);
|
|
44
|
+
}
|
|
45
|
+
static useSuspense() {
|
|
46
|
+
return queries$1.useSuspenseQuery(Availability);
|
|
47
|
+
}
|
|
48
|
+
static when(condition) {
|
|
49
|
+
return new queries$1.QueryWhen(Availability, condition);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Whether Notes is switched on in the application. The feedback button renders only when it is.
|
|
54
|
+
*/ class NotesAvailability {
|
|
55
|
+
/**
|
|
56
|
+
* Whether the host switched Notes on.
|
|
57
|
+
*/ isEnabled;
|
|
58
|
+
}
|
|
59
|
+
_ts_decorate([
|
|
60
|
+
fundamentals.field(Boolean),
|
|
61
|
+
_ts_metadata("design:type", Boolean)
|
|
62
|
+
], NotesAvailability.prototype, "isEnabled", void 0);
|
|
63
|
+
|
|
64
|
+
exports.Availability = Availability;
|
|
65
|
+
exports.NotesAvailability = NotesAvailability;
|
|
66
|
+
//# sourceMappingURL=NotesAvailability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotesAvailability.js","sources":["../../../Availability/NotesAvailability.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n// **DO NOT EDIT** - This file is an automatically generated file.\n// @generated by Cratis. Source: Cratis.Showrunner.Notes.Availability.NotesAvailability, Cratis.Showrunner.Notes.Availability.NotesAvailability. Time: 2026-11-01T11:55:12.6707473Z. Hash: 7D28D58AEA837A3CBE5F66D04986F5BD5F4F7F950F141F37B794A04B3F6A7781\nimport { QueryFor, QueryResultWithState } from '@cratis/arc/queries';\nimport { PerformQuery, QueryWhen, SetSorting, useQuery, useSuspenseQuery } from '@cratis/arc.react/queries';\nimport { SliceLocation as ArcSliceLocation, ParameterDescriptor } from '@cratis/arc/reflection';\nimport { field } from '@cratis/fundamentals';\n\n/**\n * Gets whether Notes is switched on. It is the same answer for everyone, so it needs no sign-in: the button shows only to a signed-in user anyway, and the commands refuse everyone else.\n */\nexport class Availability extends QueryFor<NotesAvailability> {\n static readonly sliceLocation: ArcSliceLocation = new ArcSliceLocation('', '', 'Availability');\n readonly route: string = '/api/availability/availability';\n readonly queryName: string = 'Cratis.Showrunner.Notes.Availability.NotesAvailability.Availability';\n readonly treatWarningsAsErrors: boolean = false;\n readonly roles: string[] = [];\n readonly defaultValue: NotesAvailability = {} as NotesAvailability;\n\n constructor() {\n super(NotesAvailability, false);\n }\n\n get requiredRequestParameters(): string[] {\n return [\n ];\n }\n\n readonly parameterDescriptors: ParameterDescriptor[] = [\n ];\n\n\n\n static use(): [QueryResultWithState<NotesAvailability>, PerformQuery, SetSorting] {\n return useQuery<NotesAvailability, Availability>(Availability);\n }\n\n static useSuspense(): [QueryResultWithState<NotesAvailability>, PerformQuery, SetSorting] {\n return useSuspenseQuery<NotesAvailability, Availability>(Availability);\n }\n\n static when(condition: boolean): QueryWhen<Availability, NotesAvailability> {\n return new QueryWhen<Availability, NotesAvailability>(Availability, condition);\n }\n}\n\n/**\n * Whether Notes is switched on in the application. The feedback button renders only when it is.\n */\nexport class NotesAvailability {\n\n /**\n * Whether the host switched Notes on.\n */\n @field(Boolean)\n isEnabled!: boolean;\n}\n"],"names":["Availability","QueryFor","sliceLocation","ArcSliceLocation","route","queryName","treatWarningsAsErrors","roles","defaultValue","NotesAvailability","requiredRequestParameters","parameterDescriptors","use","useQuery","useSuspense","useSuspenseQuery","when","condition","QueryWhen","isEnabled"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAUA;;IAGO,MAAMA,YAAAA,SAAqBC,gBAAAA,CAAAA;AAC9B,IAAA,OAAgBC,aAAAA,GAAkC,IAAIC,wBAAAA,CAAiB,EAAA,EAAI,IAAI,cAAA,CAAA;AACtEC,IAAAA,KAAAA,GAAgB,gCAAA;AAChBC,IAAAA,SAAAA,GAAoB,qEAAA;AACpBC,IAAAA,qBAAAA,GAAiC,KAAA;AACjCC,IAAAA,KAAAA,GAAkB,EAAE;AACpBC,IAAAA,YAAAA,GAAkC,EAAC;IAE5C,WAAA,EAAc;AACV,QAAA,KAAK,CAACC,iBAAAA,EAAmB,KAAA,CAAA;AAC7B,IAAA;AAEA,IAAA,IAAIC,yBAAAA,GAAsC;AACtC,QAAA,OAAO,EACN;AACL,IAAA;AAESC,IAAAA,oBAAAA,GAA8C,EACtD;AAID,IAAA,OAAOC,GAAAA,GAA2E;AAC9E,QAAA,OAAOC,kBAAAA,CAA0Cb,YAAAA,CAAAA;AACrD,IAAA;AAEA,IAAA,OAAOc,WAAAA,GAAmF;AACtF,QAAA,OAAOC,0BAAAA,CAAkDf,YAAAA,CAAAA;AAC7D,IAAA;IAEA,OAAOgB,IAAAA,CAAKC,SAAkB,EAA8C;QACxE,OAAO,IAAIC,oBAA2ClB,YAAAA,EAAciB,SAAAA,CAAAA;AACxE,IAAA;AACJ;AAEA;;AAEC,IACM,MAAMR,iBAAAA,CAAAA;AAET;;AAEC,QACD,SACAU;AACJ;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../Availability/index.ts"],"names":[],"mappings":"AAGA,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SliceLocation } from '../Reporting/SliceLocation';
|
|
2
|
+
export declare class PickedComponent {
|
|
3
|
+
componentName: string;
|
|
4
|
+
componentId: string;
|
|
5
|
+
part: string;
|
|
6
|
+
ancestors: string[];
|
|
7
|
+
location: SliceLocation;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=PickedComponent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PickedComponent.d.ts","sourceRoot":"","sources":["../../../../Contracts/Components/PickedComponent.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAK3D,qBAAa,eAAe;IAMxB,aAAa,EAAG,MAAM,CAAC;IAMvB,WAAW,EAAG,MAAM,CAAC;IAMrB,IAAI,EAAG,MAAM,CAAC;IAMd,SAAS,EAAG,MAAM,EAAE,CAAC;IAMrB,QAAQ,EAAG,aAAa,CAAC;CAC5B"}
|