packtory 0.0.5 → 0.0.7

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 (206) hide show
  1. package/artifacts/artifacts-builder.d.ts +7 -7
  2. package/artifacts/artifacts-builder.d.ts.map +1 -1
  3. package/artifacts/artifacts-builder.js +22 -25
  4. package/artifacts/artifacts-builder.js.map +1 -1
  5. package/bundle-emitter/emitter.d.ts +30 -0
  6. package/bundle-emitter/emitter.d.ts.map +1 -0
  7. package/bundle-emitter/emitter.js +35 -0
  8. package/bundle-emitter/emitter.js.map +1 -0
  9. package/{publisher → bundle-emitter}/extract-package-tarball.js +2 -2
  10. package/bundle-emitter/extract-package-tarball.js.map +1 -0
  11. package/{publisher → bundle-emitter}/registry-client.d.ts +5 -5
  12. package/bundle-emitter/registry-client.d.ts.map +1 -0
  13. package/{publisher → bundle-emitter}/registry-client.js +13 -10
  14. package/bundle-emitter/registry-client.js.map +1 -0
  15. package/checks/check-runner.js +13 -0
  16. package/checks/check-runner.js.map +1 -0
  17. package/checks/rules/no-duplicated-files.js +41 -0
  18. package/checks/rules/no-duplicated-files.js.map +1 -0
  19. package/config/additional-files.d.ts +6 -12
  20. package/config/additional-files.d.ts.map +1 -1
  21. package/config/additional-files.js +4 -5
  22. package/config/additional-files.js.map +1 -1
  23. package/config/base-validations.js +2 -2
  24. package/config/base-validations.js.map +1 -1
  25. package/config/config.d.ts +703 -468
  26. package/config/config.d.ts.map +1 -1
  27. package/config/config.js +59 -52
  28. package/config/config.js.map +1 -1
  29. package/config/entry-point.d.ts +6 -12
  30. package/config/entry-point.d.ts.map +1 -1
  31. package/config/entry-point.js +5 -6
  32. package/config/entry-point.js.map +1 -1
  33. package/config/package-json.d.ts +10 -38
  34. package/config/package-json.d.ts.map +1 -1
  35. package/config/package-json.js +9 -20
  36. package/config/package-json.js.map +1 -1
  37. package/config/registry-settings.d.ts +6 -12
  38. package/config/registry-settings.d.ts.map +1 -1
  39. package/config/registry-settings.js +5 -6
  40. package/config/registry-settings.js.map +1 -1
  41. package/config/validation.d.ts +15 -5
  42. package/config/validation.d.ts.map +1 -1
  43. package/config/validation.js +32 -9
  44. package/config/validation.js.map +1 -1
  45. package/config/versioning-settings.d.ts +9 -22
  46. package/config/versioning-settings.d.ts.map +1 -1
  47. package/config/versioning-settings.js +10 -13
  48. package/config/versioning-settings.js.map +1 -1
  49. package/dependency-scanner/dependency-graph.d.ts +15 -13
  50. package/dependency-scanner/dependency-graph.d.ts.map +1 -1
  51. package/dependency-scanner/dependency-graph.js +31 -12
  52. package/dependency-scanner/dependency-graph.js.map +1 -1
  53. package/dependency-scanner/external-dependencies.d.ts +7 -0
  54. package/dependency-scanner/external-dependencies.d.ts.map +1 -0
  55. package/dependency-scanner/external-dependencies.js +18 -0
  56. package/dependency-scanner/external-dependencies.js.map +1 -0
  57. package/dependency-scanner/scanner.d.ts +4 -19
  58. package/dependency-scanner/scanner.d.ts.map +1 -1
  59. package/dependency-scanner/scanner.js +8 -67
  60. package/dependency-scanner/scanner.js.map +1 -1
  61. package/dependency-scanner/source-file-references.js +2 -1
  62. package/dependency-scanner/source-file-references.js.map +1 -1
  63. package/dependency-scanner/source-map-file-locator.d.ts +2 -2
  64. package/dependency-scanner/source-map-file-locator.d.ts.map +1 -1
  65. package/dependency-scanner/typescript-file-host.d.ts.map +1 -1
  66. package/dependency-scanner/typescript-file-host.js +1 -2
  67. package/dependency-scanner/typescript-file-host.js.map +1 -1
  68. package/dependency-scanner/typescript-project-analyzer.d.ts +6 -5
  69. package/dependency-scanner/typescript-project-analyzer.d.ts.map +1 -1
  70. package/dependency-scanner/typescript-project-analyzer.js +3 -0
  71. package/dependency-scanner/typescript-project-analyzer.js.map +1 -1
  72. package/directed-graph/graph.d.ts +12 -10
  73. package/directed-graph/graph.d.ts.map +1 -1
  74. package/directed-graph/graph.js +23 -11
  75. package/directed-graph/graph.js.map +1 -1
  76. package/{file-description → file-manager}/compare.js +2 -2
  77. package/file-manager/compare.js.map +1 -0
  78. package/file-manager/equal.js.map +1 -0
  79. package/file-manager/file-description.d.ts +13 -0
  80. package/file-manager/file-description.d.ts.map +1 -0
  81. package/file-manager/file-manager.d.ts +19 -0
  82. package/file-manager/file-manager.d.ts.map +1 -0
  83. package/{artifacts → file-manager}/file-manager.js +15 -4
  84. package/file-manager/file-manager.js.map +1 -0
  85. package/{file-description → file-manager}/permissions.js +1 -0
  86. package/file-manager/permissions.js.map +1 -0
  87. package/{file-description → file-manager}/sort.js +1 -1
  88. package/file-manager/sort.js.map +1 -0
  89. package/linker/linked-bundle.d.ts +14 -0
  90. package/linker/linked-bundle.d.ts.map +1 -0
  91. package/linker/linker.d.ts +12 -0
  92. package/linker/linker.d.ts.map +1 -0
  93. package/linker/linker.js +25 -0
  94. package/linker/linker.js.map +1 -0
  95. package/linker/resource-graph.js +31 -0
  96. package/linker/resource-graph.js.map +1 -0
  97. package/linker/source-modifier/import-paths.js +36 -0
  98. package/linker/source-modifier/import-paths.js.map +1 -0
  99. package/linker/substitute-bundles.js +77 -0
  100. package/linker/substitute-bundles.js.map +1 -0
  101. package/linker/substituted-resource-graph.js +78 -0
  102. package/linker/substituted-resource-graph.js.map +1 -0
  103. package/list/unique-list.js +5 -0
  104. package/list/unique-list.js.map +1 -0
  105. package/package.json +15 -13
  106. package/packages/packtory/packtory.entry-point.d.ts +3 -3
  107. package/packages/packtory/packtory.entry-point.d.ts.map +1 -1
  108. package/packages/packtory/packtory.entry-point.js +41 -18
  109. package/packages/packtory/packtory.entry-point.js.map +1 -1
  110. package/packtory/map-config.d.ts +25 -0
  111. package/packtory/map-config.d.ts.map +1 -0
  112. package/packtory/map-config.js +29 -13
  113. package/packtory/map-config.js.map +1 -1
  114. package/packtory/package-processor.d.ts +32 -0
  115. package/packtory/package-processor.d.ts.map +1 -0
  116. package/packtory/package-processor.js +86 -0
  117. package/packtory/package-processor.js.map +1 -0
  118. package/packtory/packtory.d.ts +25 -7
  119. package/packtory/packtory.d.ts.map +1 -1
  120. package/packtory/packtory.js +119 -17
  121. package/packtory/packtory.js.map +1 -1
  122. package/packtory/scheduler.d.ts +36 -7
  123. package/packtory/scheduler.d.ts.map +1 -1
  124. package/packtory/scheduler.js +39 -25
  125. package/packtory/scheduler.js.map +1 -1
  126. package/progress/progress-broadcaster.d.ts +8 -0
  127. package/progress/progress-broadcaster.d.ts.map +1 -1
  128. package/progress/progress-broadcaster.js +1 -0
  129. package/progress/progress-broadcaster.js.map +1 -1
  130. package/readme.md +15 -8
  131. package/resource-resolver/content.js +42 -0
  132. package/resource-resolver/content.js.map +1 -0
  133. package/resource-resolver/resolved-bundle.d.ts +22 -0
  134. package/resource-resolver/resolved-bundle.d.ts.map +1 -0
  135. package/resource-resolver/resource-resolve-options.d.ts +13 -0
  136. package/resource-resolver/resource-resolve-options.d.ts.map +1 -0
  137. package/resource-resolver/resource-resolver.d.ts +13 -0
  138. package/resource-resolver/resource-resolver.d.ts.map +1 -0
  139. package/resource-resolver/resource-resolver.js +67 -0
  140. package/resource-resolver/resource-resolver.js.map +1 -0
  141. package/tar/tarball-builder.d.ts +2 -2
  142. package/tar/tarball-builder.d.ts.map +1 -1
  143. package/tar/tarball-builder.js +1 -0
  144. package/tar/tarball-builder.js.map +1 -1
  145. package/version-manager/manager.d.ts +7 -0
  146. package/version-manager/manager.d.ts.map +1 -0
  147. package/version-manager/manager.js +44 -0
  148. package/version-manager/manager.js.map +1 -0
  149. package/version-manager/manifest/builder.d.ts +5 -0
  150. package/version-manager/manifest/builder.d.ts.map +1 -0
  151. package/version-manager/manifest/builder.js +13 -0
  152. package/version-manager/manifest/builder.js.map +1 -0
  153. package/{package-json.js → version-manager/manifest/serialize.js} +3 -2
  154. package/version-manager/manifest/serialize.js.map +1 -0
  155. package/version-manager/versioned-bundle.d.ts +28 -0
  156. package/version-manager/versioned-bundle.d.ts.map +1 -0
  157. package/version-manager/versioned-bundle.js +79 -0
  158. package/version-manager/versioned-bundle.js.map +1 -0
  159. package/artifacts/file-manager.d.ts +0 -17
  160. package/artifacts/file-manager.d.ts.map +0 -1
  161. package/artifacts/file-manager.js.map +0 -1
  162. package/bundler/bundle-build-options.d.ts +0 -19
  163. package/bundler/bundle-build-options.d.ts.map +0 -1
  164. package/bundler/bundle-build-options.js +0 -25
  165. package/bundler/bundle-build-options.js.map +0 -1
  166. package/bundler/bundle-description.d.ts +0 -27
  167. package/bundler/bundle-description.d.ts.map +0 -1
  168. package/bundler/bundler.d.ts +0 -11
  169. package/bundler/bundler.d.ts.map +0 -1
  170. package/bundler/bundler.js +0 -101
  171. package/bundler/bundler.js.map +0 -1
  172. package/bundler/content.js +0 -53
  173. package/bundler/content.js.map +0 -1
  174. package/bundler/substitute-bundles.js +0 -73
  175. package/bundler/substitute-bundles.js.map +0 -1
  176. package/config/base-validations.d.ts +0 -5
  177. package/config/base-validations.d.ts.map +0 -1
  178. package/file-description/compare.js.map +0 -1
  179. package/file-description/equal.js.map +0 -1
  180. package/file-description/file-description.d.ts +0 -6
  181. package/file-description/file-description.d.ts.map +0 -1
  182. package/file-description/permissions.js.map +0 -1
  183. package/file-description/sort.js.map +0 -1
  184. package/package-json.js.map +0 -1
  185. package/packages/bundler/bundler.entry-point.js +0 -21
  186. package/packages/bundler/bundler.entry-point.js.map +0 -1
  187. package/publisher/extract-package-tarball.js.map +0 -1
  188. package/publisher/publisher.d.ts +0 -39
  189. package/publisher/publisher.d.ts.map +0 -1
  190. package/publisher/publisher.js +0 -73
  191. package/publisher/publisher.js.map +0 -1
  192. package/publisher/registry-client.d.ts.map +0 -1
  193. package/publisher/registry-client.js.map +0 -1
  194. package/publisher/version.js +0 -35
  195. package/publisher/version.js.map +0 -1
  196. package/source-modifier/import-paths.js +0 -17
  197. package/source-modifier/import-paths.js.map +0 -1
  198. package/validation/capitalize.js +0 -7
  199. package/validation/capitalize.js.map +0 -1
  200. package/validation/formatting/ast.js +0 -113
  201. package/validation/formatting/ast.js.map +0 -1
  202. package/validation/formatting.js +0 -98
  203. package/validation/formatting.js.map +0 -1
  204. package/validation/validate.js +0 -17
  205. package/validation/validate.js.map +0 -1
  206. /package/{file-description → file-manager}/equal.js +0 -0
