jiek 2.2.5 → 2.2.7-alpha.1

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 (136) hide show
  1. package/bin/build.cjs +2 -0
  2. package/bin/index.cjs +2 -0
  3. package/bin-helper/index.cjs +31 -0
  4. package/bin-helper/index.d.cts +1 -0
  5. package/bin-helper/index.d.ts +1 -0
  6. package/bin-helper/package.json +5 -1
  7. package/dist/.internal/+/bin/parseArgv.cjs +33 -0
  8. package/dist/.internal/+/bin/parseArgv.d.cts +5 -0
  9. package/dist/.internal/+/bin/parseArgv.d.ts +5 -0
  10. package/dist/.internal/+/bin/parseArgv.js +27 -0
  11. package/dist/.internal/+/bridge.cjs +12 -0
  12. package/dist/.internal/+/bridge.d.cts +39 -0
  13. package/dist/.internal/+/bridge.d.ts +39 -0
  14. package/dist/.internal/+/bridge.js +9 -0
  15. package/dist/.internal/+/commands/build/analyzer.cjs +201 -0
  16. package/dist/.internal/+/commands/build/analyzer.d.cts +30 -0
  17. package/dist/.internal/+/commands/build/analyzer.d.ts +30 -0
  18. package/dist/.internal/+/commands/build/analyzer.js +195 -0
  19. package/dist/.internal/+/commands/descriptions.cjs +21 -0
  20. package/dist/.internal/+/commands/descriptions.d.cts +5 -0
  21. package/dist/.internal/+/commands/descriptions.d.ts +5 -0
  22. package/dist/.internal/+/commands/descriptions.js +17 -0
  23. package/dist/.internal/+/commands/meta.cjs +16 -0
  24. package/dist/.internal/+/commands/meta.d.cts +3 -0
  25. package/dist/.internal/+/commands/meta.d.ts +3 -0
  26. package/dist/.internal/+/commands/meta.js +15 -0
  27. package/dist/.internal/+/commands/utils/optionParser.cjs +8 -0
  28. package/dist/.internal/+/commands/utils/optionParser.d.cts +3 -0
  29. package/dist/.internal/+/commands/utils/optionParser.d.ts +3 -0
  30. package/dist/.internal/+/commands/utils/optionParser.js +6 -0
  31. package/dist/.internal/+/rollup/base.cjs +10 -0
  32. package/dist/{cli-only-build.d.cts → .internal/+/rollup/base.d.cts} +8 -15
  33. package/dist/{cli-only-build.d.ts → .internal/+/rollup/base.d.ts} +8 -15
  34. package/dist/.internal/+/rollup/base.js +7 -0
  35. package/dist/.internal/+/rollup/bundle-analyzer.cjs +51 -0
  36. package/dist/.internal/+/rollup/bundle-analyzer.d.cts +92 -0
  37. package/dist/.internal/+/rollup/bundle-analyzer.d.ts +92 -0
  38. package/dist/.internal/+/rollup/bundle-analyzer.js +45 -0
  39. package/dist/.internal/+/server.cjs +33 -0
  40. package/dist/.internal/+/server.d.cts +8 -0
  41. package/dist/.internal/+/server.d.ts +8 -0
  42. package/dist/.internal/+/server.js +27 -0
  43. package/dist/.internal/+/utils/checkDependency.cjs +39 -0
  44. package/dist/.internal/+/utils/checkDependency.d.cts +3 -0
  45. package/dist/.internal/+/utils/checkDependency.d.ts +3 -0
  46. package/dist/.internal/+/utils/checkDependency.js +34 -0
  47. package/dist/.internal/+/utils/filterSupport.cjs +20 -0
  48. package/dist/.internal/+/utils/filterSupport.d.cts +15 -0
  49. package/dist/.internal/+/utils/filterSupport.d.ts +15 -0
  50. package/dist/.internal/+/utils/filterSupport.js +10 -0
  51. package/dist/.internal/+/utils/getInternalModuleName.cjs +5 -0
  52. package/dist/.internal/+/utils/getInternalModuleName.d.cts +3 -0
  53. package/dist/.internal/+/utils/getInternalModuleName.d.ts +3 -0
  54. package/dist/.internal/+/utils/getInternalModuleName.js +3 -0
  55. package/dist/.internal/+/utils/getRoot.cjs +17 -0
  56. package/dist/.internal/+/utils/getRoot.d.cts +3 -0
  57. package/dist/.internal/+/utils/getRoot.d.ts +3 -0
  58. package/dist/.internal/+/utils/getRoot.js +11 -0
  59. package/dist/.internal/+/utils/getWD.cjs +15 -0
  60. package/dist/.internal/+/utils/getWD.d.cts +6 -0
  61. package/dist/.internal/+/utils/getWD.d.ts +6 -0
  62. package/dist/.internal/+/utils/getWD.js +10 -0
  63. package/dist/.internal/+/utils/intersection.cjs +5 -0
  64. package/dist/.internal/+/utils/intersection.d.cts +3 -0
  65. package/dist/.internal/+/utils/intersection.d.ts +3 -0
  66. package/dist/.internal/+/utils/intersection.js +3 -0
  67. package/dist/.internal/+/utils/loadConfig.cjs +100 -0
  68. package/dist/.internal/+/utils/loadConfig.d.cts +10 -0
  69. package/dist/.internal/+/utils/loadConfig.d.ts +10 -0
  70. package/dist/.internal/+/utils/loadConfig.js +94 -0
  71. package/dist/.internal/+/utils/recursiveListFiles.cjs +19 -0
  72. package/dist/.internal/+/utils/recursiveListFiles.d.cts +3 -0
  73. package/dist/.internal/+/utils/recursiveListFiles.d.ts +3 -0
  74. package/dist/.internal/+/utils/recursiveListFiles.js +13 -0
  75. package/dist/.internal/+/utils/resolveExports.cjs +118 -0
  76. package/dist/.internal/+/utils/resolveExports.d.cts +26 -0
  77. package/dist/.internal/+/utils/resolveExports.d.ts +26 -0
  78. package/dist/.internal/+/utils/resolveExports.js +111 -0
  79. package/dist/.internal/+/utils/ts.cjs +68 -0
  80. package/dist/.internal/+/utils/ts.d.cts +3 -0
  81. package/dist/.internal/+/utils/ts.d.ts +3 -0
  82. package/dist/.internal/+/utils/ts.js +62 -0
  83. package/dist/.internal/+/utils/tsRegister.cjs +25 -0
  84. package/dist/.internal/+/utils/tsRegister.d.cts +3 -0
  85. package/dist/.internal/+/utils/tsRegister.d.ts +3 -0
  86. package/dist/.internal/+/utils/tsRegister.js +26 -0
  87. package/dist/.internal/getWD-BRJ3PK1S.js +105 -0
  88. package/dist/.internal/getWD-Cmxzjf-f.js +95 -0
  89. package/dist/{cli.js → .internal/index-B6RQz1DZ.js} +1 -731
  90. package/dist/{cli.cjs → .internal/index-DlHFuTjM.js} +1 -753
  91. package/dist/.internal/jiek_create-require-CWFWNQHj.js +5 -0
  92. package/dist/.internal/jiek_create-require-CxSGbkTB.js +5 -0
  93. package/dist/.internal/package.json +10 -0
  94. package/dist/bin/build.cjs +505 -0
  95. package/dist/bin/index.cjs +488 -0
  96. package/dist/index.d.cts +1 -113
  97. package/dist/index.d.ts +1 -113
  98. package/dist/rollup/index.cjs +282 -4569
  99. package/dist/rollup/index.d.cts +7 -1
  100. package/dist/rollup/index.d.ts +7 -1
  101. package/dist/rollup/index.js +270 -4554
  102. package/package.json +25 -28
  103. package/src/bin/build.cts +11 -0
  104. package/src/bin/index.cts +6 -0
  105. package/src/bridge.ts +1 -1
  106. package/src/commands/base.ts +3 -3
  107. package/src/commands/build/analyzer.ts +5 -5
  108. package/src/commands/build/client/analyzer.tsx +1 -1
  109. package/src/commands/build/client/index.ts +5 -7
  110. package/src/commands/build.ts +218 -209
  111. package/src/commands/meta.ts +1 -1
  112. package/src/commands/publish.ts +101 -31
  113. package/src/rollup/base.ts +2 -2
  114. package/src/rollup/index.ts +309 -115
  115. package/src/rollup/plugins/with-external.ts +23 -0
  116. package/src/rollup/utils/externalResolver.ts +20 -8
  117. package/src/utils/checkDependency.ts +1 -1
  118. package/src/utils/filterSupport.ts +17 -16
  119. package/src/utils/getInternalModuleName.ts +5 -0
  120. package/src/utils/intersection.ts +1 -0
  121. package/src/utils/{recusiveListFiles.ts → recursiveListFiles.ts} +2 -2
  122. package/src/utils/{getExports.ts → resolveExports.ts} +16 -14
  123. package/bin/jiek-build.js +0 -16
  124. package/bin/jiek.js +0 -13
  125. package/bin-helper.cjs +0 -43
  126. package/cli/package.json +0 -1
  127. package/cli-only-build/package.json +0 -1
  128. package/dist/cli-only-build.cjs +0 -977
  129. package/dist/cli-only-build.js +0 -969
  130. package/dist/cli.d.cts +0 -14
  131. package/dist/cli.d.ts +0 -14
  132. package/src/bin/build.ts +0 -0
  133. package/src/cli-only-build.ts +0 -11
  134. package/src/cli.ts +0 -6
  135. /package/{bin-helper.js → bin-helper/index.js} +0 -0
  136. /package/src/{parseArgv.ts → bin/parseArgv.ts} +0 -0
