Skip to content

Commit 6f8c321

Browse files
committed
refactor: remove namespaces in favor of modules (#236)
Removing typescript only namespaces in favor of using modules per typescript recommendation. This should produce more compliant code and output more readable javascript [From typescript](https://www.typescriptlang.org/docs/handbook/namespaces-and-modules.html#using-modules) > It is also worth noting that, for Node.js applications, modules are the default and we recommended modules over namespaces in modern code. > Starting with ECMAScript 2015, modules are native part of the language, and should be supported by all compliant engine implementations. Thus, for new projects modules would be the recommended code organization mechanism. See [the diff](https://github.com/LeDDGroup/typescript-transform-paths/pull/236/files?diff=unified&w=1) without whitespace changes
1 parent 79091c1 commit 6f8c321

File tree

5 files changed

+210
-225
lines changed

5 files changed

+210
-225
lines changed

eslint.config.mjs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import tseslint from "typescript-eslint";
44

55
export default [
66
{ files: ["**/*.{js,mjs,cjs,ts}"] },
7-
{ ignores: ["**/dist/", "src/declarations/", "test/projects/"] },
7+
{ ignores: ["**/dist/", "src/declarations/", "test/projects/", "types/"] },
88
{ languageOptions: { globals: globals.node } },
99
pluginJs.configs.recommended,
1010
...tseslint.configs.recommended,
@@ -13,7 +13,7 @@ export default [
1313
"@typescript-eslint/ban-ts-comment": "warn",
1414
"@typescript-eslint/no-empty-object-type": "warn",
1515
"@typescript-eslint/no-explicit-any": "off",
16-
"@typescript-eslint/no-namespace": "warn",
16+
"@typescript-eslint/no-namespace": ["error", { allowDeclarations: true }],
1717
"@typescript-eslint/no-require-imports": "off",
1818
"@typescript-eslint/no-unsafe-function-type": "warn",
1919
"@typescript-eslint/no-unused-vars": "warn",

src/harmony/versions/four-seven.ts

+80-84
Original file line numberDiff line numberDiff line change
@@ -21,104 +21,100 @@ import { DownSampleTsTypes } from "../utils";
2121
// region: Mapping
2222
/* ****************************************************************************************************************** */
2323

24-
export namespace TsFourSeven {
25-
export type TypeMap = [
26-
[TsCurrentModule.ImportDeclaration, TsFourSevenModule.ImportDeclaration],
27-
[TsCurrentModule.Modifier, TsFourSevenModule.Modifier],
28-
[TsCurrentModule.ImportClause, TsFourSevenModule.ImportClause],
29-
[TsCurrentModule.Expression, TsFourSevenModule.Expression],
30-
[TsCurrentModule.AssertClause, TsFourSevenModule.AssertClause],
31-
[TsCurrentModule.ExportDeclaration, TsFourSevenModule.ExportDeclaration],
32-
[TsCurrentModule.NamedExportBindings, TsFourSevenModule.NamedExportBindings],
33-
[TsCurrentModule.ModuleDeclaration, TsFourSevenModule.ModuleDeclaration],
34-
[TsCurrentModule.ModuleName, TsFourSevenModule.ModuleName],
35-
[TsCurrentModule.ModuleBody, TsFourSevenModule.ModuleBody],
36-
];
37-
}
24+
export type TypeMap = [
25+
[TsCurrentModule.ImportDeclaration, TsFourSevenModule.ImportDeclaration],
26+
[TsCurrentModule.Modifier, TsFourSevenModule.Modifier],
27+
[TsCurrentModule.ImportClause, TsFourSevenModule.ImportClause],
28+
[TsCurrentModule.Expression, TsFourSevenModule.Expression],
29+
[TsCurrentModule.AssertClause, TsFourSevenModule.AssertClause],
30+
[TsCurrentModule.ExportDeclaration, TsFourSevenModule.ExportDeclaration],
31+
[TsCurrentModule.NamedExportBindings, TsFourSevenModule.NamedExportBindings],
32+
[TsCurrentModule.ModuleDeclaration, TsFourSevenModule.ModuleDeclaration],
33+
[TsCurrentModule.ModuleName, TsFourSevenModule.ModuleName],
34+
[TsCurrentModule.ModuleBody, TsFourSevenModule.ModuleBody],
35+
];
3836

3937
// endregion
4038

4139
/* ****************************************************************************************************************** */
4240
// region: Utils
4341
/* ****************************************************************************************************************** */
4442

45-
export namespace TsFourSeven {
46-
export const predicate = ({ tsVersionMajor, tsVersionMinor }: TsTransformPathsContext) =>
47-
tsVersionMajor == 4 && tsVersionMinor < 8;
43+
export const predicate = ({ tsVersionMajor, tsVersionMinor }: TsTransformPathsContext) =>
44+
tsVersionMajor == 4 && tsVersionMinor < 8;
4845

49-
export function handler(context: TsTransformPathsContext, prop: string | symbol) {
50-
const factory = context.tsFactory as unknown as TsFourSevenModule.NodeFactory;
46+
export function handler(context: TsTransformPathsContext, prop: string | symbol) {
47+
const factory = context.tsFactory as unknown as TsFourSevenModule.NodeFactory;
5148

52-
switch (prop) {
53-
case "updateImportDeclaration":
54-
return function (
55-
node: ImportDeclaration,
56-
modifiers: readonly Modifier[] | undefined,
57-
importClause: ImportClause | undefined,
58-
moduleSpecifier: Expression,
59-
assertClause: AssertClause | undefined,
60-
) {
61-
const [dsNode, dsImportClause, dsModuleSpecifier, dsAssertClause] = downSample(
62-
node,
63-
importClause,
64-
moduleSpecifier,
65-
assertClause,
66-
);
49+
switch (prop) {
50+
case "updateImportDeclaration":
51+
return function (
52+
node: ImportDeclaration,
53+
modifiers: readonly Modifier[] | undefined,
54+
importClause: ImportClause | undefined,
55+
moduleSpecifier: Expression,
56+
assertClause: AssertClause | undefined,
57+
) {
58+
const [dsNode, dsImportClause, dsModuleSpecifier, dsAssertClause] = downSample(
59+
node,
60+
importClause,
61+
moduleSpecifier,
62+
assertClause,
63+
);
6764

68-
return factory.updateImportDeclaration(
69-
dsNode,
70-
dsNode.decorators,
71-
dsNode.modifiers,
72-
dsImportClause,
73-
dsModuleSpecifier,
74-
dsAssertClause,
75-
);
76-
};
77-
case "updateExportDeclaration":
78-
return function (
79-
node: ExportDeclaration,
80-
modifiers: readonly Modifier[] | undefined,
81-
isTypeOnly: boolean,
82-
exportClause: NamedExportBindings | undefined,
83-
moduleSpecifier: Expression | undefined,
84-
assertClause: AssertClause | undefined,
85-
) {
86-
const [dsNode, dsExportClause, dsModuleSpecifier, dsAssertClause] = downSample(
87-
node,
88-
exportClause,
89-
moduleSpecifier,
90-
assertClause,
91-
);
65+
return factory.updateImportDeclaration(
66+
dsNode,
67+
dsNode.decorators,
68+
dsNode.modifiers,
69+
dsImportClause,
70+
dsModuleSpecifier,
71+
dsAssertClause,
72+
);
73+
};
74+
case "updateExportDeclaration":
75+
return function (
76+
node: ExportDeclaration,
77+
modifiers: readonly Modifier[] | undefined,
78+
isTypeOnly: boolean,
79+
exportClause: NamedExportBindings | undefined,
80+
moduleSpecifier: Expression | undefined,
81+
assertClause: AssertClause | undefined,
82+
) {
83+
const [dsNode, dsExportClause, dsModuleSpecifier, dsAssertClause] = downSample(
84+
node,
85+
exportClause,
86+
moduleSpecifier,
87+
assertClause,
88+
);
9289

93-
return factory.updateExportDeclaration(
94-
dsNode,
95-
dsNode.decorators,
96-
dsNode.modifiers,
97-
isTypeOnly,
98-
dsExportClause,
99-
dsModuleSpecifier,
100-
dsAssertClause,
101-
);
102-
};
103-
case "updateModuleDeclaration":
104-
return function (
105-
node: ModuleDeclaration,
106-
modifiers: readonly Modifier[] | undefined,
107-
name: ModuleName,
108-
body: ModuleBody | undefined,
109-
) {
110-
const [dsNode, dsName, dsBody] = downSample(node, name, body);
90+
return factory.updateExportDeclaration(
91+
dsNode,
92+
dsNode.decorators,
93+
dsNode.modifiers,
94+
isTypeOnly,
95+
dsExportClause,
96+
dsModuleSpecifier,
97+
dsAssertClause,
98+
);
99+
};
100+
case "updateModuleDeclaration":
101+
return function (
102+
node: ModuleDeclaration,
103+
modifiers: readonly Modifier[] | undefined,
104+
name: ModuleName,
105+
body: ModuleBody | undefined,
106+
) {
107+
const [dsNode, dsName, dsBody] = downSample(node, name, body);
111108

112-
return factory.updateModuleDeclaration(dsNode, dsNode.decorators, dsNode.modifiers, dsName, dsBody);
113-
};
114-
default:
115-
return (...args: any) => (<any>factory)[prop](...args);
116-
}
109+
return factory.updateModuleDeclaration(dsNode, dsNode.decorators, dsNode.modifiers, dsName, dsBody);
110+
};
111+
default:
112+
return (...args: any) => (<any>factory)[prop](...args);
117113
}
114+
}
118115

119-
export function downSample<T extends [...unknown[]]>(...args: T): DownSampleTsTypes<TypeMap, T> {
120-
return <any>args;
121-
}
116+
export function downSample<T extends [...unknown[]]>(...args: T): DownSampleTsTypes<TypeMap, T> {
117+
return <any>args;
122118
}
123119

124120
// endregion

src/harmony/versions/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export * from "./three-eight";
2-
export * from "./four-seven";
1+
export * as TsThreeEight from "./three-eight";
2+
export * as TsFourSeven from "./four-seven";

0 commit comments

Comments
 (0)