Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Partially move server-side savedObjects domain implementation to packages #137448

Merged
Merged
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
258e60d
create @kbn/core-saved-objects-utils-server package
pgayvallet Jul 28, 2022
08bfb2b
create empty @kbn/core-saved-objects-base-server-internal package
pgayvallet Jul 28, 2022
0b0aa51
fix more internal imports
pgayvallet Jul 28, 2022
51fa753
[CI] Auto-commit changed files from 'node scripts/precommit_hook.js -…
kibanamachine Jul 28, 2022
76f8c3d
start moving stuff to base package
pgayvallet Jul 28, 2022
55c372c
Fix SS mocks
pgayvallet Jul 28, 2022
866fb52
adapt some imports
pgayvallet Jul 28, 2022
e18a800
start fixing internal imports
pgayvallet Jul 28, 2022
887c196
fix remaining core usages
pgayvallet Jul 29, 2022
240219a
start fixing external usages
pgayvallet Jul 29, 2022
044d5a9
Merge remote-tracking branch 'upstream/main' into kbn-135820-so-imple…
pgayvallet Jul 29, 2022
95837c8
lint
pgayvallet Jul 29, 2022
8c6bd8b
move type registry and mocks to packages
pgayvallet Jul 29, 2022
934f79c
adapt usages of serializer in tests
pgayvallet Jul 29, 2022
32c122a
fix test mocking
pgayvallet Jul 29, 2022
dc409a3
[CI] Auto-commit changed files from 'node scripts/generate packages_b…
kibanamachine Jul 29, 2022
45fca48
fix more internal usages of SOTR/mock
pgayvallet Jul 29, 2022
b648df6
fix package
pgayvallet Jul 29, 2022
21983bd
fix external usages
pgayvallet Jul 29, 2022
cc66bf8
fix more mocked packages
pgayvallet Jul 29, 2022
a72136d
fix more mocked packages
pgayvallet Jul 29, 2022
1fe8ec8
self review
pgayvallet Jul 29, 2022
db1b9fe
Merge remote-tracking branch 'upstream/main' into kbn-135820-so-imple…
pgayvallet Jul 29, 2022
a94a10b
Merge branch 'main' into kbn-135820-so-implementation-stage-1
TinaHeiligers Aug 1, 2022
c3210cc
Merge branch 'main' into kbn-135820-so-implementation-stage-1
kibanamachine Aug 1, 2022
e7a0ad1
Fix mistake from main merge
TinaHeiligers Aug 16, 2022
50fa813
Merge remote-tracking branch 'upstream/main' into kbn-135820-so-imple…
pgayvallet Aug 22, 2022
6700ce8
add root_input_dir
pgayvallet Aug 22, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -226,8 +226,11 @@
"@kbn/core-preboot-server-mocks": "link:bazel-bin/packages/core/preboot/core-preboot-server-mocks",
"@kbn/core-saved-objects-api-browser": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-browser",
"@kbn/core-saved-objects-api-server": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-server",
"@kbn/core-saved-objects-base-server-internal": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-base-server-internal",
"@kbn/core-saved-objects-base-server-mocks": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-base-server-mocks",
"@kbn/core-saved-objects-common": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-common",
"@kbn/core-saved-objects-server": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-server",
"@kbn/core-saved-objects-utils-server": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-utils-server",
"@kbn/core-test-helpers-http-setup-browser": "link:bazel-bin/packages/core/test-helpers/core-test-helpers-http-setup-browser",
"@kbn/core-theme-browser": "link:bazel-bin/packages/core/theme/core-theme-browser",
"@kbn/core-theme-browser-internal": "link:bazel-bin/packages/core/theme/core-theme-browser-internal",
Expand Down Expand Up @@ -849,8 +852,11 @@
"@types/kbn__core-public-internal-base": "link:bazel-bin/packages/core/public/internal-base/npm_module_types",
"@types/kbn__core-saved-objects-api-browser": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-browser/npm_module_types",
"@types/kbn__core-saved-objects-api-server": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-api-server/npm_module_types",
"@types/kbn__core-saved-objects-base-server-internal": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-base-server-internal/npm_module_types",
"@types/kbn__core-saved-objects-base-server-mocks": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-base-server-mocks/npm_module_types",
"@types/kbn__core-saved-objects-common": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-common/npm_module_types",
"@types/kbn__core-saved-objects-server": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-server/npm_module_types",
"@types/kbn__core-saved-objects-utils-server": "link:bazel-bin/packages/core/saved-objects/core-saved-objects-utils-server/npm_module_types",
"@types/kbn__core-server-internal-base": "link:bazel-bin/packages/core/server/internal-base/npm_module_types",
"@types/kbn__core-test-helpers-http-setup-browser": "link:bazel-bin/packages/core/test-helpers/core-test-helpers-http-setup-browser/npm_module_types",
"@types/kbn__core-theme-browser": "link:bazel-bin/packages/core/theme/core-theme-browser/npm_module_types",
Expand Down
6 changes: 6 additions & 0 deletions packages/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,11 @@ filegroup(
"//packages/core/preboot/core-preboot-server:build",
"//packages/core/saved-objects/core-saved-objects-api-browser:build",
"//packages/core/saved-objects/core-saved-objects-api-server:build",
"//packages/core/saved-objects/core-saved-objects-base-server-internal:build",
"//packages/core/saved-objects/core-saved-objects-base-server-mocks:build",
"//packages/core/saved-objects/core-saved-objects-common:build",
"//packages/core/saved-objects/core-saved-objects-server:build",
"//packages/core/saved-objects/core-saved-objects-utils-server:build",
"//packages/core/test-helpers/core-test-helpers-http-setup-browser:build",
"//packages/core/theme/core-theme-browser-internal:build",
"//packages/core/theme/core-theme-browser-mocks:build",
Expand Down Expand Up @@ -341,8 +344,11 @@ filegroup(
"//packages/core/preboot/core-preboot-server:build_types",
"//packages/core/saved-objects/core-saved-objects-api-browser:build_types",
"//packages/core/saved-objects/core-saved-objects-api-server:build_types",
"//packages/core/saved-objects/core-saved-objects-base-server-internal:build_types",
"//packages/core/saved-objects/core-saved-objects-base-server-mocks:build_types",
"//packages/core/saved-objects/core-saved-objects-common:build_types",
"//packages/core/saved-objects/core-saved-objects-server:build_types",
"//packages/core/saved-objects/core-saved-objects-utils-server:build_types",
"//packages/core/test-helpers/core-test-helpers-http-setup-browser:build_types",
"//packages/core/theme/core-theme-browser-internal:build_types",
"//packages/core/theme/core-theme-browser-mocks:build_types",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
load("@npm//@bazel/typescript:index.bzl", "ts_config")
load("@build_bazel_rules_nodejs//:index.bzl", "js_library")
load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project")

PKG_DIRNAME = "core-saved-objects-base-server-internal"
PKG_REQUIRE_NAME = "@kbn/core-saved-objects-base-server-internal"

SOURCE_FILES = glob(
[
"src/**/*.ts",
],
exclude = [
"**/*.test.*",
"**/*.stories.*",
],
)

SRCS = SOURCE_FILES

filegroup(
name = "srcs",
srcs = SRCS,
)

NPM_MODULE_EXTRA_FILES = [
"package.json",
]

RUNTIME_DEPS = [
"@npm//lodash",
"@npm//semver",
"//packages/kbn-config-schema",
### test dependencies
"//packages/kbn-logging-mocks",
"@npm//@hapi/boom",
]

TYPES_DEPS = [
"@npm//@types/node",
"@npm//@types/jest",
"@npm//@types/lodash",
"@npm//@types/semver",
"//packages/kbn-logging:npm_module_types",
"//packages/kbn-config-schema:npm_module_types",
"//packages/core/base/core-base-server-internal:npm_module_types",
"//packages/core/saved-objects/core-saved-objects-server:npm_module_types",
"//packages/core/saved-objects/core-saved-objects-utils-server:npm_module_types",
]

jsts_transpiler(
name = "target_node",
srcs = SRCS,
build_pkg_name = package_name(),
)

ts_config(
name = "tsconfig",
src = "tsconfig.json",
deps = [
"//:tsconfig.base.json",
"//:tsconfig.bazel.json",
],
)

ts_project(
name = "tsc_types",
args = ['--pretty'],
srcs = SRCS,
deps = TYPES_DEPS,
declaration = True,
declaration_map = True,
emit_declaration_only = True,
out_dir = "target_types",
root_dir = "src",
tsconfig = ":tsconfig",
)

js_library(
name = PKG_DIRNAME,
srcs = NPM_MODULE_EXTRA_FILES,
deps = RUNTIME_DEPS + [":target_node"],
package_name = PKG_REQUIRE_NAME,
visibility = ["//visibility:public"],
)

pkg_npm(
name = "npm_module",
deps = [":" + PKG_DIRNAME],
)

filegroup(
name = "build",
srcs = [":npm_module"],
visibility = ["//visibility:public"],
)

pkg_npm_types(
name = "npm_module_types",
srcs = SRCS,
deps = [":tsc_types"],
package_name = PKG_REQUIRE_NAME,
tsconfig = ":tsconfig",
visibility = ["//visibility:public"],
)

filegroup(
name = "build_types",
srcs = [":npm_module_types"],
visibility = ["//visibility:public"],
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# @kbn/core-saved-objects-base-server-internal

This package contains base sub-domains and utilities used by the internal implementation
of Core's server-side savedObjects domain.
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/

module.exports = {
preset: '@kbn/test/jest_node',
rootDir: '../../../..',
roots: ['<rootDir>/packages/core/saved-objects/core-saved-objects-base-server-internal'],
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"name": "@kbn/core-saved-objects-base-server-internal",
"private": true,
"version": "1.0.0",
"main": "./target_node/index.js",
"license": "SSPL-1.0 OR Elastic License 2.0"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/

export { LEGACY_URL_ALIAS_TYPE, type LegacyUrlAlias } from './legacy_alias';
export {
getProperty,
getRootProperties,
getRootPropertiesObjects,
getTypes,
type IndexMapping,
type IndexMappingMeta,
type SavedObjectsTypeMappingDefinitions,
} from './mappings';
export { SavedObjectsSerializer } from './serialization';
export { SavedObjectsTypeValidator } from './validation';
export { decodeRequestVersion, decodeVersion, encodeVersion, encodeHitVersion } from './version';
export {
savedObjectsConfig,
savedObjectsMigrationConfig,
SavedObjectConfig,
type SavedObjectsConfigType,
type SavedObjectsMigrationConfigType,
} from './saved_objects_config';
export { SavedObjectTypeRegistry } from './saved_objects_type_registry';
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,5 @@
* Side Public License, v 1.
*/

export * from './encode_version';
export * from './encode_hit_version';
export * from './decode_version';
export * from './decode_request_version';
export type { LegacyUrlAlias } from './types';
export { LEGACY_URL_ALIAS_TYPE } from './constants';
Original file line number Diff line number Diff line change
Expand Up @@ -7,28 +7,47 @@
*/

import _ from 'lodash';
import type { SavedObjectsRawDoc } from '@kbn/core-saved-objects-server';
import type { SavedObjectsRawDoc, ISavedObjectTypeRegistry } from '@kbn/core-saved-objects-server';
import { SavedObjectsSerializer } from './serializer';
import { typeRegistryMock } from '../saved_objects_type_registry.mock';
import { encodeVersion } from '../version';
import { LEGACY_URL_ALIAS_TYPE } from '../object_types';
import { LEGACY_URL_ALIAS_TYPE } from '../legacy_alias';

const createMockedTypeRegistry = ({
isNamespaceAgnostic,
isSingleNamespace,
isMultiNamespace,
}: {
isNamespaceAgnostic: boolean;
isSingleNamespace: boolean;
isMultiNamespace: boolean;
}): ISavedObjectTypeRegistry => {
const typeRegistry: Partial<ISavedObjectTypeRegistry> = {
isNamespaceAgnostic: jest.fn().mockReturnValue(isNamespaceAgnostic),
isSingleNamespace: jest.fn().mockReturnValue(isSingleNamespace),
isMultiNamespace: jest.fn().mockReturnValue(isMultiNamespace),
};
return typeRegistry as ISavedObjectTypeRegistry;
};
Comment on lines +15 to +30
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only test of the @kbn/core-saved-objects-base-server-internal that was using a mock from code that was moved to this package. I KISS'ed and created an inline mock helper.

The alternative would have been to create 2 additional packages (impl+mock) just for the SO type registry, and it didn't feel worth it.


let typeRegistry = typeRegistryMock.create();
typeRegistry.isNamespaceAgnostic.mockReturnValue(true);
typeRegistry.isSingleNamespace.mockReturnValue(false);
typeRegistry.isMultiNamespace.mockReturnValue(false);
let typeRegistry = createMockedTypeRegistry({
isNamespaceAgnostic: true,
isSingleNamespace: false,
isMultiNamespace: false,
});
const namespaceAgnosticSerializer = new SavedObjectsSerializer(typeRegistry);

typeRegistry = typeRegistryMock.create();
typeRegistry.isNamespaceAgnostic.mockReturnValue(false);
typeRegistry.isSingleNamespace.mockReturnValue(true);
typeRegistry.isMultiNamespace.mockReturnValue(false);
typeRegistry = typeRegistry = createMockedTypeRegistry({
isNamespaceAgnostic: false,
isSingleNamespace: true,
isMultiNamespace: false,
});
const singleNamespaceSerializer = new SavedObjectsSerializer(typeRegistry);

typeRegistry = typeRegistryMock.create();
typeRegistry.isNamespaceAgnostic.mockReturnValue(false);
typeRegistry.isSingleNamespace.mockReturnValue(false);
typeRegistry.isMultiNamespace.mockReturnValue(true);
typeRegistry = typeRegistry = createMockedTypeRegistry({
isNamespaceAgnostic: false,
isSingleNamespace: false,
isMultiNamespace: true,
});
const multiNamespaceSerializer = new SavedObjectsSerializer(typeRegistry);

const sampleTemplate = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ import type {
SavedObjectSanitizedDoc,
SavedObjectsRawDocParseOptions,
} from '@kbn/core-saved-objects-server';
import { LEGACY_URL_ALIAS_TYPE } from '../object_types';
import { SavedObjectsUtils } from '@kbn/core-saved-objects-utils-server';
import { LEGACY_URL_ALIAS_TYPE } from '../legacy_alias';
import { decodeVersion, encodeVersion } from '../version';
import { SavedObjectsUtils } from '../service';

/**
* Core internal implementation of {@link ISavedObjectsSerializer}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* Side Public License, v 1.
*/

import { schema, Type } from '@kbn/config-schema';
import { schema, type Type } from '@kbn/config-schema';
import type {
SavedObjectsValidationSpec,
SavedObjectSanitizedDoc,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
*/

import { schema } from '@kbn/config-schema';
import { loggerMock, type MockedLogger } from '@kbn/logging-mocks';
import type {
SavedObjectSanitizedDoc,
SavedObjectsValidationMap,
} from '@kbn/core-saved-objects-server';
import { SavedObjectsTypeValidator } from '.';
import { loggerMock, MockedLogger } from '@kbn/logging-mocks';
import { SavedObjectsTypeValidator } from './validator';

describe('Saved Objects type validator', () => {
let validator: SavedObjectsTypeValidator;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* Side Public License, v 1.
*/

import { SavedObjectsErrorHelpers } from '../service/lib/errors';
import { SavedObjectsErrorHelpers } from '@kbn/core-saved-objects-utils-server';
import { decodeBase64 } from './base64';

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/

export { encodeVersion } from './encode_version';
export { encodeHitVersion } from './encode_hit_version';
export { decodeVersion } from './decode_version';
export { decodeRequestVersion } from './decode_request_version';
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"extends": "../../../../tsconfig.bazel.json",
"compilerOptions": {
"declaration": true,
"declarationMap": true,
"emitDeclarationOnly": true,
"outDir": "target_types",
"rootDir": "src",
"stripInternal": false,
"types": [
"jest",
"node"
]
},
"include": [
"src/**/*"
]
}
Loading