@@ -1,7 +1,7 @@
1
- import type { BundleDescription } from '../bundler/bundle-description.js';
2
- import type { TarballBuilder } from '../tar/tarball-builder.js';
3
- import type { FileDescription } from '../file-description/file-description.js';
4
- import type { FileManager } from './file-manager.js';
1
+ import type { FileDescription } from '../file-manager/file-description.ts';
2
+ import type { FileManager } from '../file-manager/file-manager.ts';
3
+ import type { VersionedBundleWithManifest } from '../version-manager/versioned-bundle.ts';
4
+ import type { TarballBuilder } from '../tar/tarball-builder.ts';
5
5
  export type ArtifactsBuilderDependencies = {
6
6
  readonly fileManager: FileManager;
7
7
  readonly tarballBuilder: TarballBuilder;
@@ -11,9 +11,9 @@ export type TarballArtifact = {
11
11
  readonly shasum: string;
12
12
  };
13
13
  export type ArtifactsBuilder = {
14
- collectContents(bundle: BundleDescription): Promise<readonly FileDescription[]>;
15
- buildTarball(bundle: BundleDescription): Promise<TarballArtifact>;
16
- buildFolder(bundle: BundleDescription, targetFolder: string): Promise<void>;
14
+ collectContents: (bundle: VersionedBundleWithManifest, prefix?: string) => readonly FileDescription[];
15
+ buildTarball: (bundle: VersionedBundleWithManifest) => Promise<TarballArtifact>;
16
+ buildFolder: (bundle: VersionedBundleWithManifest, targetFolder: string) => Promise<void>;
17
17
  };
18
18
  export declare function createArtifactsBuilder(artifactsBuilderDependencies: ArtifactsBuilderDependencies): ArtifactsBuilder;
19
19
  //# sourceMappingURL=artifacts-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts-builder.d.ts","sourceRoot":"","sources":["../../../../source/artifacts/artifacts-builder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,MAAM,4BAA4B,GAAG;IACvC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAAC;IAChF,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAClE,WAAW,CAAC,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,4BAA4B,EAAE,4BAA4B,GAAG,gBAAgB,CA0DnH"}
1
+ {"version":3,"file":"artifacts-builder.d.ts","sourceRoot":"","sources":["../../../../source/artifacts/artifacts-builder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,MAAM,4BAA4B,GAAG;IACvC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,eAAe,EAAE,CAAC,MAAM,EAAE,2BAA2B,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,SAAS,eAAe,EAAE,CAAC;IACtG,YAAY,EAAE,CAAC,MAAM,EAAE,2BAA2B,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAChF,WAAW,EAAE,CAAC,MAAM,EAAE,2BAA2B,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7F,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,4BAA4B,EAAE,4BAA4B,GAAG,gBAAgB,CA0DnH"}
@@ -1,34 +1,32 @@
1
1
  import path from 'node:path';
2
2
  import ssri from 'ssri';
3
- import { isExecutableFileMode } from '../file-description/permissions.js';
4
3
  export function createArtifactsBuilder(artifactsBuilderDependencies) {
5
4
  const { fileManager, tarballBuilder } = artifactsBuilderDependencies;
6
- async function isBundleContentExecutable(content) {
7
- if (content.kind !== 'source') {
8
- const fileMode = await fileManager.getFileMode(content.sourceFilePath);
9
- return isExecutableFileMode(fileMode);
10
- }
11
- return false;
12
- }
13
- async function collectContents(bundle) {
14
- const artifactContents = [];
15
- for (const entry of bundle.contents) {
16
- const targetFilePath = path.join('package', entry.targetFilePath);
17
- const isExecutable = await isBundleContentExecutable(entry);
18
- if (entry.kind === 'reference') {
19
- const content = await fileManager.readFile(entry.sourceFilePath);
20
- artifactContents.push({ filePath: targetFilePath, content, isExecutable });
21
- }
22
- else {
23
- artifactContents.push({ filePath: targetFilePath, content: entry.source, isExecutable });
5
+ function collectContents(bundle, prefix) {
6
+ const artifactContents = [
7
+ {
8
+ ...bundle.manifestFile,
9
+ filePath: prefix === undefined
10
+ ? bundle.manifestFile.filePath
11
+ : path.join(prefix, bundle.manifestFile.filePath)
24
12
  }
13
+ ];
14
+ for (const entry of bundle.contents) {
15
+ const targetFilePath = prefix === undefined
16
+ ? entry.fileDescription.targetFilePath
17
+ : path.join(prefix, entry.fileDescription.targetFilePath);
18
+ artifactContents.push({
19
+ filePath: targetFilePath,
20
+ content: entry.fileDescription.content,
21
+ isExecutable: entry.fileDescription.isExecutable
22
+ });
25
23
  }
26
24
  return artifactContents;
27
25
  }
28
26
  return {
29
27
  collectContents,
30
28
  async buildTarball(bundle) {
31
- const contents = await collectContents(bundle);
29
+ const contents = collectContents(bundle, 'package');
32
30
  const tarData = await tarballBuilder.build(contents);
33
31
  return {
34
32
  shasum: ssri.fromData(tarData, { algorithms: ['sha1'] }).hexDigest(),
@@ -40,11 +38,10 @@ export function createArtifactsBuilder(artifactsBuilderDependencies) {
40
38
  if (readability.isReadable) {
41
39
  throw new Error(`Folder ${targetFolder} already exists`);
42
40
  }
43
- for (const entry of bundle.contents) {
44
- const targetFilePath = path.join(targetFolder, entry.targetFilePath);
45
- await (entry.kind === 'reference'
46
- ? fileManager.copyFile(entry.sourceFilePath, targetFilePath)
47
- : fileManager.writeFile(targetFilePath, entry.source));
41
+ const contents = collectContents(bundle);
42
+ for (const entry of contents) {
43
+ const targetFilePath = path.join(targetFolder, entry.filePath);
44
+ await fileManager.writeFile(targetFilePath, entry.content);
48
45
  }
49
46
  }
50
47
  };
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts-builder.js","sourceRoot":"","sources":["../../../../source/artifacts/artifacts-builder.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAmB1E,MAAM,UAAU,sBAAsB,CAAC,4BAA0D;IAC7F,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,4BAA4B,CAAC;IAErE,KAAK,UAAU,yBAAyB,CAAC,OAAsB;QAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACvE,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,KAAK,UAAU,eAAe,CAAC,MAAyB;QACpD,MAAM,gBAAgB,GAAsB,EAAE,CAAC;QAE/C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;YAClE,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAAC,KAAK,CAAC,CAAC;YAE5D,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBACjE,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACJ,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;YAC7F,CAAC;QACL,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAED,OAAO;QACH,eAAe;QAEf,KAAK,CAAC,YAAY,CAAC,MAAM;YACrB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAErD,OAAO;gBACH,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE;gBACpE,OAAO;aACV,CAAC;QACN,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY;YAClC,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAErE,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,UAAU,YAAY,iBAAiB,CAAC,CAAC;YAC7D,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;gBAErE,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW;oBAC7B,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,cAAc,CAAC;oBAC5D,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC;KACJ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"artifacts-builder.js","sourceRoot":"","sources":["../../../../source/artifacts/artifacts-builder.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAsBxB,MAAM,UAAU,sBAAsB,CAAC,4BAA0D;IAC7F,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,4BAA4B,CAAC;IAErE,SAAS,eAAe,CAAC,MAAmC,EAAE,MAAe;QACzE,MAAM,gBAAgB,GAAsB;YACxC;gBACI,GAAG,MAAM,CAAC,YAAY;gBACtB,QAAQ,EACJ,MAAM,KAAK,SAAS;oBAChB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ;oBAC9B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;aAC5D;SACJ,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,cAAc,GAChB,MAAM,KAAK,SAAS;gBAChB,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,cAAc;gBACtC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YAClE,gBAAgB,CAAC,IAAI,CAAC;gBAClB,QAAQ,EAAE,cAAc;gBACxB,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,OAAO;gBACtC,YAAY,EAAE,KAAK,CAAC,eAAe,CAAC,YAAY;aACnD,CAAC,CAAC;QACP,CAAC;QAED,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAED,OAAO;QACH,eAAe;QAEf,KAAK,CAAC,YAAY,CAAC,MAAM;YACrB,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAErD,OAAO;gBACH,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE;gBACpE,OAAO;aACV,CAAC;QACN,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY;YAClC,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAErE,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,UAAU,YAAY,iBAAiB,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YAEzC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAE/D,MAAM,WAAW,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { Maybe } from 'true-myth';
2
+ import type { ArtifactsBuilder } from '../artifacts/artifacts-builder.ts';
3
+ import type { RegistrySettings } from '../config/registry-settings.ts';
4
+ import type { VersioningSettings } from '../config/versioning-settings.ts';
5
+ import type { VersionedBundleWithManifest } from '../version-manager/versioned-bundle.ts';
6
+ import type { RegistryClient } from './registry-client.ts';
7
+ export type BundleEmitterDependencies = {
8
+ readonly artifactsBuilder: ArtifactsBuilder;
9
+ readonly registryClient: RegistryClient;
10
+ };
11
+ export type PublishOptions = {
12
+ readonly bundle: VersionedBundleWithManifest;
13
+ readonly registrySettings: RegistrySettings;
14
+ };
15
+ type CurrentVersionLookupOptions = {
16
+ readonly name: string;
17
+ readonly registrySettings: RegistrySettings;
18
+ readonly versioning: VersioningSettings;
19
+ };
20
+ type BundlePublishedCheckResult = {
21
+ readonly alreadyPublishedAsLatest: boolean;
22
+ };
23
+ export type BundleEmitter = {
24
+ publish: (options: PublishOptions) => Promise<void>;
25
+ determineCurrentVersion: (options: CurrentVersionLookupOptions) => Promise<Maybe<string>>;
26
+ checkBundleAlreadyPublished: (options: PublishOptions) => Promise<BundlePublishedCheckResult>;
27
+ };
28
+ export declare function createBundleEmitter(dependencies: BundleEmitterDependencies): BundleEmitter;
29
+ export {};
30
+ //# sourceMappingURL=emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../../../source/bundle-emitter/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE3E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAE1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,yBAAyB,GAAG;IACpC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAC7C,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;CAC/C,CAAC;AAEF,KAAK,2BAA2B,GAAG;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;CAC3C,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAC9B,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IACxB,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,uBAAuB,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1F,2BAA2B,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAC;CACjG,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,yBAAyB,GAAG,aAAa,CAwC1F"}
@@ -0,0 +1,35 @@
1
+ import { Maybe } from 'true-myth';
2
+ import { compareFileDescriptions } from "../file-manager/compare.js";
3
+ import { extractPackageTarball } from "./extract-package-tarball.js";
4
+ export function createBundleEmitter(dependencies) {
5
+ const { artifactsBuilder, registryClient } = dependencies;
6
+ return {
7
+ async determineCurrentVersion(options) {
8
+ const { versioning, registrySettings, name } = options;
9
+ if (versioning.automatic) {
10
+ const latestVersion = await registryClient.fetchLatestVersion(name, registrySettings);
11
+ return latestVersion.map((version) => {
12
+ return version.version;
13
+ });
14
+ }
15
+ return Maybe.just(versioning.version);
16
+ },
17
+ async checkBundleAlreadyPublished(options) {
18
+ const { bundle, registrySettings } = options;
19
+ const latestVersion = await registryClient.fetchLatestVersion(bundle.name, registrySettings);
20
+ if (latestVersion.isNothing) {
21
+ return { alreadyPublishedAsLatest: false };
22
+ }
23
+ const artifactContents = artifactsBuilder.collectContents(bundle, 'package');
24
+ const tarball = await registryClient.fetchTarball(latestVersion.value.tarballUrl, latestVersion.value.shasum);
25
+ const latestVersionArtifactContents = await extractPackageTarball(tarball);
26
+ const result = compareFileDescriptions(artifactContents, latestVersionArtifactContents);
27
+ return { alreadyPublishedAsLatest: result.status === 'equal' };
28
+ },
29
+ async publish(options) {
30
+ const tarball = await artifactsBuilder.buildTarball(options.bundle);
31
+ await registryClient.publishPackage(options.bundle.packageJson, tarball.tarData, options.registrySettings);
32
+ }
33
+ };
34
+ }
35
+ //# sourceMappingURL=emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../../../source/bundle-emitter/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAIlC,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AA6BrE,MAAM,UAAU,mBAAmB,CAAC,YAAuC;IACvE,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC;IAE1D,OAAO;QACH,KAAK,CAAC,uBAAuB,CAAC,OAAO;YACjC,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;YAEvD,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gBACvB,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;gBACtF,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;oBACjC,OAAO,OAAO,CAAC,OAAO,CAAC;gBAC3B,CAAC,CAAC,CAAC;YACP,CAAC;YAED,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QAED,KAAK,CAAC,2BAA2B,CAAC,OAAO;YACrC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;YAC7C,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;YAC7F,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;gBAC1B,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;YAC/C,CAAC;YAED,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC7E,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,YAAY,CAC7C,aAAa,CAAC,KAAK,CAAC,UAAU,EAC9B,aAAa,CAAC,KAAK,CAAC,MAAM,CAC7B,CAAC;YACF,MAAM,6BAA6B,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAC3E,MAAM,MAAM,GAAG,uBAAuB,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,CAAC;YACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACnE,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,OAAO;YACjB,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAEpE,MAAM,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC/G,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -1,5 +1,5 @@
1
- import { isExecutableFileMode } from '../file-description/permissions.js';
2
- import { extractTarEntries } from '../tar/extract-tar.js';
1
+ import { isExecutableFileMode } from "../file-manager/permissions.js";
2
+ import { extractTarEntries } from "../tar/extract-tar.js";
3
3
  function tarEntryToFileDescription(tarEntry) {
4
4
  const isExecutable = tarEntry.header.mode === undefined ? false : isExecutableFileMode(tarEntry.header.mode);
5
5
  return {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-package-tarball.js","sourceRoot":"","sources":["../../../../source/bundle-emitter/extract-package-tarball.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAiB,MAAM,uBAAuB,CAAC;AAEzE,SAAS,yBAAyB,CAAC,QAAkB;IACjD,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE7G,OAAO;QACH,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI;QAC9B,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,YAAY;KACf,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAe;IACvD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACpD,OAAO,UAAU,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACrD,CAAC"}
@@ -1,17 +1,17 @@
1
1
  import type _npmFetch from 'npm-registry-fetch';
2
2
  import type { publish as _publish } from 'libnpmpublish';
3
3
  import { Maybe } from 'true-myth';
4
- import type { BundlePackageJson } from '../bundler/bundle-description.js';
5
- import type { RegistrySettings } from '../config/registry-settings.js';
4
+ import type { RegistrySettings } from '../config/registry-settings.ts';
5
+ import type { BundlePackageJson } from '../version-manager/manifest/builder.ts';
6
6
  type PublishFunction = typeof _publish;
7
7
  export type RegistryClientDependencies = {
8
8
  readonly npmFetch: typeof _npmFetch;
9
9
  readonly publish: PublishFunction;
10
10
  };
11
11
  export type RegistryClient = {
12
- fetchLatestVersion(packageName: string, config: RegistrySettings): Promise<Maybe<PackageVersionDetails>>;
13
- publishPackage(manifest: Readonly<BundlePackageJson>, tarData: Buffer, config: RegistrySettings): Promise<void>;
14
- fetchTarball(tarballUrl: string, shasum: string): Promise<Buffer>;
12
+ fetchLatestVersion: (packageName: string, config: RegistrySettings) => Promise<Maybe<PackageVersionDetails>>;
13
+ publishPackage: (manifest: Readonly<BundlePackageJson>, tarData: Buffer, config: RegistrySettings) => Promise<void>;
14
+ fetchTarball: (tarballUrl: string, shasum: string) => Promise<Buffer>;
15
15
  };
16
16
  export type PackageVersionDetails = {
17
17
  readonly version: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-client.d.ts","sourceRoot":"","sources":["../../../../source/bundle-emitter/registry-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAGlC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAEhF,KAAK,eAAe,GAAG,OAAO,QAAQ,CAAC;AAEvC,MAAM,MAAM,0BAA0B,GAAG;IACrC,QAAQ,CAAC,QAAQ,EAAE,OAAO,SAAS,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,kBAAkB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC7G,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpH,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACzE,CAAC;AAmCF,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B,CAAC;AAKF,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC,0BAA0B,CAAC,GAAG,cAAc,CAsFvG"}
@@ -1,21 +1,22 @@
1
1
  import { Maybe } from 'true-myth';
2
- import { struct, string, optional, record, is } from '@effect/schema/Schema';
2
+ import { z } from 'zod/mini';
3
+ import { safeParse } from '@schema-hub/zod-error-formatter';
3
4
  function isFetchError(error) {
4
5
  return typeof error === 'object' && error !== null && Object.hasOwn(error, 'statusCode');
5
6
  }
6
7
  function encodePackageName(name) {
7
8
  return name.replace('/', '%2F');
8
9
  }
9
- const distTagsSchema = struct({
10
- latest: optional(string, { exact: true })
10
+ const distTagsSchema = z.object({
11
+ latest: z.optional(z.string())
11
12
  });
12
- const versionDataSchema = struct({
13
- dist: struct({ shasum: string, tarball: string })
13
+ const versionDataSchema = z.object({
14
+ dist: z.object({ shasum: z.string(), tarball: z.string() })
14
15
  });
15
- const abbreviatedPackageResponseSchema = struct({
16
- name: string,
16
+ const abbreviatedPackageResponseSchema = z.object({
17
+ name: z.string(),
17
18
  'dist-tags': distTagsSchema,
18
- versions: record(string, versionDataSchema)
19
+ versions: z.record(z.string(), versionDataSchema)
19
20
  });
20
21
  const httpStatusCode = {
21
22
  notFound: 404,
@@ -38,10 +39,11 @@ export function createRegistryClient(dependencies) {
38
39
  const endpointUri = `/${encodePackageName(packageName)}`;
39
40
  try {
40
41
  const response = await fetchRegistryEndpoint(endpointUri, registrySettings);
41
- if (!is(abbreviatedPackageResponseSchema)(response)) {
42
+ const result = safeParse(abbreviatedPackageResponseSchema, response);
43
+ if (!result.success) {
42
44
  throw new Error('Got an invalid response from registry API');
43
45
  }
44
- return Maybe.just(response);
46
+ return Maybe.just(result.data);
45
47
  }
46
48
  catch (error) {
47
49
  if (isFetchError(error) &&
@@ -57,6 +59,7 @@ export function createRegistryClient(dependencies) {
57
59
  return response.buffer();
58
60
  },
59
61
  async publishPackage(manifest, tarData, registrySettings) {
62
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- ok in this case
60
63
  await publish(manifest, tarData, {
61
64
  defaultTag: 'latest',
62
65
  forceAuth: {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-client.js","sourceRoot":"","sources":["../../../../source/bundle-emitter/registry-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAqB5D,SAAS,YAAY,CAAC,KAAc;IAChC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;CAC9D,CAAC,CAAC;AAEH,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,cAAc;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC;CACpD,CAAC,CAAC;AAIH,MAAM,cAAc,GAAG;IACnB,QAAQ,EAAE,GAAG;IACb,SAAS,EAAE,GAAG;CACjB,CAAC;AAWF,MAAM,UAAU,oBAAoB,CAAC,YAAkD;IACnF,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;IAE3C,KAAK,UAAU,qBAAqB,CAChC,QAAgB,EAChB,gBAA4C;QAE5C,MAAM,0CAA0C,GAAG,qCAAqC,CAAC;QAEzF,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC3B,SAAS,EAAE;gBACP,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,gBAAgB,CAAC,KAAK;aAChC;YACD,QAAQ,EAAE,gBAAgB,CAAC,WAAW;YACtC,OAAO,EAAE,EAAE,MAAM,EAAE,0CAA0C,EAAE;SAClE,CAAC,CAAC;IACP,CAAC;IAED,KAAK,UAAU,YAAY,CACvB,WAAmB,EACnB,gBAAkC;QAElC,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,SAAS,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;YAErE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,IACI,YAAY,CAAC,KAAK,CAAC;gBACnB,CAAC,KAAK,CAAC,UAAU,KAAK,cAAc,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,cAAc,CAAC,SAAS,CAAC,EACjG,CAAC;gBACC,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3B,CAAC;YAED,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,OAAO;QACH,KAAK,CAAC,YAAY,CAAC,UAAU;YACzB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC5C,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7B,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,gBAAgB;YACpD,0FAA0F;YAC1F,MAAM,OAAO,CAAC,QAAsC,EAAE,OAAO,EAAE;gBAC3D,UAAU,EAAE,QAAQ;gBACpB,SAAS,EAAE;oBACP,UAAU,EAAE,IAAI;oBAChB,KAAK,EAAE,gBAAgB,CAAC,KAAK;iBAChC;gBACD,QAAQ,EAAE,gBAAgB,CAAC,WAAW;aACzC,CAAC,CAAC;QACP,CAAC;QAED,KAAK,CAAC,kBAAkB,CAAC,WAAW,EAAE,gBAAgB;YAClD,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;YAE1E,IAAI,eAAe,CAAC,SAAS,EAAE,CAAC;gBAC5B,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3B,CAAC;YAED,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;YAChE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAClE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC,YAAY,aAAa,kBAAkB,WAAW,uBAAuB,CAAC,CAAC;gBACnG,CAAC;gBAED,OAAO,KAAK,CAAC,IAAI,CAAC;oBACd,OAAO,EAAE,aAAa;oBACtB,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM;oBAC/B,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO;iBACvC,CAAC,CAAC;YACP,CAAC;YAED,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { noDuplicatedFilesRule } from "./rules/no-duplicated-files.js";
2
+ const checkRules = [noDuplicatedFilesRule];
3
+ export function runChecks(params) {
4
+ const { settings, bundles: packages } = params;
5
+ return checkRules
6
+ .filter((rule) => {
7
+ return rule.isEnabled(settings);
8
+ })
9
+ .flatMap((rule) => {
10
+ return rule.run({ bundles: packages }, settings);
11
+ });
12
+ }
13
+ //# sourceMappingURL=check-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-runner.js","sourceRoot":"","sources":["../../../../source/checks/check-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAMvE,MAAM,UAAU,GAAyB,CAAC,qBAAqB,CAAC,CAAC;AAEjE,MAAM,UAAU,SAAS,CAAC,MAAyB;IAC/C,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE/C,OAAO,UAAU;SACZ,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC,CAAC;SACD,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,41 @@
1
+ function collectFileOwnership(bundles) {
2
+ const fileOwnership = new Map();
3
+ for (const bundle of bundles) {
4
+ for (const resource of bundle.contents) {
5
+ const filePath = resource.fileDescription.sourceFilePath;
6
+ const owners = fileOwnership.get(filePath) ?? new Set();
7
+ owners.add(bundle.name);
8
+ fileOwnership.set(filePath, owners);
9
+ }
10
+ }
11
+ return fileOwnership;
12
+ }
13
+ function getAllowList(settings) {
14
+ const option = settings?.noDuplicatedFiles;
15
+ if (option?.enabled !== true) {
16
+ return new Set();
17
+ }
18
+ return new Set(option.allowList ?? []);
19
+ }
20
+ export const noDuplicatedFilesRule = {
21
+ isEnabled(settings) {
22
+ const option = settings?.noDuplicatedFiles;
23
+ if (option === undefined) {
24
+ return false;
25
+ }
26
+ return option.enabled;
27
+ },
28
+ run(context, settings) {
29
+ const fileOwnership = collectFileOwnership(context.bundles);
30
+ const issues = [];
31
+ const allowList = getAllowList(settings);
32
+ for (const [filePath, owners] of fileOwnership.entries()) {
33
+ if (owners.size > 1 && !allowList.has(filePath)) {
34
+ const ownerList = Array.from(owners).toSorted().join(', ');
35
+ issues.push(`File "${filePath}" is included in multiple packages: ${ownerList}`);
36
+ }
37
+ }
38
+ return issues;
39
+ }
40
+ };
41
+ //# sourceMappingURL=no-duplicated-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-duplicated-files.js","sourceRoot":"","sources":["../../../../../source/checks/rules/no-duplicated-files.ts"],"names":[],"mappings":"AAIA,SAAS,oBAAoB,CAAC,OAAgC;IAC1D,MAAM,aAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;IAErD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC;YACzD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;YAChE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxB,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC;AAED,SAAS,YAAY,CAAC,QAAoC;IACtD,MAAM,MAAM,GAAG,QAAQ,EAAE,iBAAiB,CAAC;IAE3C,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO,IAAI,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAc;IAC5C,SAAS,CAAC,QAAQ;QACd,MAAM,MAAM,GAAG,QAAQ,EAAE,iBAAiB,CAAC;QAE3C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC;IAC1B,CAAC;IACD,GAAG,CAAC,OAAO,EAAE,QAAQ;QACjB,MAAM,aAAa,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEzC,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3D,MAAM,CAAC,IAAI,CAAC,SAAS,QAAQ,uCAAuC,SAAS,EAAE,CAAC,CAAC;YACrF,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ,CAAC"}
@@ -1,13 +1,7 @@
1
- import { type Schema } from '@effect/schema/Schema';
2
- import { type NoExpand } from './base-validations.js';
3
- declare const $additionalFileDescriptionSchema: Schema<{
4
- readonly targetFilePath: string;
5
- readonly sourceFilePath: string;
6
- }, {
7
- readonly targetFilePath: string;
8
- readonly sourceFilePath: string;
9
- }>;
10
- export type AdditionalFileDescription = NoExpand<Schema.To<typeof $additionalFileDescriptionSchema>>;
11
- export declare const additionalFileDescriptionSchema: Schema<AdditionalFileDescription>;
12
- export {};
1
+ import { z } from 'zod/mini';
2
+ export declare const additionalFileDescriptionSchema: z.ZodMiniReadonly<z.ZodMiniObject<{
3
+ sourceFilePath: z.ZodMiniString<string>;
4
+ targetFilePath: z.ZodMiniString<string>;
5
+ }, z.core.$strict>>;
6
+ export type AdditionalFileDescription = z.infer<typeof additionalFileDescriptionSchema>;
13
7
  //# sourceMappingURL=additional-files.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"additional-files.d.ts","sourceRoot":"","sources":["../../../../source/config/additional-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAU,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,KAAK,QAAQ,EAAwB,MAAM,uBAAuB,CAAC;AAE5E,QAAA,MAAM,gCAAgC;;;;;;EAGpC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,gCAAgC,CAAC,CAAC,CAAC;AAErG,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,yBAAyB,CAAoC,CAAC"}
1
+ {"version":3,"file":"additional-files.d.ts","sourceRoot":"","sources":["../../../../source/config/additional-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAG7B,eAAO,MAAM,+BAA+B;;;mBAK3C,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC"}
@@ -1,8 +1,7 @@
1
- import { struct } from '@effect/schema/Schema';
2
- import { nonEmptyStringSchema } from './base-validations.js';
3
- const $additionalFileDescriptionSchema = struct({
1
+ import { z } from 'zod/mini';
2
+ import { nonEmptyStringSchema } from "./base-validations.js";
3
+ export const additionalFileDescriptionSchema = z.readonly(z.strictObject({
4
4
  sourceFilePath: nonEmptyStringSchema,
5
5
  targetFilePath: nonEmptyStringSchema
6
- });
7
- export const additionalFileDescriptionSchema = $additionalFileDescriptionSchema;
6
+ }));
8
7
  //# sourceMappingURL=additional-files.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"additional-files.js","sourceRoot":"","sources":["../../../../source/config/additional-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAiB,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE5E,MAAM,gCAAgC,GAAG,MAAM,CAAC;IAC5C,cAAc,EAAE,oBAAoB;IACpC,cAAc,EAAE,oBAAoB;CACvC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,+BAA+B,GAAsC,gCAAgC,CAAC"}
1
+ {"version":3,"file":"additional-files.js","sourceRoot":"","sources":["../../../../source/config/additional-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,QAAQ,CACrD,CAAC,CAAC,YAAY,CAAC;IACX,cAAc,EAAE,oBAAoB;IACpC,cAAc,EAAE,oBAAoB;CACvC,CAAC,CACL,CAAC"}
@@ -1,3 +1,3 @@
1
- import { string, nonEmpty } from '@effect/schema/Schema';
2
- export const nonEmptyStringSchema = string.pipe(nonEmpty());
1
+ import { z } from 'zod/mini';
2
+ export const nonEmptyStringSchema = z.string().check(z.minLength(1));
3
3
  //# sourceMappingURL=base-validations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-validations.js","sourceRoot":"","sources":["../../../../source/config/base-validations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"base-validations.js","sourceRoot":"","sources":["../../../../source/config/base-validations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAE7B,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC"}