@effect-app/eslint-codegen-model 1.7.3 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import type { Preset } from 'eslint-plugin-codegen';
1
+ import type { Preset } from "eslint-plugin-codegen";
2
2
  /**
3
3
  * Bundle several modules into a single convenient one.
4
4
  *
@@ -26,14 +26,15 @@ import type { Preset } from 'eslint-plugin-codegen';
26
26
  export declare const barrel: Preset<{
27
27
  include?: string;
28
28
  exclude?: string | string[];
29
- import?: 'default' | 'star';
29
+ import?: "default" | "star";
30
30
  export?: string | {
31
31
  name: string;
32
- keys: 'path' | 'camelCase';
32
+ keys: "path" | "camelCase";
33
33
  } | {
34
- as: 'PascalCase';
34
+ as: "PascalCase";
35
35
  postfix?: string;
36
36
  };
37
37
  nodir?: boolean;
38
+ modulegen?: boolean;
38
39
  }>;
39
40
  //# sourceMappingURL=barrel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"barrel.d.ts","sourceRoot":"","sources":["../../src/presets/barrel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAMpD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC5B,MAAM,CAAC,EACH,MAAM,GACN;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;KAAE,GAC5C;QAAE,EAAE,EAAE,YAAY,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CA4GA,CAAC"}
1
+ {"version":3,"file":"barrel.d.ts","sourceRoot":"","sources":["../../src/presets/barrel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAMnD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC3B,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IAC3B,MAAM,CAAC,EACH,MAAM,GACN;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;KAAE,GAC5C;QAAE,EAAE,EAAE,YAAY,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAsHA,CAAA"}
@@ -58,46 +58,47 @@ const path = __importStar(require("path"));
58
58
  * will be camel-cased to make them valid js identifiers.
59
59
  */