@@ -7,12 +7,16 @@ import process from 'node:process'
7
7
  import { type BumperType, TAGS, bump } from '@jiek/utils/bumper'
8
8
  import { program } from 'commander'
9
9
  import detectIndent from 'detect-indent'
10
+ import type { JSONPath } from 'jsonc-parser'
10
11
  import { applyEdits, modify } from 'jsonc-parser'
11
12
 
12
- import type { ProjectsGraph } from '../utils/filterSupport'
13
- import { getSelectedProjectsGraph } from '../utils/filterSupport'
14
- import { getExports } from '../utils/getExports'
15
- import { loadConfig } from '../utils/loadConfig'
13
+ import type { ProjectsGraph } from '#~/utils/filterSupport'
14
+ import { getSelectedProjectsGraph } from '#~/utils/filterSupport'
15
+ import { loadConfig } from '#~/utils/loadConfig'
16
+ import type { ResolveExportsOptions } from '#~/utils/resolveExports'
17
+ import { resolveExports } from '#~/utils/resolveExports'
18
+
19
+ import { getInternalModuleName } from '#~/utils/getInternalModuleName'
16
20
  import { outdirDescription } from './descriptions'
17
21
 
18
22
  declare module 'jiek' {
@@ -108,27 +112,44 @@ async function prepublish({ bumper }: {
108
112
  )
109
113
 
110
114
  const generateNewManifest = (dir: string, manifest: NonNullable<ProjectsGraph['value']>[string]) => {
111
- const { name, type, exports: entrypoints = {} } = manifest
115
+ const {
116
+ name,
117
+ type,
118
+ exports: entrypoints = {},
119
+ imports: internalEntrypoints = {}
120
+ } = manifest
112
121
  if (!name) {
113
122
  throw new Error(`package.json in ${dir} must have a name field`)
114
123
  }
115
124
 
116
125
  const pkgIsModule = type === 'module'
117
126
  const newManifest = { ...manifest }
118
- const [resolvedEntrypoints, exports, resolvedOutdir] = getExports({
119
- entrypoints,
127
+ const commonOptions = {
120
128
  pkgIsModule,
121
129
  pkgName: name,
122
130
  config: loadConfig(dir),
123
131
  dir,
124
- defaultOutdir: outdir,
125
132
  noFilter: true,
126
133
  isPublish: true
134
+ } satisfies Partial<ResolveExportsOptions>
135
+ const [resolvedEntrypoints, exports, resolvedOutdir] = resolveExports({
136
+ entrypoints,
137
+ defaultOutdir: outdir,
138
+ ...commonOptions
127
139
  })
128
140
  newManifest.exports = {
129
141
  ...resolvedEntrypoints,
130
142
  ...exports
131
143
  }
144
+ const [resolvedInternalEntrypoints, imports] = resolveExports({
145
+ entrypoints: internalEntrypoints,
146
+ defaultOutdir: `${outdir}/.internal`,
147
+ ...commonOptions
148
+ })
149
+ newManifest.imports = {
150
+ ...resolvedInternalEntrypoints,
151
+ ...imports
152
+ }
132
153
  return [newManifest, resolvedOutdir] as const
133
154
  }
134
155
 
@@ -146,26 +167,33 @@ async function prepublish({ bumper }: {
146
167
  insertSpaces: boolean
147
168
  }
148
169
  }) => {
170
+ const internalModuleName = getInternalModuleName(manifest.name!)
171
+
149
172
  let newJSONString = oldJSONString
150
- newJSONString = applyEdits(
151
- newJSONString,
152
- modify(
173
+ const update = (path: JSONPath, value: unknown) => {
174
+ newJSONString = applyEdits(
153
175
  newJSONString,
154
- ['publishConfig', 'typesVersions'],
155
- {
156
- '<5.0': {
157
- '*': [
158
- '*',
159
- `./*`,
160
- `./*/index.d.ts`,
161
- `./*/index.d.mts`,
162
- `./*/index.d.cts`
163
- ]
164
- }
165
- },
166
- { formattingOptions }
176
+ modify(newJSONString, path, value, { formattingOptions })
167
177
  )
168
- )
178
+ }
179
+
180
+ update(['publishConfig', 'typesVersions'], {
181
+ '<5.0': {
182
+ '*': [
183
+ '*',
184
+ './*',
185
+ './*/index.d.ts',
186
+ './*/index.d.mts',
187
+ './*/index.d.cts'
188
+ ]
189
+ }
190
+ })
191
+ update(['dependencies', internalModuleName], `file:./${outdir}/.internal`)
192
+ update(['dependenciesMeta', internalModuleName], {
193
+ 'injected': true
194
+ })
195
+ update(['imports'], undefined)
196
+
169
197
  for (const [key, value] of Object.entries(manifest)) {
170
198
  if (key === 'version') continue
171
199
  if (JSON.stringify(value) === JSON.stringify(oldJSON[key])) continue
@@ -207,9 +235,13 @@ async function prepublish({ bumper }: {
207
235
  const indexExports = index as Record<string, string>
208
236
  indexPublishConfig.main = indexExports.require ?? indexExports.default
209
237
  indexPublishConfig.module = indexExports.import ?? indexExports.module ?? indexExports.default
238
+ indexPublishConfig.types = indexExports.types
210
239
  break
211
240
  }
212
241
  }
242
+ indexPublishConfig.types = indexPublishConfig[
243
+ manifest?.type === 'module' ? 'module' : 'main'
244
+ ].replace(/\.([cm]?)js$/, '.d.$1ts')
213
245
  for (const [k, v] of Object.entries(indexPublishConfig)) {
214
246
  if (v === undefined) continue
215
247
  newJSONString = applyEdits(
@@ -434,19 +466,57 @@ async function prepublish({ bumper }: {
434
466
  }
435
467
  throw new Error(`file type of ${path} is not supported`)
436
468
  }
469
+
470
+ if ('imports' in manifest && manifest.imports) {
471
+ Object
472
+ .entries(manifest.imports)
473
+ .forEach(([key, value]) => {
474
+ if (typeof value !== 'object') return
475
+ const [start] = key.split('*')
476
+ manifest.imports![key] = JSON.parse(
477
+ JSON
478
+ .stringify(value)
479
+ .replaceAll(`${resolvedOutdir}/.internal/`, start)
480
+ )
481
+ })
482
+ fs.writeFileSync(
483
+ resolveByDir(resolvedOutdir, resolvedOutdir, '.internal', 'package.json'),
484
+ JSON.stringify(
485
+ {
486
+ name: getInternalModuleName(manifest.name!),
487
+ exports: JSON.parse(
488
+ JSON
489
+ .stringify(manifest.imports)
490
+ .replaceAll('#', './')
491
+ .replaceAll('~', '+')
492
+ ) as Record<string, unknown>
493
+ },
494
+ null,
495
+ 2
496
+ )
497
+ )
498
+ }
437
499
  })
438
500
  }
439
501
 
440
502
  async function postpublish() {
441
503
  await forEachSelectedProjectsGraphEntries(dir => {
442
504
  const jiekTempDir = path.resolve(dir, 'node_modules/.jiek/.tmp')
443
- const packageJSON = path.resolve(dir, 'package.json')
444
- const jiekTempPackageJSON = path.resolve(jiekTempDir, 'package.json')
445
- if (fs.existsSync(jiekTempPackageJSON)) {
446
- fs.copyFileSync(jiekTempPackageJSON, packageJSON)
447
- fs.rmSync(jiekTempPackageJSON)
448
- // eslint-disable-next-line no-console
505
+ const packageJSONPath = path.resolve(dir, 'package.json')
506
+ const { name, version } = JSON.parse(fs.readFileSync(packageJSONPath, 'utf-8')) as {
507
+ name: string
508
+ version: string
509
+ }
510
+ const jiekTempPackageJSONPath = path.resolve(jiekTempDir, 'package.json')
511
+ if (fs.existsSync(jiekTempPackageJSONPath)) {
512
+ fs.copyFileSync(jiekTempPackageJSONPath, packageJSONPath)
513
+ fs.rmSync(jiekTempPackageJSONPath)
514
+ /* eslint-disable no-console */
449
515
  console.log(`${dir}/package.json has been restored`)
516
+ console.log(
517
+ `if you want to check the compatibility of the package, you can visit: https://arethetypeswrong.github.io/?p=${name}%40${version}`
518
+ )
519
+ /* eslint-enable no-console */
450
520
  } else {
451
521
  throw new Error(
452
522
  `jiek temp \`${dir}/package.json\` not found, please confirm the jiek pre-publish command has been executed`
@@ -54,9 +54,9 @@ export interface TemplateOptions {
54
54
  * When use esbuild type builder, it will inject `supported.import-attributes` option.
55
55
  * When use swc type builder, it will inject `jsc.experimental.keepImportAttributes` option.
56
56
  *
57
- * And it will auto set the rollup output externalImportAttributes and importAttributesKey options.
57
+ * And it will auto set the rollup output `externalImportAttributes` and `importAttributesKey` options.
58
58
  *
59
- * @default true
59
+ * @default false
60
60
  */
61
61
  keepImportAttributes?: boolean | 'assert'
62
62
  }