Skip to content

Commit

Permalink
refactor(types): more types
Browse files Browse the repository at this point in the history
  • Loading branch information
alexander-akait committed Apr 28, 2023
1 parent 0bc0339 commit dbca487
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 4 deletions.
11 changes: 9 additions & 2 deletions lib/css/CssLoadingRuntimeModule.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
const { chunkHasCss } = require("./CssModulesPlugin");

/** @typedef {import("../Chunk")} Chunk */
/** @typedef {import("../Compilation").RuntimeRequirementsContext} RuntimeRequirementsContext */

/**
* @typedef {Object} JsonpCompilationPluginHooks
Expand Down Expand Up @@ -44,11 +45,13 @@ class CssLoadingRuntimeModule extends RuntimeModule {
return hooks;
}

constructor(runtimeRequirements, runtimeOptions) {
/**
* @param {Set<string>} runtimeRequirements runtime requirements
*/
constructor(runtimeRequirements) {
super("css loading", 10);

this._runtimeRequirements = runtimeRequirements;
this.runtimeOptions = runtimeOptions;
}

/**
Expand Down Expand Up @@ -76,10 +79,13 @@ class CssLoadingRuntimeModule extends RuntimeModule {
const withLoading =
_runtimeRequirements.has(RuntimeGlobals.ensureChunkHandlers) &&
hasCssMatcher !== false;
/** @type {boolean} */
const withHmr = _runtimeRequirements.has(
RuntimeGlobals.hmrDownloadUpdateHandlers
);
/** @type {Set<number | string | null>} */
const initialChunkIdsWithCss = new Set();
/** @type {Set<number | string | null>} */
const initialChunkIdsWithoutCss = new Set();
for (const c of chunk.getAllInitialChunks()) {
(chunkHasCss(c, chunkGraph)
Expand Down Expand Up @@ -120,6 +126,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
: ""
]);

/** @type {(str: string) => number} */
const cc = str => str.charCodeAt(0);

return Template.asString([
Expand Down
31 changes: 29 additions & 2 deletions lib/css/CssModulesPlugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ const {
} = require("../ModuleTypeConstants");
const RuntimeGlobals = require("../RuntimeGlobals");
const SelfModuleFactory = require("../SelfModuleFactory");
const WebpackError = require("../WebpackError");
const CssExportDependency = require("../dependencies/CssExportDependency");
const CssImportDependency = require("../dependencies/CssImportDependency");
const CssLocalIdentifierDependency = require("../dependencies/CssLocalIdentifierDependency");
Expand All @@ -29,15 +30,17 @@ const nonNumericOnlyHash = require("../util/nonNumericOnlyHash");
const CssExportsGenerator = require("./CssExportsGenerator");
const CssGenerator = require("./CssGenerator");
const CssParser = require("./CssParser");
const WebpackError = require("../WebpackError");

/** @typedef {import("webpack-sources").Source} Source */
/** @typedef {import("../../declarations/WebpackOptions").CssExperimentOptions} CssExperimentOptions */
/** @typedef {import("../../declarations/WebpackOptions").Output} OutputOptions */
/** @typedef {import("../Chunk")} Chunk */
/** @typedef {import("../Compilation")} Compilation */
/** @typedef {import("../ChunkGraph")} ChunkGraph */
/** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
/** @typedef {import("../Compilation")} Compilation */
/** @typedef {import("../Compiler")} Compiler */
/** @typedef {import("../Module")} Module */
/** @typedef {import("../util/memoize")} Memoize */

const getCssLoadingRuntimeModule = memoize(() =>
require("./CssLoadingRuntimeModule")
Expand Down Expand Up @@ -68,6 +71,11 @@ const validateParserOptions = createSchemaValidation(
}
);

/**
* @param {string} str string
* @param {boolean=} omitOptionalUnderscore if true, optional underscore is not added
* @returns {string} escaped string
*/
const escapeCss = (str, omitOptionalUnderscore) => {
const escaped = `${str}`.replace(
// cspell:word uffff
Expand Down Expand Up @@ -222,6 +230,7 @@ class CssModulesPlugin {

if (chunk instanceof HotUpdateChunk) return result;

/** @type {CssModule[] | undefined} */
const modules = orderedCssModulesPerChunk.get(chunk);
if (modules !== undefined) {
result.push({
Expand Down Expand Up @@ -287,6 +296,7 @@ class CssModulesPlugin {
getModulesInOrder(chunk, modules, compilation) {
if (!modules) return [];

/** @type {Module[]} */
const modulesList = [...modules];

// Get ordered list of modules per chunk group
Expand Down Expand Up @@ -320,6 +330,7 @@ class CssModulesPlugin {

modulesByChunkGroup.sort(compareModuleLists);

/** @type {Module[]} */
const finalModules = [];

for (;;) {
Expand Down Expand Up @@ -412,6 +423,15 @@ class CssModulesPlugin {
];
}

/**
* @param {Object} options options
* @param {string | undefined} options.uniqueName unique name
* @param {Chunk} options.chunk chunk
* @param {ChunkGraph} options.chunkGraph chunk graph
* @param {CodeGenerationResults} options.codeGenerationResults code generation results
* @param {CssModule[]} options.modules ordered css modules
* @returns {Source} generated source
*/
renderChunk({
uniqueName,
chunk,
Expand All @@ -420,6 +440,7 @@ class CssModulesPlugin {
modules
}) {
const source = new ConcatSource();
/** @type {string[]} */
const metaData = [];
for (const module of modules) {
try {
Expand Down Expand Up @@ -458,6 +479,7 @@ class CssModulesPlugin {
source.add(moduleSource);
source.add("\n");
}
/** @type {Map<string, string> | undefined} */
const exports =
codeGenResult.data && codeGenResult.data.get("css-exports");
let moduleId = chunkGraph.getModuleId(module) + "";
Expand Down Expand Up @@ -497,6 +519,11 @@ class CssModulesPlugin {
return source;
}

/**
* @param {Chunk} chunk chunk
* @param {OutputOptions} outputOptions output options
* @returns {Chunk["cssFilenameTemplate"] | OutputOptions["cssFilename"] | OutputOptions["cssChunkFilename"]} used filename template
*/
static getChunkFilenameTemplate(chunk, outputOptions) {
if (chunk.cssFilenameTemplate) {
return chunk.cssFilenameTemplate;
Expand Down

0 comments on commit dbca487

Please sign in to comment.