@interfere/build 0.3.3 → 0.4.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.
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.
package/dist/config.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let _interfere_javascript=require("@interfere/javascript"),_interfere_types_sdk_build_config=require("@interfere/types/sdk/build-config"),_interfere_types_sdk_remote_config=require("@interfere/types/sdk/remote-config");function createBuildConfigResolver(observe){let pending=new Map;return async(apiUrl,publicKey,buildScope=``)=>{let key=`${buildScope}\n${apiUrl}\n${publicKey}`,config=pending.get(key);config||(config=fetchBuildConfig(apiUrl,publicKey),pending.set(key,config));let result=await config;return observe?.(result),result.config}}async function fetchBuildConfig(apiUrl,publicKey){try{let response=await new _interfere_javascript.InterfereClient({baseUrl:apiUrl,publicKeyHeader:{apiKey:publicKey},timeoutInSeconds:3,maxRetries:0}).config.getSdkConfig();return{config:_interfere_types_sdk_build_config.buildConfigSchema.parse(response),status:_interfere_types_sdk_remote_config.remoteConfigInputSchema.safeParse(response).success?`fetched`:`fallback`}}catch{return{config:_interfere_types_sdk_build_config.buildConfigSchema.parse({}),status:`fallback`}}}exports.createBuildConfigResolver=createBuildConfigResolver;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let _interfere_javascript=require("@interfere/javascript"),_interfere_types_sdk_build_config=require("@interfere/types/sdk/build-config"),_interfere_types_sdk_remote_config=require("@interfere/types/sdk/remote-config");function createBuildConfigResolver(observe){let pending=new Map;return async(apiUrl,publicKey,buildScope=``)=>{let key=`${buildScope}\n${apiUrl}\n${publicKey}`,config=pending.get(key);config||(config=fetchBuildConfig(apiUrl,publicKey),pending.set(key,config));let result=await config;return observe?.(result),result.config}}async function fetchBuildConfig(apiUrl,publicKey){try{let response=await new _interfere_javascript.InterfereClient({baseUrl:apiUrl,publicKeyHeader:{apiKey:publicKey},timeoutInSeconds:3,maxRetries:0}).config.getSdkConfig(),config=_interfere_types_sdk_build_config.buildConfigSchema.parse(response);return{config:{...config,platform:config.platform??null},status:_interfere_types_sdk_remote_config.remoteConfigInputSchema.safeParse(response).success?`fetched`:`fallback`}}catch{return{config:_interfere_types_sdk_build_config.buildConfigSchema.parse({}),status:`fallback`}}}exports.createBuildConfigResolver=createBuildConfigResolver;
package/dist/config.d.cts CHANGED
@@ -2,6 +2,7 @@
2
2
  export declare function createBuildConfigResolver(observe?: (result: Awaited<ReturnType<typeof fetchBuildConfig>>) => void): (apiUrl: string, publicKey: string, buildScope?: string) => Promise<{
3
3
  ingestUrl?: string | undefined;
4
4
  logSourcing?: "drain" | "sdk" | undefined;
5
+ platform?: "cloudflare" | "vercel" | undefined;
5
6
  plugins?: {
6
7
  device?: boolean | undefined;
7
8
  errors?: boolean | undefined;
@@ -11,6 +12,19 @@ export declare function createBuildConfigResolver(observe?: (result: Awaited<Ret
11
12
  replay?: boolean | undefined;
12
13
  } | undefined;
13
14
  serverTracing?: "drain" | "full" | undefined;
15
+ } | {
16
+ ingestUrl?: string | undefined;
17
+ logSourcing?: "drain" | "sdk" | undefined;
18
+ plugins?: {
19
+ device?: boolean | undefined;
20
+ errors?: boolean | undefined;
21
+ logs?: boolean | undefined;
22
+ pageEvents?: boolean | undefined;
23
+ rageClick?: boolean | undefined;
24
+ replay?: boolean | undefined;
25
+ } | undefined;
26
+ serverTracing?: "drain" | "full" | undefined;
27
+ platform: "cloudflare" | "vercel" | null;
14
28
  }>;
15
29
  declare function fetchBuildConfig(apiUrl: string, publicKey: string): Promise<{
16
30
  config: {
@@ -25,7 +39,24 @@ declare function fetchBuildConfig(apiUrl: string, publicKey: string): Promise<{
25
39
  replay?: boolean | undefined;
26
40
  } | undefined;
27
41
  serverTracing?: "drain" | "full" | undefined;
42
+ platform: "cloudflare" | "vercel" | null;
28
43
  };
29
44
  status: "fallback" | "fetched";
45
+ } | {
46
+ config: {
47
+ ingestUrl?: string | undefined;
48
+ logSourcing?: "drain" | "sdk" | undefined;
49
+ platform?: "cloudflare" | "vercel" | undefined;
50
+ plugins?: {
51
+ device?: boolean | undefined;
52
+ errors?: boolean | undefined;
53
+ logs?: boolean | undefined;
54
+ pageEvents?: boolean | undefined;
55
+ rageClick?: boolean | undefined;
56
+ replay?: boolean | undefined;
57
+ } | undefined;
58
+ serverTracing?: "drain" | "full" | undefined;
59
+ };
60
+ status: "fallback";
30
61
  }>;
31
62
  //#endregion
package/dist/config.d.mts CHANGED
@@ -2,6 +2,7 @@
2
2
  export declare function createBuildConfigResolver(observe?: (result: Awaited<ReturnType<typeof fetchBuildConfig>>) => void): (apiUrl: string, publicKey: string, buildScope?: string) => Promise<{
3
3
  ingestUrl?: string | undefined;
4
4
  logSourcing?: "drain" | "sdk" | undefined;
5
+ platform?: "cloudflare" | "vercel" | undefined;
5
6
  plugins?: {
6
7
  device?: boolean | undefined;
7
8
  errors?: boolean | undefined;
@@ -11,6 +12,19 @@ export declare function createBuildConfigResolver(observe?: (result: Awaited<Ret
11
12
  replay?: boolean | undefined;
12
13
  } | undefined;
13
14
  serverTracing?: "drain" | "full" | undefined;
15
+ } | {
16
+ ingestUrl?: string | undefined;
17
+ logSourcing?: "drain" | "sdk" | undefined;
18
+ plugins?: {
19
+ device?: boolean | undefined;
20
+ errors?: boolean | undefined;
21
+ logs?: boolean | undefined;
22
+ pageEvents?: boolean | undefined;
23
+ rageClick?: boolean | undefined;
24
+ replay?: boolean | undefined;
25
+ } | undefined;
26
+ serverTracing?: "drain" | "full" | undefined;
27
+ platform: "cloudflare" | "vercel" | null;
14
28
  }>;
15
29
  declare function fetchBuildConfig(apiUrl: string, publicKey: string): Promise<{
16
30
  config: {
@@ -25,7 +39,24 @@ declare function fetchBuildConfig(apiUrl: string, publicKey: string): Promise<{
25
39
  replay?: boolean | undefined;
26
40
  } | undefined;
27
41
  serverTracing?: "drain" | "full" | undefined;
42
+ platform: "cloudflare" | "vercel" | null;
28
43
  };
29
44
  status: "fallback" | "fetched";
45
+ } | {
46
+ config: {
47
+ ingestUrl?: string | undefined;
48
+ logSourcing?: "drain" | "sdk" | undefined;
49
+ platform?: "cloudflare" | "vercel" | undefined;
50
+ plugins?: {
51
+ device?: boolean | undefined;
52
+ errors?: boolean | undefined;
53
+ logs?: boolean | undefined;
54
+ pageEvents?: boolean | undefined;
55
+ rageClick?: boolean | undefined;
56
+ replay?: boolean | undefined;
57
+ } | undefined;
58
+ serverTracing?: "drain" | "full" | undefined;
59
+ };
60
+ status: "fallback";
30
61
  }>;
31
62
  //#endregion
package/dist/config.mjs CHANGED
@@ -1 +1 @@
1
- import{InterfereClient}from"@interfere/javascript";import{buildConfigSchema}from"@interfere/types/sdk/build-config";import{remoteConfigInputSchema}from"@interfere/types/sdk/remote-config";function createBuildConfigResolver(observe){let pending=new Map;return async(apiUrl,publicKey,buildScope=``)=>{let key=`${buildScope}\n${apiUrl}\n${publicKey}`,config=pending.get(key);config||(config=fetchBuildConfig(apiUrl,publicKey),pending.set(key,config));let result=await config;return observe?.(result),result.config}}async function fetchBuildConfig(apiUrl,publicKey){try{let response=await new InterfereClient({baseUrl:apiUrl,publicKeyHeader:{apiKey:publicKey},timeoutInSeconds:3,maxRetries:0}).config.getSdkConfig();return{config:buildConfigSchema.parse(response),status:remoteConfigInputSchema.safeParse(response).success?`fetched`:`fallback`}}catch{return{config:buildConfigSchema.parse({}),status:`fallback`}}}export{createBuildConfigResolver};
1
+ import{InterfereClient}from"@interfere/javascript";import{buildConfigSchema}from"@interfere/types/sdk/build-config";import{remoteConfigInputSchema}from"@interfere/types/sdk/remote-config";function createBuildConfigResolver(observe){let pending=new Map;return async(apiUrl,publicKey,buildScope=``)=>{let key=`${buildScope}\n${apiUrl}\n${publicKey}`,config=pending.get(key);config||(config=fetchBuildConfig(apiUrl,publicKey),pending.set(key,config));let result=await config;return observe?.(result),result.config}}async function fetchBuildConfig(apiUrl,publicKey){try{let response=await new InterfereClient({baseUrl:apiUrl,publicKeyHeader:{apiKey:publicKey},timeoutInSeconds:3,maxRetries:0}).config.getSdkConfig(),config=buildConfigSchema.parse(response);return{config:{...config,platform:config.platform??null},status:remoteConfigInputSchema.safeParse(response).success?`fetched`:`fallback`}}catch{return{config:buildConfigSchema.parse({}),status:`fallback`}}}export{createBuildConfigResolver};
@@ -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};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@interfere/build",
3
- "version": "0.3.3",
3
+ "version": "0.4.1",
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": {
@@ -91,8 +102,8 @@
91
102
  "typecheck": "bun check"
92
103
  },
93
104
  "dependencies": {
94
- "@interfere/javascript": "^0.3.0",
95
- "@interfere/types": "^10.4.0"
105
+ "@interfere/javascript": "^0.3.1",
106
+ "@interfere/types": "^10.5.1"
96
107
  },
97
108
  "devDependencies": {
98
109
  "@interfere/typescript-config": "^9.0.2",