@interfere/build 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +8 -0
  2. package/dist/{cloudflare-destination.d.cts → destinations/cloudflare-destination.d.cts} +1 -1
  3. package/dist/{cloudflare-destination.d.mts → destinations/cloudflare-destination.d.mts} +1 -1
  4. package/dist/{vercel-destination.d.cts → destinations/vercel-destination.d.cts} +1 -1
  5. package/dist/{vercel-destination.d.mts → destinations/vercel-destination.d.mts} +1 -1
  6. package/dist/release-request.cjs +1 -1
  7. package/dist/release-request.mjs +1 -1
  8. package/dist/service-name.cjs +1 -0
  9. package/dist/service-name.d.cts +9 -0
  10. package/dist/service-name.d.mts +9 -0
  11. package/dist/service-name.mjs +1 -0
  12. package/dist/{cleanup-source-maps.d.cts → source-maps/cleanup-source-maps.d.cts} +1 -1
  13. package/dist/{cleanup-source-maps.d.mts → source-maps/cleanup-source-maps.d.mts} +1 -1
  14. package/dist/{source-map-upload-fetch.d.cts → source-maps/source-map-upload-fetch.d.cts} +1 -1
  15. package/dist/{source-map-upload-fetch.d.mts → source-maps/source-map-upload-fetch.d.mts} +1 -1
  16. package/dist/{upload-source-map-batch.d.cts → source-maps/upload-source-map-batch.d.cts} +1 -1
  17. package/dist/{upload-source-map-batch.d.mts → source-maps/upload-source-map-batch.d.mts} +1 -1
  18. package/dist/source-maps/upload-source-map-chunks.cjs +1 -0
  19. package/dist/{upload-source-map-chunks.d.cts → source-maps/upload-source-map-chunks.d.cts} +1 -1
  20. package/dist/{upload-source-map-chunks.d.mts → source-maps/upload-source-map-chunks.d.mts} +1 -1
  21. package/dist/{upload-source-map-request.d.cts → source-maps/upload-source-map-request.d.cts} +1 -1
  22. package/dist/{upload-source-map-request.d.mts → source-maps/upload-source-map-request.d.mts} +1 -1
  23. package/package.json +28 -17
  24. package/dist/upload-source-map-chunks.cjs +0 -1
  25. /package/dist/{cloudflare-destination.cjs → destinations/cloudflare-destination.cjs} +0 -0
  26. /package/dist/{cloudflare-destination.mjs → destinations/cloudflare-destination.mjs} +0 -0
  27. /package/dist/{vercel-destination.cjs → destinations/vercel-destination.cjs} +0 -0
  28. /package/dist/{vercel-destination.mjs → destinations/vercel-destination.mjs} +0 -0
  29. /package/dist/{cleanup-source-maps.cjs → source-maps/cleanup-source-maps.cjs} +0 -0
  30. /package/dist/{cleanup-source-maps.mjs → source-maps/cleanup-source-maps.mjs} +0 -0
  31. /package/dist/{source-map-upload-fetch.cjs → source-maps/source-map-upload-fetch.cjs} +0 -0
  32. /package/dist/{source-map-upload-fetch.mjs → source-maps/source-map-upload-fetch.mjs} +0 -0
  33. /package/dist/{upload-source-map-batch.cjs → source-maps/upload-source-map-batch.cjs} +0 -0
  34. /package/dist/{upload-source-map-batch.mjs → source-maps/upload-source-map-batch.mjs} +0 -0
  35. /package/dist/{upload-source-map-chunks.mjs → source-maps/upload-source-map-chunks.mjs} +0 -0
  36. /package/dist/{upload-source-map-request.cjs → source-maps/upload-source-map-request.cjs} +0 -0
  37. /package/dist/{upload-source-map-request.mjs → source-maps/upload-source-map-request.mjs} +0 -0
package/README.md CHANGED
@@ -23,3 +23,11 @@ When calling `uploadSourceMapChunks` directly, construct the API client with
23
23
  `fetch: sourceMapUploadFetch` from `@interfere/build/source-map-upload-fetch` and
24
24
  pass `compression: "gzip"` to the uploader. Direct callers retain identity uploads
25
25
  unless they opt in; Next.js and Vite configure both automatically.
26
+
27
+ `resolveBuildServiceName` from `@interfere/build/service-name` supplies the same
28
+ service identity policy to Next.js and Vite: an explicit plugin option, then
29
+ `OTEL_SERVICE_NAME`, then the app's unscoped `package.json` name. Vite also accepts
30
+ its legacy `VITE_INTERFERE_SERVICE_NAME` variable before the package fallback.
31
+ Blank values are skipped; a missing or invalid package name leaves the default
32
+ unset. Each framework injects this value into its browser and server entry points,
33
+ where explicit runtime service names still take precedence.
@@ -1,4 +1,4 @@
1
- //#region src/cloudflare-destination.d.ts
1
+ //#region src/destinations/cloudflare-destination.d.ts
2
2
  export declare function resolve(): {
3
3
  accountId: string | null;
4
4
  deploymentUrl: string | null;
@@ -1,4 +1,4 @@
1
- //#region src/cloudflare-destination.d.ts
1
+ //#region src/destinations/cloudflare-destination.d.ts
2
2
  export declare function resolve(): {
3
3
  accountId: string | null;
4
4
  deploymentUrl: string | null;
@@ -1,4 +1,4 @@
1
- //#region src/vercel-destination.d.ts
1
+ //#region src/destinations/vercel-destination.d.ts
2
2
  export declare function resolve(): {
3
3
  deploymentId: string | null;
4
4
  deploymentUrl: string | null;
@@ -1,4 +1,4 @@
1
- //#region src/vercel-destination.d.ts
1
+ //#region src/destinations/vercel-destination.d.ts
2
2
  export declare function resolve(): {
3
3
  deploymentId: string | null;
4
4
  deploymentUrl: string | null;
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const require_cloudflare_destination=require("./cloudflare-destination.cjs"),require_vercel_destination=require("./vercel-destination.cjs");let _interfere_types_integrations=require("@interfere/types/integrations"),_interfere_types_sdk_cli_destination=require("@interfere/types/sdk/cli-destination"),_interfere_types_sdk_deploy_environment=require("@interfere/types/sdk/deploy-environment"),_interfere_types_sdk_github_source=require("@interfere/types/sdk/github-source"),node_child_process=require("node:child_process");function git(command){try{return(0,node_child_process.execSync)(command,{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()||null}catch{return null}}function resolveReleaseRequest(input){if(!_interfere_types_integrations.configuredSourceProviderSchema.safeParse(input.config.surface.sourceProvider).success)return{ok:!1,reason:`missing_source_provider`};let provider=_interfere_types_integrations.releaseDestinationProviderSchema.safeParse(input.config.surface.destinationProvider);if(!provider.success)return{ok:!1,reason:`missing_destination_provider`};let destinations={cli:()=>(0,_interfere_types_sdk_cli_destination.resolveCliReleaseDestination)(process.env,input.releaseSlug),cloudflare:require_cloudflare_destination.resolve,vercel:require_vercel_destination.resolve};return{ok:!0,request:{buildId:input.buildId,destination:(0,_interfere_types_sdk_deploy_environment.applyDeployEnvironment)(destinations[provider.data](),input.environment),producerVersion:input.producerVersion,slug:input.releaseSlug,source:(0,_interfere_types_sdk_github_source.resolveGithubReleaseSource)(process.env,git)}}}exports.resolveReleaseRequest=resolveReleaseRequest;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const require_destinations_cloudflare_destination=require("./destinations/cloudflare-destination.cjs"),require_destinations_vercel_destination=require("./destinations/vercel-destination.cjs");let _interfere_types_integrations=require("@interfere/types/integrations"),_interfere_types_sdk_cli_destination=require("@interfere/types/sdk/cli-destination"),_interfere_types_sdk_deploy_environment=require("@interfere/types/sdk/deploy-environment"),_interfere_types_sdk_github_source=require("@interfere/types/sdk/github-source"),node_child_process=require("node:child_process");function git(command){try{return(0,node_child_process.execSync)(command,{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()||null}catch{return null}}function resolveReleaseRequest(input){if(!_interfere_types_integrations.configuredSourceProviderSchema.safeParse(input.config.surface.sourceProvider).success)return{ok:!1,reason:`missing_source_provider`};let provider=_interfere_types_integrations.releaseDestinationProviderSchema.safeParse(input.config.surface.destinationProvider);if(!provider.success)return{ok:!1,reason:`missing_destination_provider`};let destinations={cli:()=>(0,_interfere_types_sdk_cli_destination.resolveCliReleaseDestination)(process.env,input.releaseSlug),cloudflare:require_destinations_cloudflare_destination.resolve,vercel:require_destinations_vercel_destination.resolve};return{ok:!0,request:{buildId:input.buildId,destination:(0,_interfere_types_sdk_deploy_environment.applyDeployEnvironment)(destinations[provider.data](),input.environment),producerVersion:input.producerVersion,slug:input.releaseSlug,source:(0,_interfere_types_sdk_github_source.resolveGithubReleaseSource)(process.env,git)}}}exports.resolveReleaseRequest=resolveReleaseRequest;
@@ -1 +1 @@
1
- import{resolve}from"./cloudflare-destination.mjs";import{resolve as resolve$1}from"./vercel-destination.mjs";import{configuredSourceProviderSchema,releaseDestinationProviderSchema}from"@interfere/types/integrations";import{resolveCliReleaseDestination}from"@interfere/types/sdk/cli-destination";import{applyDeployEnvironment}from"@interfere/types/sdk/deploy-environment";import{resolveGithubReleaseSource}from"@interfere/types/sdk/github-source";import{execSync}from"node:child_process";function git(command){try{return execSync(command,{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()||null}catch{return null}}function resolveReleaseRequest(input){if(!configuredSourceProviderSchema.safeParse(input.config.surface.sourceProvider).success)return{ok:!1,reason:`missing_source_provider`};let provider=releaseDestinationProviderSchema.safeParse(input.config.surface.destinationProvider);if(!provider.success)return{ok:!1,reason:`missing_destination_provider`};let destinations={cli:()=>resolveCliReleaseDestination(process.env,input.releaseSlug),cloudflare:resolve,vercel:resolve$1};return{ok:!0,request:{buildId:input.buildId,destination:applyDeployEnvironment(destinations[provider.data](),input.environment),producerVersion:input.producerVersion,slug:input.releaseSlug,source:resolveGithubReleaseSource(process.env,git)}}}export{resolveReleaseRequest};
1
+ import{resolve}from"./destinations/cloudflare-destination.mjs";import{resolve as resolve$1}from"./destinations/vercel-destination.mjs";import{configuredSourceProviderSchema,releaseDestinationProviderSchema}from"@interfere/types/integrations";import{resolveCliReleaseDestination}from"@interfere/types/sdk/cli-destination";import{applyDeployEnvironment}from"@interfere/types/sdk/deploy-environment";import{resolveGithubReleaseSource}from"@interfere/types/sdk/github-source";import{execSync}from"node:child_process";function git(command){try{return execSync(command,{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()||null}catch{return null}}function resolveReleaseRequest(input){if(!configuredSourceProviderSchema.safeParse(input.config.surface.sourceProvider).success)return{ok:!1,reason:`missing_source_provider`};let provider=releaseDestinationProviderSchema.safeParse(input.config.surface.destinationProvider);if(!provider.success)return{ok:!1,reason:`missing_destination_provider`};let destinations={cli:()=>resolveCliReleaseDestination(process.env,input.releaseSlug),cloudflare:resolve,vercel:resolve$1};return{ok:!0,request:{buildId:input.buildId,destination:applyDeployEnvironment(destinations[provider.data](),input.environment),producerVersion:input.producerVersion,slug:input.releaseSlug,source:resolveGithubReleaseSource(process.env,git)}}}export{resolveReleaseRequest};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let _interfere_types_sdk_runtime=require("@interfere/types/sdk/runtime"),node_fs=require("node:fs"),node_path=require("node:path");const SCOPE_PREFIX=/^@[^/]+\//u;function nonEmpty(value){return value?.trim()||void 0}function packageServiceName(root){let manifest;try{manifest=JSON.parse((0,node_fs.readFileSync)((0,node_path.join)(root,`package.json`),`utf8`))}catch{return}if(typeof manifest==`object`&&manifest&&`name`in manifest)return typeof manifest.name==`string`?nonEmpty(manifest.name.trim().replace(SCOPE_PREFIX,``)):void 0}function resolveBuildServiceName({root,option,env=(0,_interfere_types_sdk_runtime.readProcessEnv)()??{},legacyEnvName}){return nonEmpty(option)??nonEmpty(env.OTEL_SERVICE_NAME)??nonEmpty(legacyEnvName?env[legacyEnvName]:void 0)??packageServiceName(root)}exports.resolveBuildServiceName=resolveBuildServiceName;
@@ -0,0 +1,9 @@
1
+ //#region src/service-name.d.ts
2
+ /** Resolve a build's service name from an option, OTEL_SERVICE_NAME, a legacy environment alias, or its unscoped app package name. */
3
+ export declare function resolveBuildServiceName({ root, option, env, legacyEnvName }: {
4
+ root: string;
5
+ option?: string | undefined;
6
+ env?: Readonly<Record<string, string | undefined>>;
7
+ legacyEnvName?: string;
8
+ }): string | undefined;
9
+ //#endregion
@@ -0,0 +1,9 @@
1
+ //#region src/service-name.d.ts
2
+ /** Resolve a build's service name from an option, OTEL_SERVICE_NAME, a legacy environment alias, or its unscoped app package name. */
3
+ export declare function resolveBuildServiceName({ root, option, env, legacyEnvName }: {
4
+ root: string;
5
+ option?: string | undefined;
6
+ env?: Readonly<Record<string, string | undefined>>;
7
+ legacyEnvName?: string;
8
+ }): string | undefined;
9
+ //#endregion
@@ -0,0 +1 @@
1
+ import{readProcessEnv}from"@interfere/types/sdk/runtime";import{readFileSync}from"node:fs";import{join}from"node:path";const SCOPE_PREFIX=/^@[^/]+\//u;function nonEmpty(value){return value?.trim()||void 0}function packageServiceName(root){let manifest;try{manifest=JSON.parse(readFileSync(join(root,`package.json`),`utf8`))}catch{return}if(typeof manifest==`object`&&manifest&&`name`in manifest)return typeof manifest.name==`string`?nonEmpty(manifest.name.trim().replace(SCOPE_PREFIX,``)):void 0}function resolveBuildServiceName({root,option,env=readProcessEnv()??{},legacyEnvName}){return nonEmpty(option)??nonEmpty(env.OTEL_SERVICE_NAME)??nonEmpty(legacyEnvName?env[legacyEnvName]:void 0)??packageServiceName(root)}export{resolveBuildServiceName};
@@ -1,4 +1,4 @@
1
- //#region src/cleanup-source-maps.d.ts
1
+ //#region src/source-maps/cleanup-source-maps.d.ts
2
2
  export declare function cleanupSourceMaps(files: readonly {
3
3
  absolute: string;
4
4
  chunkAbsolutes: readonly string[];
@@ -1,4 +1,4 @@
1
- //#region src/cleanup-source-maps.d.ts
1
+ //#region src/source-maps/cleanup-source-maps.d.ts
2
2
  export declare function cleanupSourceMaps(files: readonly {
3
3
  absolute: string;
4
4
  chunkAbsolutes: readonly string[];
@@ -1,4 +1,4 @@
1
- //#region src/source-map-upload-fetch.d.ts
1
+ //#region src/source-maps/source-map-upload-fetch.d.ts
2
2
  /** Compresses requests marked with Content-Encoding: gzip by the source-map uploader. */
3
3
  export declare const sourceMapUploadFetch: typeof fetch;
4
4
  //#endregion
@@ -1,4 +1,4 @@
1
- //#region src/source-map-upload-fetch.d.ts
1
+ //#region src/source-maps/source-map-upload-fetch.d.ts
2
2
  /** Compresses requests marked with Content-Encoding: gzip by the source-map uploader. */
3
3
  export declare const sourceMapUploadFetch: typeof fetch;
4
4
  //#endregion
@@ -1,5 +1,5 @@
1
1
  import { Interfere } from "@interfere/javascript";
2
- //#region src/upload-source-map-batch.d.ts
2
+ //#region src/source-maps/upload-source-map-batch.d.ts
3
3
  export declare function sourceMapUploadJobs(files: readonly (Interfere.CompleteSourceMapFile & {
4
4
  content: string;
5
5
  })[], capability: Interfere.SourceMapUploadSessionResponse["batchUpload"]): Generator<{
@@ -1,5 +1,5 @@
1
1
  import { Interfere } from "@interfere/javascript";
2
- //#region src/upload-source-map-batch.d.ts
2
+ //#region src/source-maps/upload-source-map-batch.d.ts
3
3
  export declare function sourceMapUploadJobs(files: readonly (Interfere.CompleteSourceMapFile & {
4
4
  content: string;
5
5
  })[], capability: Interfere.SourceMapUploadSessionResponse["batchUpload"]): Generator<{
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const require_source_maps_upload_source_map_batch=require("./upload-source-map-batch.cjs"),require_source_maps_upload_source_map_request=require("./upload-source-map-request.cjs");let _interfere_types_data_source_map_upload_batch=require("@interfere/types/data/source-map-upload-batch");async function uploadSourceMapChunks(options){let{client,environment,files,releaseSlug,signed}=options,concurrency=options.concurrency??Number(process.env.INTERFERE_SOURCEMAP_UPLOAD_CONCURRENCY??20);if(!Number.isSafeInteger(concurrency)||concurrency<1)throw Error(`Source-map upload concurrency must be a positive integer`);let capability=_interfere_types_data_source_map_upload_batch.sourceMapBatchCapability.safeParse(signed.batchUpload),supportsGzip=capability.success&&capability.data.compression===`gzip`,chunkBytes=supportsGzip?8388608:524288,headers=options.compression===`gzip`&&supportsGzip?{"content-encoding":`gzip`}:void 0,controller=new AbortController;try{let sessionDeadlineMs=signed.expiresAt*1e3,assertSessionOpen=()=>{if(!Number.isFinite(sessionDeadlineMs)||Date.now()>=sessionDeadlineMs)throw Error(`Source-map upload session expired`)};assertSessionOpen();let abortSignal=AbortSignal.any([controller.signal,AbortSignal.timeout(sessionDeadlineMs-Date.now())]),expected=new Set(files.map(file=>file.path));if(signed.uploads.length!==files.length||new Set(signed.uploads.map(file=>file.path)).size!==files.length||signed.uploads.some(file=>!expected.has(file.path)))throw Error(`Source-map server returned a different batch`);let jobs=require_source_maps_upload_source_map_batch.sourceMapUploadJobs(files,signed.batchUpload),totalBytes=0;return await Promise.all(Array.from({length:Math.min(concurrency,files.length)},async()=>{for(let job of jobs){if(abortSignal.throwIfAborted(),assertSessionOpen(),job.chunks){await require_source_maps_upload_source_map_request.uploadSourceMapRequest(async()=>await client.releases.uploadSourceMapBatch({releaseSlug,environment,chunks:job.chunks},{abortSignal,headers}),abortSignal),totalBytes+=job.rawBytes;continue}let{file}=job,bytes=new TextEncoder().encode(file.content);for(let offset=0;offset<bytes.byteLength;offset+=chunkBytes){assertSessionOpen();let chunk=new Blob([bytes.subarray(offset,offset+chunkBytes)]);await require_source_maps_upload_source_map_request.uploadSourceMapRequest(async()=>await client.releases.uploadSourceMap(chunk,releaseSlug,{environment,path:file.path,offset},{abortSignal,headers:{...headers,"x-interfere-source-map-size":String(chunk.size)}}),abortSignal)}totalBytes+=bytes.byteLength}})),assertSessionOpen(),totalBytes}finally{controller.abort()}}exports.uploadSourceMapChunks=uploadSourceMapChunks;
@@ -1,5 +1,5 @@
1
1
  import { Interfere, InterfereClient } from "@interfere/javascript";
2
- //#region src/upload-source-map-chunks.d.ts
2
+ //#region src/source-maps/upload-source-map-chunks.d.ts
3
3
  export declare function uploadSourceMapChunks(options: {
4
4
  client: InterfereClient;
5
5
  releaseSlug: string;
@@ -1,5 +1,5 @@
1
1
  import { Interfere, InterfereClient } from "@interfere/javascript";
2
- //#region src/upload-source-map-chunks.d.ts
2
+ //#region src/source-maps/upload-source-map-chunks.d.ts
3
3
  export declare function uploadSourceMapChunks(options: {
4
4
  client: InterfereClient;
5
5
  releaseSlug: string;
@@ -1,3 +1,3 @@
1
- //#region src/upload-source-map-request.d.ts
1
+ //#region src/source-maps/upload-source-map-request.d.ts
2
2
  export declare function uploadSourceMapRequest<T>(request: () => Promise<T>, signal: AbortSignal): Promise<void>;
3
3
  //#endregion
@@ -1,3 +1,3 @@
1
- //#region src/upload-source-map-request.d.ts
1
+ //#region src/source-maps/upload-source-map-request.d.ts
2
2
  export declare function uploadSourceMapRequest<T>(request: () => Promise<T>, signal: AbortSignal): Promise<void>;
3
3
  //#endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@interfere/build",
3
- "version": "0.3.2",
3
+ "version": "0.4.0",
4
4
  "description": "Release preparation for Interfere build integrations.",
5
5
  "keywords": [
6
6
  "build",
@@ -25,6 +25,17 @@
25
25
  ],
26
26
  "type": "module",
27
27
  "exports": {
28
+ "./service-name": {
29
+ "monorepo": "./src/service-name.ts",
30
+ "import": {
31
+ "types": "./dist/service-name.d.mts",
32
+ "default": "./dist/service-name.mjs"
33
+ },
34
+ "require": {
35
+ "types": "./dist/service-name.d.cts",
36
+ "default": "./dist/service-name.cjs"
37
+ }
38
+ },
28
39
  "./config": {
29
40
  "monorepo": "./src/config.ts",
30
41
  "import": {
@@ -49,36 +60,36 @@
49
60
  },
50
61
  "./package.json": "./package.json",
51
62
  "./cleanup-source-maps": {
52
- "monorepo": "./src/cleanup-source-maps.ts",
63
+ "monorepo": "./src/source-maps/cleanup-source-maps.ts",
53
64
  "import": {
54
- "types": "./dist/cleanup-source-maps.d.mts",
55
- "default": "./dist/cleanup-source-maps.mjs"
65
+ "types": "./dist/source-maps/cleanup-source-maps.d.mts",
66
+ "default": "./dist/source-maps/cleanup-source-maps.mjs"
56
67
  },
57
68
  "require": {
58
- "types": "./dist/cleanup-source-maps.d.cts",
59
- "default": "./dist/cleanup-source-maps.cjs"
69
+ "types": "./dist/source-maps/cleanup-source-maps.d.cts",
70
+ "default": "./dist/source-maps/cleanup-source-maps.cjs"
60
71
  }
61
72
  },
62
73
  "./upload-source-map-chunks": {
63
- "monorepo": "./src/upload-source-map-chunks.ts",
74
+ "monorepo": "./src/source-maps/upload-source-map-chunks.ts",
64
75
  "import": {
65
- "types": "./dist/upload-source-map-chunks.d.mts",
66
- "default": "./dist/upload-source-map-chunks.mjs"
76
+ "types": "./dist/source-maps/upload-source-map-chunks.d.mts",
77
+ "default": "./dist/source-maps/upload-source-map-chunks.mjs"
67
78
  },
68
79
  "require": {
69
- "types": "./dist/upload-source-map-chunks.d.cts",
70
- "default": "./dist/upload-source-map-chunks.cjs"
80
+ "types": "./dist/source-maps/upload-source-map-chunks.d.cts",
81
+ "default": "./dist/source-maps/upload-source-map-chunks.cjs"
71
82
  }
72
83
  },
73
84
  "./source-map-upload-fetch": {
74
- "monorepo": "./src/source-map-upload-fetch.ts",
85
+ "monorepo": "./src/source-maps/source-map-upload-fetch.ts",
75
86
  "import": {
76
- "types": "./dist/source-map-upload-fetch.d.mts",
77
- "default": "./dist/source-map-upload-fetch.mjs"
87
+ "types": "./dist/source-maps/source-map-upload-fetch.d.mts",
88
+ "default": "./dist/source-maps/source-map-upload-fetch.mjs"
78
89
  },
79
90
  "require": {
80
- "types": "./dist/source-map-upload-fetch.d.cts",
81
- "default": "./dist/source-map-upload-fetch.cjs"
91
+ "types": "./dist/source-maps/source-map-upload-fetch.d.cts",
92
+ "default": "./dist/source-maps/source-map-upload-fetch.cjs"
82
93
  }
83
94
  }
84
95
  },
@@ -92,7 +103,7 @@
92
103
  },
93
104
  "dependencies": {
94
105
  "@interfere/javascript": "^0.3.0",
95
- "@interfere/types": "^10.3.0"
106
+ "@interfere/types": "^10.5.0"
96
107
  },
97
108
  "devDependencies": {
98
109
  "@interfere/typescript-config": "^9.0.2",
@@ -1 +0,0 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const require_upload_source_map_batch=require("./upload-source-map-batch.cjs"),require_upload_source_map_request=require("./upload-source-map-request.cjs");let _interfere_types_data_source_map_upload_batch=require("@interfere/types/data/source-map-upload-batch");async function uploadSourceMapChunks(options){let{client,environment,files,releaseSlug,signed}=options,concurrency=options.concurrency??Number(process.env.INTERFERE_SOURCEMAP_UPLOAD_CONCURRENCY??20);if(!Number.isSafeInteger(concurrency)||concurrency<1)throw Error(`Source-map upload concurrency must be a positive integer`);let capability=_interfere_types_data_source_map_upload_batch.sourceMapBatchCapability.safeParse(signed.batchUpload),supportsGzip=capability.success&&capability.data.compression===`gzip`,chunkBytes=supportsGzip?8388608:524288,headers=options.compression===`gzip`&&supportsGzip?{"content-encoding":`gzip`}:void 0,controller=new AbortController;try{let sessionDeadlineMs=signed.expiresAt*1e3,assertSessionOpen=()=>{if(!Number.isFinite(sessionDeadlineMs)||Date.now()>=sessionDeadlineMs)throw Error(`Source-map upload session expired`)};assertSessionOpen();let abortSignal=AbortSignal.any([controller.signal,AbortSignal.timeout(sessionDeadlineMs-Date.now())]),expected=new Set(files.map(file=>file.path));if(signed.uploads.length!==files.length||new Set(signed.uploads.map(file=>file.path)).size!==files.length||signed.uploads.some(file=>!expected.has(file.path)))throw Error(`Source-map server returned a different batch`);let jobs=require_upload_source_map_batch.sourceMapUploadJobs(files,signed.batchUpload),totalBytes=0;return await Promise.all(Array.from({length:Math.min(concurrency,files.length)},async()=>{for(let job of jobs){if(abortSignal.throwIfAborted(),assertSessionOpen(),job.chunks){await require_upload_source_map_request.uploadSourceMapRequest(async()=>await client.releases.uploadSourceMapBatch({releaseSlug,environment,chunks:job.chunks},{abortSignal,headers}),abortSignal),totalBytes+=job.rawBytes;continue}let{file}=job,bytes=new TextEncoder().encode(file.content);for(let offset=0;offset<bytes.byteLength;offset+=chunkBytes){assertSessionOpen();let chunk=new Blob([bytes.subarray(offset,offset+chunkBytes)]);await require_upload_source_map_request.uploadSourceMapRequest(async()=>await client.releases.uploadSourceMap(chunk,releaseSlug,{environment,path:file.path,offset},{abortSignal,headers:{...headers,"x-interfere-source-map-size":String(chunk.size)}}),abortSignal)}totalBytes+=bytes.byteLength}})),assertSessionOpen(),totalBytes}finally{controller.abort()}}exports.uploadSourceMapChunks=uploadSourceMapChunks;