mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
[Content Management] Maps onboard (#153304)
This commit is contained in:
parent
045b58fe5b
commit
42a893db40
61 changed files with 1094 additions and 300 deletions
|
@ -64,52 +64,52 @@ export interface ServicesDefinition {
|
|||
export interface ServiceTransforms {
|
||||
get: {
|
||||
in: {
|
||||
options: ObjectTransforms;
|
||||
options: ObjectTransforms<any, any, any, any>;
|
||||
};
|
||||
out: {
|
||||
result: ObjectTransforms;
|
||||
result: ObjectTransforms<any, any, any, any>;
|
||||
};
|
||||
};
|
||||
bulkGet: {
|
||||
in: {
|
||||
options: ObjectTransforms;
|
||||
options: ObjectTransforms<any, any, any, any>;
|
||||
};
|
||||
out: {
|
||||
result: ObjectTransforms;
|
||||
result: ObjectTransforms<any, any, any, any>;
|
||||
};
|
||||
};
|
||||
create: {
|
||||
in: {
|
||||
data: ObjectTransforms;
|
||||
options: ObjectTransforms;
|
||||
data: ObjectTransforms<any, any, any, any>;
|
||||
options: ObjectTransforms<any, any, any, any>;
|
||||
};
|
||||
out: {
|
||||
result: ObjectTransforms;
|
||||
result: ObjectTransforms<any, any, any, any>;
|
||||
};
|
||||
};
|
||||
update: {
|
||||
in: {
|
||||
data: ObjectTransforms;
|
||||
options: ObjectTransforms;
|
||||
data: ObjectTransforms<any, any, any, any>;
|
||||
options: ObjectTransforms<any, any, any, any>;
|
||||
};
|
||||
out: {
|
||||
result: ObjectTransforms;
|
||||
result: ObjectTransforms<any, any, any, any>;
|
||||
};
|
||||
};
|
||||
delete: {
|
||||
in: {
|
||||
options: ObjectTransforms;
|
||||
options: ObjectTransforms<any, any, any, any>;
|
||||
};
|
||||
out: {
|
||||
result: ObjectTransforms;
|
||||
result: ObjectTransforms<any, any, any, any>;
|
||||
};
|
||||
};
|
||||
search: {
|
||||
in: {
|
||||
options: ObjectTransforms;
|
||||
options: ObjectTransforms<any, any, any, any>;
|
||||
};
|
||||
out: {
|
||||
result: ObjectTransforms;
|
||||
result: ObjectTransforms<any, any, any, any>;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -9,12 +9,7 @@
|
|||
import { schema } from '@kbn/config-schema';
|
||||
import { initTransform } from './object_transform';
|
||||
|
||||
import type {
|
||||
ObjectMigrationDefinition,
|
||||
ObjectTransforms,
|
||||
Version,
|
||||
VersionableObject,
|
||||
} from './types';
|
||||
import type { ObjectMigrationDefinition, Version, VersionableObject } from './types';
|
||||
|
||||
interface FooV1 {
|
||||
fullName: string;
|
||||
|
@ -58,7 +53,7 @@ const fooMigrationDef: ObjectMigrationDefinition = {
|
|||
|
||||
const setup = <UpIn = unknown, UpOut = unknown, DownIn = unknown, DownOut = unknown>(
|
||||
browserVersion: Version
|
||||
): ObjectTransforms<UpIn, UpOut, DownIn, DownOut> => {
|
||||
) => {
|
||||
const transformsFactory = initTransform<UpIn, UpOut, DownIn, DownOut>(browserVersion);
|
||||
return transformsFactory(fooMigrationDef);
|
||||
};
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* Side Public License, v 1.
|
||||
*/
|
||||
|
||||
import { ObjectMigrationDefinition, ObjectTransform, ObjectTransforms, Version } from './types';
|
||||
import { ObjectMigrationDefinition, ObjectTransform, Version } from './types';
|
||||
import { validateObj, validateVersion } from './utils';
|
||||
|
||||
/**
|
||||
|
@ -97,11 +97,8 @@ const getTransformFns = <I = unknown, O = unknown>(
|
|||
*/
|
||||
export const initTransform =
|
||||
<UpIn = unknown, UpOut = unknown, DownIn = unknown, DownOut = unknown>(requestVersion: Version) =>
|
||||
(
|
||||
migrationDefinition: ObjectMigrationDefinition
|
||||
): ObjectTransforms<UpIn, UpOut, DownIn, DownOut> => {
|
||||
(migrationDefinition: ObjectMigrationDefinition) => {
|
||||
const { latestVersion } = getVersionsMeta(migrationDefinition);
|
||||
|
||||
const getVersion = (v: Version | 'latest'): Version => (v === 'latest' ? latestVersion : v);
|
||||
|
||||
const validateFn = (value: unknown, version: number = requestVersion) => {
|
||||
|
@ -120,7 +117,11 @@ export const initTransform =
|
|||
};
|
||||
|
||||
return {
|
||||
up: (obj, to = 'latest', { validate = true }: { validate?: boolean } = {}) => {
|
||||
up: <I = UpIn, O = UpOut>(
|
||||
obj: I,
|
||||
to: number | 'latest' = 'latest',
|
||||
{ validate = true }: { validate?: boolean } = {}
|
||||
) => {
|
||||
try {
|
||||
if (!migrationDefinition[requestVersion]) {
|
||||
return {
|
||||
|
@ -145,16 +146,12 @@ export const initTransform =
|
|||
};
|
||||
}
|
||||
|
||||
const fns = getTransformFns<UpIn, UpOut>(
|
||||
requestVersion,
|
||||
targetVersion,
|
||||
migrationDefinition
|
||||
);
|
||||
const fns = getTransformFns<I, O>(requestVersion, targetVersion, migrationDefinition);
|
||||
|
||||
const value = fns.reduce((acc, fn) => {
|
||||
const res = fn(acc as unknown as UpIn);
|
||||
const res = fn(acc as unknown as I);
|
||||
return res;
|
||||
}, obj as unknown as UpOut);
|
||||
}, obj as unknown as O);
|
||||
|
||||
return { value, error: null };
|
||||
} catch (e) {
|
||||
|
@ -164,7 +161,11 @@ export const initTransform =
|
|||
};
|
||||
}
|
||||
},
|
||||
down: (obj, from = 'latest', { validate = true }: { validate?: boolean } = {}) => {
|
||||
down: <I = DownIn, O = DownOut>(
|
||||
obj: I,
|
||||
from: number | 'latest' = 'latest',
|
||||
{ validate = true }: { validate?: boolean } = {}
|
||||
) => {
|
||||
try {
|
||||
if (!migrationDefinition[requestVersion]) {
|
||||
return {
|
||||
|
@ -189,16 +190,12 @@ export const initTransform =
|
|||
}
|
||||
}
|
||||
|
||||
const fns = getTransformFns<DownIn, DownOut>(
|
||||
fromVersion,
|
||||
requestVersion,
|
||||
migrationDefinition
|
||||
);
|
||||
const fns = getTransformFns<I, O>(fromVersion, requestVersion, migrationDefinition);
|
||||
|
||||
const value = fns.reduce((acc, fn) => {
|
||||
const res = fn(acc as unknown as DownIn);
|
||||
const res = fn(acc as unknown as I);
|
||||
return res;
|
||||
}, obj as unknown as DownOut);
|
||||
}, obj as unknown as O);
|
||||
|
||||
return { value: value as any, error: null };
|
||||
} catch (e) {
|
||||
|
|
|
@ -42,21 +42,21 @@ export interface ObjectTransforms<
|
|||
DownIn = unknown,
|
||||
DownOut = unknown
|
||||
> {
|
||||
up: (
|
||||
obj: UpIn,
|
||||
up: <I = UpIn, O = UpOut>(
|
||||
obj: I,
|
||||
version?: Version | 'latest',
|
||||
options?: {
|
||||
/** Validate the object _before_ up transform */
|
||||
validate?: boolean;
|
||||
}
|
||||
) => TransformReturn<UpOut>;
|
||||
down: (
|
||||
) => TransformReturn<O>;
|
||||
down: <I = DownIn, O = DownOut>(
|
||||
obj: DownIn,
|
||||
version?: Version | 'latest',
|
||||
options?: {
|
||||
/** Validate the object _before_ down transform */
|
||||
validate?: boolean;
|
||||
}
|
||||
) => TransformReturn<DownOut>;
|
||||
) => TransformReturn<O>;
|
||||
validate: (obj: any, version?: Version) => ValidationError | null;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue