@platforma-sdk/package-builder-lib 1.4.0 → 1.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 (79) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +2 -3
  2. package/dist/_virtual/_rolldown/runtime.js +1 -2
  3. package/dist/core/archive.cjs +1 -2
  4. package/dist/core/archive.cjs.map +1 -1
  5. package/dist/core/archive.js +1 -2
  6. package/dist/core/conda/builder.cjs +1 -2
  7. package/dist/core/conda/builder.cjs.map +1 -1
  8. package/dist/core/conda/builder.js +1 -2
  9. package/dist/core/conda/builder.js.map +1 -1
  10. package/dist/core/conda/validate-spec.cjs +1 -2
  11. package/dist/core/conda/validate-spec.js +1 -2
  12. package/dist/core/core.cjs +11 -12
  13. package/dist/core/core.cjs.map +1 -1
  14. package/dist/core/core.d.ts +3 -5
  15. package/dist/core/core.d.ts.map +1 -1
  16. package/dist/core/core.js +13 -13
  17. package/dist/core/core.js.map +1 -1
  18. package/dist/core/docker-conda.cjs +1 -2
  19. package/dist/core/docker-conda.js +1 -2
  20. package/dist/core/docker-coverage.cjs +1 -2
  21. package/dist/core/docker-coverage.d.ts +1 -3
  22. package/dist/core/docker-coverage.d.ts.map +1 -1
  23. package/dist/core/docker-coverage.js +3 -3
  24. package/dist/core/docker-coverage.js.map +1 -1
  25. package/dist/core/docker-python.cjs +1 -2
  26. package/dist/core/docker-python.js +1 -2
  27. package/dist/core/docker.cjs +3 -5
  28. package/dist/core/docker.cjs.map +1 -1
  29. package/dist/core/docker.js +3 -5
  30. package/dist/core/docker.js.map +1 -1
  31. package/dist/core/envs.cjs +1 -2
  32. package/dist/core/envs.d.ts +0 -1
  33. package/dist/core/envs.js +1 -2
  34. package/dist/core/package-info.cjs +13 -12
  35. package/dist/core/package-info.cjs.map +1 -1
  36. package/dist/core/package-info.d.ts +4 -5
  37. package/dist/core/package-info.d.ts.map +1 -1
  38. package/dist/core/package-info.js +13 -12
  39. package/dist/core/package-info.js.map +1 -1
  40. package/dist/core/paths.cjs +1 -2
  41. package/dist/core/paths.cjs.map +1 -1
  42. package/dist/core/paths.js +1 -2
  43. package/dist/core/paths.js.map +1 -1
  44. package/dist/core/push-guard.cjs +1 -2
  45. package/dist/core/push-guard.cjs.map +1 -1
  46. package/dist/core/push-guard.d.ts +0 -2
  47. package/dist/core/push-guard.d.ts.map +1 -1
  48. package/dist/core/push-guard.js +1 -2
  49. package/dist/core/resolver.cjs +1 -2
  50. package/dist/core/resolver.js +1 -2
  51. package/dist/core/schemas/artifacts.cjs +1 -2
  52. package/dist/core/schemas/artifacts.d.ts +1 -169
  53. package/dist/core/schemas/artifacts.d.ts.map +1 -1
  54. package/dist/core/schemas/artifacts.js +1 -2
  55. package/dist/core/schemas/entrypoints.cjs +1 -2
  56. package/dist/core/schemas/entrypoints.d.ts +1 -352
  57. package/dist/core/schemas/entrypoints.d.ts.map +1 -1
  58. package/dist/core/schemas/entrypoints.js +1 -2
  59. package/dist/core/schemas/sw-json.cjs +1 -2
  60. package/dist/core/schemas/sw-json.js +1 -2
  61. package/dist/core/storage.cjs +1 -2
  62. package/dist/core/storage.js +1 -2
  63. package/dist/core/sw-json-render.cjs +1 -2
  64. package/dist/core/sw-json-render.js +1 -2
  65. package/dist/core/util.cjs +1 -2
  66. package/dist/core/util.cjs.map +1 -1
  67. package/dist/core/util.d.ts +0 -1
  68. package/dist/core/util.js +1 -2
  69. package/dist/defaults.cjs +1 -2
  70. package/dist/defaults.d.ts +0 -1
  71. package/dist/defaults.js +1 -2
  72. package/dist/index.cjs +1 -2
  73. package/dist/index.d.ts +0 -2
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +1 -2
  76. package/package.json +20 -15
  77. package/src/core/__tests__/docker-build.test.ts +51 -0
  78. package/src/core/conda/builder.ts +1 -1
  79. package/src/core/docker.ts +2 -7
