diff --git a/package.json b/package.json index b676017..36f806c 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,14 @@ "require": "./dom/index.js", "default": "./mjs/dom/index.js" }, + "./analytics-metadata": { + "require": "./analytics-metadata/index.js", + "default": "./mjs/analytics-metadata/index.js" + }, + "./analytics-metadata/utils": { + "require": "./analytics-metadata/utils.js", + "default": "./mjs/analytics-metadata/utils.js" + }, "./internal": { "require": "./internal/index.js", "default": "./mjs/internal/index.js" @@ -61,7 +69,9 @@ "internal": ["./mjs/internal/index.d.ts"], "internal/*": ["./mjs/internal/*"], "dom": ["./mjs/dom/index.d.ts"], - "dom/*": ["./mjs/dom/*"] + "dom/*": ["./mjs/dom/*"], + "analytics-metadata": ["./mjs/analytics-metadata/index.d.ts"], + "analytics-metadata/*": ["./mjs/analytics-metadata/*"] } }, "repository": { diff --git a/src/analytics-metadata/__tests__/public-exports.test.ts b/src/analytics-metadata/__tests__/public-exports.test.ts new file mode 100644 index 0000000..44735b6 --- /dev/null +++ b/src/analytics-metadata/__tests__/public-exports.test.ts @@ -0,0 +1,37 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import * as internalApi from '../../internal/analytics-metadata/index'; +import * as internalUtils from '../../internal/analytics-metadata/utils'; +import * as publicApi from '../index'; +import * as publicUtils from '../utils'; + +const fragment = { component: { name: 'awsui.Test' } }; + +afterEach(() => { + publicApi.activateAnalyticsMetadata(false); +}); + +describe('public analytics-metadata entry point', () => { + test('exposes the documented named exports', () => { + expect(Object.keys(publicApi).sort()).toEqual(['activateAnalyticsMetadata', 'getAnalyticsMetadataAttribute']); + expect(Object.keys(publicUtils).sort()).toEqual(['getComponentsTree', 'getGeneratedAnalyticsMetadata']); + }); + + test('re-exports the same function identities as the internal entry point', () => { + expect(publicApi.activateAnalyticsMetadata).toBe(internalApi.activateAnalyticsMetadata); + expect(publicApi.getAnalyticsMetadataAttribute).toBe(internalApi.getAnalyticsMetadataAttribute); + expect(publicUtils.getGeneratedAnalyticsMetadata).toBe(internalUtils.getGeneratedAnalyticsMetadata); + expect(publicUtils.getComponentsTree).toBe(internalUtils.getComponentsTree); + }); + + test('shares activation state with the internal entry point', () => { + publicApi.activateAnalyticsMetadata(true); + expect(internalApi.getAnalyticsMetadataAttribute(fragment)).toEqual({ + 'data-awsui-analytics': JSON.stringify(fragment), + }); + + publicApi.activateAnalyticsMetadata(false); + expect(internalApi.getAnalyticsMetadataAttribute(fragment)).toEqual({}); + }); +}); diff --git a/src/analytics-metadata/index.ts b/src/analytics-metadata/index.ts new file mode 100644 index 0000000..f2241ee --- /dev/null +++ b/src/analytics-metadata/index.ts @@ -0,0 +1,9 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +export { activateAnalyticsMetadata, getAnalyticsMetadataAttribute } from '../internal/analytics-metadata/index.js'; +export type { + GeneratedAnalyticsMetadata, + GeneratedAnalyticsMetadataFragment, + LabelIdentifier, +} from '../internal/analytics-metadata/index.js'; diff --git a/src/analytics-metadata/utils.ts b/src/analytics-metadata/utils.ts new file mode 100644 index 0000000..e0b29bc --- /dev/null +++ b/src/analytics-metadata/utils.ts @@ -0,0 +1,5 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +export { getComponentsTree, getGeneratedAnalyticsMetadata } from '../internal/analytics-metadata/utils.js'; +export type { GetComponentsTreeOptions, OptionItem, TabItem } from '../internal/analytics-metadata/utils.js';