@niche-works/dev 0.3.0 → 0.4.2

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.
Files changed (208) hide show
  1. package/_virtual/_rolldown/runtime.cjs +29 -0
  2. package/addExports/addExports.cjs +61 -0
  3. package/addExports/addExports.cjs.map +1 -0
  4. package/addExports/addExports.d.cts +11 -0
  5. package/addExports/addExports.d.mts +12 -0
  6. package/addExports/addExports.mjs +59 -0
  7. package/addExports/addExports.mjs.map +1 -0
  8. package/addExports/index.cjs +3 -0
  9. package/addExports/index.d.cts +3 -0
  10. package/addExports/index.d.mts +3 -0
  11. package/addExports/index.mjs +3 -0
  12. package/addExports/types.cjs +0 -0
  13. package/{src/addExports/types.ts → addExports/types.d.cts} +33 -33
  14. package/addExports/types.d.mts +33 -0
  15. package/addExports/types.mjs +1 -0
  16. package/addJsExtensions/addJsExtensions.cjs +31 -0
  17. package/addJsExtensions/addJsExtensions.cjs.map +1 -0
  18. package/addJsExtensions/addJsExtensions.d.cts +8 -0
  19. package/addJsExtensions/addJsExtensions.d.mts +9 -0
  20. package/addJsExtensions/addJsExtensions.mjs +28 -0
  21. package/addJsExtensions/addJsExtensions.mjs.map +1 -0
  22. package/addJsExtensions/index.cjs +3 -0
  23. package/addJsExtensions/index.d.cts +2 -0
  24. package/addJsExtensions/index.d.mts +2 -0
  25. package/addJsExtensions/index.mjs +3 -0
  26. package/checkExistence/checkExistence.cjs +23 -0
  27. package/checkExistence/checkExistence.cjs.map +1 -0
  28. package/checkExistence/checkExistence.d.cts +9 -0
  29. package/checkExistence/checkExistence.d.mts +10 -0
  30. package/checkExistence/checkExistence.mjs +21 -0
  31. package/checkExistence/checkExistence.mjs.map +1 -0
  32. package/checkExistence/index.cjs +3 -0
  33. package/checkExistence/index.d.cts +2 -0
  34. package/checkExistence/index.d.mts +2 -0
  35. package/checkExistence/index.mjs +3 -0
  36. package/createExternalOptionFunction/createExternalOptionFunction.cjs +25 -0
  37. package/createExternalOptionFunction/createExternalOptionFunction.cjs.map +1 -0
  38. package/createExternalOptionFunction/createExternalOptionFunction.d.cts +10 -0
  39. package/createExternalOptionFunction/createExternalOptionFunction.d.mts +11 -0
  40. package/createExternalOptionFunction/createExternalOptionFunction.mjs +25 -0
  41. package/createExternalOptionFunction/createExternalOptionFunction.mjs.map +1 -0
  42. package/createExternalOptionFunction/index.cjs +3 -0
  43. package/createExternalOptionFunction/index.d.cts +2 -0
  44. package/createExternalOptionFunction/index.d.mts +2 -0
  45. package/createExternalOptionFunction/index.mjs +3 -0
  46. package/createExternalOptionFunction/types.cjs +0 -0
  47. package/createExternalOptionFunction/types.d.cts +31 -0
  48. package/createExternalOptionFunction/types.d.mts +31 -0
  49. package/createExternalOptionFunction/types.mjs +1 -0
  50. package/editJsonFile/editJsonFile.cjs +29 -0
  51. package/editJsonFile/editJsonFile.cjs.map +1 -0
  52. package/editJsonFile/editJsonFile.d.cts +9 -0
  53. package/editJsonFile/editJsonFile.d.mts +10 -0
  54. package/editJsonFile/editJsonFile.mjs +26 -0
  55. package/editJsonFile/editJsonFile.mjs.map +1 -0
  56. package/editJsonFile/index.cjs +3 -0
  57. package/editJsonFile/index.d.cts +2 -0
  58. package/editJsonFile/index.d.mts +2 -0
  59. package/editJsonFile/index.mjs +3 -0
  60. package/generatePublishPackageJson/generatePublishPackageJson.cjs +46 -0
  61. package/generatePublishPackageJson/generatePublishPackageJson.cjs.map +1 -0
  62. package/generatePublishPackageJson/generatePublishPackageJson.d.cts +6 -0
  63. package/generatePublishPackageJson/generatePublishPackageJson.d.mts +7 -0
  64. package/generatePublishPackageJson/generatePublishPackageJson.mjs +44 -0
  65. package/generatePublishPackageJson/generatePublishPackageJson.mjs.map +1 -0
  66. package/generatePublishPackageJson/index.cjs +3 -0
  67. package/generatePublishPackageJson/index.d.cts +3 -0
  68. package/generatePublishPackageJson/index.d.mts +3 -0
  69. package/generatePublishPackageJson/index.mjs +3 -0
  70. package/generatePublishPackageJson/types.cjs +0 -0
  71. package/{src/generatePublishPackageJson/types.ts → generatePublishPackageJson/types.d.cts} +60 -61
  72. package/generatePublishPackageJson/types.d.mts +60 -0
  73. package/generatePublishPackageJson/types.mjs +1 -0
  74. package/index.cjs +38 -0
  75. package/index.d.cts +13 -0
  76. package/index.d.mts +13 -0
  77. package/index.mjs +26 -0
  78. package/indexes/constants.cjs +123 -0
  79. package/indexes/constants.cjs.map +1 -0
  80. package/indexes/constants.d.cts +66 -0
  81. package/indexes/constants.d.mts +66 -0
  82. package/indexes/constants.mjs +106 -0
  83. package/indexes/constants.mjs.map +1 -0
  84. package/indexes/index.cjs +3 -0
  85. package/indexes/index.d.cts +3 -0
  86. package/indexes/index.d.mts +3 -0
  87. package/indexes/index.mjs +3 -0
  88. package/indexes/indexes.cjs +125 -0
  89. package/indexes/indexes.cjs.map +1 -0
  90. package/indexes/indexes.d.cts +11 -0
  91. package/indexes/indexes.d.mts +12 -0
  92. package/indexes/indexes.mjs +123 -0
  93. package/indexes/indexes.mjs.map +1 -0
  94. package/indexes/types.cjs +0 -0
  95. package/{src/indexes/types.ts → indexes/types.d.cts} +81 -87
  96. package/indexes/types.d.mts +81 -0
  97. package/indexes/types.mjs +1 -0
  98. package/installFromLocal/index.cjs +3 -0
  99. package/installFromLocal/index.d.cts +3 -0
  100. package/installFromLocal/index.d.mts +3 -0
  101. package/installFromLocal/index.mjs +3 -0
  102. package/installFromLocal/installFromLocal.cjs +46 -0
  103. package/installFromLocal/installFromLocal.cjs.map +1 -0
  104. package/installFromLocal/installFromLocal.d.cts +11 -0
  105. package/installFromLocal/installFromLocal.d.mts +12 -0
  106. package/installFromLocal/installFromLocal.mjs +43 -0
  107. package/installFromLocal/installFromLocal.mjs.map +1 -0
  108. package/installFromLocal/types.cjs +0 -0
  109. package/{src/installFromLocal/types.ts → installFromLocal/types.d.cts} +21 -19
  110. package/installFromLocal/types.d.mts +21 -0
  111. package/installFromLocal/types.mjs +1 -0
  112. package/isMatchingPath/index.cjs +3 -0
  113. package/isMatchingPath/index.d.cts +3 -0
  114. package/isMatchingPath/index.d.mts +3 -0
  115. package/isMatchingPath/index.mjs +3 -0
  116. package/isMatchingPath/isMatchingPath.cjs +52 -0
  117. package/isMatchingPath/isMatchingPath.cjs.map +1 -0
  118. package/isMatchingPath/isMatchingPath.d.cts +13 -0
  119. package/isMatchingPath/isMatchingPath.d.mts +14 -0
  120. package/isMatchingPath/isMatchingPath.mjs +50 -0
  121. package/isMatchingPath/isMatchingPath.mjs.map +1 -0
  122. package/isMatchingPath/types.cjs +0 -0
  123. package/isMatchingPath/types.d.cts +72 -0
  124. package/isMatchingPath/types.d.mts +72 -0
  125. package/isMatchingPath/types.mjs +1 -0
  126. package/isTargetPath/index.cjs +3 -0
  127. package/isTargetPath/index.d.cts +3 -0
  128. package/isTargetPath/index.d.mts +3 -0
  129. package/isTargetPath/index.mjs +3 -0
  130. package/isTargetPath/isTargetPath.cjs +21 -0
  131. package/isTargetPath/isTargetPath.cjs.map +1 -0
  132. package/isTargetPath/isTargetPath.d.cts +7 -0
  133. package/isTargetPath/isTargetPath.d.mts +8 -0
  134. package/isTargetPath/isTargetPath.mjs +19 -0
  135. package/isTargetPath/isTargetPath.mjs.map +1 -0
  136. package/isTargetPath/types.cjs +0 -0
  137. package/isTargetPath/types.d.cts +33 -0
  138. package/isTargetPath/types.d.mts +33 -0
  139. package/isTargetPath/types.mjs +1 -0
  140. package/moveFilesToSubdir/index.cjs +3 -0
  141. package/moveFilesToSubdir/index.d.cts +3 -0
  142. package/moveFilesToSubdir/index.d.mts +3 -0
  143. package/moveFilesToSubdir/index.mjs +3 -0
  144. package/moveFilesToSubdir/moveFilesToSubdir.cjs +32 -0
  145. package/moveFilesToSubdir/moveFilesToSubdir.cjs.map +1 -0
  146. package/moveFilesToSubdir/moveFilesToSubdir.d.cts +10 -0
  147. package/moveFilesToSubdir/moveFilesToSubdir.d.mts +11 -0
  148. package/moveFilesToSubdir/moveFilesToSubdir.mjs +29 -0
  149. package/moveFilesToSubdir/moveFilesToSubdir.mjs.map +1 -0
  150. package/moveFilesToSubdir/types.cjs +0 -0
  151. package/moveFilesToSubdir/types.d.cts +18 -0
  152. package/moveFilesToSubdir/types.d.mts +18 -0
  153. package/moveFilesToSubdir/types.mjs +1 -0
  154. package/package.json +20 -30
  155. package/removeFiles/index.cjs +3 -0
  156. package/removeFiles/index.d.cts +2 -0
  157. package/removeFiles/index.d.mts +2 -0
  158. package/removeFiles/index.mjs +3 -0
  159. package/removeFiles/removeFiles.cjs +15 -0
  160. package/removeFiles/removeFiles.cjs.map +1 -0
  161. package/removeFiles/removeFiles.d.cts +6 -0
  162. package/removeFiles/removeFiles.d.mts +7 -0
  163. package/removeFiles/removeFiles.mjs +12 -0
  164. package/removeFiles/removeFiles.mjs.map +1 -0
  165. package/removeFiles/types.cjs +0 -0
  166. package/removeFiles/types.d.cts +9 -0
  167. package/removeFiles/types.d.mts +9 -0
  168. package/removeFiles/types.mjs +1 -0
  169. package/ver/index.cjs +3 -0
  170. package/ver/index.d.cts +3 -0
  171. package/ver/index.d.mts +3 -0
  172. package/ver/index.mjs +3 -0
  173. package/ver/types.cjs +0 -0
  174. package/{src/ver/types.ts → ver/types.d.cts} +16 -13
  175. package/ver/types.d.mts +16 -0
  176. package/ver/types.mjs +1 -0
  177. package/ver/ver.cjs +34 -0
  178. package/ver/ver.cjs.map +1 -0
  179. package/ver/ver.d.cts +11 -0
  180. package/ver/ver.d.mts +12 -0
  181. package/ver/ver.mjs +31 -0
  182. package/ver/ver.mjs.map +1 -0
  183. package/src/addExports/addExports.ts +0 -98
  184. package/src/addExports/index.ts +0 -2
  185. package/src/addJsExtensions/addJsExtensions.ts +0 -31
  186. package/src/addJsExtensions/index.ts +0 -1
  187. package/src/checkExistence/checkExistence.ts +0 -16
  188. package/src/checkExistence/index.ts +0 -1
  189. package/src/editJsonFile/editJsonFile.ts +0 -30
  190. package/src/editJsonFile/index.ts +0 -1
  191. package/src/generatePublishPackageJson/generatePublishPackageJson.ts +0 -55
  192. package/src/generatePublishPackageJson/index.ts +0 -2
  193. package/src/index.ts +0 -10
  194. package/src/indexes/constants.ts +0 -135
  195. package/src/indexes/index.ts +0 -2
  196. package/src/indexes/indexes.ts +0 -194
  197. package/src/installFromLocal/index.ts +0 -2
  198. package/src/installFromLocal/installFromLocal.ts +0 -63
  199. package/src/isMatchingPath/_types.ts +0 -65
  200. package/src/isMatchingPath/index.ts +0 -2
  201. package/src/isMatchingPath/isMatchingPath.ts +0 -88
  202. package/src/isMatchingPath/types.ts +0 -21
  203. package/src/moveFilesToSubdir/index.ts +0 -1
  204. package/src/moveFilesToSubdir/moveFilesToSubdir.ts +0 -23
  205. package/src/ver/index.ts +0 -2
  206. package/src/ver/ver.ts +0 -38
  207. package/tsconfig.json +0 -46
  208. package/tsup.config.ts +0 -36
