@finos/legend-application 15.0.75 → 15.1.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/lib/application/LegendApplication.d.ts +5 -1
- package/lib/application/LegendApplication.d.ts.map +1 -1
- package/lib/application/LegendApplication.js +13 -1
- package/lib/application/LegendApplication.js.map +1 -1
- package/lib/application/LegendApplicationConfig.d.ts.map +1 -1
- package/lib/application/LegendApplicationConfig.js.map +1 -1
- package/lib/components/ActionAlert.js.map +1 -1
- package/lib/components/ApplicationComponentFrameworkProvider.d.ts.map +1 -1
- package/lib/components/ApplicationComponentFrameworkProvider.js +14 -13
- package/lib/components/ApplicationComponentFrameworkProvider.js.map +1 -1
- package/lib/components/ApplicationFrameworkProvider.js.map +1 -1
- package/lib/components/ApplicationStoreProvider.d.ts.map +1 -1
- package/lib/components/BlockingAlert.js.map +1 -1
- package/lib/components/NotificationManager.js.map +1 -1
- package/lib/components/ReleaseNotesManager.d.ts +28 -0
- package/lib/components/ReleaseNotesManager.d.ts.map +1 -0
- package/lib/components/ReleaseNotesManager.js +82 -0
- package/lib/components/ReleaseNotesManager.js.map +1 -0
- package/lib/components/VirtualAssistant.d.ts.map +1 -1
- package/lib/components/VirtualAssistant.js +3 -0
- package/lib/components/VirtualAssistant.js.map +1 -1
- package/lib/components/useApplicationNavigationContext.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/package.json +11 -11
- package/lib/stores/AlertService.js.map +1 -1
- package/lib/stores/ApplicationNavigationContextService.js.map +1 -1
- package/lib/stores/ApplicationStore.d.ts +2 -0
- package/lib/stores/ApplicationStore.d.ts.map +1 -1
- package/lib/stores/ApplicationStore.js +4 -0
- package/lib/stores/ApplicationStore.js.map +1 -1
- package/lib/stores/AssistantService.js.map +1 -1
- package/lib/stores/ClipboardService.js.map +1 -1
- package/lib/stores/CommandService.js.map +1 -1
- package/lib/stores/DocumentationService.js.map +1 -1
- package/lib/stores/KeyboardShortcutsService.js.map +1 -1
- package/lib/stores/LayoutService.js.map +1 -1
- package/lib/stores/NotificationService.d.ts +2 -2
- package/lib/stores/NotificationService.d.ts.map +1 -1
- package/lib/stores/NotificationService.js.map +1 -1
- package/lib/stores/ReleaseNotesService.d.ts +47 -0
- package/lib/stores/ReleaseNotesService.d.ts.map +1 -0
- package/lib/stores/ReleaseNotesService.js +68 -0
- package/lib/stores/ReleaseNotesService.js.map +1 -0
- package/lib/stores/SettingService.js.map +1 -1
- package/lib/stores/TimeService.js.map +1 -1
- package/lib/stores/UserDataService.js.map +1 -1
- package/lib/stores/navigation/BrowserNavigator.js.map +1 -1
- package/lib/stores/platform/BrowserPlatform.js.map +1 -1
- package/lib/stores/storage/StorageService.js.map +1 -1
- package/lib/stores/terminal/Terminal.d.ts +1 -1
- package/lib/stores/terminal/Terminal.d.ts.map +1 -1
- package/lib/stores/terminal/XTerm.js +4 -4
- package/lib/stores/terminal/XTerm.js.map +1 -1
- package/lib/util/DownloadHelperServiceWorker.js.map +1 -1
- package/package.json +14 -14
- package/src/application/LegendApplication.ts +21 -1
- package/src/application/LegendApplicationConfig.ts +0 -1
- package/src/components/ApplicationComponentFrameworkProvider.tsx +6 -0
- package/src/components/ReleaseNotesManager.tsx +247 -0
- package/src/components/VirtualAssistant.tsx +3 -0
- package/src/index.ts +1 -0
- package/src/stores/ApplicationStore.ts +5 -0
- package/src/stores/ReleaseNotesService.ts +104 -0
- package/src/stores/terminal/XTerm.ts +2 -2
- package/tsconfig.json +19 -1
- package/tsconfig.package.json +17 -1
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2020-present, Goldman Sachs
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { observer } from 'mobx-react-lite';
|
|
18
|
+
import { useApplicationStore } from './ApplicationStoreProvider.js';
|
|
19
|
+
import {
|
|
20
|
+
ArrowCircleUpIcon,
|
|
21
|
+
BugIcon,
|
|
22
|
+
Dialog,
|
|
23
|
+
Modal,
|
|
24
|
+
ModalBody,
|
|
25
|
+
ModalFooter,
|
|
26
|
+
ModalFooterButton,
|
|
27
|
+
ModalHeader,
|
|
28
|
+
ShareIcon,
|
|
29
|
+
clsx,
|
|
30
|
+
} from '@finos/legend-art';
|
|
31
|
+
import {
|
|
32
|
+
RELEASE_UPDATE_TYPE,
|
|
33
|
+
type ReleaseNote,
|
|
34
|
+
type VersionReleaseNotes,
|
|
35
|
+
} from '../stores/ReleaseNotesService.js';
|
|
36
|
+
import {
|
|
37
|
+
isValidUrl,
|
|
38
|
+
prettyCONSTName,
|
|
39
|
+
returnUndefOnError,
|
|
40
|
+
} from '@finos/legend-shared';
|
|
41
|
+
|
|
42
|
+
const ReleaseNoteViewer = observer((props: { note: ReleaseNote }) => {
|
|
43
|
+
const { note } = props;
|
|
44
|
+
const applicationStore = useApplicationStore();
|
|
45
|
+
const isBug = note.type === RELEASE_UPDATE_TYPE.BUG_FIX;
|
|
46
|
+
const visitLink = (): void => {
|
|
47
|
+
if (note.docLink && isValidUrl(note.docLink)) {
|
|
48
|
+
applicationStore.navigationService.navigator.visitAddress(note.docLink);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
return (
|
|
53
|
+
<div className="release-viewer__update__item" key={note.description}>
|
|
54
|
+
<div
|
|
55
|
+
className={clsx('release-viewer__update__item-btn', {
|
|
56
|
+
'release-viewer__update__item-btn-bug': isBug,
|
|
57
|
+
})}
|
|
58
|
+
>
|
|
59
|
+
{isBug ? <BugIcon /> : <ArrowCircleUpIcon />}
|
|
60
|
+
</div>
|
|
61
|
+
<div className="release-viewer__update__description">
|
|
62
|
+
{note.description}
|
|
63
|
+
</div>
|
|
64
|
+
{note.docLink && (
|
|
65
|
+
<div className="release-viewer__update__link">
|
|
66
|
+
<button
|
|
67
|
+
className="release-viewer__update__link-btn"
|
|
68
|
+
title="Visit..."
|
|
69
|
+
onClick={visitLink}
|
|
70
|
+
>
|
|
71
|
+
<ShareIcon />
|
|
72
|
+
</button>
|
|
73
|
+
</div>
|
|
74
|
+
)}
|
|
75
|
+
</div>
|
|
76
|
+
);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
export const ReleaseViewer = observer(
|
|
80
|
+
(props: { releaseNotes: VersionReleaseNotes }) => {
|
|
81
|
+
const { releaseNotes } = props;
|
|
82
|
+
const enhancements =
|
|
83
|
+
releaseNotes.notes?.filter(
|
|
84
|
+
(r) => r.type === RELEASE_UPDATE_TYPE.ENHANCEMENT,
|
|
85
|
+
) ?? [];
|
|
86
|
+
const bugFixes =
|
|
87
|
+
releaseNotes.notes?.filter(
|
|
88
|
+
(r) => r.type === RELEASE_UPDATE_TYPE.BUG_FIX,
|
|
89
|
+
) ?? [];
|
|
90
|
+
|
|
91
|
+
return (
|
|
92
|
+
<div className="release-viewer">
|
|
93
|
+
<div className="release-viewer__version">
|
|
94
|
+
Version {releaseNotes.label ?? releaseNotes.version}
|
|
95
|
+
</div>
|
|
96
|
+
<div className="release-viewer__content">
|
|
97
|
+
{Boolean(enhancements.length) && (
|
|
98
|
+
<div className="release-viewer__update">
|
|
99
|
+
<div className="release-viewer__update-type">ENHANCEMENTS</div>
|
|
100
|
+
<div className="release-viewer__update__items">
|
|
101
|
+
{enhancements.map((e) => (
|
|
102
|
+
<ReleaseNoteViewer note={e} key={e.description} />
|
|
103
|
+
))}
|
|
104
|
+
</div>
|
|
105
|
+
</div>
|
|
106
|
+
)}
|
|
107
|
+
{Boolean(bugFixes.length) && (
|
|
108
|
+
<div className="release-viewer__update">
|
|
109
|
+
<div className="release-viewer__update-type">BUG FIXES</div>
|
|
110
|
+
<div className="release-viewer__update__items">
|
|
111
|
+
{bugFixes.map((e) => (
|
|
112
|
+
<ReleaseNoteViewer note={e} key={e.description} />
|
|
113
|
+
))}
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
)}
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
);
|
|
120
|
+
},
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
export const ReleaseNotesManager = observer(() => {
|
|
124
|
+
const applicationStore = useApplicationStore();
|
|
125
|
+
const releaseService = applicationStore.releaseNotesService;
|
|
126
|
+
const releaseNotes = releaseService.releaseNotes;
|
|
127
|
+
const version = applicationStore.config.appVersion;
|
|
128
|
+
const currentVersion = releaseNotes?.find((r) => r.version === version);
|
|
129
|
+
const storage = returnUndefOnError(() => releaseService.getViewedVersions());
|
|
130
|
+
const isOpen = releaseService.showCurrentReleaseModal;
|
|
131
|
+
if (
|
|
132
|
+
!releaseService.isConfigured ||
|
|
133
|
+
!isOpen ||
|
|
134
|
+
!currentVersion ||
|
|
135
|
+
storage === version
|
|
136
|
+
) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const closeModal = (): void => {
|
|
141
|
+
releaseService.updateViewedVersion(currentVersion.version);
|
|
142
|
+
releaseService.setShowCurrentRelease(false);
|
|
143
|
+
};
|
|
144
|
+
const title = `Legend ${prettyCONSTName(
|
|
145
|
+
applicationStore.config.appName,
|
|
146
|
+
)} has been upgraded !`;
|
|
147
|
+
return (
|
|
148
|
+
<Dialog
|
|
149
|
+
open={isOpen}
|
|
150
|
+
onClose={closeModal}
|
|
151
|
+
classes={{
|
|
152
|
+
root: 'release-notes__root-container',
|
|
153
|
+
container: 'release-notes__container',
|
|
154
|
+
}}
|
|
155
|
+
>
|
|
156
|
+
<Modal
|
|
157
|
+
darkMode={
|
|
158
|
+
!applicationStore.layoutService.TEMPORARY__isLightColorThemeEnabled
|
|
159
|
+
}
|
|
160
|
+
className="editor-modal release-notes__dialog"
|
|
161
|
+
>
|
|
162
|
+
<ModalHeader
|
|
163
|
+
className="release-notes__dialog__header__title"
|
|
164
|
+
title={title}
|
|
165
|
+
/>
|
|
166
|
+
|
|
167
|
+
<ModalBody className="release-notes__dialog__body">
|
|
168
|
+
<div className="release-notes__dialog__content">
|
|
169
|
+
<div className="release-notes__dialog__content__title">
|
|
170
|
+
New features, enhancements and bug fixess that were released
|
|
171
|
+
</div>
|
|
172
|
+
<ReleaseViewer releaseNotes={currentVersion} />
|
|
173
|
+
</div>
|
|
174
|
+
</ModalBody>
|
|
175
|
+
<ModalFooter>
|
|
176
|
+
<ModalFooterButton
|
|
177
|
+
className="modal__footer__close-btn"
|
|
178
|
+
onClick={closeModal}
|
|
179
|
+
type={'primary'}
|
|
180
|
+
>
|
|
181
|
+
Close
|
|
182
|
+
</ModalFooterButton>
|
|
183
|
+
</ModalFooter>
|
|
184
|
+
</Modal>
|
|
185
|
+
</Dialog>
|
|
186
|
+
);
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
export const ReleaseLogManager = observer(() => {
|
|
190
|
+
const applicationStore = useApplicationStore();
|
|
191
|
+
const releaseService = applicationStore.releaseNotesService;
|
|
192
|
+
|
|
193
|
+
if (!releaseService.isConfigured || !releaseService.showReleaseLog) {
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
const releaseNotes = releaseService.releaseNotes ?? [];
|
|
197
|
+
|
|
198
|
+
const isOpen = releaseService.showCurrentReleaseModal;
|
|
199
|
+
const closeModal = (): void => {
|
|
200
|
+
releaseService.setReleaseLog(false);
|
|
201
|
+
};
|
|
202
|
+
const title = `Legend ${prettyCONSTName(
|
|
203
|
+
applicationStore.config.appName,
|
|
204
|
+
)} Release Log`;
|
|
205
|
+
return (
|
|
206
|
+
<Dialog
|
|
207
|
+
open={isOpen}
|
|
208
|
+
onClose={closeModal}
|
|
209
|
+
classes={{
|
|
210
|
+
root: 'release-notes__root-container',
|
|
211
|
+
container: 'release-notes__container',
|
|
212
|
+
}}
|
|
213
|
+
>
|
|
214
|
+
<Modal
|
|
215
|
+
darkMode={
|
|
216
|
+
!applicationStore.layoutService.TEMPORARY__isLightColorThemeEnabled
|
|
217
|
+
}
|
|
218
|
+
className="editor-modal release-notes__dialog"
|
|
219
|
+
>
|
|
220
|
+
<ModalHeader
|
|
221
|
+
className="release-notes__dialog__header__title"
|
|
222
|
+
title={title}
|
|
223
|
+
/>
|
|
224
|
+
|
|
225
|
+
<ModalBody className="release-notes__dialog__body">
|
|
226
|
+
<div className="release-notes__dialog__content">
|
|
227
|
+
<div className="release-notes__dialog__content__title">
|
|
228
|
+
New features, enhancements and bug fixess that were released
|
|
229
|
+
</div>
|
|
230
|
+
{releaseNotes.map((e) => (
|
|
231
|
+
<ReleaseViewer key={e.version} releaseNotes={e} />
|
|
232
|
+
))}
|
|
233
|
+
</div>
|
|
234
|
+
</ModalBody>
|
|
235
|
+
<ModalFooter>
|
|
236
|
+
<ModalFooterButton
|
|
237
|
+
className="modal__footer__close-btn"
|
|
238
|
+
onClick={closeModal}
|
|
239
|
+
type={'primary'}
|
|
240
|
+
>
|
|
241
|
+
Close
|
|
242
|
+
</ModalFooterButton>
|
|
243
|
+
</ModalFooter>
|
|
244
|
+
</Modal>
|
|
245
|
+
</Dialog>
|
|
246
|
+
);
|
|
247
|
+
});
|
|
@@ -768,6 +768,9 @@ export const VirtualAssistant = observer(() => {
|
|
|
768
768
|
bounds="parent"
|
|
769
769
|
onStart={onDragStart}
|
|
770
770
|
onStop={onDragEnd}
|
|
771
|
+
// Avoid using deprecated findDOMNode method to rid of React warning
|
|
772
|
+
// See https://github.com/react-grid-layout/react-draggable/issues/749
|
|
773
|
+
nodeRef={assistantRef}
|
|
771
774
|
// limit the dnd trigger to only the drag handle
|
|
772
775
|
handle=".virtual-assistant__station__drag-handle"
|
|
773
776
|
>
|
package/src/index.ts
CHANGED
|
@@ -55,6 +55,7 @@ export * from './stores/event/IframeEventNotifierPlugin.js';
|
|
|
55
55
|
export * from './stores/TelemetryService.js';
|
|
56
56
|
export * from './stores/NotificationService.js';
|
|
57
57
|
export * from './stores/AlertService.js';
|
|
58
|
+
export * from './stores/ReleaseNotesService.js';
|
|
58
59
|
export * from './stores/AssistantService.js';
|
|
59
60
|
export * from './stores/ApplicationNavigationContextService.js';
|
|
60
61
|
export * from './stores/LegendApplicationPlugin.js';
|
|
@@ -49,6 +49,7 @@ import { SettingService } from './SettingService.js';
|
|
|
49
49
|
import { DefaultNavigator } from './navigation/DefaultNavigator.js';
|
|
50
50
|
import type { ApplicationPlatform } from './platform/ApplicationPlatform.js';
|
|
51
51
|
import { UserDataService } from './UserDataService.js';
|
|
52
|
+
import { ReleaseNotesService } from './ReleaseNotesService.js';
|
|
52
53
|
|
|
53
54
|
export type GenericLegendApplicationStore = ApplicationStore<
|
|
54
55
|
LegendApplicationConfig,
|
|
@@ -105,6 +106,9 @@ export class ApplicationStore<
|
|
|
105
106
|
readonly documentationService: DocumentationService;
|
|
106
107
|
readonly assistantService: AssistantService;
|
|
107
108
|
|
|
109
|
+
// release
|
|
110
|
+
readonly releaseNotesService: ReleaseNotesService;
|
|
111
|
+
|
|
108
112
|
// event
|
|
109
113
|
readonly eventService: EventService;
|
|
110
114
|
readonly telemetryService: TelemetryService;
|
|
@@ -138,6 +142,7 @@ export class ApplicationStore<
|
|
|
138
142
|
|
|
139
143
|
this.documentationService = new DocumentationService(this);
|
|
140
144
|
this.assistantService = new AssistantService(this);
|
|
145
|
+
this.releaseNotesService = new ReleaseNotesService(this);
|
|
141
146
|
|
|
142
147
|
this.eventService = new EventService();
|
|
143
148
|
this.eventService.registerEventNotifierPlugins(
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2020-present, Goldman Sachs
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { guaranteeNonEmptyString } from '@finos/legend-shared';
|
|
18
|
+
import type { GenericLegendApplicationStore } from './ApplicationStore.js';
|
|
19
|
+
import { action, makeObservable, observable } from 'mobx';
|
|
20
|
+
|
|
21
|
+
export enum RELEASE_UPDATE_TYPE {
|
|
22
|
+
BUG_FIX = 'BUG_FIX',
|
|
23
|
+
ENHANCEMENT = 'ENHANCEMENT',
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface ReleaseNote {
|
|
27
|
+
type: RELEASE_UPDATE_TYPE;
|
|
28
|
+
description: string;
|
|
29
|
+
docLink?: string | undefined;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface VersionReleaseNotes {
|
|
33
|
+
version: string;
|
|
34
|
+
label?: string | undefined;
|
|
35
|
+
docLink?: string | undefined;
|
|
36
|
+
notes?: ReleaseNote[] | undefined;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export const collectReleaseNotes = (
|
|
40
|
+
releaseNotes: VersionReleaseNotes[],
|
|
41
|
+
): VersionReleaseNotes[] =>
|
|
42
|
+
releaseNotes.map((release) => {
|
|
43
|
+
guaranteeNonEmptyString(
|
|
44
|
+
release.version,
|
|
45
|
+
"Release notes 'version' is missing",
|
|
46
|
+
);
|
|
47
|
+
release.notes?.map((note) => {
|
|
48
|
+
guaranteeNonEmptyString(note.type, "Release note 'type' is missing");
|
|
49
|
+
guaranteeNonEmptyString(
|
|
50
|
+
note.description,
|
|
51
|
+
"Release note 'description' is missing",
|
|
52
|
+
);
|
|
53
|
+
return note;
|
|
54
|
+
});
|
|
55
|
+
return release;
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
export class ReleaseNotesService {
|
|
59
|
+
static STORAGE_NAME = 'application.release-notes.lastOpenedVersion';
|
|
60
|
+
applicationStore: GenericLegendApplicationStore;
|
|
61
|
+
releaseNotes: VersionReleaseNotes[] | undefined;
|
|
62
|
+
showCurrentReleaseModal = true;
|
|
63
|
+
showReleaseLog = false;
|
|
64
|
+
isConfigured = false;
|
|
65
|
+
|
|
66
|
+
constructor(applicationStore: GenericLegendApplicationStore) {
|
|
67
|
+
makeObservable(this, {
|
|
68
|
+
showCurrentReleaseModal: observable,
|
|
69
|
+
showReleaseLog: observable,
|
|
70
|
+
isConfigured: observable,
|
|
71
|
+
setShowCurrentRelease: action,
|
|
72
|
+
configure: action,
|
|
73
|
+
updateViewedVersion: action,
|
|
74
|
+
setReleaseLog: action,
|
|
75
|
+
});
|
|
76
|
+
this.applicationStore = applicationStore;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
configure(releaseNotes: VersionReleaseNotes[]): void {
|
|
80
|
+
this.isConfigured = true;
|
|
81
|
+
this.releaseNotes = collectReleaseNotes(releaseNotes);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
setShowCurrentRelease(val: boolean): void {
|
|
85
|
+
this.showCurrentReleaseModal = val;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
setReleaseLog(val: boolean): void {
|
|
89
|
+
this.showReleaseLog = val;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
getViewedVersions(): string | undefined {
|
|
93
|
+
return this.applicationStore.settingService.getStringValue(
|
|
94
|
+
ReleaseNotesService.STORAGE_NAME,
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
updateViewedVersion(version: string): void {
|
|
99
|
+
return this.applicationStore.settingService.persistValue(
|
|
100
|
+
ReleaseNotesService.STORAGE_NAME,
|
|
101
|
+
version,
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -567,8 +567,8 @@ export class XTerm extends Terminal {
|
|
|
567
567
|
abs_cursorY > buffer.viewportY + rows
|
|
568
568
|
? abs_cursorY - (buffer.viewportY + rows)
|
|
569
569
|
: abs_cursorY < buffer.viewportY
|
|
570
|
-
|
|
571
|
-
|
|
570
|
+
? abs_cursorY - buffer.viewportY
|
|
571
|
+
: 0;
|
|
572
572
|
|
|
573
573
|
return {
|
|
574
574
|
// NOTE: currently, there is a design limitation with programmatically set the cursor using escape sequence
|
package/tsconfig.json
CHANGED
|
@@ -24,7 +24,23 @@
|
|
|
24
24
|
"outDir": "./lib",
|
|
25
25
|
"tsBuildInfoFile": "./build/prod.tsbuildinfo",
|
|
26
26
|
"rootDir": "./src",
|
|
27
|
-
"jsx": "react-jsx"
|
|
27
|
+
"jsx": "react-jsx",
|
|
28
|
+
"moduleResolution": "nodenext",
|
|
29
|
+
"moduleDetection": "force",
|
|
30
|
+
"isolatedModules": true,
|
|
31
|
+
"esModuleInterop": true,
|
|
32
|
+
"allowSyntheticDefaultImports": true,
|
|
33
|
+
"preserveConstEnums": true,
|
|
34
|
+
"incremental": true,
|
|
35
|
+
"useDefineForClassFields": true,
|
|
36
|
+
"noImplicitAny": true,
|
|
37
|
+
"noImplicitThis": true,
|
|
38
|
+
"strictNullChecks": true,
|
|
39
|
+
"strictFunctionTypes": true,
|
|
40
|
+
"strictBindCallApply": true,
|
|
41
|
+
"strictPropertyInitialization": true,
|
|
42
|
+
"alwaysStrict": true,
|
|
43
|
+
"useUnknownInCatchVariables": true
|
|
28
44
|
},
|
|
29
45
|
"references": [
|
|
30
46
|
{
|
|
@@ -58,6 +74,7 @@
|
|
|
58
74
|
"./src/stores/LayoutService.ts",
|
|
59
75
|
"./src/stores/LegendApplicationPlugin.ts",
|
|
60
76
|
"./src/stores/NotificationService.ts",
|
|
77
|
+
"./src/stores/ReleaseNotesService.ts",
|
|
61
78
|
"./src/stores/SettingService.ts",
|
|
62
79
|
"./src/stores/TelemetryService.ts",
|
|
63
80
|
"./src/stores/TerminalService.ts",
|
|
@@ -84,6 +101,7 @@
|
|
|
84
101
|
"./src/components/BlockingAlert.tsx",
|
|
85
102
|
"./src/components/BrowserEnvironmentProvider.tsx",
|
|
86
103
|
"./src/components/NotificationManager.tsx",
|
|
104
|
+
"./src/components/ReleaseNotesManager.tsx",
|
|
87
105
|
"./src/components/VirtualAssistant.tsx",
|
|
88
106
|
"./src/components/useApplicationNavigationContext.tsx",
|
|
89
107
|
"./src/components/useCommands.tsx",
|
package/tsconfig.package.json
CHANGED
|
@@ -23,7 +23,23 @@
|
|
|
23
23
|
"forceConsistentCasingInFileNames": true,
|
|
24
24
|
"outDir": "./lib",
|
|
25
25
|
"tsBuildInfoFile": "./build/package.tsbuildinfo",
|
|
26
|
-
"rootDir": "./"
|
|
26
|
+
"rootDir": "./",
|
|
27
|
+
"moduleResolution": "nodenext",
|
|
28
|
+
"moduleDetection": "force",
|
|
29
|
+
"isolatedModules": true,
|
|
30
|
+
"esModuleInterop": true,
|
|
31
|
+
"allowSyntheticDefaultImports": true,
|
|
32
|
+
"preserveConstEnums": true,
|
|
33
|
+
"incremental": true,
|
|
34
|
+
"useDefineForClassFields": true,
|
|
35
|
+
"noImplicitAny": true,
|
|
36
|
+
"noImplicitThis": true,
|
|
37
|
+
"strictNullChecks": true,
|
|
38
|
+
"strictFunctionTypes": true,
|
|
39
|
+
"strictBindCallApply": true,
|
|
40
|
+
"strictPropertyInitialization": true,
|
|
41
|
+
"alwaysStrict": true,
|
|
42
|
+
"useUnknownInCatchVariables": true
|
|
27
43
|
},
|
|
28
44
|
"files": [
|
|
29
45
|
"./package.json"
|