* build(deps-dev): bump eslint from 8.57.1 to 9.13.0 Bumps [eslint](https://github.com/eslint/eslint) from 8.57.1 to 9.13.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.57.1...v9.13.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * Upgrade EsLint * Fix all new lint errors --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Dolan Miu <dolan_miu@hotmail.com>
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import { Element } from "xml-js";
|
|
|
|
import { RelationshipType, TargetModeType } from "@file/relationships/relationship/relationship";
|
|
|
|
import { getFirstLevelElements } from "./util";
|
|
|
|
const getIdFromRelationshipId = (relationshipId: string): number => {
|
|
const output = parseInt(relationshipId.substring(3), 10);
|
|
return isNaN(output) ? 0 : output;
|
|
};
|
|
|
|
export const getNextRelationshipIndex = (relationships: Element): number => {
|
|
const relationshipElements = getFirstLevelElements(relationships, "Relationships");
|
|
|
|
return (
|
|
relationshipElements
|
|
.map((e) => getIdFromRelationshipId(e.attributes?.Id?.toString() ?? ""))
|
|
.reduce((acc, curr) => Math.max(acc, curr), 0) + 1
|
|
);
|
|
};
|
|
|
|
export const appendRelationship = (
|
|
relationships: Element,
|
|
id: number | string,
|
|
type: RelationshipType,
|
|
target: string,
|
|
targetMode?: (typeof TargetModeType)[keyof typeof TargetModeType],
|
|
): readonly Element[] => {
|
|
const relationshipElements = getFirstLevelElements(relationships, "Relationships");
|
|
// eslint-disable-next-line functional/immutable-data
|
|
relationshipElements.push({
|
|
attributes: {
|
|
Id: `rId${id}`,
|
|
Type: type,
|
|
Target: target,
|
|
TargetMode: targetMode,
|
|
},
|
|
name: "Relationship",
|
|
type: "element",
|
|
});
|
|
|
|
return relationshipElements;
|
|
};
|