mirror of
https://github.com/status-im/consul.git
synced 2025-01-09 21:35:52 +00:00
5fb9df1640
* Adding explicit MPL license for sub-package This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository. * Adding explicit MPL license for sub-package This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository. * Updating the license from MPL to Business Source License Going forward, this project will be licensed under the Business Source License v1.1. Please see our blog post for more details at <Blog URL>, FAQ at www.hashicorp.com/licensing-faq, and details of the license at www.hashicorp.com/bsl. * add missing license headers * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 --------- Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com>
67 lines
2.3 KiB
JavaScript
67 lines
2.3 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: BUSL-1.1
|
|
*/
|
|
|
|
import { runInDebug } from '@ember/debug';
|
|
import require from 'require';
|
|
import assign from 'deepmerge';
|
|
|
|
const doc = document;
|
|
|
|
export const services = assign.all(
|
|
[...doc.querySelectorAll(`script[data-services]`)].map(($item) =>
|
|
JSON.parse($item.dataset[`services`])
|
|
)
|
|
);
|
|
|
|
const inject = function (container, obj) {
|
|
// inject all the things
|
|
Object.entries(obj).forEach(([key, value]) => {
|
|
switch (true) {
|
|
case typeof value.class === 'string':
|
|
if (require.has(value.class)) {
|
|
container.register(
|
|
key.replace('auth-provider:', 'torii-provider:'),
|
|
require(value.class).default
|
|
);
|
|
} else {
|
|
throw new Error(`Unable to locate '${value.class}'`);
|
|
}
|
|
break;
|
|
}
|
|
});
|
|
};
|
|
export default {
|
|
name: 'container',
|
|
initialize(application) {
|
|
inject(application, services);
|
|
|
|
const container = application.lookup('service:container');
|
|
// find all the services and add their classes to the container so we can
|
|
// look instances up by class afterwards as we then resolve the
|
|
// registration for each of these further down this means that any top
|
|
// level code for these services is executed, this is most useful for
|
|
// making sure any annotation type decorators are executed.
|
|
// For now we only want repositories, so only look for those for the moment
|
|
let repositories = container
|
|
.get('container-debug-adapter:main')
|
|
.catalogEntriesByType('service')
|
|
.filter((item) => item.startsWith('repository/') || item === 'ui-config');
|
|
|
|
// during testing we get -test files in here, filter those out but only in debug envs
|
|
runInDebug(() => (repositories = repositories.filter((item) => !item.endsWith('-test'))));
|
|
|
|
// 'service' service is not returned by catalogEntriesByType, possibly
|
|
// related to pods and the service being called 'service':
|
|
// https://github.com/ember-cli/ember-resolver/blob/c07287af17766bfd3acf390f867fea17686f77d2/addon/resolvers/classic/container-debug-adapter.js#L80
|
|
// so push it on the end
|
|
repositories.push('repository/service');
|
|
//
|
|
repositories.forEach((item) => {
|
|
const key = `service:${item}`;
|
|
container.set(key, container.resolveRegistration(key));
|
|
});
|
|
},
|
|
};
|