mirror of
https://github.com/laurent22/joplin.git
synced 2026-10-25 02:47:28 +00:00
24 lines
1.0 KiB
TypeScript
24 lines
1.0 KiB
TypeScript
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied
|
|
export const objectValueFromPath = (o: any, path: string) => {
|
|
const elements = path.split('.');
|
|
let result = { ...o };
|
|
while (elements.length && result) {
|
|
const e = elements.splice(0, 1)[0];
|
|
result = result[e];
|
|
}
|
|
return result;
|
|
};
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Generic utility used by callers with typed entity interfaces (NoteEntity, FolderEntity, etc.) that lack an index signature; tightening this would require widening every caller's argument.
|
|
export function checkObjectHasProperties(object: any, properties: string[]) {
|
|
for (const prop of properties) {
|
|
if (!(prop in object)) throw new Error(`Missing property "${prop}": ${JSON.stringify(object)}`);
|
|
}
|
|
}
|
|
|
|
export const hasOwnProperty = <T extends object, Property extends string>(
|
|
object: T, property: Property,
|
|
): object is T & Record<Property, unknown> => {
|
|
return !!object && Object.prototype.hasOwnProperty.call(object, property);
|
|
};
|