From 3e38579a65449a69aa7c80bd567ef94d2a00bef5 Mon Sep 17 00:00:00 2001 From: Alice Pote Date: Fri, 31 Mar 2023 15:21:58 -0400 Subject: [PATCH] refactor(utils): move output-target related utils to @utils This moves a bunch of utility functions (and some constants) from src/compiler/output-targets/output-utils.ts to instead live in a new file in the `@utils` directory (`src/utils`). This is done to reflect the fact that functions in the file are used outside of the `src/compiler/` bundle so they should be pulled out into a common location. --- scripts/bundles/internal-platform-hydrate.ts | 34 +++++++ src/cli/task-docs.ts | 3 +- src/cli/telemetry/telemetry.ts | 3 +- src/cli/telemetry/test/telemetry.spec.ts | 2 +- src/compiler/build/build-hmr.ts | 3 +- src/compiler/build/build-stats.ts | 3 +- src/compiler/bundle/ext-transforms-plugin.ts | 3 +- src/compiler/bundle/server-plugin.ts | 3 +- src/compiler/config/outputs/index.ts | 3 +- .../config/outputs/validate-collection.ts | 3 +- .../config/outputs/validate-custom-element.ts | 3 +- .../config/outputs/validate-custom-output.ts | 3 +- src/compiler/config/outputs/validate-dist.ts | 11 ++- src/compiler/config/outputs/validate-docs.ts | 14 +-- .../config/outputs/validate-hydrate-script.ts | 11 ++- src/compiler/config/outputs/validate-lazy.ts | 3 +- src/compiler/config/outputs/validate-stats.ts | 2 +- src/compiler/config/outputs/validate-www.ts | 12 ++- .../config/test/validate-config.spec.ts | 2 +- ...alidate-output-dist-custom-element.spec.ts | 2 +- .../config/test/validate-output-www.spec.ts | 2 +- src/compiler/config/validate-dev-server.ts | 3 +- src/compiler/config/validate-namespace.ts | 3 +- src/compiler/config/validate-testing.ts | 3 +- src/compiler/docs/custom/index.ts | 3 +- src/compiler/docs/json/index.ts | 2 +- src/compiler/docs/readme/index.ts | 3 +- .../docs/test/generate-doc-data.spec.ts | 2 +- src/compiler/docs/vscode/index.ts | 2 +- src/compiler/fs-watch/fs-watch-rebuild.ts | 3 +- src/compiler/html/validate-manifest-json.ts | 3 +- .../output-targets/copy/output-copy.ts | 3 +- .../output-targets/dist-collection/index.ts | 11 ++- .../custom-elements-types.ts | 3 +- .../dist-custom-elements/index.ts | 2 +- .../dist-hydrate-script/index.ts | 3 +- .../output-targets/dist-lazy/generate-cjs.ts | 3 +- .../output-targets/dist-lazy/generate-esm.ts | 3 +- .../dist-lazy/generate-system.ts | 3 +- .../dist-lazy/lazy-build-conditionals.ts | 3 +- .../output-targets/dist-lazy/lazy-output.ts | 3 +- src/compiler/output-targets/empty-dir.ts | 8 +- src/compiler/output-targets/output-custom.ts | 3 +- src/compiler/output-targets/output-docs.ts | 15 +-- .../output-targets/output-lazy-loader.ts | 5 +- .../output-targets/output-service-workers.ts | 3 +- src/compiler/output-targets/output-types.ts | 3 +- src/compiler/output-targets/output-www.ts | 3 +- .../test/custom-elements-types.spec.ts | 2 +- ...utput-targets-dist-custom-elements.spec.ts | 2 +- src/compiler/plugin/plugin.ts | 3 +- src/compiler/prerender/prerender-main.ts | 3 +- src/compiler/service-worker/generate-sw.ts | 3 +- src/compiler/style/global-styles.ts | 3 +- .../component-native/native-constructor.ts | 2 +- .../tranform-to-native-component.ts | 2 +- .../test/core-runtime-apis.spec.ts | 2 +- src/compiler/transpile/run-program.ts | 3 +- src/compiler/transpile/ts-config.ts | 2 +- src/compiler/types/generate-app-types.ts | 3 +- src/compiler/types/stencil-types.ts | 3 +- .../types/tests/validate-package-json.spec.ts | 2 +- .../types/validate-build-package-json.ts | 14 ++- src/testing/testing-utils.ts | 2 +- src/utils/constants.ts | 97 +++++++++++++++++++ src/utils/index.ts | 1 + .../output-target.ts} | 71 ++++---------- .../test/output-target.spec.ts} | 3 +- tsconfig.json | 2 +- 69 files changed, 278 insertions(+), 176 deletions(-) rename src/{compiler/output-targets/output-utils.ts => utils/output-target.ts} (78%) rename src/{compiler/output-targets/test/output-utils.spec.ts => utils/test/output-target.spec.ts} (79%) diff --git a/scripts/bundles/internal-platform-hydrate.ts b/scripts/bundles/internal-platform-hydrate.ts index ff82a3fa28a..2430535705d 100644 --- a/scripts/bundles/internal-platform-hydrate.ts +++ b/scripts/bundles/internal-platform-hydrate.ts @@ -39,6 +39,29 @@ export async function internalHydrate(opts: BuildOptions) { banner: getBanner(opts, 'Stencil Hydrate Platform'), preferConst: true, }, + /** + * The `internal-platform-hydrate` bundle depends on functions which use + * the output-target utils which, in turn, imports `path`. However, none of + * the functions which it uses actually _use_ functioned exported by `path`, + * so when bundling it doesn't actually import anything from `path` but if + * you don't set this option Rollup will leave an unqualified import like + * so: + * + * ```ts + * import "path"; + * ``` + * + * If you say `moduleSideEffects: false` you're basically saying 'dont assume + * that imported a module has a desired side effect' which allows an import that + * doesn't result in any symbols being pulled into the importing module to be + * eliminated. + * + * Another way to say this is that without this change the treeshaking + * validation for `test.dist` doesn't pass for this bundle. + */ + treeshake: { + moduleSideEffects: false, + }, plugins: [ { name: 'internalHydratePlugin', @@ -66,6 +89,17 @@ export async function internalHydrate(opts: BuildOptions) { banner: getBanner(opts, 'Stencil Hydrate Runner'), preferConst: true, }, + /** + * See above for an explanation, this is necessary to eliminate an + * unqualified import of `"path"`, like so: + * + * ```ts + * import "path"; + * ``` + */ + treeshake: { + moduleSideEffects: false, + }, plugins: [ aliasPlugin(opts), replacePlugin(opts), diff --git a/src/cli/task-docs.ts b/src/cli/task-docs.ts index af8c9a0bf29..94e0b862b73 100644 --- a/src/cli/task-docs.ts +++ b/src/cli/task-docs.ts @@ -1,4 +1,5 @@ -import { isOutputTargetDocs } from '../compiler/output-targets/output-utils'; +import { isOutputTargetDocs } from '@utils'; + import type { ValidatedConfig } from '../declarations'; import type { CoreCompiler } from './load-compiler'; import { startupCompilerLog } from './logs'; diff --git a/src/cli/telemetry/telemetry.ts b/src/cli/telemetry/telemetry.ts index 04674637292..7cdc38b984d 100644 --- a/src/cli/telemetry/telemetry.ts +++ b/src/cli/telemetry/telemetry.ts @@ -1,4 +1,5 @@ -import { isOutputTargetHydrate, WWW } from '../../compiler/output-targets/output-utils'; +import { isOutputTargetHydrate, WWW } from '@utils'; + import { IS_BROWSER_ENV } from '../../compiler/sys/environment'; import type * as d from '../../declarations'; import { readConfig, updateConfig, writeConfig } from '../ionic-config'; diff --git a/src/cli/telemetry/test/telemetry.spec.ts b/src/cli/telemetry/test/telemetry.spec.ts index db774bc89d4..e874a612ccd 100644 --- a/src/cli/telemetry/test/telemetry.spec.ts +++ b/src/cli/telemetry/test/telemetry.spec.ts @@ -1,8 +1,8 @@ import * as coreCompiler from '@stencil/core/compiler'; import { mockValidatedConfig } from '@stencil/core/testing'; +import { DIST, DIST_CUSTOM_ELEMENTS, DIST_HYDRATE_SCRIPT, WWW } from '@utils'; import { createConfigFlags } from '../../../cli/config-flags'; -import { DIST, DIST_CUSTOM_ELEMENTS, DIST_HYDRATE_SCRIPT, WWW } from '../../../compiler/output-targets/output-utils'; import * as environment from '../../../compiler/sys/environment'; import { createSystem } from '../../../compiler/sys/stencil-sys'; import type * as d from '../../../declarations'; diff --git a/src/compiler/build/build-hmr.ts b/src/compiler/build/build-hmr.ts index c7355b56e32..05e36033bdb 100644 --- a/src/compiler/build/build-hmr.ts +++ b/src/compiler/build/build-hmr.ts @@ -1,9 +1,8 @@ -import { isGlob, normalizePath, sortBy } from '@utils'; +import { isGlob, isOutputTargetWww, normalizePath, sortBy } from '@utils'; import minimatch from 'minimatch'; import { basename } from 'path'; import type * as d from '../../declarations'; -import { isOutputTargetWww } from '../output-targets/output-utils'; import { getScopeId } from '../style/scope-css'; export const generateHmr = (config: d.Config, compilerCtx: d.CompilerCtx, buildCtx: d.BuildCtx) => { diff --git a/src/compiler/build/build-stats.ts b/src/compiler/build/build-stats.ts index 54b4aa4f496..381563f89b0 100644 --- a/src/compiler/build/build-stats.ts +++ b/src/compiler/build/build-stats.ts @@ -1,7 +1,6 @@ -import { byteSize, sortBy } from '@utils'; +import { byteSize, isOutputTargetStats, sortBy } from '@utils'; import type * as d from '../../declarations'; -import { isOutputTargetStats } from '../output-targets/output-utils'; /** * Generates the Build Stats from the buildCtx. Writes any files to the file system. diff --git a/src/compiler/bundle/ext-transforms-plugin.ts b/src/compiler/bundle/ext-transforms-plugin.ts index f2499c16f74..f8d751d1364 100644 --- a/src/compiler/bundle/ext-transforms-plugin.ts +++ b/src/compiler/bundle/ext-transforms-plugin.ts @@ -1,9 +1,8 @@ -import { hasError, normalizeFsPath } from '@utils'; +import { hasError, isOutputTargetDistCollection, normalizeFsPath } from '@utils'; import { join, relative } from 'path'; import type { Plugin } from 'rollup'; import type * as d from '../../declarations'; -import { isOutputTargetDistCollection } from '../output-targets/output-utils'; import { runPluginTransformsEsmImports } from '../plugin/plugin'; import { parseImportPath } from '../transformers/stencil-import-path'; import type { BundleOptions } from './bundle-interface'; diff --git a/src/compiler/bundle/server-plugin.ts b/src/compiler/bundle/server-plugin.ts index 8139d07dc5c..58533d3043e 100644 --- a/src/compiler/bundle/server-plugin.ts +++ b/src/compiler/bundle/server-plugin.ts @@ -1,9 +1,8 @@ -import { isString, normalizeFsPath } from '@utils'; +import { isOutputTargetHydrate, isString, normalizeFsPath } from '@utils'; import { isAbsolute } from 'path'; import type { Plugin } from 'rollup'; import type * as d from '../../declarations'; -import { isOutputTargetHydrate } from '../output-targets/output-utils'; export const serverPlugin = (config: d.ValidatedConfig, platform: string): Plugin => { const isHydrateBundle = platform === 'hydrate'; diff --git a/src/compiler/config/outputs/index.ts b/src/compiler/config/outputs/index.ts index 4b7ac04cea2..206cc45bc38 100644 --- a/src/compiler/config/outputs/index.ts +++ b/src/compiler/config/outputs/index.ts @@ -1,7 +1,6 @@ -import { buildError } from '@utils'; +import { buildError, isValidConfigOutputTarget, VALID_CONFIG_OUTPUT_TARGETS } from '@utils'; import type * as d from '../../../declarations'; -import { isValidConfigOutputTarget, VALID_CONFIG_OUTPUT_TARGETS } from '../../output-targets/output-utils'; import { validateCollection } from './validate-collection'; import { validateCustomElement } from './validate-custom-element'; import { validateCustomOutput } from './validate-custom-output'; diff --git a/src/compiler/config/outputs/validate-collection.ts b/src/compiler/config/outputs/validate-collection.ts index 953e733b855..87313ba7756 100644 --- a/src/compiler/config/outputs/validate-collection.ts +++ b/src/compiler/config/outputs/validate-collection.ts @@ -1,5 +1,6 @@ +import { isOutputTargetDistCollection } from '@utils'; + import type * as d from '../../../declarations'; -import { isOutputTargetDistCollection } from '../../output-targets/output-utils'; import { getAbsolutePath } from '../config-utils'; /** diff --git a/src/compiler/config/outputs/validate-custom-element.ts b/src/compiler/config/outputs/validate-custom-element.ts index 3c83beefba7..2cac6d6cfa0 100644 --- a/src/compiler/config/outputs/validate-custom-element.ts +++ b/src/compiler/config/outputs/validate-custom-element.ts @@ -1,4 +1,4 @@ -import { isBoolean } from '@utils'; +import { COPY, DIST_TYPES, isBoolean, isOutputTargetDistCustomElements } from '@utils'; import { join } from 'path'; import type { @@ -9,7 +9,6 @@ import type { ValidatedConfig, } from '../../../declarations'; import { CustomElementsExportBehaviorOptions } from '../../../declarations'; -import { COPY, DIST_TYPES, isOutputTargetDistCustomElements } from '../../output-targets/output-utils'; import { getAbsolutePath } from '../config-utils'; import { validateCopy } from '../validate-copy'; diff --git a/src/compiler/config/outputs/validate-custom-output.ts b/src/compiler/config/outputs/validate-custom-output.ts index 7b05a7438ac..64b95fe5b9d 100644 --- a/src/compiler/config/outputs/validate-custom-output.ts +++ b/src/compiler/config/outputs/validate-custom-output.ts @@ -1,7 +1,6 @@ -import { catchError } from '@utils'; +import { catchError, COPY, isOutputTargetCustom } from '@utils'; import type * as d from '../../../declarations'; -import { COPY, isOutputTargetCustom } from '../../output-targets/output-utils'; export const validateCustomOutput = ( config: d.ValidatedConfig, diff --git a/src/compiler/config/outputs/validate-dist.ts b/src/compiler/config/outputs/validate-dist.ts index b681bc87e81..6cc898b9b8c 100644 --- a/src/compiler/config/outputs/validate-dist.ts +++ b/src/compiler/config/outputs/validate-dist.ts @@ -1,7 +1,3 @@ -import { isBoolean, isString } from '@utils'; -import { isAbsolute, join, resolve } from 'path'; - -import type * as d from '../../../declarations'; import { COPY, DIST_COLLECTION, @@ -10,8 +6,13 @@ import { DIST_LAZY_LOADER, DIST_TYPES, getComponentsDtsTypesFilePath, + isBoolean, isOutputTargetDist, -} from '../../output-targets/output-utils'; + isString, +} from '@utils'; +import { isAbsolute, join, resolve } from 'path'; + +import type * as d from '../../../declarations'; import { getAbsolutePath } from '../config-utils'; import { validateCopy } from '../validate-copy'; diff --git a/src/compiler/config/outputs/validate-docs.ts b/src/compiler/config/outputs/validate-docs.ts index eb70aaab47a..3af4f66ab8f 100644 --- a/src/compiler/config/outputs/validate-docs.ts +++ b/src/compiler/config/outputs/validate-docs.ts @@ -1,14 +1,16 @@ -import { buildError, isFunction, isString } from '@utils'; -import { isAbsolute, join } from 'path'; - -import type * as d from '../../../declarations'; -import { NOTE } from '../../docs/constants'; import { + buildError, + isFunction, isOutputTargetDocsCustom, isOutputTargetDocsJson, isOutputTargetDocsReadme, isOutputTargetDocsVscode, -} from '../../output-targets/output-utils'; + isString, +} from '@utils'; +import { isAbsolute, join } from 'path'; + +import type * as d from '../../../declarations'; +import { NOTE } from '../../docs/constants'; export const validateDocs = (config: d.ValidatedConfig, diagnostics: d.Diagnostic[], userOutputs: d.OutputTarget[]) => { const docsOutputs: d.OutputTarget[] = []; diff --git a/src/compiler/config/outputs/validate-hydrate-script.ts b/src/compiler/config/outputs/validate-hydrate-script.ts index baee5bc61c4..01d27d891df 100644 --- a/src/compiler/config/outputs/validate-hydrate-script.ts +++ b/src/compiler/config/outputs/validate-hydrate-script.ts @@ -1,13 +1,14 @@ -import { isBoolean, isString } from '@utils'; -import { isAbsolute, join } from 'path'; - -import type * as d from '../../../declarations'; import { DIST_HYDRATE_SCRIPT, + isBoolean, isOutputTargetDist, isOutputTargetHydrate, isOutputTargetWww, -} from '../../output-targets/output-utils'; + isString, +} from '@utils'; +import { isAbsolute, join } from 'path'; + +import type * as d from '../../../declarations'; import { NODE_BUILTINS } from '../../sys/modules'; export const validateHydrateScript = (config: d.ValidatedConfig, userOutputs: d.OutputTarget[]) => { diff --git a/src/compiler/config/outputs/validate-lazy.ts b/src/compiler/config/outputs/validate-lazy.ts index a5401c5a5ec..330cd8f8050 100644 --- a/src/compiler/config/outputs/validate-lazy.ts +++ b/src/compiler/config/outputs/validate-lazy.ts @@ -1,8 +1,7 @@ -import { isBoolean } from '@utils'; +import { DIST_LAZY, isBoolean, isOutputTargetDistLazy } from '@utils'; import { join } from 'path'; import type * as d from '../../../declarations'; -import { DIST_LAZY, isOutputTargetDistLazy } from '../../output-targets/output-utils'; import { getAbsolutePath } from '../config-utils'; export const validateLazy = (config: d.ValidatedConfig, userOutputs: d.OutputTarget[]) => { diff --git a/src/compiler/config/outputs/validate-stats.ts b/src/compiler/config/outputs/validate-stats.ts index 722bfc255ad..59f0f115e26 100644 --- a/src/compiler/config/outputs/validate-stats.ts +++ b/src/compiler/config/outputs/validate-stats.ts @@ -1,7 +1,7 @@ +import { isOutputTargetStats, STATS } from '@utils'; import { isAbsolute, join } from 'path'; import type * as d from '../../../declarations'; -import { isOutputTargetStats, STATS } from '../../output-targets/output-utils'; export const validateStats = (userConfig: d.ValidatedConfig, userOutputs: d.OutputTarget[]) => { const outputTargets: d.OutputTargetStats[] = []; diff --git a/src/compiler/config/outputs/validate-www.ts b/src/compiler/config/outputs/validate-www.ts index f3471bb1ea0..d0ea0c78af3 100644 --- a/src/compiler/config/outputs/validate-www.ts +++ b/src/compiler/config/outputs/validate-www.ts @@ -1,15 +1,17 @@ -import { buildError, isBoolean, isString } from '@utils'; -import { isAbsolute, join } from 'path'; - -import type * as d from '../../../declarations'; import { + buildError, COPY, DIST_GLOBAL_STYLES, DIST_LAZY, + isBoolean, isOutputTargetDist, isOutputTargetWww, + isString, WWW, -} from '../../output-targets/output-utils'; +} from '@utils'; +import { isAbsolute, join } from 'path'; + +import type * as d from '../../../declarations'; import { getAbsolutePath } from '../config-utils'; import { validateCopy } from '../validate-copy'; import { validatePrerender } from '../validate-prerender'; diff --git a/src/compiler/config/test/validate-config.spec.ts b/src/compiler/config/test/validate-config.spec.ts index e56da827d40..8083b3c82e5 100644 --- a/src/compiler/config/test/validate-config.spec.ts +++ b/src/compiler/config/test/validate-config.spec.ts @@ -1,9 +1,9 @@ import type * as d from '@stencil/core/declarations'; import { mockCompilerSystem, mockLoadConfigInit, mockLogger } from '@stencil/core/testing'; +import { DOCS_CUSTOM, DOCS_JSON, DOCS_README, DOCS_VSCODE } from '@utils'; import { createConfigFlags } from '../../../cli/config-flags'; import { isWatchIgnorePath } from '../../fs-watch/fs-watch-rebuild'; -import { DOCS_CUSTOM, DOCS_JSON, DOCS_README, DOCS_VSCODE } from '../../output-targets/output-utils'; import { validateConfig } from '../validate-config'; describe('validation', () => { diff --git a/src/compiler/config/test/validate-output-dist-custom-element.spec.ts b/src/compiler/config/test/validate-output-dist-custom-element.spec.ts index 8ca58c3cfce..eaa7b07b3f5 100644 --- a/src/compiler/config/test/validate-output-dist-custom-element.spec.ts +++ b/src/compiler/config/test/validate-output-dist-custom-element.spec.ts @@ -1,8 +1,8 @@ import type * as d from '@stencil/core/declarations'; import { mockConfig, mockLoadConfigInit } from '@stencil/core/testing'; +import { COPY, DIST_CUSTOM_ELEMENTS, DIST_TYPES } from '@utils'; import path from 'path'; -import { COPY, DIST_CUSTOM_ELEMENTS, DIST_TYPES } from '../../output-targets/output-utils'; import { validateConfig } from '../validate-config'; describe('validate-output-dist-custom-element', () => { diff --git a/src/compiler/config/test/validate-output-www.spec.ts b/src/compiler/config/test/validate-output-www.spec.ts index ed131b8465c..2155f62cb0e 100644 --- a/src/compiler/config/test/validate-output-www.spec.ts +++ b/src/compiler/config/test/validate-output-www.spec.ts @@ -1,9 +1,9 @@ import type * as d from '@stencil/core/declarations'; import { mockLoadConfigInit } from '@stencil/core/testing'; +import { isOutputTargetCopy, isOutputTargetHydrate, isOutputTargetWww } from '@utils'; import path from 'path'; import { ConfigFlags, createConfigFlags } from '../../../cli/config-flags'; -import { isOutputTargetCopy, isOutputTargetHydrate, isOutputTargetWww } from '../../output-targets/output-utils'; import { validateConfig } from '../validate-config'; describe('validateOutputTargetWww', () => { diff --git a/src/compiler/config/validate-dev-server.ts b/src/compiler/config/validate-dev-server.ts index 816698fa6ca..271f155480c 100644 --- a/src/compiler/config/validate-dev-server.ts +++ b/src/compiler/config/validate-dev-server.ts @@ -1,8 +1,7 @@ -import { buildError, isBoolean, isNumber, isString, normalizePath } from '@utils'; +import { buildError, isBoolean, isNumber, isOutputTargetWww, isString, normalizePath } from '@utils'; import { isAbsolute, join } from 'path'; import type * as d from '../../declarations'; -import { isOutputTargetWww } from '../output-targets/output-utils'; export const validateDevServer = ( config: d.ValidatedConfig, diff --git a/src/compiler/config/validate-namespace.ts b/src/compiler/config/validate-namespace.ts index c8b24ffa332..1773c050a61 100644 --- a/src/compiler/config/validate-namespace.ts +++ b/src/compiler/config/validate-namespace.ts @@ -1,7 +1,6 @@ -import { buildError, dashToPascalCase, isString } from '@utils'; +import { buildError, dashToPascalCase, isOutputTargetDist, isString } from '@utils'; import type * as d from '../../declarations'; -import { isOutputTargetDist } from '../output-targets/output-utils'; export const validateNamespace = (c: d.UnvalidatedConfig, diagnostics: d.Diagnostic[]) => { c.namespace = isString(c.namespace) ? c.namespace : DEFAULT_NAMESPACE; diff --git a/src/compiler/config/validate-testing.ts b/src/compiler/config/validate-testing.ts index adf979e5f42..c4f8bd8222b 100644 --- a/src/compiler/config/validate-testing.ts +++ b/src/compiler/config/validate-testing.ts @@ -1,8 +1,7 @@ -import { buildError, isString } from '@utils'; +import { buildError, isOutputTargetDist, isOutputTargetWww, isString } from '@utils'; import { basename, dirname, isAbsolute, join } from 'path'; import type * as d from '../../declarations'; -import { isOutputTargetDist, isOutputTargetWww } from '../output-targets/output-utils'; import { isLocalModule } from '../sys/resolve/resolve-utils'; export const validateTesting = (config: d.ValidatedConfig, diagnostics: d.Diagnostic[]) => { diff --git a/src/compiler/docs/custom/index.ts b/src/compiler/docs/custom/index.ts index 21a880017e9..b98e8d8c18f 100644 --- a/src/compiler/docs/custom/index.ts +++ b/src/compiler/docs/custom/index.ts @@ -1,5 +1,6 @@ +import { isOutputTargetDocsCustom } from '@utils'; + import type * as d from '../../../declarations'; -import { isOutputTargetDocsCustom } from '../../output-targets/output-utils'; export const generateCustomDocs = async ( config: d.ValidatedConfig, diff --git a/src/compiler/docs/json/index.ts b/src/compiler/docs/json/index.ts index 12d087116aa..1b8c14ad387 100644 --- a/src/compiler/docs/json/index.ts +++ b/src/compiler/docs/json/index.ts @@ -1,7 +1,7 @@ +import { isOutputTargetDocsJson } from '@utils'; import { join } from 'path'; import type * as d from '../../../declarations'; -import { isOutputTargetDocsJson } from '../../output-targets/output-utils'; export const generateJsonDocs = async ( config: d.ValidatedConfig, diff --git a/src/compiler/docs/readme/index.ts b/src/compiler/docs/readme/index.ts index 6f1724c02e5..e39a31c49f9 100644 --- a/src/compiler/docs/readme/index.ts +++ b/src/compiler/docs/readme/index.ts @@ -1,5 +1,6 @@ +import { isOutputTargetDocsReadme } from '@utils'; + import type * as d from '../../../declarations'; -import { isOutputTargetDocsReadme } from '../../output-targets/output-utils'; import { generateReadme } from './output-docs'; export const generateReadmeDocs = async ( diff --git a/src/compiler/docs/test/generate-doc-data.spec.ts b/src/compiler/docs/test/generate-doc-data.spec.ts index b0fed8fec7b..210f0a2d0c8 100644 --- a/src/compiler/docs/test/generate-doc-data.spec.ts +++ b/src/compiler/docs/test/generate-doc-data.spec.ts @@ -1,7 +1,7 @@ import { mockBuildCtx, mockCompilerCtx, mockModule, mockValidatedConfig } from '@stencil/core/testing'; +import { getComponentsFromModules } from '@utils'; import type * as d from '../../../declarations'; -import { getComponentsFromModules } from '../../output-targets/output-utils'; import { stubComponentCompilerMeta } from '../../types/tests/ComponentCompilerMeta.stub'; import { AUTO_GENERATE_COMMENT } from '../constants'; import { generateDocData } from '../generate-doc-data'; diff --git a/src/compiler/docs/vscode/index.ts b/src/compiler/docs/vscode/index.ts index b866c482d87..93f17dd0503 100644 --- a/src/compiler/docs/vscode/index.ts +++ b/src/compiler/docs/vscode/index.ts @@ -1,7 +1,7 @@ +import { isOutputTargetDocsVscode } from '@utils'; import { join } from 'path'; import type * as d from '../../../declarations'; -import { isOutputTargetDocsVscode } from '../../output-targets/output-utils'; import { getNameText } from '../generate-doc-data'; /** diff --git a/src/compiler/fs-watch/fs-watch-rebuild.ts b/src/compiler/fs-watch/fs-watch-rebuild.ts index eb81950a1ce..555c587666e 100644 --- a/src/compiler/fs-watch/fs-watch-rebuild.ts +++ b/src/compiler/fs-watch/fs-watch-rebuild.ts @@ -1,8 +1,7 @@ -import { isString, unique } from '@utils'; +import { isOutputTargetDocsJson, isOutputTargetDocsVscode, isOutputTargetStats, isString, unique } from '@utils'; import { basename } from 'path'; import type * as d from '../../declarations'; -import { isOutputTargetDocsJson, isOutputTargetDocsVscode, isOutputTargetStats } from '../output-targets/output-utils'; export const filesChanged = (buildCtx: d.BuildCtx) => { // files changed include updated, added and deleted diff --git a/src/compiler/html/validate-manifest-json.ts b/src/compiler/html/validate-manifest-json.ts index 2a8a3b9bf63..3a6a0bfbe36 100644 --- a/src/compiler/html/validate-manifest-json.ts +++ b/src/compiler/html/validate-manifest-json.ts @@ -1,8 +1,7 @@ -import { buildError, buildJsonFileError } from '@utils'; +import { buildError, buildJsonFileError, isOutputTargetWww } from '@utils'; import { dirname, join } from 'path'; import type * as d from '../../declarations'; -import { isOutputTargetWww } from '../output-targets/output-utils'; export const validateManifestJson = (config: d.ValidatedConfig, compilerCtx: d.CompilerCtx, buildCtx: d.BuildCtx) => { if (config.devMode) { diff --git a/src/compiler/output-targets/copy/output-copy.ts b/src/compiler/output-targets/copy/output-copy.ts index 0f16f612c98..19992f0a24a 100644 --- a/src/compiler/output-targets/copy/output-copy.ts +++ b/src/compiler/output-targets/copy/output-copy.ts @@ -1,9 +1,8 @@ -import { buildError, isGlob, normalizePath } from '@utils'; +import { buildError, isGlob, isOutputTargetCopy, normalizePath } from '@utils'; import minimatch from 'minimatch'; import { join } from 'path'; import type * as d from '../../../declarations'; -import { isOutputTargetCopy } from '../output-utils'; import { canSkipAssetsCopy, getComponentAssetsCopyTasks } from './assets-copy-tasks'; import { getDestAbsPath, getSrcAbsPath } from './local-copy-tasks'; diff --git a/src/compiler/output-targets/dist-collection/index.ts b/src/compiler/output-targets/dist-collection/index.ts index 3285297a44f..5433299e468 100644 --- a/src/compiler/output-targets/dist-collection/index.ts +++ b/src/compiler/output-targets/dist-collection/index.ts @@ -1,11 +1,18 @@ -import { catchError, COLLECTION_MANIFEST_FILE_NAME, flatOne, generatePreamble, normalizePath, sortBy } from '@utils'; +import { + catchError, + COLLECTION_MANIFEST_FILE_NAME, + flatOne, + generatePreamble, + isOutputTargetDistCollection, + normalizePath, + sortBy, +} from '@utils'; import { join, relative } from 'path'; import ts from 'typescript'; import type * as d from '../../../declarations'; import { typescriptVersion, version } from '../../../version'; import { mapImportsToPathAliases } from '../../transformers/map-imports-to-path-aliases'; -import { isOutputTargetDistCollection } from '../output-utils'; /** * Main output target function for `dist-collection`. This function takes the compiled output from a diff --git a/src/compiler/output-targets/dist-custom-elements/custom-elements-types.ts b/src/compiler/output-targets/dist-custom-elements/custom-elements-types.ts index ffccb9fb114..fbee63127e9 100644 --- a/src/compiler/output-targets/dist-custom-elements/custom-elements-types.ts +++ b/src/compiler/output-targets/dist-custom-elements/custom-elements-types.ts @@ -1,8 +1,7 @@ -import { dashToPascalCase, normalizePath } from '@utils'; +import { dashToPascalCase, isOutputTargetDistCustomElements, normalizePath } from '@utils'; import { dirname, join, relative } from 'path'; import type * as d from '../../../declarations'; -import { isOutputTargetDistCustomElements } from '../output-utils'; /** * Entrypoint for generating types for one or more `dist-custom-elements` output targets defined in a Stencil project's diff --git a/src/compiler/output-targets/dist-custom-elements/index.ts b/src/compiler/output-targets/dist-custom-elements/index.ts index 807fe3bca9d..fcc64d74802 100644 --- a/src/compiler/output-targets/dist-custom-elements/index.ts +++ b/src/compiler/output-targets/dist-custom-elements/index.ts @@ -4,6 +4,7 @@ import { generatePreamble, getSourceMappingUrlForEndOfFile, hasError, + isOutputTargetDistCustomElements, isString, rollupToStencilSourceMap, } from '@utils'; @@ -20,7 +21,6 @@ import { proxyCustomElement } from '../../transformers/component-native/proxy-cu import { nativeComponentTransform } from '../../transformers/component-native/tranform-to-native-component'; import { removeCollectionImports } from '../../transformers/remove-collection-imports'; import { updateStencilCoreImports } from '../../transformers/update-stencil-core-import'; -import { isOutputTargetDistCustomElements } from '../output-utils'; import { getCustomElementsBuildConditionals } from './custom-elements-build-conditionals'; /** diff --git a/src/compiler/output-targets/dist-hydrate-script/index.ts b/src/compiler/output-targets/dist-hydrate-script/index.ts index 450dd77fdcb..effc9f4ddbb 100644 --- a/src/compiler/output-targets/dist-hydrate-script/index.ts +++ b/src/compiler/output-targets/dist-hydrate-script/index.ts @@ -1,5 +1,6 @@ +import { isOutputTargetHydrate } from '@utils'; + import type * as d from '../../../declarations'; -import { isOutputTargetHydrate } from '../output-utils'; import { generateHydrateApp } from './generate-hydrate-app'; export const outputHydrateScript = async ( diff --git a/src/compiler/output-targets/dist-lazy/generate-cjs.ts b/src/compiler/output-targets/dist-lazy/generate-cjs.ts index 35b2a72db98..6be00932581 100644 --- a/src/compiler/output-targets/dist-lazy/generate-cjs.ts +++ b/src/compiler/output-targets/dist-lazy/generate-cjs.ts @@ -1,10 +1,9 @@ -import { generatePreamble } from '@utils'; +import { generatePreamble, relativeImport } from '@utils'; import { join } from 'path'; import type { OutputOptions, RollupBuild } from 'rollup'; import type * as d from '../../../declarations'; import { generateRollupOutput } from '../../app-core/bundle-app-core'; -import { relativeImport } from '../output-utils'; import { generateLazyModules } from './generate-lazy-module'; export const generateCjs = async ( diff --git a/src/compiler/output-targets/dist-lazy/generate-esm.ts b/src/compiler/output-targets/dist-lazy/generate-esm.ts index c3c3983cee6..6fdfa49f02d 100644 --- a/src/compiler/output-targets/dist-lazy/generate-esm.ts +++ b/src/compiler/output-targets/dist-lazy/generate-esm.ts @@ -1,10 +1,9 @@ -import { generatePreamble } from '@utils'; +import { generatePreamble, relativeImport } from '@utils'; import { join } from 'path'; import type { OutputOptions, RollupBuild } from 'rollup'; import type * as d from '../../../declarations'; import { generateRollupOutput } from '../../app-core/bundle-app-core'; -import { relativeImport } from '../output-utils'; import { generateLazyModules } from './generate-lazy-module'; export const generateEsm = async ( diff --git a/src/compiler/output-targets/dist-lazy/generate-system.ts b/src/compiler/output-targets/dist-lazy/generate-system.ts index eda8644aecc..d4e5ad9d3e0 100644 --- a/src/compiler/output-targets/dist-lazy/generate-system.ts +++ b/src/compiler/output-targets/dist-lazy/generate-system.ts @@ -1,11 +1,10 @@ -import { generatePreamble } from '@utils'; +import { generatePreamble, relativeImport } from '@utils'; import { join } from 'path'; import type { OutputOptions, RollupBuild } from 'rollup'; import type * as d from '../../../declarations'; import { getAppBrowserCorePolyfills } from '../../app-core/app-polyfills'; import { generateRollupOutput } from '../../app-core/bundle-app-core'; -import { relativeImport } from '../output-utils'; import { generateLazyModules } from './generate-lazy-module'; export const generateSystem = async ( diff --git a/src/compiler/output-targets/dist-lazy/lazy-build-conditionals.ts b/src/compiler/output-targets/dist-lazy/lazy-build-conditionals.ts index 57f5db143b6..85423aa7cbf 100644 --- a/src/compiler/output-targets/dist-lazy/lazy-build-conditionals.ts +++ b/src/compiler/output-targets/dist-lazy/lazy-build-conditionals.ts @@ -1,6 +1,7 @@ +import { isOutputTargetHydrate } from '@utils'; + import type * as d from '../../../declarations'; import { getBuildFeatures, updateBuildConditionals } from '../../app-core/app-data'; -import { isOutputTargetHydrate } from '../output-utils'; export const getLazyBuildConditionals = ( config: d.ValidatedConfig, diff --git a/src/compiler/output-targets/dist-lazy/lazy-output.ts b/src/compiler/output-targets/dist-lazy/lazy-output.ts index fe07afc40a1..b0fb0cf12d1 100644 --- a/src/compiler/output-targets/dist-lazy/lazy-output.ts +++ b/src/compiler/output-targets/dist-lazy/lazy-output.ts @@ -1,4 +1,4 @@ -import { catchError, sortBy } from '@utils'; +import { catchError, isOutputTargetDist, isOutputTargetDistLazy, sortBy } from '@utils'; import MagicString from 'magic-string'; import type * as d from '../../../declarations'; @@ -18,7 +18,6 @@ import { generateModuleGraph } from '../../entries/component-graph'; import { lazyComponentTransform } from '../../transformers/component-lazy/transform-lazy-component'; import { removeCollectionImports } from '../../transformers/remove-collection-imports'; import { updateStencilCoreImports } from '../../transformers/update-stencil-core-import'; -import { isOutputTargetDist, isOutputTargetDistLazy } from '../output-utils'; import { generateCjs } from './generate-cjs'; import { generateEsm } from './generate-esm'; import { generateEsmBrowser } from './generate-esm-browser'; diff --git a/src/compiler/output-targets/empty-dir.ts b/src/compiler/output-targets/empty-dir.ts index 141a5ca3375..5a16647a344 100644 --- a/src/compiler/output-targets/empty-dir.ts +++ b/src/compiler/output-targets/empty-dir.ts @@ -1,6 +1,3 @@ -import { isString } from '@utils'; - -import type * as d from '../../declarations'; import { isOutputTargetDist, isOutputTargetDistCustomElements, @@ -8,7 +5,10 @@ import { isOutputTargetDistLazyLoader, isOutputTargetHydrate, isOutputTargetWww, -} from './output-utils'; + isString, +} from '@utils'; + +import type * as d from '../../declarations'; type OutputTargetEmptiable = | d.OutputTargetDist diff --git a/src/compiler/output-targets/output-custom.ts b/src/compiler/output-targets/output-custom.ts index b91eeac6a1f..ba2a0238385 100644 --- a/src/compiler/output-targets/output-custom.ts +++ b/src/compiler/output-targets/output-custom.ts @@ -1,7 +1,6 @@ -import { catchError } from '@utils'; +import { catchError, isOutputTargetCustom } from '@utils'; import type * as d from '../../declarations'; -import { isOutputTargetCustom } from './output-utils'; export const outputCustom = async ( config: d.ValidatedConfig, diff --git a/src/compiler/output-targets/output-docs.ts b/src/compiler/output-targets/output-docs.ts index ba550155e45..744d457d7a1 100644 --- a/src/compiler/output-targets/output-docs.ts +++ b/src/compiler/output-targets/output-docs.ts @@ -1,3 +1,11 @@ +import { + isOutputTargetCustom, + isOutputTargetDocsCustom, + isOutputTargetDocsJson, + isOutputTargetDocsReadme, + isOutputTargetDocsVscode, +} from '@utils'; + import type * as d from '../../declarations'; import { generateCustomDocs } from '../docs/custom'; import { generateDocData } from '../docs/generate-doc-data'; @@ -5,13 +13,6 @@ import { generateJsonDocs } from '../docs/json'; import { generateReadmeDocs } from '../docs/readme'; import { generateVscodeDocs } from '../docs/vscode'; import { outputCustom } from './output-custom'; -import { - isOutputTargetCustom, - isOutputTargetDocsCustom, - isOutputTargetDocsJson, - isOutputTargetDocsReadme, - isOutputTargetDocsVscode, -} from './output-utils'; /** * Generate documentation-related output targets diff --git a/src/compiler/output-targets/output-lazy-loader.ts b/src/compiler/output-targets/output-lazy-loader.ts index ce078a30862..dc066335d0b 100644 --- a/src/compiler/output-targets/output-lazy-loader.ts +++ b/src/compiler/output-targets/output-lazy-loader.ts @@ -1,9 +1,8 @@ -import { generatePreamble, normalizePath } from '@utils'; +import { generatePreamble, isOutputTargetDistLazyLoader, normalizePath, relativeImport } from '@utils'; import { join, relative } from 'path'; import type * as d from '../../declarations'; import { getClientPolyfill } from '../app-core/app-polyfills'; -import { isOutputTargetDistLazyLoader, relativeImport } from './output-utils'; export const outputLazyLoader = async (config: d.ValidatedConfig, compilerCtx: d.CompilerCtx) => { const outputTargets = config.outputTargets.filter(isOutputTargetDistLazyLoader); @@ -90,7 +89,7 @@ export interface CustomElementsDefineOptions { export declare function defineCustomElements(win?: Window, opts?: CustomElementsDefineOptions): Promise; export declare function applyPolyfills(): Promise; -/** +/** * Used to specify a nonce value that corresponds with an application's CSP. * When set, the nonce will be added to all dynamically created script and style tags at runtime. * Alternatively, the nonce value can be set on a meta tag in the DOM head diff --git a/src/compiler/output-targets/output-service-workers.ts b/src/compiler/output-targets/output-service-workers.ts index 9fc3ec5be3c..12e460ba7fe 100644 --- a/src/compiler/output-targets/output-service-workers.ts +++ b/src/compiler/output-targets/output-service-workers.ts @@ -1,6 +1,7 @@ +import { isOutputTargetWww } from '@utils'; + import type * as d from '../../declarations'; import { generateServiceWorker } from '../service-worker/generate-sw'; -import { isOutputTargetWww } from './output-utils'; /** * Entrypoint to creating a service worker for every `www` output target diff --git a/src/compiler/output-targets/output-types.ts b/src/compiler/output-targets/output-types.ts index 16d6e102722..0945ba58bbc 100644 --- a/src/compiler/output-targets/output-types.ts +++ b/src/compiler/output-targets/output-types.ts @@ -1,6 +1,7 @@ +import { isOutputTargetDistTypes } from '@utils'; + import type * as d from '../../declarations'; import { generateTypes } from '../types/generate-types'; -import { isOutputTargetDistTypes } from './output-utils'; /** * Entrypoint for generating types for all output targets diff --git a/src/compiler/output-targets/output-www.ts b/src/compiler/output-targets/output-www.ts index 6cacab407f9..0ee9fd6527b 100644 --- a/src/compiler/output-targets/output-www.ts +++ b/src/compiler/output-targets/output-www.ts @@ -1,5 +1,5 @@ import { cloneDocument, serializeNodeToHtml } from '@stencil/core/mock-doc'; -import { catchError, flatOne, unique } from '@utils'; +import { catchError, flatOne, isOutputTargetWww, unique } from '@utils'; import { join, relative } from 'path'; import type * as d from '../../declarations'; @@ -15,7 +15,6 @@ import { getUsedComponents } from '../html/used-components'; import { generateHashedCopy } from '../output-targets/copy/hashed-copy'; import { INDEX_ORG } from '../service-worker/generate-sw'; import { getScopeId } from '../style/scope-css'; -import { isOutputTargetWww } from './output-utils'; export const outputWww = async (config: d.ValidatedConfig, compilerCtx: d.CompilerCtx, buildCtx: d.BuildCtx) => { const outputTargets = config.outputTargets.filter(isOutputTargetWww); diff --git a/src/compiler/output-targets/test/custom-elements-types.spec.ts b/src/compiler/output-targets/test/custom-elements-types.spec.ts index 9ec3ba27494..c9681dc5c8e 100644 --- a/src/compiler/output-targets/test/custom-elements-types.spec.ts +++ b/src/compiler/output-targets/test/custom-elements-types.spec.ts @@ -6,13 +6,13 @@ import { mockModule, mockValidatedConfig, } from '@stencil/core/testing'; +import { DIST_CUSTOM_ELEMENTS } from '@utils'; import { join, relative } from 'path'; import type * as d from '../../../declarations'; import { stubComponentCompilerMeta } from '../../types/tests/ComponentCompilerMeta.stub'; import * as outputCustomElementsMod from '../dist-custom-elements'; import { generateCustomElementsTypes } from '../dist-custom-elements/custom-elements-types'; -import { DIST_CUSTOM_ELEMENTS } from '../output-utils'; const setup = () => { const sys = mockCompilerSystem(); diff --git a/src/compiler/output-targets/test/output-targets-dist-custom-elements.spec.ts b/src/compiler/output-targets/test/output-targets-dist-custom-elements.spec.ts index 14f03e6bfca..764de74a237 100644 --- a/src/compiler/output-targets/test/output-targets-dist-custom-elements.spec.ts +++ b/src/compiler/output-targets/test/output-targets-dist-custom-elements.spec.ts @@ -6,6 +6,7 @@ import { mockModule, mockValidatedConfig, } from '@stencil/core/testing'; +import { DIST_CUSTOM_ELEMENTS } from '@utils'; import type * as d from '../../../declarations'; import { OutputTargetDistCustomElements } from '../../../declarations'; @@ -19,7 +20,6 @@ import { getBundleOptions, outputCustomElements, } from '../dist-custom-elements'; -import { DIST_CUSTOM_ELEMENTS } from '../output-utils'; const setup = () => { const sys = mockCompilerSystem(); diff --git a/src/compiler/plugin/plugin.ts b/src/compiler/plugin/plugin.ts index f26c1b70843..ab906d07fdc 100644 --- a/src/compiler/plugin/plugin.ts +++ b/src/compiler/plugin/plugin.ts @@ -1,9 +1,8 @@ -import { buildError, catchError, isFunction, isString } from '@utils'; +import { buildError, catchError, isFunction, isOutputTargetDocs, isString } from '@utils'; import { basename, relative } from 'path'; import type * as d from '../../declarations'; import { PluginCtx, PluginTransformResults } from '../../declarations'; -import { isOutputTargetDocs } from '../output-targets/output-utils'; import { parseCssImports } from '../style/css-imports'; export const runPluginResolveId = async (pluginCtx: PluginCtx, importee: string) => { diff --git a/src/compiler/prerender/prerender-main.ts b/src/compiler/prerender/prerender-main.ts index e091144308d..91f125ee0f7 100644 --- a/src/compiler/prerender/prerender-main.ts +++ b/src/compiler/prerender/prerender-main.ts @@ -1,10 +1,9 @@ -import { buildError, catchError, hasError, isString } from '@utils'; +import { buildError, catchError, hasError, isOutputTargetWww, isString } from '@utils'; import { isAbsolute, join } from 'path'; import type * as d from '../../declarations'; import { createHydrateBuildId } from '../../hydrate/runner/render-utils'; import { getAbsoluteBuildDir } from '../html/html-utils'; -import { isOutputTargetWww } from '../output-targets/output-utils'; import { createWorkerMainContext } from '../worker/main-thread'; import { createWorkerContext } from '../worker/worker-thread'; import { getPrerenderConfig } from './prerender-config'; diff --git a/src/compiler/service-worker/generate-sw.ts b/src/compiler/service-worker/generate-sw.ts index 2441c1b7bcc..6091a98f833 100644 --- a/src/compiler/service-worker/generate-sw.ts +++ b/src/compiler/service-worker/generate-sw.ts @@ -1,8 +1,7 @@ -import { buildWarn, catchError } from '@utils'; +import { buildWarn, catchError, isOutputTargetWww } from '@utils'; import { basename } from 'path'; import type * as d from '../../declarations'; -import { isOutputTargetWww } from '../output-targets/output-utils'; export const generateServiceWorker = async ( config: d.ValidatedConfig, diff --git a/src/compiler/style/global-styles.ts b/src/compiler/style/global-styles.ts index 17af067efa0..8cd19c7c1df 100644 --- a/src/compiler/style/global-styles.ts +++ b/src/compiler/style/global-styles.ts @@ -1,7 +1,6 @@ -import { catchError, normalizePath } from '@utils'; +import { catchError, isOutputTargetDistGlobalStyles, normalizePath } from '@utils'; import type * as d from '../../declarations'; -import { isOutputTargetDistGlobalStyles } from '../output-targets/output-utils'; import { runPluginTransforms } from '../plugin/plugin'; import { getCssImports } from './css-imports'; import { optimizeCss } from './optimize-css'; diff --git a/src/compiler/transformers/component-native/native-constructor.ts b/src/compiler/transformers/component-native/native-constructor.ts index e4b6ff72a57..9a14478b325 100644 --- a/src/compiler/transformers/component-native/native-constructor.ts +++ b/src/compiler/transformers/component-native/native-constructor.ts @@ -1,7 +1,7 @@ +import { DIST_CUSTOM_ELEMENTS } from '@utils'; import ts from 'typescript'; import type * as d from '../../../declarations'; -import { DIST_CUSTOM_ELEMENTS } from '../../output-targets/output-utils'; import { addOutputTargetCoreRuntimeApi, RUNTIME_APIS } from '../core-runtime-apis'; import { addCreateEvents } from '../create-event'; import { addLegacyProps } from '../legacy-props'; diff --git a/src/compiler/transformers/component-native/tranform-to-native-component.ts b/src/compiler/transformers/component-native/tranform-to-native-component.ts index ba9a760ff37..06cb7b2fb0b 100644 --- a/src/compiler/transformers/component-native/tranform-to-native-component.ts +++ b/src/compiler/transformers/component-native/tranform-to-native-component.ts @@ -1,7 +1,7 @@ +import { DIST_CUSTOM_ELEMENTS } from '@utils'; import ts from 'typescript'; import type * as d from '../../../declarations'; -import { DIST_CUSTOM_ELEMENTS } from '../../output-targets/output-utils'; import { addModuleMetadataProxies } from '../add-component-meta-proxy'; import { addImports } from '../add-imports'; import { addLegacyApis } from '../core-runtime-apis'; diff --git a/src/compiler/transformers/test/core-runtime-apis.spec.ts b/src/compiler/transformers/test/core-runtime-apis.spec.ts index c7b005e4bdc..1a46582ba09 100644 --- a/src/compiler/transformers/test/core-runtime-apis.spec.ts +++ b/src/compiler/transformers/test/core-runtime-apis.spec.ts @@ -1,7 +1,7 @@ +import { DIST_CUSTOM_ELEMENTS } from '@utils'; import * as ts from 'typescript'; import * as d from '../../../declarations'; -import { DIST_CUSTOM_ELEMENTS } from '../../output-targets/output-utils'; import { createModule } from '../../transpile/transpiled-module'; import { addCoreRuntimeApi, addLegacyApis, addOutputTargetCoreRuntimeApi, RUNTIME_APIS } from '../core-runtime-apis'; diff --git a/src/compiler/transpile/run-program.ts b/src/compiler/transpile/run-program.ts index 8663566ce66..3aded59c42d 100644 --- a/src/compiler/transpile/run-program.ts +++ b/src/compiler/transpile/run-program.ts @@ -1,11 +1,10 @@ -import { loadTypeScriptDiagnostics, normalizePath } from '@utils'; +import { getComponentsFromModules, isOutputTargetDistTypes, loadTypeScriptDiagnostics, normalizePath } from '@utils'; import { basename, join, relative } from 'path'; import ts from 'typescript'; import type * as d from '../../declarations'; import { updateComponentBuildConditionals } from '../app-core/app-data'; import { resolveComponentDependencies } from '../entries/resolve-component-dependencies'; -import { getComponentsFromModules, isOutputTargetDistTypes } from '../output-targets/output-utils'; import { convertDecoratorsToStatic } from '../transformers/decorators-to-static/convert-decorators'; import { rewriteAliasedDTSImportPaths, diff --git a/src/compiler/transpile/ts-config.ts b/src/compiler/transpile/ts-config.ts index 7f80df8b416..64cbce17001 100644 --- a/src/compiler/transpile/ts-config.ts +++ b/src/compiler/transpile/ts-config.ts @@ -1,7 +1,7 @@ +import { isOutputTargetDistTypes } from '@utils'; import ts from 'typescript'; import type * as d from '../../declarations'; -import { isOutputTargetDistTypes } from '../output-targets/output-utils'; /** * Derive a {@link ts.CompilerOptions} object from the options currently set diff --git a/src/compiler/types/generate-app-types.ts b/src/compiler/types/generate-app-types.ts index df58682c121..f766fdd6ef6 100644 --- a/src/compiler/types/generate-app-types.ts +++ b/src/compiler/types/generate-app-types.ts @@ -1,8 +1,7 @@ -import { addDocBlock, normalizePath } from '@utils'; +import { addDocBlock, GENERATED_DTS, getComponentsDtsSrcFilePath, normalizePath } from '@utils'; import { isAbsolute, relative, resolve } from 'path'; import type * as d from '../../declarations'; -import { GENERATED_DTS, getComponentsDtsSrcFilePath } from '../output-targets/output-utils'; import { generateComponentTypes } from './generate-component-types'; import { generateEventDetailTypes } from './generate-event-detail-types'; import { updateStencilTypesImports } from './stencil-types'; diff --git a/src/compiler/types/stencil-types.ts b/src/compiler/types/stencil-types.ts index 39b4bfec510..9dde24a06f9 100644 --- a/src/compiler/types/stencil-types.ts +++ b/src/compiler/types/stencil-types.ts @@ -1,8 +1,7 @@ -import { normalizePath } from '@utils'; +import { isOutputTargetDistTypes, normalizePath } from '@utils'; import { dirname, join, relative, resolve } from 'path'; import type * as d from '../../declarations'; -import { isOutputTargetDistTypes } from '../output-targets/output-utils'; import { FsWriteResults } from '../sys/in-memory-fs'; /** diff --git a/src/compiler/types/tests/validate-package-json.spec.ts b/src/compiler/types/tests/validate-package-json.spec.ts index ef86c9c974e..d53a361be78 100644 --- a/src/compiler/types/tests/validate-package-json.spec.ts +++ b/src/compiler/types/tests/validate-package-json.spec.ts @@ -1,9 +1,9 @@ import type * as d from '@stencil/core/declarations'; import { mockBuildCtx, mockCompilerCtx, mockValidatedConfig } from '@stencil/core/testing'; +import { DIST_COLLECTION, DIST_CUSTOM_ELEMENTS } from '@utils'; import path from 'path'; import { normalizePath } from '../../../utils/normalize-path'; -import { DIST_COLLECTION, DIST_CUSTOM_ELEMENTS } from '../../output-targets/output-utils'; import * as v from '../validate-build-package-json'; describe('validate-package-json', () => { diff --git a/src/compiler/types/validate-build-package-json.ts b/src/compiler/types/validate-build-package-json.ts index 9639d8badaf..bdab987148b 100644 --- a/src/compiler/types/validate-build-package-json.ts +++ b/src/compiler/types/validate-build-package-json.ts @@ -1,13 +1,17 @@ -import { buildJsonFileError, COLLECTION_MANIFEST_FILE_NAME, isGlob, isString, normalizePath } from '@utils'; -import { dirname, join, relative } from 'path'; - -import type * as d from '../../declarations'; import { + buildJsonFileError, + COLLECTION_MANIFEST_FILE_NAME, getComponentsDtsTypesFilePath, + isGlob, isOutputTargetDistCollection, isOutputTargetDistCustomElements, isOutputTargetDistTypes, -} from '../output-targets/output-utils'; + isString, + normalizePath, +} from '@utils'; +import { dirname, join, relative } from 'path'; + +import type * as d from '../../declarations'; /** * Validate the package.json file for a project, checking that various fields diff --git a/src/testing/testing-utils.ts b/src/testing/testing-utils.ts index 6302e46d9bf..866c58a7540 100644 --- a/src/testing/testing-utils.ts +++ b/src/testing/testing-utils.ts @@ -1,7 +1,7 @@ import type * as d from '@stencil/core/internal'; +import { isOutputTargetDistLazy, isOutputTargetWww } from '@utils'; import { join, relative } from 'path'; -import { isOutputTargetDistLazy, isOutputTargetWww } from '../compiler/output-targets/output-utils'; import { InMemoryFileSystem } from '../compiler/sys/in-memory-fs'; export function shuffleArray(array: any[]) { diff --git a/src/utils/constants.ts b/src/utils/constants.ts index a1a5adb8ce0..ae9b4a9da6b 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -93,3 +93,100 @@ export const XLINK_NS = 'http://www.w3.org/1999/xlink'; * File names and value */ export const COLLECTION_MANIFEST_FILE_NAME = 'collection-manifest.json'; + +/** + * Constant for the 'copy' output target + */ +export const COPY = 'copy'; +/** + * Constant for the 'custom' output target + */ +export const CUSTOM = 'custom'; +/** + * Constant for the 'dist' output target + */ +export const DIST = 'dist'; +/** + * Constant for the 'dist-collection' output target + */ +export const DIST_COLLECTION = 'dist-collection'; +/** + * Constant for the 'dist-custom-elements' output target + */ +export const DIST_CUSTOM_ELEMENTS = 'dist-custom-elements'; + +/** + * Constant for the 'dist-types' output target + */ +export const DIST_TYPES = 'dist-types'; +/** + * Constant for the 'dist-hydrate-script' output target + */ +export const DIST_HYDRATE_SCRIPT = 'dist-hydrate-script'; +/** + * Constant for the 'dist-lazy' output target + */ +export const DIST_LAZY = 'dist-lazy'; +/** + * Constant for the 'dist-lazy-loader' output target + */ +export const DIST_LAZY_LOADER = 'dist-lazy-loader'; +/** + * Constant for the 'dist-global-styles' output target + */ +export const DIST_GLOBAL_STYLES = 'dist-global-styles'; +/** + * Constant for the 'docs-custom' output target + */ +export const DOCS_CUSTOM = 'docs-custom'; +/** + * Constant for the 'docs-json' output target + */ +export const DOCS_JSON = 'docs-json'; +/** + * Constant for the 'docs-readme' output target + */ +export const DOCS_README = 'docs-readme'; +/** + * Constant for the 'docs-vscode' output target + */ +export const DOCS_VSCODE = 'docs-vscode'; +/** + * Constant for the 'stats' output target + */ +export const STATS = 'stats'; +/** + * Constant for the 'www' output target + */ +export const WWW = 'www'; + +/** + * Valid output targets to specify in a Stencil config. + * + * Note that there are some output targets (e.g. `DIST_TYPES`) which are + * programmatically set as output targets by the compiler when other output + * targets (in that case `DIST`) are set, but which are _not_ supported in a + * Stencil config. This is enforced in the output target validation code. + */ +export const VALID_CONFIG_OUTPUT_TARGETS = [ + // DIST + WWW, + DIST, + DIST_COLLECTION, + DIST_CUSTOM_ELEMENTS, + DIST_LAZY, + DIST_HYDRATE_SCRIPT, + + // DOCS + DOCS_JSON, + DOCS_README, + DOCS_VSCODE, + DOCS_CUSTOM, + + // MISC + COPY, + CUSTOM, + STATS, +] as const; + +export const GENERATED_DTS = 'components.d.ts'; diff --git a/src/utils/index.ts b/src/utils/index.ts index b1fd2141d41..b345a5cb5fc 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -9,6 +9,7 @@ export * from './logger/logger-typescript'; export * from './logger/logger-utils'; export * from './message-utils'; export * from './normalize-path'; +export * from './output-target'; export * from './query-nonce-meta-tag-content'; export * from './sourcemaps'; export * from './url-paths'; diff --git a/src/compiler/output-targets/output-utils.ts b/src/utils/output-target.ts similarity index 78% rename from src/compiler/output-targets/output-utils.ts rename to src/utils/output-target.ts index d307d2205f5..bba893c5322 100644 --- a/src/compiler/output-targets/output-utils.ts +++ b/src/utils/output-target.ts @@ -1,7 +1,27 @@ import { flatOne, normalizePath, sortBy } from '@utils'; import { basename, dirname, join, relative } from 'path'; -import type * as d from '../../declarations'; +import type * as d from '../declarations'; +import { + COPY, + CUSTOM, + DIST, + DIST_COLLECTION, + DIST_CUSTOM_ELEMENTS, + DIST_GLOBAL_STYLES, + DIST_HYDRATE_SCRIPT, + DIST_LAZY, + DIST_LAZY_LOADER, + DIST_TYPES, + DOCS_CUSTOM, + DOCS_JSON, + DOCS_README, + DOCS_VSCODE, + GENERATED_DTS, + STATS, + VALID_CONFIG_OUTPUT_TARGETS, + WWW, +} from './constants'; export const relativeImport = (pathFrom: string, pathTo: string, ext?: string, addPrefix = true) => { let relativePath = relative(dirname(pathFrom), dirname(pathTo)); @@ -69,53 +89,6 @@ export const isOutputTargetDistTypes = (o: d.OutputTarget): o is d.OutputTargetD export const getComponentsFromModules = (moduleFiles: d.Module[]): d.ComponentCompilerMeta[] => sortBy(flatOne(moduleFiles.map((m) => m.cmps)), (c: d.ComponentCompilerMeta) => c.tagName); -export const COPY = 'copy'; -export const CUSTOM = 'custom'; -export const DIST = 'dist'; -export const DIST_COLLECTION = 'dist-collection'; -export const DIST_CUSTOM_ELEMENTS = 'dist-custom-elements'; - -export const DIST_TYPES = 'dist-types'; -export const DIST_HYDRATE_SCRIPT = 'dist-hydrate-script'; -export const DIST_LAZY = 'dist-lazy'; -export const DIST_LAZY_LOADER = 'dist-lazy-loader'; -export const DIST_GLOBAL_STYLES = 'dist-global-styles'; -export const DOCS_CUSTOM = 'docs-custom'; -export const DOCS_JSON = 'docs-json'; -export const DOCS_README = 'docs-readme'; -export const DOCS_VSCODE = 'docs-vscode'; -export const STATS = 'stats'; -export const WWW = 'www'; - -/** - * Valid output targets to specify in a Stencil config. - * - * Note that there are some output targets (e.g. `DIST_TYPES`) which are - * programmatically set as output targets by the compiler when other output - * targets (in that case `DIST`) are set, but which are _not_ supported in a - * Stencil config. This is enforced in the output target validation code. - */ -export const VALID_CONFIG_OUTPUT_TARGETS = [ - // DIST - WWW, - DIST, - DIST_COLLECTION, - DIST_CUSTOM_ELEMENTS, - DIST_LAZY, - DIST_HYDRATE_SCRIPT, - - // DOCS - DOCS_JSON, - DOCS_README, - DOCS_VSCODE, - DOCS_CUSTOM, - - // MISC - COPY, - CUSTOM, - STATS, -] as const; - // Given a ReadonlyArray of strings we can derive a union type from them // by getting `typeof ARRAY[number]`, i.e. the type of all values returns // by number keys. @@ -135,5 +108,3 @@ export function isValidConfigOutputTarget(targetType: string): targetType is Val // see microsoft/TypeScript#31018 for some discussion of this return VALID_CONFIG_OUTPUT_TARGETS.includes(targetType as any); } - -export const GENERATED_DTS = 'components.d.ts'; diff --git a/src/compiler/output-targets/test/output-utils.spec.ts b/src/utils/test/output-target.spec.ts similarity index 79% rename from src/compiler/output-targets/test/output-utils.spec.ts rename to src/utils/test/output-target.spec.ts index 835fc42f3f8..c2fe139bbe5 100644 --- a/src/compiler/output-targets/test/output-utils.spec.ts +++ b/src/utils/test/output-target.spec.ts @@ -1,4 +1,5 @@ -import { DIST_TYPES, isValidConfigOutputTarget, VALID_CONFIG_OUTPUT_TARGETS } from '../output-utils'; +import { DIST_TYPES, VALID_CONFIG_OUTPUT_TARGETS } from '../constants'; +import { isValidConfigOutputTarget } from '../output-target'; describe('output-utils tests', () => { describe('isValidConfigOutputTarget', () => { diff --git a/tsconfig.json b/tsconfig.json index a4d1e6297b0..cae48cebd53 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -76,5 +76,5 @@ "src/testing/index.ts", "src/testing/platform/index.ts" ], - "include": ["types/*.d.ts", "src/declarations/*.ts", "src/**/*.spec.ts"] + "include": ["types/*.d.ts", "src/declarations/*.ts", "src/**/*.spec.ts", "src/utils/**/*.ts"] }