@nordicsemiconductor/pc-nrfconnect-shared 235.0.0 → 237.0.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/Changelog.md CHANGED
@@ -7,6 +7,20 @@ This project does _not_ adhere to
7
7
  [Semantic Versioning](https://semver.org/spec/v2.0.0.html) but contrary to it
8
8
  every new version is a new major version.
9
9
 
10
+ ## 237.0.0 - 2025-11-12
11
+
12
+ ### Changed
13
+
14
+ - The logger now also supports being used in the renderer process of the
15
+ launcher.
16
+
17
+ ## 236.0.0 - 2025-11-07
18
+
19
+ ### Changed
20
+
21
+ - In a `ConfirmationDialog` a cancel button is only displayed if `onCancel` is
22
+ defined (before it was mandatory to define it).
23
+
10
24
  ## 235.0.0 - 2025-11-06
11
25
 
12
26
  ### Fixed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nordicsemiconductor/pc-nrfconnect-shared",
3
- "version": "235.0.0",
3
+ "version": "237.0.0",
4
4
  "description": "Shared commodities for developing pc-nrfconnect-* packages",
5
5
  "repository": {
6
6
  "type": "git",
package/release_notes.md CHANGED
@@ -1,3 +1,4 @@
1
- ### Fixed
1
+ ### Changed
2
2
 
3
- - A text sizing problem with Dropdown's chevron.
3
+ - The logger now also supports being used in the renderer process of the
4
+ launcher.
@@ -48,8 +48,8 @@ describe('Dialog', () => {
48
48
  });
49
49
 
50
50
  describe('InfoDialog creator', () => {
51
- const dialog = (isVisible = true) => (
52
- <InfoDialog isVisible={isVisible} onHide={noop}>
51
+ const dialog = () => (
52
+ <InfoDialog isVisible onHide={noop}>
53
53
  Test Body
54
54
  </InfoDialog>
55
55
  );
@@ -73,8 +73,8 @@ describe('InfoDialog creator', () => {
73
73
  });
74
74
 
75
75
  describe('ErrorDialog creator', () => {
76
- const dialog = (isVisible = true) => (
77
- <ErrorDialog isVisible={isVisible} onHide={noop}>
76
+ const dialog = () => (
77
+ <ErrorDialog isVisible onHide={noop}>
78
78
  Test Body
79
79
  </ErrorDialog>
80
80
  );
@@ -97,19 +97,27 @@ describe('ErrorDialog creator', () => {
97
97
  });
98
98
  });
99
99
  describe('ConfirmationDialog creator', () => {
100
- const dialog = (isVisible = true) => (
100
+ const mockedConfirm = jest.fn();
101
+ const mockedCancel = jest.fn();
102
+ const mockedOptional = jest.fn();
103
+
104
+ const dialog = () => (
101
105
  <ConfirmationDialog
102
- isVisible={isVisible}
106
+ isVisible
103
107
  confirmLabel="ConfButton"
104
- onConfirm={() => noop(true)}
105
- onCancel={() => noop(false)}
108
+ onConfirm={mockedConfirm}
109
+ onCancel={mockedCancel}
106
110
  optionalLabel="Optional"
107
- onOptional={() => noop()}
111
+ onOptional={mockedOptional}
108
112
  >
109
113
  Test Body
110
114
  </ConfirmationDialog>
111
115
  );
112
116
 
117
+ beforeEach(() => {
118
+ jest.clearAllMocks();
119
+ });
120
+
113
121
  it('shows the expected content', () => {
114
122
  render(dialog());
115
123
 
@@ -123,11 +131,29 @@ describe('ConfirmationDialog creator', () => {
123
131
  it('invokes the expected action', () => {
124
132
  render(dialog());
125
133
 
134
+ jest.resetAllMocks();
126
135
  fireEvent.click(screen.getByText('Optional'));
127
- expect(noop).toHaveBeenCalled();
136
+ expect(mockedOptional).toHaveBeenCalled();
128
137
  fireEvent.click(screen.getByText('ConfButton'));
129
- expect(noop).toHaveBeenCalledWith(true);
138
+ expect(mockedConfirm).toHaveBeenCalled();
130
139
  fireEvent.click(screen.getByText('Cancel'));
131
- expect(noop).toHaveBeenCalledWith(false);
140
+ expect(mockedCancel).toHaveBeenCalled();
141
+ });
142
+
143
+ it('invokes onCancel on pressing ESC', () => {
144
+ render(dialog());
145
+
146
+ fireEvent.keyDown(document, { key: 'Escape', keyCode: 27 });
147
+ expect(mockedCancel).toHaveBeenCalled();
148
+ });
149
+
150
+ it('hides the Cancel button if onCancel is not provided', () => {
151
+ render(
152
+ <ConfirmationDialog isVisible onConfirm={() => {}}>
153
+ Test Body
154
+ </ConfirmationDialog>,
155
+ );
156
+
157
+ expect(screen.queryByText('Cancel')).not.toBeInTheDocument();
132
158
  });
133
159
  });
@@ -207,7 +207,7 @@ interface ConfirmationDialogProps extends Omit<CoreProps, 'onHide'> {
207
207
  confirmLabel?: string;
208
208
  onConfirm: () => void;
209
209
  cancelLabel?: string;
210
- onCancel: () => void;
210
+ onCancel?: () => void;
211
211
  optionalLabel?: string;
212
212
  onOptional?: () => void;
213
213
  }
@@ -223,12 +223,12 @@ export const ConfirmationDialog = ({
223
223
  cancelLabel = 'Cancel',
224
224
  onCancel,
225
225
  optionalLabel,
226
- onOptional = () => {},
226
+ onOptional,
227
227
  size,
228
228
  }: ConfirmationDialogProps) => (
229
229
  <GenericDialog
230
230
  onHide={onCancel}
231
- closeOnEsc
231
+ closeOnEsc={onCancel != null}
232
232
  isVisible={isVisible}
233
233
  headerIcon={headerIcon}
234
234
  title={title}
@@ -239,12 +239,16 @@ export const ConfirmationDialog = ({
239
239
  <DialogButton variant="primary" onClick={onConfirm}>
240
240
  {confirmLabel}
241
241
  </DialogButton>
242
- {optionalLabel && (
242
+ {onOptional && optionalLabel && (
243
243
  <DialogButton onClick={onOptional}>
244
244
  {optionalLabel}
245
245
  </DialogButton>
246
246
  )}
247
- <DialogButton onClick={onCancel}>{cancelLabel}</DialogButton>
247
+ {onCancel && (
248
+ <DialogButton onClick={onCancel}>
249
+ {cancelLabel}
250
+ </DialogButton>
251
+ )}
248
252
  </>
249
253
  }
250
254
  >
@@ -9,8 +9,9 @@ import { SPLAT } from 'triple-beam';
9
9
  import { createLogger, format, LogEntry, Logger, transports } from 'winston';
10
10
  import Transport from 'winston-transport';
11
11
 
12
- import { getAppLogDir } from '../utils/appDirs';
12
+ import { getAppLogDir, getUserDataDir } from '../utils/appDirs';
13
13
  import { openFile, openFileLocation } from '../utils/open';
14
+ import { isLauncher } from '../utils/packageJson';
14
15
  import AppTransport from './appTransport';
15
16
  import describeError from './describeError';
16
17
  import createLogBuffer from './logBuffer';
@@ -27,7 +28,11 @@ const isConsoleAvailable = (() => {
27
28
  })();
28
29
 
29
30
  const filePrefix = new Date().toISOString().replace(/:/gi, '_');
30
- const logFilePath = () => path.join(getAppLogDir(), `${filePrefix}-log.txt`);
31
+
32
+ const logFilePath = () =>
33
+ isLauncher()
34
+ ? path.join(getUserDataDir(), 'logs', 'renderer.log')
35
+ : path.join(getAppLogDir(), `${filePrefix}-log.txt`);
31
36
 
32
37
  const logBuffer = createLogBuffer();
33
38
 
@@ -60,7 +60,7 @@ interface ConfirmationDialogProps extends Omit<CoreProps, 'onHide'> {
60
60
  confirmLabel?: string;
61
61
  onConfirm: () => void;
62
62
  cancelLabel?: string;
63
- onCancel: () => void;
63
+ onCancel?: () => void;
64
64
  optionalLabel?: string;
65
65
  onOptional?: () => void;
66
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../src/Dialog/Dialog.tsx"],"names":[],"mappings":"AAMA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,eAAe,CAAC;AAEvB,KAAK,SAAS,GAAG;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG,SAAS,GAAG;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,MAAM;oFAQhB,WAAW;gDA0BX;QACC,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,OAAO,CAAC;KACzB;uBAc4B;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE;yBAIrB;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE;CA5BrD,CAAC;AAkCF,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,eAAO,MAAM,YAAY,GAAI,sDAM1B,iBAAiB,gBAUnB,CAAC;AAEF,UAAU,kBAAmB,SAAQ,SAAS;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,aAAa,GAAI,uHAY3B,kBAAkB,gBAiBpB,CAAC;AAEF,UAAU,SAAU,SAAQ,SAAS;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,eAAO,MAAM,UAAU,GAAI,8EASxB,SAAS,gBAcX,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,YAAY;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,gBAO1D,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,gBAK1D,CAAC;AAEP,UAAU,uBAAwB,SAAQ,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,eAAO,MAAM,kBAAkB,GAAI,yIAahC,uBAAuB,gBAyBzB,CAAC"}
1
+ {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../src/Dialog/Dialog.tsx"],"names":[],"mappings":"AAMA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,eAAe,CAAC;AAEvB,KAAK,SAAS,GAAG;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG,SAAS,GAAG;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,MAAM;oFAQhB,WAAW;gDA0BX;QACC,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,OAAO,CAAC;KACzB;uBAc4B;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE;yBAIrB;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE;CA5BrD,CAAC;AAkCF,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,eAAO,MAAM,YAAY,GAAI,sDAM1B,iBAAiB,gBAUnB,CAAC;AAEF,UAAU,kBAAmB,SAAQ,SAAS;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,aAAa,GAAI,uHAY3B,kBAAkB,gBAiBpB,CAAC;AAEF,UAAU,SAAU,SAAQ,SAAS;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,eAAO,MAAM,UAAU,GAAI,8EASxB,SAAS,gBAcX,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,YAAY;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,gBAO1D,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,gBAK1D,CAAC;AAEP,UAAU,uBAAwB,SAAQ,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,eAAO,MAAM,kBAAkB,GAAI,yIAahC,uBAAuB,gBA6BzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/logging/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAwB,QAAQ,EAAE,MAAM,EAAc,MAAM,SAAS,CAAC;AAoC7E,UAAU,YAAa,SAAQ,MAAM;IACjC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,kBAAkB,EAAE,MAAM,QAAQ,EAAE,CAAC;IACrC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,mBAAmB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACvD;AAED,QAAA,MAAM,MAAM,EAeN,YAAY,CAAC;AAoCnB,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/logging/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAwB,QAAQ,EAAE,MAAM,EAAc,MAAM,SAAS,CAAC;AAyC7E,UAAU,YAAa,SAAQ,MAAM;IACjC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,kBAAkB,EAAE,MAAM,QAAQ,EAAE,CAAC;IACrC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,mBAAmB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACvD;AAED,QAAA,MAAM,MAAM,EAeN,YAAY,CAAC;AAoCnB,eAAe,MAAM,CAAC"}