diff --git a/app/src/layouts/tabular/tabular.vue b/app/src/layouts/tabular/tabular.vue index 6843c6f36e..d3cb59f211 100644 --- a/app/src/layouts/tabular/tabular.vue +++ b/app/src/layouts/tabular/tabular.vue @@ -185,7 +185,7 @@ import { useSync } from '@directus/shared/composables'; import { Field, Filter, Item, ShowSelect } from '@directus/shared/types'; import { ComponentPublicInstance, inject, ref, Ref, watch, computed } from 'vue'; import { useI18n } from 'vue-i18n'; -import { get } from '@/utils/get-with-arrays'; +import { get } from '@directus/shared/utils'; import { useAliasFields, AliasField } from '@/composables/use-alias-fields'; import { adjustFieldsForDisplays } from '@/utils/adjust-fields-for-displays'; import { isEmpty, merge } from 'lodash'; diff --git a/app/src/utils/save-as-csv.ts b/app/src/utils/save-as-csv.ts index 5f2a81747f..0dded985d4 100644 --- a/app/src/utils/save-as-csv.ts +++ b/app/src/utils/save-as-csv.ts @@ -1,7 +1,7 @@ import { useAliasFields } from '@/composables/use-alias-fields'; import { getDisplay } from '@/displays'; import { useFieldsStore } from '@/stores/fields'; -import { get } from '@/utils/get-with-arrays'; +import { get } from '@directus/shared/utils'; import { DisplayConfig, Field, Item } from '@directus/shared/types'; import { saveAs } from 'file-saver'; import { parse } from 'json2csv'; diff --git a/app/src/utils/get-with-arrays.test.ts b/packages/shared/src/utils/get-with-arrays.test.ts similarity index 92% rename from app/src/utils/get-with-arrays.test.ts rename to packages/shared/src/utils/get-with-arrays.test.ts index 0eb410fc24..c5815f365a 100644 --- a/app/src/utils/get-with-arrays.test.ts +++ b/packages/shared/src/utils/get-with-arrays.test.ts @@ -1,6 +1,6 @@ import { test, expect } from 'vitest'; -import { get } from '@/utils/get-with-arrays'; +import { get } from './get-with-arrays'; test('Returns static value from object', () => { const input = { test: { path: 'example' } }; diff --git a/app/src/utils/get-with-arrays.ts b/packages/shared/src/utils/get-with-arrays.ts similarity index 88% rename from app/src/utils/get-with-arrays.ts rename to packages/shared/src/utils/get-with-arrays.ts index 919dc4ee31..5c2af613ed 100644 --- a/app/src/utils/get-with-arrays.ts +++ b/packages/shared/src/utils/get-with-arrays.ts @@ -8,10 +8,10 @@ * // => [1, 2] * ``` */ -export function get(object: Record | any[], path: string, defaultValue?: any): any { +export function get(object: Record | any[], path: string, defaultValue?: unknown): any { const [key, ...follow] = path.split('.'); - const result = Array.isArray(object) ? object.map((entry) => entry[key!]) : object?.[key!]; + const result = Array.isArray(object) ? object.map((entry) => entry?.[key!]) : object?.[key!]; if (follow.length > 0) { return get(result, follow.join('.'), defaultValue); diff --git a/packages/shared/src/utils/index.ts b/packages/shared/src/utils/index.ts index 6d6bec6f80..08b777cc53 100644 --- a/packages/shared/src/utils/index.ts +++ b/packages/shared/src/utils/index.ts @@ -15,6 +15,7 @@ export * from './get-functions-for-type'; export * from './get-output-type-for-function'; export * from './get-relation-type'; export * from './get-simple-hash'; +export * from './get-with-arrays'; export * from './is-dynamic-variable'; export * from './merge-filters'; export * from './move-in-array'; diff --git a/packages/shared/src/utils/parse-filter.ts b/packages/shared/src/utils/parse-filter.ts index 7c76c12b1a..e1b8ff3831 100644 --- a/packages/shared/src/utils/parse-filter.ts +++ b/packages/shared/src/utils/parse-filter.ts @@ -1,8 +1,9 @@ -import { get, isObjectLike } from 'lodash'; +import { isObjectLike } from 'lodash'; import { REGEX_BETWEEN_PARENS } from '../constants'; import { Accountability, Filter, Role, User } from '../types'; import { adjustDate } from './adjust-date'; import { deepMap } from './deep-map'; +import { get } from './get-with-arrays'; import { isDynamicVariable } from './is-dynamic-variable'; import { toArray } from './to-array';