@terreno/rtk 0.7.1 → 0.8.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.
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Coerce a value to a valid build number (finite positive integer), or undefined.
3
+ * Useful for validating build numbers from environment variables, config overrides, etc.
4
+ */
5
+ export declare const coerceBuildNumber: (value: unknown) => number | undefined;
6
+ interface ResolveBuildNumberOptions {
7
+ /** Hard-coded override — set to a number to test version-check behavior locally. */
8
+ override?: number;
9
+ /** Existing build number from Expo config (`config.extra?.buildNumber`). */
10
+ configValue?: unknown;
11
+ /** Environment variable name to read (default: `"EXPO_PUBLIC_BUILD_NUMBER"`). */
12
+ envVar?: string;
13
+ }
14
+ /**
15
+ * Resolve a build number using the standard Terreno priority chain:
16
+ * 1. `override` (for local testing)
17
+ * 2. `configValue` (from existing Expo config / EAS Build)
18
+ * 3. `EXPO_PUBLIC_BUILD_NUMBER` env var (or custom `envVar`)
19
+ * 4. `git rev-list --count HEAD`
20
+ * 5. `undefined` (version check will be skipped)
21
+ *
22
+ * Import this in your `app.config.ts` to avoid duplicating the resolution logic:
23
+ * ```ts
24
+ * import {resolveBuildNumber} from "@terreno/rtk/buildNumber";
25
+ *
26
+ * export default ({config}) => ({
27
+ * ...config,
28
+ * extra: {...config.extra, buildNumber: resolveBuildNumber({configValue: config.extra?.buildNumber})},
29
+ * });
30
+ * ```
31
+ */
32
+ export declare const resolveBuildNumber: (options?: ResolveBuildNumberOptions) => number | undefined;
33
+ export {};
34
+ //# sourceMappingURL=buildNumber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildNumber.d.ts","sourceRoot":"","sources":["../src/buildNumber.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,MAAM,GAAG,SAM3D,CAAC;AAEF,UAAU,yBAAyB;IACjC,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAS,yBAA8B,KAAG,MAAM,GAAG,SA2BrF,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { execSync } from "node:child_process";
2
+ /**
3
+ * Coerce a value to a valid build number (finite positive integer), or undefined.
4
+ * Useful for validating build numbers from environment variables, config overrides, etc.
5
+ */
6
+ export const coerceBuildNumber = (value) => {
7
+ if (value === undefined || value === null) {
8
+ return undefined;
9
+ }
10
+ const n = typeof value === "number" ? value : parseInt(String(value), 10);
11
+ return Number.isFinite(n) ? n : undefined;
12
+ };
13
+ /**
14
+ * Resolve a build number using the standard Terreno priority chain:
15
+ * 1. `override` (for local testing)
16
+ * 2. `configValue` (from existing Expo config / EAS Build)
17
+ * 3. `EXPO_PUBLIC_BUILD_NUMBER` env var (or custom `envVar`)
18
+ * 4. `git rev-list --count HEAD`
19
+ * 5. `undefined` (version check will be skipped)
20
+ *
21
+ * Import this in your `app.config.ts` to avoid duplicating the resolution logic:
22
+ * ```ts
23
+ * import {resolveBuildNumber} from "@terreno/rtk/buildNumber";
24
+ *
25
+ * export default ({config}) => ({
26
+ * ...config,
27
+ * extra: {...config.extra, buildNumber: resolveBuildNumber({configValue: config.extra?.buildNumber})},
28
+ * });
29
+ * ```
30
+ */
31
+ export const resolveBuildNumber = (options = {}) => {
32
+ const { override, configValue, envVar = "EXPO_PUBLIC_BUILD_NUMBER" } = options;
33
+ const fromOverride = coerceBuildNumber(override);
34
+ if (fromOverride !== undefined) {
35
+ return fromOverride;
36
+ }
37
+ const fromConfig = coerceBuildNumber(configValue);
38
+ if (fromConfig !== undefined) {
39
+ return fromConfig;
40
+ }
41
+ const envValue = process.env[envVar];
42
+ if (envValue) {
43
+ const fromEnv = coerceBuildNumber(envValue);
44
+ if (fromEnv !== undefined) {
45
+ return fromEnv;
46
+ }
47
+ }
48
+ try {
49
+ return parseInt(execSync("git rev-list --count HEAD").toString().trim(), 10);
50
+ }
51
+ catch {
52
+ // Leave undefined so the version check is skipped in environments without git
53
+ return undefined;
54
+ }
55
+ };
56
+ //# sourceMappingURL=buildNumber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildNumber.js","sourceRoot":"","sources":["../src/buildNumber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAsB,EAAE;IACtE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1E,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC,CAAC;AAWF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,UAAqC,EAAE,EAAsB,EAAE;IAChG,MAAM,EAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,0BAA0B,EAAC,GAAG,OAAO,CAAC;IAE7E,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAClD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;QAC9E,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC"}