@@ -22,6 +22,5 @@ export declare const DEV_DOCKER_REGISTRY = "public.ecr.aws/miresearch/pl-contain
22
22
  export declare const DEV_DOCKER_PUSH_TARGET = "ecr://public.ecr.aws/miresearch/pl-containers";
23
23
  export declare const AWS_DEV_PROFILE = "research-poweruser";
24
24
  export declare const DOCKER_BUILD_PLATFORM = "linux/amd64";
25
- //#endregion
26
25
  export { defaults_d_exports };
27
26
  //# sourceMappingURL=defaults.d.ts.map
package/dist/defaults.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
- //#region src/defaults.ts
2
+ // src/defaults.ts
3
3
  var defaults_exports = /* @__PURE__ */ __exportAll({
4
4
  AWS_DEV_PROFILE: () => AWS_DEV_PROFILE,
5
5
  BIN_REGISTRY_DOWNLOAD_URL: () => BIN_REGISTRY_DOWNLOAD_URL,
@@ -42,7 +42,6 @@ const DEV_DOCKER_REGISTRY = "public.ecr.aws/miresearch/pl-containers";
42
42
  const DEV_DOCKER_PUSH_TARGET = `ecr://${DEV_DOCKER_REGISTRY}`;
43
43
  const AWS_DEV_PROFILE = "research-poweruser";
44
44
  const DOCKER_BUILD_PLATFORM = "linux/amd64";
45
- //#endregion
46
45
  export { AWS_DEV_PROFILE, BIN_REGISTRY_DOWNLOAD_URL, BIN_REGISTRY_NAME, CONDA_DATA_LOCATION, CONDA_DOCKER_BASE_IMAGE, CONDA_FROZEN_ENV_SPEC_FILE, CONDA_MICROMAMBA_VERSION, CONDA_SOURCE_ENV_SPEC_FILE, DEV_BINARY_UPLOAD_TARGET, DEV_BIN_REGISTRY_NAME, DEV_DOCKER_PUSH_TARGET, DEV_DOCKER_REGISTRY, DOCKER_BUILD_PLATFORM, DOCKER_DOCKERFILE, DOCKER_PLACEHOLDER_PKG, DOCKER_REGISTRY, NO_SOFTWARE_PLACEHOLDER, PYTHON_DOCKER_BASE_IMAGE, PYTHON_REQUIREMENTS_FILE, defaults_exports };
47
46
 
48
47
  //# sourceMappingURL=defaults.js.map
package/dist/index.cjs CHANGED
@@ -5,11 +5,10 @@ const require_util = require("./core/util.cjs");
5
5
  const require_docker_coverage = require("./core/docker-coverage.cjs");
6
6
  const require_core = require("./core/core.cjs");
7
7
  const require_push_guard = require("./core/push-guard.cjs");
8
- //#region src/index.ts
8
+ // src/index.ts
9
9
  function createBuilder(logger, opts) {
10
10
  return new require_core.Core(logger, opts);
11
11
  }
12
- //#endregion
13
12
  exports.assertDockerCoverage = require_docker_coverage.assertDockerCoverage;
14
13
  exports.assertDockerPushIntent = require_push_guard.assertDockerPushIntent;
15
14
  exports.createBuilder = createBuilder;
package/dist/index.d.ts CHANGED
@@ -5,7 +5,6 @@ import { defaults_d_exports } from "./defaults.js";
5
5
  import { PushIntent, assertDockerPushIntent } from "./core/push-guard.js";
6
6
  import { DockerCoverage, assertDockerCoverage, descriptorHasNoDockerVariant, softwareEntrypointsWithoutDocker } from "./core/docker-coverage.js";
7
7
  import winston from "winston";
8
- //#region src/index.d.ts
9
8
  /** The logger the engine and its callers pass around. */
10
9
  export type Logger = winston.Logger;
11
10
  /**
@@ -18,6 +17,5 @@ export type Builder = Pick<Core, "buildMode" | "targetPlatform" | "allPlatforms"
18
17
  export declare function createBuilder(logger: winston.Logger, opts?: {
19
18
  packageRoot?: string;
20
19
  }): Builder;
21
- //#endregion
22
20
  export { type DockerCoverage, type PushIntent, assertDockerCoverage, assertDockerPushIntent, defaults_d_exports as defaults, descriptorHasNoDockerVariant, envs_d_exports as envs, softwareEntrypointsWithoutDocker, util_d_exports as util };
23
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;;;;YAeY,SAAS,QAAQ;;;;;;;YAQjB,UAAU,KACpB;wBAiBc,cAAc,QAAQ,QAAQ,QAAQ;EAAS;IAAyB"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;;;YAeY,SAAS,QAAQ;;;;;;;YAQjB,UAAU,KACpB;wBAiBc,cAAc,QAAQ,QAAQ,QAAQ;EAAS;IAAyB"}
package/dist/index.js CHANGED
@@ -4,11 +4,10 @@ import { util_exports } from "./core/util.js";
4
4
  import { assertDockerCoverage, descriptorHasNoDockerVariant, softwareEntrypointsWithoutDocker } from "./core/docker-coverage.js";
5
5
  import { Core } from "./core/core.js";
6
6
  import { assertDockerPushIntent } from "./core/push-guard.js";
7
- //#region src/index.ts
7
+ // src/index.ts
8
8
  function createBuilder(logger, opts) {
9
9
  return new Core(logger, opts);
10
10
  }
11
- //#endregion
12
11
  export { assertDockerCoverage, assertDockerPushIntent, createBuilder, defaults_exports as defaults, descriptorHasNoDockerVariant, envs_exports as envs, softwareEntrypointsWithoutDocker, util_exports as util };
13
12
 
14
13
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/package-builder-lib",
3
- "version": "1.4.0",
3
+ "version": "1.4.2",
4
4
  "description": "MiLaboratories Platforma Package builder engine (library)",
5
5
  "keywords": [],
6
6
  "license": "UNLICENSED",
@@ -21,26 +21,31 @@
21
21
  }
22
22
  },
23
23
  "dependencies": {
24
- "@aws-sdk/client-s3": "3.859.0",
25
- "@aws-sdk/lib-storage": "3.859.0",
24
+ "@aws-sdk/client-s3": "3.1157.0",
25
+ "@aws-sdk/lib-storage": "3.1157.0",
26
+ "@milaboratories/resolve-helper": "1.1.3",
26
27
  "archiver": "^7.0.1",
27
- "undici": "~7.16.0",
28
+ "undici": "~7.30.1",
28
29
  "winston": "^3.17.0",
29
- "yaml": "^2.8.0",
30
- "zod": "~3.25.76",
31
- "@milaboratories/resolve-helper": "1.1.3"
30
+ "yaml": "^2.9.1",
31
+ "zod": "~3.25.76"
32
32
  },
33
33
  "devDependencies": {
34
- "@platforma-open/milaboratories.runenv-python-3": "1.11.4",
34
+ "@milaboratories/build-configs": "2.0.2",
35
+ "@milaboratories/ts-builder": "1.7.3",
36
+ "@milaboratories/ts-configs": "1.4.0",
37
+ "@platforma-open/milaboratories.runenv-python-3": "1.16.1",
35
38
  "@types/archiver": "^6.0.3",
36
- "@types/node": "~24.5.2",
37
- "@vitest/coverage-istanbul": "^4.1.3",
39
+ "@types/node": "~24.19.2",
40
+ "@vitest/coverage-istanbul": "^4.1.12",
38
41
  "typescript": "7.0.2",
39
- "vite": "^8.0.6",
40
- "vitest": "^4.1.3",
41
- "@milaboratories/ts-configs": "1.4.0",
42
- "@milaboratories/build-configs": "2.0.1",
43
- "@milaboratories/ts-builder": "1.7.2"
42
+ "vite": "^8.3.5",
43
+ "vitest": "^4.1.12"
44
+ },
45
+ "repository": {
46
+ "type": "git",
47
+ "url": "git+https://github.com/milaboratory/platforma.git",
48
+ "directory": "lib/node/package-builder-lib"
44
49
  },
45
50
  "scripts": {
46
51
  "build": "ts-builder build --target node",
@@ -0,0 +1,51 @@
1
+ import { describe, it, expect, afterEach, vi } from "vitest";
2
+
3
+ const { spawnMock } = vi.hoisted(() => ({ spawnMock: vi.fn() }));
4
+ vi.mock("node:child_process", () => ({ spawnSync: spawnMock }));
5
+
6
+ const docker = await import("../docker");
7
+
8
+ afterEach(() => {
9
+ vi.clearAllMocks();
10
+ vi.unstubAllEnvs();
11
+ });
12
+
13
+ function runBuild() {
14
+ spawnMock.mockReturnValue({ status: 0 });
15
+ docker.build("/ctx", "/ctx/Dockerfile", "local:tag", "pkg/main", "1.0.0");
16
+ expect(spawnMock).toHaveBeenCalledTimes(1);
17
+ const [cmd, args, opts] = spawnMock.mock.calls[0] as [
18
+ string,
19
+ string[],
20
+ { env: NodeJS.ProcessEnv },
21
+ ];
22
+ return { cmd, args, env: opts.env };
23
+ }
24
+
25
+ describe("docker.build", () => {
26
+ it("passes no buildx-only attestation flags, so podman accepts the command", () => {
27
+ const { cmd, args } = runBuild();
28
+ expect(cmd).toBe("docker");
29
+ expect(args[0]).toBe("build");
30
+ expect(args.some((a) => a.startsWith("--provenance") || a.startsWith("--sbom"))).toBe(false);
31
+ });
32
+
33
+ it("disables buildx default attestations through the environment", () => {
34
+ const { env } = runBuild();
35
+ expect(env.BUILDX_NO_DEFAULT_ATTESTATIONS).toBe("1");
36
+ });
37
+
38
+ it("overrides a user value that would enable default attestations", () => {
39
+ vi.stubEnv("BUILDX_NO_DEFAULT_ATTESTATIONS", "0");
40
+ const { env } = runBuild();
41
+ expect(env.BUILDX_NO_DEFAULT_ATTESTATIONS).toBe("1");
42
+ });
43
+
44
+ it("pins the build platform", () => {
45
+ const { args } = runBuild();
46
+ expect(args.slice(args.indexOf("--platform"), args.indexOf("--platform") + 2)).toEqual([
47
+ "--platform",
48
+ "linux/amd64",
49
+ ]);
50
+ });
51
+ });
@@ -326,7 +326,7 @@ async function downloadFile(
326
326
 
327
327
  let redirCount = 0;
328
328
  let attempt = 0;
329
- for (; attempt <= maxAttempts; ) {
329
+ for (; attempt <= maxAttempts;) {
330
330
  attempt++;
331
331
 
332
332
  logger.debug(`Trying to download: ${url}`);
@@ -114,13 +114,6 @@ export function build(
114
114
  // regardless of host arch (cross-compile via qemu on non-x64 hosts).
115
115
  "--platform",
116
116
  defaults.DOCKER_BUILD_PLATFORM,
117
- // Disable buildkit's SLSA provenance + SBOM attestations. They embed
118
- // build-time timestamps into the manifest list, which produces a fresh
119
- // image digest on every build of identical source. That breaks the
120
- // content-addressable tag scheme (every dev rebuild re-pushes a new
121
- // tag) and defeats publishDockerImage's `remoteImageExists` smart-skip.
122
- "--provenance=false",
123
- "--sbom=false",
124
117
  "-t",
125
118
  tag,
126
119
  context,
@@ -138,6 +131,8 @@ export function build(
138
131
  env: {
139
132
  ...process.env, // PATH variable from parent process affects execution
140
133
  HOME: process.env.HOME || os.homedir(), // Ensure HOME is set
134
+ // Disables buildx default provenance so the image ID stays stable; podman ignores it.
135
+ BUILDX_NO_DEFAULT_ATTESTATIONS: "1",
141
136
  },
142
137
  },
143
138
  );