From 780649e33eafd401ac2354fcd94106b063ffa19f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20L=C3=A9ger?= Date: Mon, 20 Apr 2020 17:33:02 +0200 Subject: [PATCH] fix: ensure the namespace and module names do not conflict --- src/utils.js | 7 +++-- test/__snapshots__/index.test.js.snap | 42 +++++++++++++-------------- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/utils.js b/src/utils.js index 4cef8df..d2cb087 100644 --- a/src/utils.js +++ b/src/utils.js @@ -50,20 +50,21 @@ const filenameToTypingsFilename = filename => { const generateGenericExportInterface = (cssModuleKeys, pascalCaseFileName) => { const interfaceName = `I${pascalCaseFileName}`; const moduleName = `${pascalCaseFileName}Module`; + const namespaceName = `${pascalCaseFileName}Namespace`; const interfaceProperties = cssModuleToTypescriptInterfaceProperties( cssModuleKeys, " " ); - return `declare namespace ${moduleName} { + return `declare namespace ${namespaceName} { export interface I${pascalCaseFileName} { ${interfaceProperties} } } -declare const ${moduleName}: ${moduleName}.${interfaceName} & { +declare const ${moduleName}: ${namespaceName}.${interfaceName} & { /** WARNING: Only available when \`css-loader\` is used without \`style-loader\` or \`mini-css-extract-plugin\` */ - locals: ${moduleName}.${interfaceName}; + locals: ${namespaceName}.${interfaceName}; }; export = ${moduleName};`; diff --git a/test/__snapshots__/index.test.js.snap b/test/__snapshots__/index.test.js.snap index e5242b3..153508b 100644 --- a/test/__snapshots__/index.test.js.snap +++ b/test/__snapshots__/index.test.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`default options 1`] = ` -"declare namespace ExampleCssModule { +"declare namespace ExampleCssNamespace { export interface IExampleCss { \\"bar-baz\\": string; composed: string; @@ -9,9 +9,9 @@ exports[`default options 1`] = ` } } -declare const ExampleCssModule: ExampleCssModule.IExampleCss & { +declare const ExampleCssModule: ExampleCssNamespace.IExampleCss & { /** WARNING: Only available when \`css-loader\` is used without \`style-loader\` or \`mini-css-extract-plugin\` */ - locals: ExampleCssModule.IExampleCss; + locals: ExampleCssNamespace.IExampleCss; }; export = ExampleCssModule; @@ -19,7 +19,7 @@ export = ExampleCssModule; `; exports[`localsConvention asIs 1`] = ` -"declare namespace ExampleCssModule { +"declare namespace ExampleCssNamespace { export interface IExampleCss { \\"bar-baz\\": string; composed: string; @@ -27,9 +27,9 @@ exports[`localsConvention asIs 1`] = ` } } -declare const ExampleCssModule: ExampleCssModule.IExampleCss & { +declare const ExampleCssModule: ExampleCssNamespace.IExampleCss & { /** WARNING: Only available when \`css-loader\` is used without \`style-loader\` or \`mini-css-extract-plugin\` */ - locals: ExampleCssModule.IExampleCss; + locals: ExampleCssNamespace.IExampleCss; }; export = ExampleCssModule; @@ -37,7 +37,7 @@ export = ExampleCssModule; `; exports[`localsConvention camelCase 1`] = ` -"declare namespace ExampleCssModule { +"declare namespace ExampleCssNamespace { export interface IExampleCss { \\"bar-baz\\": string; barBaz: string; @@ -46,9 +46,9 @@ exports[`localsConvention camelCase 1`] = ` } } -declare const ExampleCssModule: ExampleCssModule.IExampleCss & { +declare const ExampleCssModule: ExampleCssNamespace.IExampleCss & { /** WARNING: Only available when \`css-loader\` is used without \`style-loader\` or \`mini-css-extract-plugin\` */ - locals: ExampleCssModule.IExampleCss; + locals: ExampleCssNamespace.IExampleCss; }; export = ExampleCssModule; @@ -57,7 +57,7 @@ export = ExampleCssModule; exports[`with banner 1`] = ` "// autogenerated by typings-for-css-modules-loader -declare namespace ExampleCssModule { +declare namespace ExampleCssNamespace { export interface IExampleCss { \\"bar-baz\\": string; composed: string; @@ -65,9 +65,9 @@ declare namespace ExampleCssModule { } } -declare const ExampleCssModule: ExampleCssModule.IExampleCss & { +declare const ExampleCssModule: ExampleCssNamespace.IExampleCss & { /** WARNING: Only available when \`css-loader\` is used without \`style-loader\` or \`mini-css-extract-plugin\` */ - locals: ExampleCssModule.IExampleCss; + locals: ExampleCssNamespace.IExampleCss; }; export = ExampleCssModule; @@ -75,7 +75,7 @@ export = ExampleCssModule; `; exports[`with no formatter 1`] = ` -"declare namespace ExampleCssModule { +"declare namespace ExampleCssNamespace { export interface IExampleCss { 'bar-baz': string; 'composed': string; @@ -83,16 +83,16 @@ exports[`with no formatter 1`] = ` } } -declare const ExampleCssModule: ExampleCssModule.IExampleCss & { +declare const ExampleCssModule: ExampleCssNamespace.IExampleCss & { /** WARNING: Only available when \`css-loader\` is used without \`style-loader\` or \`mini-css-extract-plugin\` */ - locals: ExampleCssModule.IExampleCss; + locals: ExampleCssNamespace.IExampleCss; }; export = ExampleCssModule;" `; exports[`with prettier 1`] = ` -"declare namespace ExampleCssModule { +"declare namespace ExampleCssNamespace { export interface IExampleCss { \\"bar-baz\\": string; composed: string; @@ -100,9 +100,9 @@ exports[`with prettier 1`] = ` } } -declare const ExampleCssModule: ExampleCssModule.IExampleCss & { +declare const ExampleCssModule: ExampleCssNamespace.IExampleCss & { /** WARNING: Only available when \`css-loader\` is used without \`style-loader\` or \`mini-css-extract-plugin\` */ - locals: ExampleCssModule.IExampleCss; + locals: ExampleCssNamespace.IExampleCss; }; export = ExampleCssModule; @@ -110,7 +110,7 @@ export = ExampleCssModule; `; exports[`with sourcemap 1`] = ` -"declare namespace ExampleCssModule { +"declare namespace ExampleCssNamespace { export interface IExampleCss { \\"bar-baz\\": string; composed: string; @@ -118,9 +118,9 @@ exports[`with sourcemap 1`] = ` } } -declare const ExampleCssModule: ExampleCssModule.IExampleCss & { +declare const ExampleCssModule: ExampleCssNamespace.IExampleCss & { /** WARNING: Only available when \`css-loader\` is used without \`style-loader\` or \`mini-css-extract-plugin\` */ - locals: ExampleCssModule.IExampleCss; + locals: ExampleCssNamespace.IExampleCss; }; export = ExampleCssModule;