Skip to content

Commit 43376f1

Browse files
authored
chore(orchestrator): remove moment and replace with luxon (#1722)
* chore(orchestrator): remove moment and replace with luxon This fixes https://issues.redhat.com/browse/RHIDP-9515 and aligns with the removal of outdated dependencies from the Orchestrator plugin. * squash: changeset
1 parent 7ea866c commit 43376f1

6 files changed

Lines changed: 44 additions & 18 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@red-hat-developer-hub/backstage-plugin-orchestrator-backend': minor
3+
---
4+
5+
Removing the deprecated moment package and replacing with luxon

workspaces/orchestrator/plugins/orchestrator-backend/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585
"fs-extra": "^10.1.0",
8686
"isomorphic-git": "^1.23.0",
8787
"lodash": "^4.17.21",
88-
"moment": "^2.29.4",
88+
"luxon": "^3.7.2",
8989
"openapi-backend": "^5.10.5",
9090
"yn": "^5.0.0"
9191
},
@@ -98,6 +98,7 @@
9898
"@types/express": "4.17.23",
9999
"@types/fs-extra": "11.0.4",
100100
"@types/json-schema": "7.0.15",
101+
"@types/luxon": "^3.7.1",
101102
"prettier": "3.6.2"
102103
},
103104
"peerDependencies": {

workspaces/orchestrator/plugins/orchestrator-backend/src/service/api/mapping/V2Mappings.test.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
import moment from 'moment';
17+
import { DateTime, Duration } from 'luxon';
1818

1919
import {
2020
ProcessInstance,
@@ -112,9 +112,15 @@ describe('scenarios to verify mapToProcessInstanceDTO', () => {
112112
// Arrange
113113
const processIntanceV1: ProcessInstance = generateProcessInstance(1);
114114

115-
const start = moment(processIntanceV1.start);
116-
const end = moment(processIntanceV1.end);
117-
const duration = moment.duration(start.diff(end)).humanize();
115+
const start = DateTime.fromISO(processIntanceV1.start as string, {
116+
setZone: true,
117+
});
118+
const end = DateTime.fromISO(processIntanceV1.end as string, {
119+
setZone: true,
120+
});
121+
const duration = Duration.fromMillis(end.diff(start).toMillis())
122+
.rescale()
123+
.toHuman();
118124
// Act
119125
const result = mapToProcessInstanceDTO(processIntanceV1);
120126

@@ -140,7 +146,7 @@ describe('scenarios to verify mapToProcessInstanceDTO', () => {
140146
);
141147
expect(result.end).toEqual(processIntanceV1.end);
142148
expect(result.duration).toEqual(duration);
143-
expect(result.duration).toEqual('an hour');
149+
expect(result.duration).toEqual('1 hour');
144150
expect(result.description).toEqual(processIntanceV1.description);
145151
expect(result.workflowdata).toEqual(
146152
// @ts-ignore

workspaces/orchestrator/plugins/orchestrator-backend/src/service/api/mapping/V2Mappings.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
import moment from 'moment';
17+
import { DateTime, Duration } from 'luxon';
1818

1919
import {
2020
capitalize,
@@ -87,10 +87,14 @@ export function getProcessInstancesStatusDTOFromString(
8787
export function mapToProcessInstanceDTO(
8888
processInstance: ProcessInstance,
8989
): ProcessInstanceDTO {
90-
const start = moment(processInstance.start);
91-
const end = moment(processInstance.end);
90+
const start = DateTime.fromISO(processInstance.start as string, {
91+
setZone: true,
92+
});
93+
const end = DateTime.fromISO(processInstance.end as string, {
94+
setZone: true,
95+
});
9296
const duration = processInstance.end
93-
? moment.duration(start.diff(end)).humanize()
97+
? Duration.fromMillis(end.diff(start).toMillis()).rescale().toHuman()
9498
: undefined;
9599

96100
let variables: Record<string, unknown> | undefined;

workspaces/orchestrator/plugins/orchestrator-backend/src/service/api/test-utils.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
import moment from 'moment';
17+
import { DateTime } from 'luxon';
1818

1919
import {
2020
ProcessInstance,
@@ -121,7 +121,9 @@ export function generateProcessInstance(id: number): ProcessInstance {
121121
processId: `proceesId${id}`,
122122
state: ProcessInstanceState.Active,
123123
start: BASE_DATE,
124-
end: moment(BASE_DATE).add(1, 'hour').toISOString(),
124+
end: DateTime.fromISO(BASE_DATE, { setZone: true })
125+
.plus({ hours: 1 })
126+
.toISO() as string,
125127
nodes: [],
126128
endpoint: 'enpoint/foo',
127129
serviceUrl: 'service/bar',

workspaces/orchestrator/yarn.lock

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12742,6 +12742,7 @@ __metadata:
1274212742
"@types/express": 4.17.23
1274312743
"@types/fs-extra": 11.0.4
1274412744
"@types/json-schema": 7.0.15
12745+
"@types/luxon": ^3.7.1
1274512746
"@urql/core": ^4.1.4
1274612747
ajv-formats: ^2.1.1
1274712748
cloudevents: ^8.0.0
@@ -12750,7 +12751,7 @@ __metadata:
1275012751
fs-extra: ^10.1.0
1275112752
isomorphic-git: ^1.23.0
1275212753
lodash: ^4.17.21
12753-
moment: ^2.29.4
12754+
luxon: ^3.7.2
1275412755
openapi-backend: ^5.10.5
1275512756
prettier: 3.6.2
1275612757
yn: ^5.0.0
@@ -16169,7 +16170,14 @@ __metadata:
1616916170
languageName: node
1617016171
linkType: hard
1617116172

16172-
"@types/luxon@npm:^3.0.0, @types/luxon@npm:~3.4.0":
16173+
"@types/luxon@npm:^3.0.0, @types/luxon@npm:^3.7.1":
16174+
version: 3.7.1
16175+
resolution: "@types/luxon@npm:3.7.1"
16176+
checksum: ec5181716f9a744d2be1a4a72c3509670e1030a9271736d95e9e04af075ac6f24f6b35f2934f6d7eab496c1eefd9f81b572ad63fd33fd17a100eb2b315702a77
16177+
languageName: node
16178+
linkType: hard
16179+
16180+
"@types/luxon@npm:~3.4.0":
1617316181
version: 3.4.2
1617416182
resolution: "@types/luxon@npm:3.4.2"
1617516183
checksum: 6f92d5bd02e89f310395753506bcd9cef3a56f5940f7a50db2a2b9822bce753553ac767d143cb5b4f9ed5ddd4a84e64f89ff538082ceb4d18739af7781b56925
@@ -28374,10 +28382,10 @@ __metadata:
2837428382
languageName: node
2837528383
linkType: hard
2837628384

28377-
"luxon@npm:^3.0.0, luxon@npm:^3.2.1":
28378-
version: 3.5.0
28379-
resolution: "luxon@npm:3.5.0"
28380-
checksum: f290fe5788c8e51e748744f05092160d4be12150dca70f9fadc0d233e53d60ce86acd82e7d909a114730a136a77e56f0d3ebac6141bbb82fd310969a4704825b
28385+
"luxon@npm:^3.0.0, luxon@npm:^3.2.1, luxon@npm:^3.7.2":
28386+
version: 3.7.2
28387+
resolution: "luxon@npm:3.7.2"
28388+
checksum: fc115fd6a7acc2adb7df3476d20c672beb2985d2a034294282f2c31de8c07f29a15460f5a2b7dd0107797be0dab545ddbc64862662b059fb18c1931a726064f4
2838128389
languageName: node
2838228390
linkType: hard
2838328391

0 commit comments

Comments
 (0)