@@ -0,0 +1,123 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
+ let fs_extra = require("fs-extra");
4
+ fs_extra = require_runtime.__toESM(fs_extra, 1);
5
+
6
+ //#region src/indexes/constants.ts
7
+ /**
8
+ * types.ts
9
+ */
10
+ const TYPES = {
11
+ valueType: "base",
12
+ entryType: "file",
13
+ conditions: /^types.ts$/i
14
+ };
15
+ /**
16
+ * constants.ts
17
+ */
18
+ const CONSTANTS = {
19
+ valueType: "base",
20
+ entryType: "file",
21
+ conditions: /^constants.(ts|tsx)$/i
22
+ };
23
+ /**
24
+ * TypeScriptとJavaScript
25
+ */
26
+ const TS_JS = {
27
+ valueType: "base",
28
+ entryType: "file",
29
+ conditions: /.+\.(ts|tsx|js|jsx)$/i
30
+ };
31
+ /**
32
+ * 配下にindexファイルのあるディレクトリ
33
+ */
34
+ const HAS_INDEX_DIR = {
35
+ entryType: "dir",
36
+ conditions: (values, { indexRegex }) => {
37
+ const items = fs_extra.default.readdirSync(values.path);
38
+ for (const item of items) if (indexRegex.test(item)) return true;
39
+ return false;
40
+ }
41
+ };
42
+ /**
43
+ * テストディレクトリ配下
44
+ */
45
+ const TEST_DIR = {
46
+ valueType: "path",
47
+ conditions: /.+\/__test__\/.+/i
48
+ };
49
+ /**
50
+ * ファイル名またはディレクトリ名が`_`で始まる
51
+ */
52
+ const TEST_FILE = {
53
+ valueType: "base",
54
+ conditions: /.*\.test\.(ts|tsx|js|jsx)$/i
55
+ };
56
+ /**
57
+ * ファイル名またはディレクトリ名が`_`で始まる
58
+ */
59
+ const PRIVATE = {
60
+ valueType: "base",
61
+ conditions: /^_/
62
+ };
63
+ /**
64
+ * 拡張子を除いたファイル名が親ディレクトリ名と同じ
65
+ */
66
+ const MAIN_FILE = {
67
+ entryType: "file",
68
+ conditions: (values) => {
69
+ return values.name === values.dirbase;
70
+ }
71
+ };
72
+ /**
73
+ * ツール類の入ったディレクトリ
74
+ */
75
+ const TOOLS_DIR = {
76
+ entryType: "dir",
77
+ conditions: (values, { children }) => {
78
+ const { base } = values;
79
+ return base[0] === base[0].toLowerCase() && children?.every((child) => child.split(".")[0] !== base);
80
+ }
81
+ };
82
+ /**
83
+ * includeのデフォルト値
84
+ */
85
+ const DEFAULT_INCLUDE = [TS_JS, HAS_INDEX_DIR];
86
+ /**
87
+ * excludeのデフォルト値
88
+ */
89
+ const DEFAULT_EXCLUDE = [TEST_DIR, PRIVATE];
90
+ /**
91
+ * exportTypeAllのデフォルト値
92
+ */
93
+ const DEFAULT_EXPORT_TYPE_ALL = [TYPES];
94
+ /**
95
+ * exportAllのデフォルト値
96
+ */
97
+ const DEFAULT_EXPORT_ALL = [CONSTANTS];
98
+ /**
99
+ * exportDefaultのデフォルト値
100
+ */
101
+ const DEFAULT_EXPORT_DEFAULT = [MAIN_FILE];
102
+ /**
103
+ * exportAllAsのデフォルト値
104
+ */
105
+ const DEFAULT_EXPORT_ALL_AS = [TOOLS_DIR];
106
+
107
+ //#endregion
108
+ exports.CONSTANTS = CONSTANTS;
109
+ exports.DEFAULT_EXCLUDE = DEFAULT_EXCLUDE;
110
+ exports.DEFAULT_EXPORT_ALL = DEFAULT_EXPORT_ALL;
111
+ exports.DEFAULT_EXPORT_ALL_AS = DEFAULT_EXPORT_ALL_AS;
112
+ exports.DEFAULT_EXPORT_DEFAULT = DEFAULT_EXPORT_DEFAULT;
113
+ exports.DEFAULT_EXPORT_TYPE_ALL = DEFAULT_EXPORT_TYPE_ALL;
114
+ exports.DEFAULT_INCLUDE = DEFAULT_INCLUDE;
115
+ exports.HAS_INDEX_DIR = HAS_INDEX_DIR;
116
+ exports.MAIN_FILE = MAIN_FILE;
117
+ exports.PRIVATE = PRIVATE;
118
+ exports.TEST_DIR = TEST_DIR;
119
+ exports.TEST_FILE = TEST_FILE;
120
+ exports.TOOLS_DIR = TOOLS_DIR;
121
+ exports.TS_JS = TS_JS;
122
+ exports.TYPES = TYPES;
123
+ //# sourceMappingURL=constants.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.cjs","names":["fs"],"sources":["../../src/indexes/constants.ts"],"sourcesContent":["import fs from 'fs-extra';\r\nimport type { IsMatchingPathCondition } from '../isMatchingPath';\r\n\r\n/**\r\n * types.ts\r\n */\r\nexport const TYPES: IsMatchingPathCondition = {\r\n valueType: 'base',\r\n entryType: 'file',\r\n conditions: /^types.ts$/i,\r\n};\r\n\r\n/**\r\n * constants.ts\r\n */\r\nexport const CONSTANTS: IsMatchingPathCondition = {\r\n valueType: 'base',\r\n entryType: 'file',\r\n conditions: /^constants.(ts|tsx)$/i,\r\n};\r\n\r\n/**\r\n * TypeScriptとJavaScript\r\n */\r\nexport const TS_JS: IsMatchingPathCondition = {\r\n valueType: 'base',\r\n entryType: 'file',\r\n conditions: /.+\\.(ts|tsx|js|jsx)$/i,\r\n};\r\n\r\n/**\r\n * 配下にindexファイルのあるディレクトリ\r\n */\r\nexport const HAS_INDEX_DIR: IsMatchingPathCondition = {\r\n entryType: 'dir',\r\n conditions: (values, { indexRegex }) => {\r\n const items = fs.readdirSync(values.path);\r\n for (const item of items) {\r\n if (indexRegex.test(item)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n};\r\n\r\n/**\r\n * テストディレクトリ配下\r\n */\r\nexport const TEST_DIR: IsMatchingPathCondition = {\r\n valueType: 'path',\r\n conditions: /.+\\/__test__\\/.+/i,\r\n};\r\n\r\n/**\r\n * ファイル名またはディレクトリ名が`_`で始まる\r\n */\r\nexport const TEST_FILE: IsMatchingPathCondition = {\r\n valueType: 'base',\r\n conditions: /.*\\.test\\.(ts|tsx|js|jsx)$/i,\r\n};\r\n\r\n/**\r\n * ファイル名またはディレクトリ名が`_`で始まる\r\n */\r\nexport const PRIVATE: IsMatchingPathCondition = {\r\n valueType: 'base',\r\n conditions: /^_/,\r\n};\r\n\r\n/**\r\n * 拡張子を除いたファイル名が親ディレクトリ名と同じ\r\n */\r\nexport const MAIN_FILE: IsMatchingPathCondition = {\r\n entryType: 'file',\r\n conditions: (values) => {\r\n return values.name === values.dirbase;\r\n },\r\n};\r\n\r\n/**\r\n * ツール類の入ったディレクトリ\r\n */\r\nexport const TOOLS_DIR: IsMatchingPathCondition = {\r\n entryType: 'dir',\r\n conditions: (values, { children }) => {\r\n const { base } = values;\r\n return (\r\n // 先頭が小文字\r\n base[0] === base[0].toLowerCase() &&\r\n // 子要素にディレクトリと同じ名称のファイルが無い\r\n children?.every((child: string) => child.split('.')[0] !== base)\r\n );\r\n },\r\n};\r\n\r\n/**\r\n * includeのデフォルト値\r\n */\r\nexport const DEFAULT_INCLUDE = [\r\n // TypeScript,JavaScriptのファイルを対象\r\n TS_JS,\r\n // 配下にindex.tsを持つディレクトリを対象\r\n HAS_INDEX_DIR,\r\n];\r\n\r\n/**\r\n * excludeのデフォルト値\r\n */\r\nexport const DEFAULT_EXCLUDE = [\r\n // __test__フォルダ配下の全てを除外\r\n TEST_DIR,\r\n // ディレクトリ名、ファイル名が_で始まるものを除外\r\n PRIVATE,\r\n];\r\n\r\n/**\r\n * exportTypeAllのデフォルト値\r\n */\r\nexport const DEFAULT_EXPORT_TYPE_ALL = [TYPES];\r\n\r\n/**\r\n * exportAllのデフォルト値\r\n */\r\nexport const DEFAULT_EXPORT_ALL = [CONSTANTS];\r\n\r\n/**\r\n * exportDefaultのデフォルト値\r\n */\r\nexport const DEFAULT_EXPORT_DEFAULT = [MAIN_FILE];\r\n\r\n/**\r\n * exportAllAsのデフォルト値\r\n */\r\nexport const DEFAULT_EXPORT_ALL_AS = [TOOLS_DIR];\r\n"],"mappings":";;;;;;;;;AAMA,MAAa,QAAiC;CAC5C,WAAW;CACX,WAAW;CACX,YAAY;CACb;;;;AAKD,MAAa,YAAqC;CAChD,WAAW;CACX,WAAW;CACX,YAAY;CACb;;;;AAKD,MAAa,QAAiC;CAC5C,WAAW;CACX,WAAW;CACX,YAAY;CACb;;;;AAKD,MAAa,gBAAyC;CACpD,WAAW;CACX,aAAa,QAAQ,EAAE,iBAAiB;EACtC,MAAM,QAAQA,iBAAG,YAAY,OAAO,KAAK;AACzC,OAAK,MAAM,QAAQ,MACjB,KAAI,WAAW,KAAK,KAAK,CACvB,QAAO;AAGX,SAAO;;CAEV;;;;AAKD,MAAa,WAAoC;CAC/C,WAAW;CACX,YAAY;CACb;;;;AAKD,MAAa,YAAqC;CAChD,WAAW;CACX,YAAY;CACb;;;;AAKD,MAAa,UAAmC;CAC9C,WAAW;CACX,YAAY;CACb;;;;AAKD,MAAa,YAAqC;CAChD,WAAW;CACX,aAAa,WAAW;AACtB,SAAO,OAAO,SAAS,OAAO;;CAEjC;;;;AAKD,MAAa,YAAqC;CAChD,WAAW;CACX,aAAa,QAAQ,EAAE,eAAe;EACpC,MAAM,EAAE,SAAS;AACjB,SAEE,KAAK,OAAO,KAAK,GAAG,aAAa,IAEjC,UAAU,OAAO,UAAkB,MAAM,MAAM,IAAI,CAAC,OAAO,KAAK;;CAGrE;;;;AAKD,MAAa,kBAAkB,CAE7B,OAEA,cACD;;;;AAKD,MAAa,kBAAkB,CAE7B,UAEA,QACD;;;;AAKD,MAAa,0BAA0B,CAAC,MAAM;;;;AAK9C,MAAa,qBAAqB,CAAC,UAAU;;;;AAK7C,MAAa,yBAAyB,CAAC,UAAU;;;;AAKjD,MAAa,wBAAwB,CAAC,UAAU"}
@@ -0,0 +1,66 @@
1
+ import { ConditionConfig, ConditionFnOptions, IsMatchingPathCondition } from "../isMatchingPath/types.cjs";
2
+
3
+ //#region src/indexes/constants.d.ts
4
+ /**
5
+ * types.ts
6
+ */
7
+ declare const TYPES: IsMatchingPathCondition;
8
+ /**
9
+ * constants.ts
10
+ */
11
+ declare const CONSTANTS: IsMatchingPathCondition;
12
+ /**
13
+ * TypeScriptとJavaScript
14
+ */
15
+ declare const TS_JS: IsMatchingPathCondition;
16
+ /**
17
+ * 配下にindexファイルのあるディレクトリ
18
+ */
19
+ declare const HAS_INDEX_DIR: IsMatchingPathCondition;
20
+ /**
21
+ * テストディレクトリ配下
22
+ */
23
+ declare const TEST_DIR: IsMatchingPathCondition;
24
+ /**
25
+ * ファイル名またはディレクトリ名が`_`で始まる
26
+ */
27
+ declare const TEST_FILE: IsMatchingPathCondition;
28
+ /**
29
+ * ファイル名またはディレクトリ名が`_`で始まる
30
+ */
31
+ declare const PRIVATE: IsMatchingPathCondition;
32
+ /**
33
+ * 拡張子を除いたファイル名が親ディレクトリ名と同じ
34
+ */
35
+ declare const MAIN_FILE: IsMatchingPathCondition;
36
+ /**
37
+ * ツール類の入ったディレクトリ
38
+ */
39
+ declare const TOOLS_DIR: IsMatchingPathCondition;
40
+ /**
41
+ * includeのデフォルト値
42
+ */
43
+ declare const DEFAULT_INCLUDE: ConditionConfig<ConditionFnOptions>[];
44
+ /**
45
+ * excludeのデフォルト値
46
+ */
47
+ declare const DEFAULT_EXCLUDE: ConditionConfig<ConditionFnOptions>[];
48
+ /**
49
+ * exportTypeAllのデフォルト値
50
+ */
51
+ declare const DEFAULT_EXPORT_TYPE_ALL: ConditionConfig<ConditionFnOptions>[];
52
+ /**
53
+ * exportAllのデフォルト値
54
+ */
55
+ declare const DEFAULT_EXPORT_ALL: ConditionConfig<ConditionFnOptions>[];
56
+ /**
57
+ * exportDefaultのデフォルト値
58
+ */
59
+ declare const DEFAULT_EXPORT_DEFAULT: ConditionConfig<ConditionFnOptions>[];
60
+ /**
61
+ * exportAllAsのデフォルト値
62
+ */
63
+ declare const DEFAULT_EXPORT_ALL_AS: ConditionConfig<ConditionFnOptions>[];
64
+ //#endregion
65
+ export { CONSTANTS, DEFAULT_EXCLUDE, DEFAULT_EXPORT_ALL, DEFAULT_EXPORT_ALL_AS, DEFAULT_EXPORT_DEFAULT, DEFAULT_EXPORT_TYPE_ALL, DEFAULT_INCLUDE, HAS_INDEX_DIR, MAIN_FILE, PRIVATE, TEST_DIR, TEST_FILE, TOOLS_DIR, TS_JS, TYPES };
66
+ //# sourceMappingURL=constants.d.cts.map
@@ -0,0 +1,66 @@
1
+ import { ConditionConfig, ConditionFnOptions, IsMatchingPathCondition } from "../isMatchingPath/types.mjs";
2
+
3
+ //#region src/indexes/constants.d.ts
4
+ /**
5
+ * types.ts
6
+ */
7
+ declare const TYPES: IsMatchingPathCondition;
8
+ /**
9
+ * constants.ts
10
+ */
11
+ declare const CONSTANTS: IsMatchingPathCondition;
12
+ /**
13
+ * TypeScriptとJavaScript
14
+ */
15
+ declare const TS_JS: IsMatchingPathCondition;
16
+ /**
17
+ * 配下にindexファイルのあるディレクトリ
18
+ */
19
+ declare const HAS_INDEX_DIR: IsMatchingPathCondition;
20
+ /**
21
+ * テストディレクトリ配下
22
+ */
23
+ declare const TEST_DIR: IsMatchingPathCondition;
24
+ /**
25
+ * ファイル名またはディレクトリ名が`_`で始まる
26
+ */
27
+ declare const TEST_FILE: IsMatchingPathCondition;
28
+ /**
29
+ * ファイル名またはディレクトリ名が`_`で始まる
30
+ */
31
+ declare const PRIVATE: IsMatchingPathCondition;
32
+ /**
33
+ * 拡張子を除いたファイル名が親ディレクトリ名と同じ
34
+ */
35
+ declare const MAIN_FILE: IsMatchingPathCondition;
36
+ /**
37
+ * ツール類の入ったディレクトリ
38
+ */
39
+ declare const TOOLS_DIR: IsMatchingPathCondition;
40
+ /**
41
+ * includeのデフォルト値
42
+ */
43
+ declare const DEFAULT_INCLUDE: ConditionConfig<ConditionFnOptions>[];
44
+ /**
45
+ * excludeのデフォルト値
46
+ */
47
+ declare const DEFAULT_EXCLUDE: ConditionConfig<ConditionFnOptions>[];
48
+ /**
49
+ * exportTypeAllのデフォルト値
50
+ */
51
+ declare const DEFAULT_EXPORT_TYPE_ALL: ConditionConfig<ConditionFnOptions>[];
52
+ /**
53
+ * exportAllのデフォルト値
54
+ */
55
+ declare const DEFAULT_EXPORT_ALL: ConditionConfig<ConditionFnOptions>[];
56
+ /**
57
+ * exportDefaultのデフォルト値
58
+ */
59
+ declare const DEFAULT_EXPORT_DEFAULT: ConditionConfig<ConditionFnOptions>[];
60
+ /**
61
+ * exportAllAsのデフォルト値
62
+ */
63
+ declare const DEFAULT_EXPORT_ALL_AS: ConditionConfig<ConditionFnOptions>[];
64
+ //#endregion
65
+ export { CONSTANTS, DEFAULT_EXCLUDE, DEFAULT_EXPORT_ALL, DEFAULT_EXPORT_ALL_AS, DEFAULT_EXPORT_DEFAULT, DEFAULT_EXPORT_TYPE_ALL, DEFAULT_INCLUDE, HAS_INDEX_DIR, MAIN_FILE, PRIVATE, TEST_DIR, TEST_FILE, TOOLS_DIR, TS_JS, TYPES };
66
+ //# sourceMappingURL=constants.d.mts.map
@@ -0,0 +1,106 @@
1
+ import fs from "fs-extra";
2
+
3
+ //#region src/indexes/constants.ts
4
+ /**
5
+ * types.ts
6
+ */
7
+ const TYPES = {
8
+ valueType: "base",
9
+ entryType: "file",
10
+ conditions: /^types.ts$/i
11
+ };
12
+ /**
13
+ * constants.ts
14
+ */
15
+ const CONSTANTS = {
16
+ valueType: "base",
17
+ entryType: "file",
18
+ conditions: /^constants.(ts|tsx)$/i
19
+ };
20
+ /**
21
+ * TypeScriptとJavaScript
22
+ */
23
+ const TS_JS = {
24
+ valueType: "base",
25
+ entryType: "file",
26
+ conditions: /.+\.(ts|tsx|js|jsx)$/i
27
+ };
28
+ /**
29
+ * 配下にindexファイルのあるディレクトリ
30
+ */
31
+ const HAS_INDEX_DIR = {
32
+ entryType: "dir",
33
+ conditions: (values, { indexRegex }) => {
34
+ const items = fs.readdirSync(values.path);
35
+ for (const item of items) if (indexRegex.test(item)) return true;
36
+ return false;
37
+ }
38
+ };
39
+ /**
40
+ * テストディレクトリ配下
41
+ */
42
+ const TEST_DIR = {
43
+ valueType: "path",
44
+ conditions: /.+\/__test__\/.+/i
45
+ };
46
+ /**
47
+ * ファイル名またはディレクトリ名が`_`で始まる
48
+ */
49
+ const TEST_FILE = {
50
+ valueType: "base",
51
+ conditions: /.*\.test\.(ts|tsx|js|jsx)$/i
52
+ };
53
+ /**
54
+ * ファイル名またはディレクトリ名が`_`で始まる
55
+ */
56
+ const PRIVATE = {
57
+ valueType: "base",
58
+ conditions: /^_/
59
+ };
60
+ /**
61
+ * 拡張子を除いたファイル名が親ディレクトリ名と同じ
62
+ */
63
+ const MAIN_FILE = {
64
+ entryType: "file",
65
+ conditions: (values) => {
66
+ return values.name === values.dirbase;
67
+ }
68
+ };
69
+ /**
70
+ * ツール類の入ったディレクトリ
71
+ */
72
+ const TOOLS_DIR = {
73
+ entryType: "dir",
74
+ conditions: (values, { children }) => {
75
+ const { base } = values;
76
+ return base[0] === base[0].toLowerCase() && children?.every((child) => child.split(".")[0] !== base);
77
+ }
78
+ };
79
+ /**
80
+ * includeのデフォルト値
81
+ */
82
+ const DEFAULT_INCLUDE = [TS_JS, HAS_INDEX_DIR];
83
+ /**
84
+ * excludeのデフォルト値
85
+ */
86
+ const DEFAULT_EXCLUDE = [TEST_DIR, PRIVATE];
87
+ /**
88
+ * exportTypeAllのデフォルト値
89
+ */
90
+ const DEFAULT_EXPORT_TYPE_ALL = [TYPES];
91
+ /**
92
+ * exportAllのデフォルト値
93
+ */
94
+ const DEFAULT_EXPORT_ALL = [CONSTANTS];
95
+ /**
96
+ * exportDefaultのデフォルト値
97
+ */
98
+ const DEFAULT_EXPORT_DEFAULT = [MAIN_FILE];
99
+ /**
100
+ * exportAllAsのデフォルト値
101
+ */
102
+ const DEFAULT_EXPORT_ALL_AS = [TOOLS_DIR];
103
+
104
+ //#endregion
105
+ export { CONSTANTS, DEFAULT_EXCLUDE, DEFAULT_EXPORT_ALL, DEFAULT_EXPORT_ALL_AS, DEFAULT_EXPORT_DEFAULT, DEFAULT_EXPORT_TYPE_ALL, DEFAULT_INCLUDE, HAS_INDEX_DIR, MAIN_FILE, PRIVATE, TEST_DIR, TEST_FILE, TOOLS_DIR, TS_JS, TYPES };
106
+ //# sourceMappingURL=constants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.mjs","names":[],"sources":["../../src/indexes/constants.ts"],"sourcesContent":["import fs from 'fs-extra';\r\nimport type { IsMatchingPathCondition } from '../isMatchingPath';\r\n\r\n/**\r\n * types.ts\r\n */\r\nexport const TYPES: IsMatchingPathCondition = {\r\n valueType: 'base',\r\n entryType: 'file',\r\n conditions: /^types.ts$/i,\r\n};\r\n\r\n/**\r\n * constants.ts\r\n */\r\nexport const CONSTANTS: IsMatchingPathCondition = {\r\n valueType: 'base',\r\n entryType: 'file',\r\n conditions: /^constants.(ts|tsx)$/i,\r\n};\r\n\r\n/**\r\n * TypeScriptとJavaScript\r\n */\r\nexport const TS_JS: IsMatchingPathCondition = {\r\n valueType: 'base',\r\n entryType: 'file',\r\n conditions: /.+\\.(ts|tsx|js|jsx)$/i,\r\n};\r\n\r\n/**\r\n * 配下にindexファイルのあるディレクトリ\r\n */\r\nexport const HAS_INDEX_DIR: IsMatchingPathCondition = {\r\n entryType: 'dir',\r\n conditions: (values, { indexRegex }) => {\r\n const items = fs.readdirSync(values.path);\r\n for (const item of items) {\r\n if (indexRegex.test(item)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n};\r\n\r\n/**\r\n * テストディレクトリ配下\r\n */\r\nexport const TEST_DIR: IsMatchingPathCondition = {\r\n valueType: 'path',\r\n conditions: /.+\\/__test__\\/.+/i,\r\n};\r\n\r\n/**\r\n * ファイル名またはディレクトリ名が`_`で始まる\r\n */\r\nexport const TEST_FILE: IsMatchingPathCondition = {\r\n valueType: 'base',\r\n conditions: /.*\\.test\\.(ts|tsx|js|jsx)$/i,\r\n};\r\n\r\n/**\r\n * ファイル名またはディレクトリ名が`_`で始まる\r\n */\r\nexport const PRIVATE: IsMatchingPathCondition = {\r\n valueType: 'base',\r\n conditions: /^_/,\r\n};\r\n\r\n/**\r\n * 拡張子を除いたファイル名が親ディレクトリ名と同じ\r\n */\r\nexport const MAIN_FILE: IsMatchingPathCondition = {\r\n entryType: 'file',\r\n conditions: (values) => {\r\n return values.name === values.dirbase;\r\n },\r\n};\r\n\r\n/**\r\n * ツール類の入ったディレクトリ\r\n */\r\nexport const TOOLS_DIR: IsMatchingPathCondition = {\r\n entryType: 'dir',\r\n conditions: (values, { children }) => {\r\n const { base } = values;\r\n return (\r\n // 先頭が小文字\r\n base[0] === base[0].toLowerCase() &&\r\n // 子要素にディレクトリと同じ名称のファイルが無い\r\n children?.every((child: string) => child.split('.')[0] !== base)\r\n );\r\n },\r\n};\r\n\r\n/**\r\n * includeのデフォルト値\r\n */\r\nexport const DEFAULT_INCLUDE = [\r\n // TypeScript,JavaScriptのファイルを対象\r\n TS_JS,\r\n // 配下にindex.tsを持つディレクトリを対象\r\n HAS_INDEX_DIR,\r\n];\r\n\r\n/**\r\n * excludeのデフォルト値\r\n */\r\nexport const DEFAULT_EXCLUDE = [\r\n // __test__フォルダ配下の全てを除外\r\n TEST_DIR,\r\n // ディレクトリ名、ファイル名が_で始まるものを除外\r\n PRIVATE,\r\n];\r\n\r\n/**\r\n * exportTypeAllのデフォルト値\r\n */\r\nexport const DEFAULT_EXPORT_TYPE_ALL = [TYPES];\r\n\r\n/**\r\n * exportAllのデフォルト値\r\n */\r\nexport const DEFAULT_EXPORT_ALL = [CONSTANTS];\r\n\r\n/**\r\n * exportDefaultのデフォルト値\r\n */\r\nexport const DEFAULT_EXPORT_DEFAULT = [MAIN_FILE];\r\n\r\n/**\r\n * exportAllAsのデフォルト値\r\n */\r\nexport const DEFAULT_EXPORT_ALL_AS = [TOOLS_DIR];\r\n"],"mappings":";;;;;;AAMA,MAAa,QAAiC;CAC5C,WAAW;CACX,WAAW;CACX,YAAY;CACb;;;;AAKD,MAAa,YAAqC;CAChD,WAAW;CACX,WAAW;CACX,YAAY;CACb;;;;AAKD,MAAa,QAAiC;CAC5C,WAAW;CACX,WAAW;CACX,YAAY;CACb;;;;AAKD,MAAa,gBAAyC;CACpD,WAAW;CACX,aAAa,QAAQ,EAAE,iBAAiB;EACtC,MAAM,QAAQ,GAAG,YAAY,OAAO,KAAK;AACzC,OAAK,MAAM,QAAQ,MACjB,KAAI,WAAW,KAAK,KAAK,CACvB,QAAO;AAGX,SAAO;;CAEV;;;;AAKD,MAAa,WAAoC;CAC/C,WAAW;CACX,YAAY;CACb;;;;AAKD,MAAa,YAAqC;CAChD,WAAW;CACX,YAAY;CACb;;;;AAKD,MAAa,UAAmC;CAC9C,WAAW;CACX,YAAY;CACb;;;;AAKD,MAAa,YAAqC;CAChD,WAAW;CACX,aAAa,WAAW;AACtB,SAAO,OAAO,SAAS,OAAO;;CAEjC;;;;AAKD,MAAa,YAAqC;CAChD,WAAW;CACX,aAAa,QAAQ,EAAE,eAAe;EACpC,MAAM,EAAE,SAAS;AACjB,SAEE,KAAK,OAAO,KAAK,GAAG,aAAa,IAEjC,UAAU,OAAO,UAAkB,MAAM,MAAM,IAAI,CAAC,OAAO,KAAK;;CAGrE;;;;AAKD,MAAa,kBAAkB,CAE7B,OAEA,cACD;;;;AAKD,MAAa,kBAAkB,CAE7B,UAEA,QACD;;;;AAKD,MAAa,0BAA0B,CAAC,MAAM;;;;AAK9C,MAAa,qBAAqB,CAAC,UAAU;;;;AAK7C,MAAa,yBAAyB,CAAC,UAAU;;;;AAKjD,MAAa,wBAAwB,CAAC,UAAU"}
@@ -0,0 +1,3 @@
1
+ const require_indexes_indexes = require('./indexes.cjs');
2
+
3
+ module.exports = require_indexes_indexes;
@@ -0,0 +1,3 @@
1
+ import { IndexesOptions } from "./types.cjs";
2
+ import indexes from "./indexes.cjs";
3
+ export { IndexesOptions, indexes as default };
@@ -0,0 +1,3 @@
1
+ import { IndexesOptions } from "./types.mjs";
2
+ import indexes from "./indexes.mjs";
3
+ export { IndexesOptions, indexes as default };
@@ -0,0 +1,3 @@
1
+ import indexes from "./indexes.mjs";
2
+
3
+ export { indexes as default };
@@ -0,0 +1,125 @@
1
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
2
+ const require_isMatchingPath_isMatchingPath = require('../isMatchingPath/isMatchingPath.cjs');
3
+ require('../isMatchingPath/index.cjs');
4
+ const require_indexes_constants = require('./constants.cjs');
5
+ let fs_extra = require("fs-extra");
6
+ fs_extra = require_runtime.__toESM(fs_extra, 1);
7
+ let path = require("path");
8
+
9
+ //#region src/indexes/indexes.ts
10
+ const EXPORTS = {
11
+ exportAll: {
12
+ type: "named",
13
+ generate: (name) => `export * from './${name}';`
14
+ },
15
+ exportAllAs: {
16
+ type: "named",
17
+ generate: (name) => `export * as ${name} from './${name}';`
18
+ },
19
+ exportDefault: {
20
+ type: "default",
21
+ generate: (name) => `export { default } from './${name}';`
22
+ },
23
+ exportDefaultAs: {
24
+ type: "named",
25
+ generate: (name) => `export { default as ${name} } from './${name}';`
26
+ },
27
+ exportTypeAll: {
28
+ type: "type",
29
+ generate: (name) => `export type * from './${name}';`
30
+ }
31
+ };
32
+ /**
33
+ * 対象のディレクトリ配下のindexファイルを作成する\
34
+ * 対象ファイルで出力形式が特に指定されていない場合は下記の形式で出力\
35
+ * `export { default as ${name} } from './${name}';`
36
+ */
37
+ function indexes(options = {}) {
38
+ const { srcPath = "src", indexFileName = "index.ts", include = require_indexes_constants.DEFAULT_INCLUDE, exclude = require_indexes_constants.DEFAULT_EXCLUDE, exportAll = require_indexes_constants.DEFAULT_EXPORT_ALL, exportAllAs = require_indexes_constants.DEFAULT_EXPORT_ALL_AS, exportDefault = require_indexes_constants.DEFAULT_EXPORT_DEFAULT, exportTypeAll = require_indexes_constants.DEFAULT_EXPORT_TYPE_ALL, ...rest } = options;
39
+ _indexes(srcPath, _createRegex(indexFileName), {
40
+ indexFileName,
41
+ include,
42
+ exclude,
43
+ exportAll,
44
+ exportAllAs,
45
+ exportDefault,
46
+ exportTypeAll,
47
+ ...rest
48
+ });
49
+ }
50
+ function _indexes(targetPath, indexRegex, options) {
51
+ const { indexFileName = "index.ts", include, exclude, includeNamedWithDefault, exportAll, exportAllAs, exportDefault, exportDefaultAs, exportTypeAll, dryRun } = options;
52
+ const exportTargets = {
53
+ exportAll,
54
+ exportAllAs,
55
+ exportDefault,
56
+ exportDefaultAs,
57
+ exportTypeAll
58
+ };
59
+ if (!fs_extra.default.statSync(targetPath).isDirectory()) console.error(`"${targetPath}" is not directory.`);
60
+ const items = fs_extra.default.readdirSync(targetPath);
61
+ items.sort((a, b) => a.toLowerCase() > b.toLowerCase() ? 1 : -1);
62
+ const exportCodes = [];
63
+ let hasDefaultExport = false;
64
+ let hasNamedExport = false;
65
+ for (const item of items) {
66
+ const itemPath = path.posix.join(targetPath, item);
67
+ const { name } = path.posix.parse(itemPath);
68
+ const stat = fs_extra.default.statSync(itemPath);
69
+ let children;
70
+ if (stat.isDirectory()) children = _indexes(itemPath, indexRegex, options);
71
+ const isMatchingPathOptions = { conditionOptions: {
72
+ indexRegex,
73
+ children
74
+ } };
75
+ if (!indexRegex.test(item) && require_isMatchingPath_isMatchingPath(itemPath, include, isMatchingPathOptions) && !require_isMatchingPath_isMatchingPath(itemPath, exclude, isMatchingPathOptions)) {
76
+ let isExported = false;
77
+ for (const type in EXPORTS) {
78
+ const exportType = type;
79
+ const exportTarget = exportTargets[exportType];
80
+ if (exportTarget && require_isMatchingPath_isMatchingPath(itemPath, exportTarget, isMatchingPathOptions)) {
81
+ const EXPORT = EXPORTS[exportType];
82
+ exportCodes.push({
83
+ type: EXPORT.type,
84
+ code: EXPORT.generate(name)
85
+ });
86
+ if (EXPORT.type === "named") hasNamedExport = true;
87
+ else if (EXPORT.type === "default") hasDefaultExport = true;
88
+ isExported = true;
89
+ break;
90
+ }
91
+ }
92
+ if (!isExported) {
93
+ exportCodes.push({
94
+ type: EXPORTS.exportDefaultAs.type,
95
+ code: EXPORTS.exportDefaultAs.generate(name)
96
+ });
97
+ hasNamedExport = true;
98
+ }
99
+ }
100
+ }
101
+ if (exportCodes.length) {
102
+ let index;
103
+ if (hasDefaultExport && hasNamedExport && !includeNamedWithDefault) index = exportCodes.reduce((result, exportCode) => {
104
+ if (exportCode.type !== "named") result.push(exportCode.code);
105
+ return result;
106
+ }, []);
107
+ else index = exportCodes.map((exportCode) => exportCode.code);
108
+ const indexPath = path.posix.join(targetPath, indexFileName);
109
+ if (!dryRun) {
110
+ fs_extra.default.writeFileSync(indexPath, index.join("\r\n") + "\r\n", { encoding: "utf8" });
111
+ console.info(indexPath);
112
+ } else {
113
+ console.info(indexPath + "-------------------------------------");
114
+ console.info(index.join("\r\n") + "\r\n");
115
+ }
116
+ }
117
+ return items;
118
+ }
119
+ function _createRegex(str) {
120
+ return new RegExp(`^${str.replace(/[.*+?^=!:${}()|\[\]\/\\]/g, "\\$&")}$`, "i");
121
+ }
122
+
123
+ //#endregion
124
+ module.exports = indexes;
125
+ //# sourceMappingURL=indexes.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexes.cjs","names":["DEFAULT_INCLUDE","DEFAULT_EXCLUDE","DEFAULT_EXPORT_ALL","DEFAULT_EXPORT_ALL_AS","DEFAULT_EXPORT_DEFAULT","DEFAULT_EXPORT_TYPE_ALL","fs","isMatchingPath"],"sources":["../../src/indexes/indexes.ts"],"sourcesContent":["import fs from 'fs-extra';\r\nimport { posix as path } from 'path';\r\nimport isMatchingPath from '../isMatchingPath';\r\nimport {\r\n DEFAULT_EXCLUDE,\r\n DEFAULT_EXPORT_ALL,\r\n DEFAULT_EXPORT_ALL_AS,\r\n DEFAULT_EXPORT_DEFAULT,\r\n DEFAULT_EXPORT_TYPE_ALL,\r\n DEFAULT_INCLUDE,\r\n} from './constants';\r\nimport type { IndexesOptions } from './types';\r\n\r\nconst EXPORTS = {\r\n exportAll: {\r\n type: 'named',\r\n generate: (name: string) => `export * from './${name}';`,\r\n },\r\n exportAllAs: {\r\n type: 'named',\r\n generate: (name: string) => `export * as ${name} from './${name}';`,\r\n },\r\n exportDefault: {\r\n type: 'default',\r\n generate: (name: string) => `export { default } from './${name}';`,\r\n },\r\n exportDefaultAs: {\r\n type: 'named',\r\n generate: (name: string) =>\r\n `export { default as ${name} } from './${name}';`,\r\n },\r\n exportTypeAll: {\r\n type: 'type',\r\n generate: (name: string) => `export type * from './${name}';`,\r\n },\r\n} as const;\r\n\r\n/**\r\n * 対象のディレクトリ配下のindexファイルを作成する\\\r\n * 対象ファイルで出力形式が特に指定されていない場合は下記の形式で出力\\\r\n * `export { default as ${name} } from './${name}';`\r\n */\r\nexport default function indexes(options: IndexesOptions = {}) {\r\n const {\r\n srcPath = 'src',\r\n indexFileName = 'index.ts',\r\n include = DEFAULT_INCLUDE,\r\n exclude = DEFAULT_EXCLUDE,\r\n exportAll = DEFAULT_EXPORT_ALL,\r\n exportAllAs = DEFAULT_EXPORT_ALL_AS,\r\n exportDefault = DEFAULT_EXPORT_DEFAULT,\r\n exportTypeAll = DEFAULT_EXPORT_TYPE_ALL,\r\n ...rest\r\n } = options;\r\n const indexRegex = _createRegex(indexFileName);\r\n\r\n // indexファイルの作成処理を実行\r\n _indexes(srcPath, indexRegex, {\r\n indexFileName,\r\n include,\r\n exclude,\r\n exportAll,\r\n exportAllAs,\r\n exportDefault,\r\n exportTypeAll,\r\n ...rest,\r\n });\r\n}\r\n\r\nfunction _indexes(\r\n targetPath: string,\r\n indexRegex: RegExp,\r\n options: IndexesOptions,\r\n) {\r\n const {\r\n indexFileName = 'index.ts',\r\n include,\r\n exclude,\r\n includeNamedWithDefault,\r\n exportAll,\r\n exportAllAs,\r\n exportDefault,\r\n exportDefaultAs,\r\n exportTypeAll,\r\n dryRun,\r\n } = options;\r\n const exportTargets = {\r\n exportAll,\r\n exportAllAs,\r\n exportDefault,\r\n exportDefaultAs,\r\n exportTypeAll,\r\n };\r\n const stat = fs.statSync(targetPath);\r\n if (!stat.isDirectory()) {\r\n console.error(`\"${targetPath}\" is not directory.`);\r\n }\r\n const items = fs.readdirSync(targetPath);\r\n items.sort((a, b) => (a.toLowerCase() > b.toLowerCase() ? 1 : -1));\r\n const exportCodes = [];\r\n let hasDefaultExport = false;\r\n let hasNamedExport = false;\r\n\r\n for (const item of items) {\r\n const itemPath = path.join(targetPath, item);\r\n const { name } = path.parse(itemPath);\r\n const stat = fs.statSync(itemPath);\r\n\r\n let children;\r\n if (stat.isDirectory()) {\r\n // ディレクトリの場合は先に子要素を処理\r\n children = _indexes(itemPath, indexRegex, options);\r\n }\r\n const isMatchingPathOptions = {\r\n conditionOptions: { indexRegex, children },\r\n };\r\n\r\n if (\r\n !indexRegex.test(item) &&\r\n isMatchingPath(itemPath, include, isMatchingPathOptions) &&\r\n !isMatchingPath(itemPath, exclude, isMatchingPathOptions)\r\n ) {\r\n // indexではない場合\r\n let isExported = false;\r\n for (const type in EXPORTS) {\r\n const exportType = type as keyof typeof EXPORTS;\r\n const exportTarget = exportTargets[exportType];\r\n if (\r\n exportTarget &&\r\n isMatchingPath(itemPath, exportTarget, isMatchingPathOptions)\r\n ) {\r\n // 条件に一致した場合はexportのコードを生成\r\n const EXPORT = EXPORTS[exportType];\r\n exportCodes.push({\r\n type: EXPORT.type,\r\n code: EXPORT.generate(name),\r\n });\r\n // exportの種類に応じたフラグを立てる\r\n if (EXPORT.type === 'named') {\r\n hasNamedExport = true;\r\n } else if (EXPORT.type === 'default') {\r\n hasDefaultExport = true;\r\n }\r\n isExported = true;\r\n break;\r\n }\r\n }\r\n if (!isExported) {\r\n // 未指定の場合はexportDefaultAs\r\n exportCodes.push({\r\n type: EXPORTS.exportDefaultAs.type,\r\n code: EXPORTS.exportDefaultAs.generate(name),\r\n });\r\n hasNamedExport = true;\r\n }\r\n }\r\n }\r\n\r\n if (exportCodes.length) {\r\n let index;\r\n if (hasDefaultExport && hasNamedExport && !includeNamedWithDefault) {\r\n // デフォルトエクスポートと名前付きエクスポートの混在を許さない場合は名前付きエクスポートを除外\r\n index = exportCodes.reduce<string[]>((result, exportCode) => {\r\n if (exportCode.type !== 'named') {\r\n result.push(exportCode.code);\r\n }\r\n return result;\r\n }, []);\r\n } else {\r\n index = exportCodes.map((exportCode) => exportCode.code);\r\n }\r\n\r\n const indexPath = path.join(targetPath, indexFileName);\r\n if (!dryRun) {\r\n // indexファイルの出力\r\n fs.writeFileSync(indexPath, index.join('\\r\\n') + '\\r\\n', {\r\n encoding: 'utf8',\r\n });\r\n console.info(indexPath);\r\n } else {\r\n console.info(indexPath + '-------------------------------------');\r\n console.info(index.join('\\r\\n') + '\\r\\n');\r\n }\r\n }\r\n\r\n return items;\r\n}\r\n\r\nfunction _createRegex(str: string) {\r\n return new RegExp(\r\n `^${str.replace(/[.*+?^=!:${}()|\\[\\]\\/\\\\]/g, '\\\\$&')}$`,\r\n 'i',\r\n );\r\n}\r\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { IndexesOptions } from "./types.cjs";
2
+
3
+ //#region src/indexes/indexes.d.ts
4
+ /**
5
+ * 対象のディレクトリ配下のindexファイルを作成する\
6
+ * 対象ファイルで出力形式が特に指定されていない場合は下記の形式で出力\
7
+ * `export { default as ${name} } from './${name}';`
8
+ */
9
+ declare function indexes(options?: IndexesOptions): void;
10
+ export = indexes;
11
+ //# sourceMappingURL=indexes.d.cts.map
@@ -0,0 +1,12 @@
1
+ import { IndexesOptions } from "./types.mjs";
2
+
3
+ //#region src/indexes/indexes.d.ts
4
+ /**
5
+ * 対象のディレクトリ配下のindexファイルを作成する\
6
+ * 対象ファイルで出力形式が特に指定されていない場合は下記の形式で出力\
7
+ * `export { default as ${name} } from './${name}';`
8
+ */
9
+ declare function indexes(options?: IndexesOptions): void;
10
+ //#endregion
11
+ export { indexes as default };
12
+ //# sourceMappingURL=indexes.d.mts.map