60
60
  const barrel = ({ meta, options: opts }) => {
61
- var _a;
61
+ var _a, _b;
62
62
  const cwd = path.dirname(meta.filename);
63
63
  const nodir = (_a = opts.nodir) !== null && _a !== void 0 ? _a : true;
64
- const ext = meta.filename.split('.').slice(-1)[0];
64
+ const modulegen = (_b = opts.modulegen) !== null && _b !== void 0 ? _b : true;
65
+ const ext = meta.filename.split(".").slice(-1)[0];
65
66
  const pattern = opts.include || `*.${ext}`;
66
67
  const relativeFiles = glob
67
68
  .sync(pattern, { cwd, ignore: opts.exclude, nodir })
68
69
  .filter((f) => path.resolve(cwd, f) !== path.resolve(meta.filename))
69
- .map((f) => `./${f}`.replace(/(\.\/)+\./g, '.'))
70
+ .map((f) => `./${f}`.replace(/(\.\/)+\./g, "."))
70
71
  .filter((file) => nodir
71
- ? ['.js', '.mjs', '.ts', '.tsx'].includes(path.extname(file))
72
+ ? [".js", ".mjs", ".ts", ".tsx"].includes(path.extname(file))
72
73
  : true)
73
- .map((f) => f.replace(/\.\w+$/, '').replace(/\/$/, ''));
74
+ .map((f) => f.replace(/\.\w+$/, "").replace(/\/$/, ""));
74
75
  function last(list) {
75
76
  return list[list.length - 1];
76
77
  }
77
78
  const expectedContent = (0, io_ts_extra_1.match)(opts.import)
78
79
  .case(undefined, () => (0, io_ts_extra_1.match)(opts.export)
79
- .case({ as: 'PascalCase' }, (v) => lodash
80
+ .case({ as: "PascalCase" }, (v) => lodash
80
81
  .chain(relativeFiles)
81
82
  .map((f) => `export * as ${lodash
82
83
  .startCase(lodash.camelCase(last(f.split("/"))))
83
84
  .replace(/ /g, "") // why?
84
- .replace(/\//, '')}${"postfix" in v ? v.postfix : ''} from "${f}.js"`)
85
+ .replace(/\//, "")}${"postfix" in v ? v.postfix : ""} from "${f}.js"`)
85
86
  .value()
86
- .join('\n'))
87
+ .join("\n"))
87
88
  .default(() => {
88
- return relativeFiles.map((f) => `export * from "${f}.js"`).join('\n');
89
+ return relativeFiles.map((f) => `export * from "${f}.js"`).join("\n");
89
90
  })
90
91
  .get())
91
92
  .case(String, (s) => {
92
- const importPrefix = s === 'default' ? '' : '* as ';
93
+ const importPrefix = s === "default" ? "" : "* as ";
93
94
  const withIdentifiers = lodash
94
95
  .chain(relativeFiles)
95
96
  .map((f) => ({
96
97
  file: f,
97
98
  identifier: lodash
98
- .camelCase(f)
99
- .replace(/^([^a-z])/, '_$1')
100
- .replace(/Index$/, ''),
99
+ .camelCase(modulegen ? last(f.split("/")) : f)
100
+ .replace(/^([^a-z])/, "_$1")
101
+ .replace(/([\^/])Index$/, "$1")
101
102
  }))
102
103
  .groupBy((info) => info.identifier)
103
104
  .values()
@@ -105,39 +106,48 @@ const barrel = ({ meta, options: opts }) => {
105
106
  ? group
106
107
  : group.map((info, i) => ({
107
108
  ...info,
108
- identifier: `${info.identifier}_${i + 1}`,
109
+ identifier: `${info.identifier}_${i + 1}`
109
110
  })))
110
111
  .value();
111
112
  const imports = withIdentifiers
112
113
  .map((i) => `import ${importPrefix}${i.identifier} from "${i.file}.js"`)
113
- .join('\n');
114
- const exportProps = (0, io_ts_extra_1.match)(opts.export)
115
- .case({ name: String, keys: 'path' }, () => withIdentifiers.map((i) => `${JSON.stringify(i.file)}: ${i.identifier}`))
114
+ .join("\n");
115
+ const exportProps = modulegen ? [] : (0, io_ts_extra_1.match)(opts.export)
116
+ .case({ name: String, keys: "path" }, () => withIdentifiers.map((i) => `${JSON.stringify(i.file)}: ${i.identifier}`))
116
117
  .default(() => withIdentifiers.map((i) => i.identifier))
117
118
  .get();
118
119
  const exportPrefix = (0, io_ts_extra_1.match)(opts.export)
119
- .case(undefined, () => 'export')
120
- .case('default', () => 'export default')
121
- .case({ name: 'default' }, () => 'export default')
120
+ .case(undefined, () => "export")
121
+ .case("default", () => "export default")
122
+ .case({ name: "default" }, () => "export default")
122
123
  .case(String, (name) => `export const ${name} =`)
123
124
  .case({ name: String }, ({ name }) => `export const ${name} =`)
124
- .default(() => '')
125
+ .default(() => "")
125
126
  .get();
126
- const exports = exportProps.join(',\n ');
127
- return `${imports}\n\n${exportPrefix} {\n ${exports}\n}\n`;
127
+ const exports = exportProps.join(",\n ");
128
+ const moduleGen = withIdentifiers
129
+ .map((i) => {
130
+ const up = `${i.identifier[0].toUpperCase()}${i.identifier.slice(1)}`;
131
+ return `export interface ${up} extends Id<typeof ${i.identifier}> {}
132
+ export const ${up}: ${up} = ${i.identifier}`;
133
+ })
134
+ .join("\n");
135
+ const exportss = modulegen ? "" : `\n${exportPrefix} {\n ${exports}\n}`;
136
+ return `${imports}\n${exportss}\n${modulegen && moduleGen ? "type Id<T> = T\n\n" + moduleGen : ""}`;
128
137
  })
129
138
  .get();
130
139
  // ignore stylistic differences. babel generate deals with most
131
- const normalise = (str) => (0, generator_1.default)((0, parser_1.parse)(str, { sourceType: 'module', plugins: ['typescript'] }))
132
- .code.replace(/'/g, `"`)
133
- .replace(/\/index/g, '');
140
+ const normalise = (str) => (0, generator_1.default)((0, parser_1.parse)(str, { sourceType: "module", plugins: ["typescript"] }))
141
+ .code
142
+ .replace(/'/g, `"`)
143
+ .replace(/\/index/g, "");
134
144
  try {
135
145
  if (normalise(expectedContent) === normalise(meta.existingContent)) {
136
146
  return meta.existingContent;
137
147
  }
138
148
  }
139
- catch (_b) { }
149
+ catch (_c) { }
140
150
  return expectedContent;
141
151
  };
142
152
  exports.barrel = barrel;
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFycmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ByZXNldHMvYmFycmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUVBQXdDO0FBQ3hDLDBDQUFzQztBQUV0QywyQ0FBNkI7QUFDN0IsNkNBQW9DO0FBQ3BDLCtDQUFpQztBQUNqQywyQ0FBNkI7QUFFN0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBQ0ksTUFBTSxNQUFNLEdBU2QsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTs7SUFDL0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBQSxJQUFJLENBQUMsS0FBSyxtQ0FBSSxJQUFJLENBQUM7SUFFakMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBRTNDLE1BQU0sYUFBYSxHQUFHLElBQUk7U0FDdkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNuRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ25FLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENB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
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFycmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ByZXNldHMvYmFycmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUVBQXVDO0FBQ3ZDLDBDQUFxQztBQUVyQywyQ0FBNEI7QUFDNUIsNkNBQW1DO0FBQ25DLCtDQUFnQztBQUNoQywyQ0FBNEI7QUFFNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBQ0ksTUFBTSxNQUFNLEdBVWQsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTs7SUFDL0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDdkMsTUFBTSxLQUFLLEdBQUcsTUFBQSxJQUFJLENBQUMsS0FBSyxtQ0FBSSxJQUFJLENBQUE7SUFDaEMsTUFBTSxTQUFTLEdBQUcsTUFBQSxJQUFJLENBQUMsU0FBUyxtQ0FBSSxJQUFJLENBQUE7SUFFeEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFBO0lBRTFDLE1BQU0sYUFBYSxHQUFHLElBQUk7U0FDdkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNuRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxD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
package/package.json CHANGED
@@ -2,11 +2,11 @@
2
2
  "name": "@effect-app/eslint-codegen-model",
3
3
  "description": "Contains eslint helpers",
4
4
  "sideEffects": false,
5
- "version": "1.7.3",
5
+ "version": "1.8.0",
6
6
  "dependencies": {
7
7
  "@babel/generator": "7.25.6",
8
8
  "@babel/parser": "7.25.6",
9
- "@typescript-eslint/utils": "8.4.0",
9
+ "@typescript-eslint/utils": "8.5.0",
10
10
  "eslint-plugin-codegen": "0.17.0",
11
11
  "glob": "8.1.0",
12
12
  "io-ts": "2.2.21",
@@ -26,7 +26,7 @@
26
26
  "effect": "^3.7.2",
27
27
  "madge": "8.0.0",
28
28
  "ts-node": "10.9.2",
29
- "typescript": "^5.5.4"
29
+ "typescript": "^5.6.2"
30
30
  },
31
31
  "main": "index.js",
32
32
  "author": "Wessel van der Veen & Scott vanBommel",
@@ -1,10 +1,10 @@
1
- import generate from '@babel/generator';
2
- import { parse } from '@babel/parser';
3
- import type { Preset } from 'eslint-plugin-codegen';
4
- import * as glob from 'glob';
5
- import { match } from 'io-ts-extra';
6
- import * as lodash from 'lodash';
7
- import * as path from 'path';
1
+ import generate from "@babel/generator"
2
+ import { parse } from "@babel/parser"
3
+ import type { Preset } from "eslint-plugin-codegen"
4
+ import * as glob from "glob"
5
+ import { match } from "io-ts-extra"
6
+ import * as lodash from "lodash"
7
+ import * as path from "path"
8
8
 
9
9
  /**
10
10
  * Bundle several modules into a single convenient one.
@@ -31,32 +31,34 @@ import * as path from 'path';
31
31
  * will be camel-cased to make them valid js identifiers.
32
32
  */
33
33
  export const barrel: Preset<{
34
- include?: string;
35
- exclude?: string | string[];
36
- import?: 'default' | 'star';
34
+ include?: string
35
+ exclude?: string | string[]
36
+ import?: "default" | "star"
37
37
  export?:
38
38
  | string
39
- | { name: string; keys: 'path' | 'camelCase' }
40
- | { as: 'PascalCase', postfix?: string };
41
- nodir?: boolean;
39
+ | { name: string; keys: "path" | "camelCase" }
40
+ | { as: "PascalCase"; postfix?: string }
41
+ nodir?: boolean
42
+ modulegen?: boolean
42
43
  }> = ({ meta, options: opts }) => {
43
- const cwd = path.dirname(meta.filename);
44
- const nodir = opts.nodir ?? true;
44
+ const cwd = path.dirname(meta.filename)
45
+ const nodir = opts.nodir ?? true
46
+ const modulegen = opts.modulegen ?? true
45
47
 
46
- const ext = meta.filename.split('.').slice(-1)[0];
47
- const pattern = opts.include || `*.${ext}`;
48
+ const ext = meta.filename.split(".").slice(-1)[0]
49
+ const pattern = opts.include || `*.${ext}`
48
50
 
49
51
  const relativeFiles = glob
50
52
  .sync(pattern, { cwd, ignore: opts.exclude, nodir })
51
53
  .filter((f) => path.resolve(cwd, f) !== path.resolve(meta.filename))
52
- .map((f) => `./${f}`.replace(/(\.\/)+\./g, '.'))
54
+ .map((f) => `./${f}`.replace(/(\.\/)+\./g, "."))
53
55
  .filter((file) =>
54
56
  nodir
55
- ? ['.js', '.mjs', '.ts', '.tsx'].includes(path.extname(file))
56
- : true,
57
+ ? [".js", ".mjs", ".ts", ".tsx"].includes(path.extname(file))
58
+ : true
57
59
  )
58
- .map((f) => f.replace(/\.\w+$/, '').replace(/\/$/, ''));
59
-
60
+ .map((f) => f.replace(/\.\w+$/, "").replace(/\/$/, ""))
61
+
60
62
  function last<T>(list: readonly T[]) {
61
63
  return list[list.length - 1]
62
64
  }
@@ -64,34 +66,34 @@ export const barrel: Preset<{
64
66
  const expectedContent = match(opts.import)
65
67
  .case(undefined, () =>
66
68
  match(opts.export)
67
- .case({ as: 'PascalCase' as const }, (v) =>
69
+ .case({ as: "PascalCase" as const }, (v) =>
68
70
  lodash
69
71
  .chain(relativeFiles)
70
72
  .map(
71
73
  (f) =>
72
- `export * as ${lodash
73
- .startCase(lodash.camelCase(last(f.split("/"))))
74
- .replace(/ /g, "") // why?
75
- .replace(/\//, '')}${"postfix" in v ? v.postfix : ''} from "${f}.js"`,
74
+ `export * as ${
75
+ lodash
76
+ .startCase(lodash.camelCase(last(f.split("/"))))
77
+ .replace(/ /g, "") // why?
78
+ .replace(/\//, "")
79
+ }${"postfix" in v ? v.postfix : ""} from "${f}.js"`
76
80
  )
77
81
  .value()
78
- .join('\n'),
79
- )
82
+ .join("\n"))
80
83
  .default(() => {
81
- return relativeFiles.map((f) => `export * from "${f}.js"`).join('\n');
84
+ return relativeFiles.map((f) => `export * from "${f}.js"`).join("\n")
82
85
  })
83
- .get(),
84
- )
86
+ .get())
85
87
  .case(String, (s) => {
86
- const importPrefix = s === 'default' ? '' : '* as ';
88
+ const importPrefix = s === "default" ? "" : "* as "
87
89
  const withIdentifiers = lodash
88
90
  .chain(relativeFiles)
89
91
  .map((f) => ({
90
92
  file: f,
91
93
  identifier: lodash
92
- .camelCase(f)
93
- .replace(/^([^a-z])/, '_$1')
94
- .replace(/Index$/, ''),
94
+ .camelCase(modulegen ? last(f.split("/")) : f)
95
+ .replace(/^([^a-z])/, "_$1")
96
+ .replace(/([\^/])Index$/, "$1")
95
97
  }))
96
98
  .groupBy((info) => info.identifier)
97
99
  .values()
@@ -99,52 +101,61 @@ export const barrel: Preset<{
99
101
  group.length === 1
100
102
  ? group
101
103
  : group.map((info, i) => ({
102
- ...info,
103
- identifier: `${info.identifier}_${i + 1}`,
104
- })),
104
+ ...info,
105
+ identifier: `${info.identifier}_${i + 1}`
106
+ }))
105
107
  )
106
- .value();
108
+ .value()
107
109
 
108
110
  const imports = withIdentifiers
109
111
  .map((i) => `import ${importPrefix}${i.identifier} from "${i.file}.js"`)
110
- .join('\n');
111
- const exportProps = match(opts.export)
112
- .case({ name: String, keys: 'path' }, () =>
112
+ .join("\n")
113
+ const exportProps = modulegen ? [] : match(opts.export)
114
+ .case({ name: String, keys: "path" }, () =>
113
115
  withIdentifiers.map(
114
- (i) => `${JSON.stringify(i.file)}: ${i.identifier}`,
115
- ),
116
- )
116
+ (i) => `${JSON.stringify(i.file)}: ${i.identifier}`
117
+ ))
117
118
  .default(() => withIdentifiers.map((i) => i.identifier))
118
- .get();
119
+ .get()
119
120
 
120
121
  const exportPrefix = match(opts.export)
121
- .case(undefined, () => 'export')
122
- .case('default', () => 'export default')
123
- .case({ name: 'default' }, () => 'export default')
122
+ .case(undefined, () => "export")
123
+ .case("default", () => "export default")
124
+ .case({ name: "default" }, () => "export default")
124
125
  .case(String, (name) => `export const ${name} =`)
125
126
  .case({ name: String }, ({ name }) => `export const ${name} =`)
126
- .default(() => '')
127
- .get();
127
+ .default(() => "")
128
+ .get()
129
+
130
+ const exports = exportProps.join(",\n ")
128
131
 
129
- const exports = exportProps.join(',\n ');
132
+ const moduleGen = withIdentifiers
133
+ .map((i) => {
134
+ const up = `${i.identifier[0]!.toUpperCase()}${i.identifier.slice(1)}`
135
+ return `export interface ${up} extends Id<typeof ${i.identifier}> {}
136
+ export const ${up}: ${up} = ${i.identifier}`
137
+ })
138
+ .join("\n")
130
139
 
131
- return `${imports}\n\n${exportPrefix} {\n ${exports}\n}\n`;
140
+ const exportss = modulegen ? "" : `\n${exportPrefix} {\n ${exports}\n}`
141
+ return `${imports}\n${exportss}\n${modulegen && moduleGen ? "type Id<T> = T\n\n" + moduleGen : ""}`
132
142
  })
133
- .get();
143
+ .get()
134
144
 
135
145
  // ignore stylistic differences. babel generate deals with most
136
146
  const normalise = (str: string) =>
137
147
  generate(
138
- parse(str, { sourceType: 'module', plugins: ['typescript'] }) as any,
148
+ parse(str, { sourceType: "module", plugins: ["typescript"] }) as any
139
149
  )
140
- .code.replace(/'/g, `"`)
141
- .replace(/\/index/g, '');
150
+ .code
151
+ .replace(/'/g, `"`)
152
+ .replace(/\/index/g, "")
142
153
 
143
154
  try {
144
155
  if (normalise(expectedContent) === normalise(meta.existingContent)) {
145
- return meta.existingContent;
156
+ return meta.existingContent
146
157
  }
147
158
  } catch {}
148
159
 
149
- return expectedContent;
150
- };
160
+ return expectedContent
161
+ }