@expo/eas-build-job 0.2.97 → 0.2.99

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/dist/android.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Joi from 'joi';
2
- import { ArchiveSource, Env, Platform, Workflow, Cache, EnvironmentSecret } from './common';
2
+ import { ArchiveSource, Env, Platform, Workflow, Cache, EnvironmentSecret, ImageMatchRule, BuildTrigger } from './common';
3
3
  export interface Keystore {
4
4
  dataBase64: string;
5
5
  keystorePassword: string;
@@ -11,12 +11,7 @@ export declare enum BuildType {
11
11
  APP_BUNDLE = "app-bundle"
12
12
  }
13
13
  export declare const builderBaseImages: readonly ["default", "latest", "stable", "ubuntu-18.04-android-30-ndk-r19c", "ubuntu-20.04-android-30-ndk-r21e", "ubuntu-18.04-jdk-8-ndk-r19c", "ubuntu-18.04-jdk-11-ndk-r19c", "ubuntu-20.04-jdk-8-ndk-r21e", "ubuntu-20.04-jdk-11-ndk-r21e", "ubuntu-22.04-jdk-8-ndk-r21e", "ubuntu-22.04-jdk-11-ndk-r21e"];
14
- interface ImageMatchRule {
15
- image: typeof builderBaseImages[number];
16
- reactNativeSemverRange: string;
17
- sdkSemverRange: string;
18
- }
19
- export declare const reactNativeImageMatchRules: ImageMatchRule[];
14
+ export declare const imageMatchRules: ImageMatchRule<typeof builderBaseImages[number]>[];
20
15
  export interface BuilderEnvironment {
21
16
  image?: typeof builderBaseImages[number];
22
17
  node?: string;
@@ -27,9 +22,11 @@ export interface BuilderEnvironment {
27
22
  }
28
23
  export interface Job {
29
24
  type: Workflow;
25
+ triggeredBy: BuildTrigger;
30
26
  projectArchive: ArchiveSource;
31
27
  platform: Platform.ANDROID;
32
28
  projectRootDirectory: string;
29
+ buildProfile?: string;
33
30
  releaseChannel?: string;
34
31
  updates?: {
35
32
  channel?: string;
@@ -39,6 +36,7 @@ export interface Job {
39
36
  keystore: Keystore;
40
37
  };
41
38
  environmentSecrets?: EnvironmentSecret[];
39
+ robotAccessToken?: string;
42
40
  };
43
41
  builderEnvironment?: BuilderEnvironment;
44
42
  cache: Cache;
@@ -64,4 +62,3 @@ export interface Job {
64
62
  };
65
63
  }
66
64
  export declare const JobSchema: Joi.ObjectSchema<any>;
67
- export {};
package/dist/android.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.JobSchema = exports.reactNativeImageMatchRules = exports.builderBaseImages = exports.BuildType = void 0;
6
+ exports.JobSchema = exports.imageMatchRules = exports.builderBaseImages = exports.BuildType = void 0;
7
7
  const joi_1 = __importDefault(require("joi"));
8
8
  const common_1 = require("./common");
9
9
  const KeystoreSchema = joi_1.default.object({
@@ -30,7 +30,7 @@ exports.builderBaseImages = [
30
30
  'ubuntu-22.04-jdk-8-ndk-r21e',
31
31
  'ubuntu-22.04-jdk-11-ndk-r21e',
32
32
  ];
33
- exports.reactNativeImageMatchRules = [
33
+ exports.imageMatchRules = [
34
34
  {
35
35
  image: 'ubuntu-18.04-jdk-11-ndk-r19c',
36
36
  reactNativeSemverRange: '>=0.68.0',
@@ -64,9 +64,17 @@ exports.JobSchema = joi_1.default.object({
64
64
  type: joi_1.default.string()
65
65
  .valid(...Object.values(common_1.Workflow))
66
66
  .required(),
67
+ triggeredBy: joi_1.default.string()
68
+ .valid(...Object.values(common_1.BuildTrigger))
69
+ .default(common_1.BuildTrigger.EAS_CLI),
67
70
  projectArchive: common_1.ArchiveSourceSchema.required(),
68
71
  platform: joi_1.default.string().valid(common_1.Platform.ANDROID).required(),
69
72
  projectRootDirectory: joi_1.default.string().required(),
73
+ buildProfile: joi_1.default.when('triggeredBy', {
74
+ is: common_1.BuildTrigger.GIT_BASED_INTEGRATION,
75
+ then: joi_1.default.string().required(),
76
+ otherwise: joi_1.default.string(),
77
+ }),
70
78
  releaseChannel: joi_1.default.string(),
71
79
  updates: joi_1.default.object({
72
80
  channel: joi_1.default.string(),
@@ -74,6 +82,7 @@ exports.JobSchema = joi_1.default.object({
74
82
  secrets: joi_1.default.object({
75
83
  buildCredentials: joi_1.default.object({ keystore: KeystoreSchema.required() }),
76
84
  environmentSecrets: common_1.EnvironmentSecretsSchema,
85
+ robotAccessToken: joi_1.default.string(),
77
86
  }).required(),
78
87
  builderEnvironment: BuilderEnvironmentSchema,
79
88
  cache: common_1.CacheSchema.default(),
@@ -1 +1 @@
1
- {"version":3,"file":"android.js","sourceRoot":"","sources":["../src/android.ts"],"names":[],"mappings":"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","sourcesContent":["import Joi from 'joi';\n\nimport {\n ArchiveSource,\n ArchiveSourceSchema,\n Env,\n EnvSchema,\n Platform,\n Workflow,\n Cache,\n CacheSchema,\n EnvironmentSecretsSchema,\n EnvironmentSecret,\n} from './common';\n\nexport interface Keystore {\n dataBase64: string;\n keystorePassword: string;\n keyAlias: string;\n keyPassword?: string;\n}\n\nconst KeystoreSchema = Joi.object({\n dataBase64: Joi.string().required(),\n keystorePassword: Joi.string().allow('').required(),\n keyAlias: Joi.string().required(),\n keyPassword: Joi.string().allow(''),\n});\n\nexport enum BuildType {\n APK = 'apk',\n APP_BUNDLE = 'app-bundle',\n}\n\nexport const builderBaseImages = [\n 'default',\n 'latest',\n 'stable',\n 'ubuntu-18.04-android-30-ndk-r19c', // legacy naming (image with java 8)\n 'ubuntu-20.04-android-30-ndk-r21e', // legacy naming (image with java 8)\n 'ubuntu-18.04-jdk-8-ndk-r19c',\n 'ubuntu-18.04-jdk-11-ndk-r19c',\n 'ubuntu-20.04-jdk-8-ndk-r21e',\n 'ubuntu-20.04-jdk-11-ndk-r21e',\n 'ubuntu-22.04-jdk-8-ndk-r21e',\n 'ubuntu-22.04-jdk-11-ndk-r21e',\n] as const;\n\ninterface ImageMatchRule {\n image: typeof builderBaseImages[number];\n reactNativeSemverRange: string;\n sdkSemverRange: string;\n}\n\nexport const reactNativeImageMatchRules: ImageMatchRule[] = [\n {\n image: 'ubuntu-18.04-jdk-11-ndk-r19c',\n reactNativeSemverRange: '>=0.68.0',\n sdkSemverRange: '<46',\n },\n {\n image: 'ubuntu-18.04-jdk-8-ndk-r19c',\n reactNativeSemverRange: '<0.68.0',\n sdkSemverRange: '<46',\n },\n {\n image: 'ubuntu-20.04-jdk-11-ndk-r21e',\n reactNativeSemverRange: '>=0.68.0',\n sdkSemverRange: '>=46',\n },\n {\n image: 'ubuntu-20.04-jdk-8-ndk-r21e',\n reactNativeSemverRange: '<0.68.0',\n sdkSemverRange: '>=46',\n },\n];\n\nexport interface BuilderEnvironment {\n image?: typeof builderBaseImages[number];\n node?: string;\n yarn?: string;\n expoCli?: string;\n ndk?: string;\n env?: Env;\n}\n\nconst BuilderEnvironmentSchema = Joi.object({\n image: Joi.string().valid(...builderBaseImages),\n node: Joi.string(),\n yarn: Joi.string(),\n expoCli: Joi.string(),\n ndk: Joi.string(),\n env: EnvSchema,\n});\n\nexport interface Job {\n type: Workflow;\n projectArchive: ArchiveSource;\n platform: Platform.ANDROID;\n projectRootDirectory: string;\n releaseChannel?: string;\n updates?: {\n channel?: string;\n };\n secrets: {\n buildCredentials?: {\n keystore: Keystore;\n };\n environmentSecrets?: EnvironmentSecret[];\n };\n builderEnvironment?: BuilderEnvironment;\n cache: Cache;\n developmentClient?: boolean;\n version?: {\n versionCode?: string;\n /**\n * support for this field is implemented, but specifying it is disabled on schema level\n */\n versionName?: string;\n /**\n * support for this field is implemented, but specifying it is disabled on schema level\n */\n runtimeVersion?: string;\n };\n buildArtifactPaths?: string[];\n\n gradleCommand?: string;\n applicationArchivePath?: string;\n\n buildType?: BuildType;\n username?: string;\n\n experimental?: {\n prebuildCommand?: string;\n };\n}\n\nexport const JobSchema = Joi.object({\n type: Joi.string()\n .valid(...Object.values(Workflow))\n .required(),\n projectArchive: ArchiveSourceSchema.required(),\n platform: Joi.string().valid(Platform.ANDROID).required(),\n projectRootDirectory: Joi.string().required(),\n releaseChannel: Joi.string(),\n updates: Joi.object({\n channel: Joi.string(),\n }),\n secrets: Joi.object({\n buildCredentials: Joi.object({ keystore: KeystoreSchema.required() }),\n environmentSecrets: EnvironmentSecretsSchema,\n }).required(),\n builderEnvironment: BuilderEnvironmentSchema,\n cache: CacheSchema.default(),\n developmentClient: Joi.boolean(),\n version: Joi.object({\n versionCode: Joi.string().regex(/^\\d+$/),\n }),\n buildArtifactPaths: Joi.array().items(Joi.string()),\n\n gradleCommand: Joi.string(),\n applicationArchivePath: Joi.string(),\n\n buildType: Joi.string().valid(...Object.values(BuildType)),\n username: Joi.string(),\n\n experimental: Joi.object({\n prebuildCommand: Joi.string(),\n }),\n}).oxor('releaseChannel', 'updates.channel');\n"]}
1
+ {"version":3,"file":"android.js","sourceRoot":"","sources":["../src/android.ts"],"names":[],"mappings":"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","sourcesContent":["import Joi from 'joi';\n\nimport {\n ArchiveSource,\n ArchiveSourceSchema,\n Env,\n EnvSchema,\n Platform,\n Workflow,\n Cache,\n CacheSchema,\n EnvironmentSecretsSchema,\n EnvironmentSecret,\n ImageMatchRule,\n BuildTrigger,\n} from './common';\n\nexport interface Keystore {\n dataBase64: string;\n keystorePassword: string;\n keyAlias: string;\n keyPassword?: string;\n}\n\nconst KeystoreSchema = Joi.object({\n dataBase64: Joi.string().required(),\n keystorePassword: Joi.string().allow('').required(),\n keyAlias: Joi.string().required(),\n keyPassword: Joi.string().allow(''),\n});\n\nexport enum BuildType {\n APK = 'apk',\n APP_BUNDLE = 'app-bundle',\n}\n\nexport const builderBaseImages = [\n 'default',\n 'latest',\n 'stable',\n 'ubuntu-18.04-android-30-ndk-r19c', // legacy naming (image with java 8)\n 'ubuntu-20.04-android-30-ndk-r21e', // legacy naming (image with java 8)\n 'ubuntu-18.04-jdk-8-ndk-r19c',\n 'ubuntu-18.04-jdk-11-ndk-r19c',\n 'ubuntu-20.04-jdk-8-ndk-r21e',\n 'ubuntu-20.04-jdk-11-ndk-r21e',\n 'ubuntu-22.04-jdk-8-ndk-r21e',\n 'ubuntu-22.04-jdk-11-ndk-r21e',\n] as const;\n\nexport const imageMatchRules: ImageMatchRule<typeof builderBaseImages[number]>[] = [\n {\n image: 'ubuntu-18.04-jdk-11-ndk-r19c',\n reactNativeSemverRange: '>=0.68.0',\n sdkSemverRange: '<46',\n },\n {\n image: 'ubuntu-18.04-jdk-8-ndk-r19c',\n reactNativeSemverRange: '<0.68.0',\n sdkSemverRange: '<46',\n },\n {\n image: 'ubuntu-20.04-jdk-11-ndk-r21e',\n reactNativeSemverRange: '>=0.68.0',\n sdkSemverRange: '>=46',\n },\n {\n image: 'ubuntu-20.04-jdk-8-ndk-r21e',\n reactNativeSemverRange: '<0.68.0',\n sdkSemverRange: '>=46',\n },\n];\n\nexport interface BuilderEnvironment {\n image?: typeof builderBaseImages[number];\n node?: string;\n yarn?: string;\n expoCli?: string;\n ndk?: string;\n env?: Env;\n}\n\nconst BuilderEnvironmentSchema = Joi.object({\n image: Joi.string().valid(...builderBaseImages),\n node: Joi.string(),\n yarn: Joi.string(),\n expoCli: Joi.string(),\n ndk: Joi.string(),\n env: EnvSchema,\n});\n\nexport interface Job {\n type: Workflow;\n triggeredBy: BuildTrigger;\n projectArchive: ArchiveSource;\n platform: Platform.ANDROID;\n projectRootDirectory: string;\n buildProfile?: string;\n releaseChannel?: string;\n updates?: {\n channel?: string;\n };\n secrets: {\n buildCredentials?: {\n keystore: Keystore;\n };\n environmentSecrets?: EnvironmentSecret[];\n robotAccessToken?: string;\n };\n builderEnvironment?: BuilderEnvironment;\n cache: Cache;\n developmentClient?: boolean;\n version?: {\n versionCode?: string;\n /**\n * support for this field is implemented, but specifying it is disabled on schema level\n */\n versionName?: string;\n /**\n * support for this field is implemented, but specifying it is disabled on schema level\n */\n runtimeVersion?: string;\n };\n buildArtifactPaths?: string[];\n\n gradleCommand?: string;\n applicationArchivePath?: string;\n\n buildType?: BuildType;\n username?: string;\n\n experimental?: {\n prebuildCommand?: string;\n };\n}\n\nexport const JobSchema = Joi.object({\n type: Joi.string()\n .valid(...Object.values(Workflow))\n .required(),\n triggeredBy: Joi.string()\n .valid(...Object.values(BuildTrigger))\n .default(BuildTrigger.EAS_CLI),\n projectArchive: ArchiveSourceSchema.required(),\n platform: Joi.string().valid(Platform.ANDROID).required(),\n projectRootDirectory: Joi.string().required(),\n buildProfile: Joi.when('triggeredBy', {\n is: BuildTrigger.GIT_BASED_INTEGRATION,\n then: Joi.string().required(),\n otherwise: Joi.string(),\n }),\n releaseChannel: Joi.string(),\n updates: Joi.object({\n channel: Joi.string(),\n }),\n secrets: Joi.object({\n buildCredentials: Joi.object({ keystore: KeystoreSchema.required() }),\n environmentSecrets: EnvironmentSecretsSchema,\n robotAccessToken: Joi.string(),\n }).required(),\n builderEnvironment: BuilderEnvironmentSchema,\n cache: CacheSchema.default(),\n developmentClient: Joi.boolean(),\n version: Joi.object({\n versionCode: Joi.string().regex(/^\\d+$/),\n }),\n buildArtifactPaths: Joi.array().items(Joi.string()),\n\n gradleCommand: Joi.string(),\n applicationArchivePath: Joi.string(),\n\n buildType: Joi.string().valid(...Object.values(BuildType)),\n username: Joi.string(),\n\n experimental: Joi.object({\n prebuildCommand: Joi.string(),\n }),\n}).oxor('releaseChannel', 'updates.channel');\n"]}
package/dist/common.d.ts CHANGED
@@ -2,7 +2,8 @@ import Joi from 'joi';
2
2
  import { BuildPhase, BuildPhaseResult } from './logs';
3
3
  export declare enum Workflow {
4
4
  GENERIC = "generic",
5
- MANAGED = "managed"
5
+ MANAGED = "managed",
6
+ UNKNOWN = "unknown"
6
7
  }
7
8
  export declare enum Platform {
8
9
  ANDROID = "android",
@@ -12,7 +13,12 @@ export declare enum ArchiveSourceType {
12
13
  S3 = "S3",
13
14
  URL = "URL",
14
15
  PATH = "PATH",
15
- GCS = "GCS"
16
+ GCS = "GCS",
17
+ GIT = "GIT"
18
+ }
19
+ export declare enum BuildTrigger {
20
+ EAS_CLI = "EAS_CLI",
21
+ GIT_BASED_INTEGRATION = "GIT_BASED_INTEGRATION"
16
22
  }
17
23
  export declare type ArchiveSource = {
18
24
  type: ArchiveSourceType.S3;
@@ -26,6 +32,17 @@ export declare type ArchiveSource = {
26
32
  } | {
27
33
  type: ArchiveSourceType.PATH;
28
34
  path: string;
35
+ } | {
36
+ type: ArchiveSourceType.GIT;
37
+ /**
38
+ * Url that can be used to clone repository.
39
+ * It should contain embedded credentials for private registries.
40
+ */
41
+ repositoryUrl: string;
42
+ /**
43
+ * Git commit hash, branch, or tag
44
+ */
45
+ gitRef: string;
29
46
  };
30
47
  export declare const ArchiveSourceSchema: Joi.ObjectSchema<ArchiveSource>;
31
48
  export declare type Env = Record<string, string>;
@@ -53,3 +70,9 @@ export interface BuildPhaseStats {
53
70
  result: BuildPhaseResult;
54
71
  durationMs: number;
55
72
  }
73
+ export interface ImageMatchRule<Image extends string> {
74
+ image: Image;
75
+ reactNativeSemverRange?: string;
76
+ sdkSemverRange?: string;
77
+ workflows?: Workflow[];
78
+ }
package/dist/common.js CHANGED
@@ -3,12 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CacheSchema = exports.EnvironmentSecretsSchema = exports.EnvironmentSecretType = exports.EnvSchema = exports.ArchiveSourceSchema = exports.ArchiveSourceType = exports.Platform = exports.Workflow = void 0;
6
+ exports.CacheSchema = exports.EnvironmentSecretsSchema = exports.EnvironmentSecretType = exports.EnvSchema = exports.ArchiveSourceSchema = exports.BuildTrigger = exports.ArchiveSourceType = exports.Platform = exports.Workflow = void 0;
7
7
  const joi_1 = __importDefault(require("joi"));
8
8
  var Workflow;
9
9
  (function (Workflow) {
10
10
  Workflow["GENERIC"] = "generic";
11
11
  Workflow["MANAGED"] = "managed";
12
+ Workflow["UNKNOWN"] = "unknown";
12
13
  })(Workflow = exports.Workflow || (exports.Workflow = {}));
13
14
  var Platform;
14
15
  (function (Platform) {
@@ -21,7 +22,13 @@ var ArchiveSourceType;
21
22
  ArchiveSourceType["URL"] = "URL";
22
23
  ArchiveSourceType["PATH"] = "PATH";
23
24
  ArchiveSourceType["GCS"] = "GCS";
25
+ ArchiveSourceType["GIT"] = "GIT";
24
26
  })(ArchiveSourceType = exports.ArchiveSourceType || (exports.ArchiveSourceType = {}));
27
+ var BuildTrigger;
28
+ (function (BuildTrigger) {
29
+ BuildTrigger["EAS_CLI"] = "EAS_CLI";
30
+ BuildTrigger["GIT_BASED_INTEGRATION"] = "GIT_BASED_INTEGRATION";
31
+ })(BuildTrigger = exports.BuildTrigger || (exports.BuildTrigger = {}));
25
32
  exports.ArchiveSourceSchema = joi_1.default.object({
26
33
  type: joi_1.default.string()
27
34
  .valid(...Object.values(ArchiveSourceType))
@@ -44,6 +51,13 @@ exports.ArchiveSourceSchema = joi_1.default.object({
44
51
  type: joi_1.default.string().valid(ArchiveSourceType.URL).required(),
45
52
  url: joi_1.default.string().uri().required(),
46
53
  }),
54
+ })
55
+ .when(joi_1.default.object({ type: ArchiveSourceType.GIT }).unknown(), {
56
+ then: joi_1.default.object({
57
+ type: joi_1.default.string().valid(ArchiveSourceType.GIT).required(),
58
+ repositoryUrl: joi_1.default.string().required(),
59
+ gitRef: joi_1.default.string().required(),
60
+ }),
47
61
  })
48
62
  .when(joi_1.default.object({ type: ArchiveSourceType.PATH }).unknown(), {
49
63
  then: joi_1.default.object({
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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","sourcesContent":["import Joi from 'joi';\n\nimport { BuildPhase, BuildPhaseResult } from './logs';\n\nexport enum Workflow {\n GENERIC = 'generic',\n MANAGED = 'managed',\n}\n\nexport enum Platform {\n ANDROID = 'android',\n IOS = 'ios',\n}\n\nexport enum ArchiveSourceType {\n S3 = 'S3',\n URL = 'URL',\n PATH = 'PATH',\n GCS = 'GCS',\n}\n\nexport type ArchiveSource =\n | { type: ArchiveSourceType.S3; bucketKey: string }\n | { type: ArchiveSourceType.GCS; bucketKey: string }\n | { type: ArchiveSourceType.URL; url: string }\n | { type: ArchiveSourceType.PATH; path: string };\n\nexport const ArchiveSourceSchema = Joi.object<ArchiveSource>({\n type: Joi.string()\n .valid(...Object.values(ArchiveSourceType))\n .required(),\n})\n .when(Joi.object({ type: ArchiveSourceType.GCS }).unknown(), {\n then: Joi.object({\n type: Joi.string().valid(ArchiveSourceType.GCS).required(),\n bucketKey: Joi.string().required(),\n }),\n })\n .when(Joi.object({ type: ArchiveSourceType.S3 }).unknown(), {\n then: Joi.object({\n type: Joi.string().valid(ArchiveSourceType.S3).required(),\n bucketKey: Joi.string().required(),\n }),\n })\n .when(Joi.object({ type: ArchiveSourceType.URL }).unknown(), {\n then: Joi.object({\n type: Joi.string().valid(ArchiveSourceType.URL).required(),\n url: Joi.string().uri().required(),\n }),\n })\n .when(Joi.object({ type: ArchiveSourceType.PATH }).unknown(), {\n then: Joi.object({\n type: Joi.string().valid(ArchiveSourceType.PATH).required(),\n path: Joi.string().required(),\n }),\n });\n\nexport type Env = Record<string, string>;\nexport const EnvSchema = Joi.object().pattern(Joi.string(), Joi.string());\n\nexport type EnvironmentSecret = {\n name: string;\n type: EnvironmentSecretType;\n value: string;\n};\nexport enum EnvironmentSecretType {\n STRING = 'string',\n FILE = 'file',\n}\nexport const EnvironmentSecretsSchema = Joi.array().items(\n Joi.object({\n name: Joi.string().required(),\n value: Joi.string().required(),\n type: Joi.string()\n .valid(...Object.values(EnvironmentSecretType))\n .required(),\n })\n);\n\nexport interface Cache {\n disabled: boolean;\n clear: boolean;\n key?: string;\n cacheDefaultPaths: boolean;\n customPaths: string[];\n}\n\nexport const CacheSchema = Joi.object({\n disabled: Joi.boolean().default(false),\n clear: Joi.boolean().default(false),\n key: Joi.string().allow('').max(128),\n cacheDefaultPaths: Joi.boolean().default(true),\n customPaths: Joi.array().items(Joi.string()).default([]),\n});\n\nexport interface BuildPhaseStats {\n buildPhase: BuildPhase;\n result: BuildPhaseResult;\n durationMs: number;\n}\n"]}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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","sourcesContent":["import Joi from 'joi';\n\nimport { BuildPhase, BuildPhaseResult } from './logs';\n\nexport enum Workflow {\n GENERIC = 'generic',\n MANAGED = 'managed',\n UNKNOWN = 'unknown',\n}\n\nexport enum Platform {\n ANDROID = 'android',\n IOS = 'ios',\n}\n\nexport enum ArchiveSourceType {\n S3 = 'S3',\n URL = 'URL',\n PATH = 'PATH',\n GCS = 'GCS',\n GIT = 'GIT',\n}\n\nexport enum BuildTrigger {\n EAS_CLI = 'EAS_CLI',\n GIT_BASED_INTEGRATION = 'GIT_BASED_INTEGRATION',\n}\n\nexport type ArchiveSource =\n | { type: ArchiveSourceType.S3; bucketKey: string }\n | { type: ArchiveSourceType.GCS; bucketKey: string }\n | { type: ArchiveSourceType.URL; url: string }\n | { type: ArchiveSourceType.PATH; path: string }\n | {\n type: ArchiveSourceType.GIT;\n /**\n * Url that can be used to clone repository.\n * It should contain embedded credentials for private registries.\n */\n repositoryUrl: string;\n /**\n * Git commit hash, branch, or tag\n */\n gitRef: string;\n };\n\nexport const ArchiveSourceSchema = Joi.object<ArchiveSource>({\n type: Joi.string()\n .valid(...Object.values(ArchiveSourceType))\n .required(),\n})\n .when(Joi.object({ type: ArchiveSourceType.GCS }).unknown(), {\n then: Joi.object({\n type: Joi.string().valid(ArchiveSourceType.GCS).required(),\n bucketKey: Joi.string().required(),\n }),\n })\n .when(Joi.object({ type: ArchiveSourceType.S3 }).unknown(), {\n then: Joi.object({\n type: Joi.string().valid(ArchiveSourceType.S3).required(),\n bucketKey: Joi.string().required(),\n }),\n })\n .when(Joi.object({ type: ArchiveSourceType.URL }).unknown(), {\n then: Joi.object({\n type: Joi.string().valid(ArchiveSourceType.URL).required(),\n url: Joi.string().uri().required(),\n }),\n })\n .when(Joi.object({ type: ArchiveSourceType.GIT }).unknown(), {\n then: Joi.object({\n type: Joi.string().valid(ArchiveSourceType.GIT).required(),\n repositoryUrl: Joi.string().required(),\n gitRef: Joi.string().required(),\n }),\n })\n .when(Joi.object({ type: ArchiveSourceType.PATH }).unknown(), {\n then: Joi.object({\n type: Joi.string().valid(ArchiveSourceType.PATH).required(),\n path: Joi.string().required(),\n }),\n });\n\nexport type Env = Record<string, string>;\nexport const EnvSchema = Joi.object().pattern(Joi.string(), Joi.string());\n\nexport type EnvironmentSecret = {\n name: string;\n type: EnvironmentSecretType;\n value: string;\n};\nexport enum EnvironmentSecretType {\n STRING = 'string',\n FILE = 'file',\n}\nexport const EnvironmentSecretsSchema = Joi.array().items(\n Joi.object({\n name: Joi.string().required(),\n value: Joi.string().required(),\n type: Joi.string()\n .valid(...Object.values(EnvironmentSecretType))\n .required(),\n })\n);\n\nexport interface Cache {\n disabled: boolean;\n clear: boolean;\n key?: string;\n cacheDefaultPaths: boolean;\n customPaths: string[];\n}\n\nexport const CacheSchema = Joi.object({\n disabled: Joi.boolean().default(false),\n clear: Joi.boolean().default(false),\n key: Joi.string().allow('').max(128),\n cacheDefaultPaths: Joi.boolean().default(true),\n customPaths: Joi.array().items(Joi.string()).default([]),\n});\n\nexport interface BuildPhaseStats {\n buildPhase: BuildPhase;\n result: BuildPhaseResult;\n durationMs: number;\n}\n\nexport interface ImageMatchRule<Image extends string> {\n image: Image;\n reactNativeSemverRange?: string;\n sdkSemverRange?: string;\n workflows?: Workflow[];\n}\n"]}
package/dist/ios.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Joi from 'joi';
2
- import { ArchiveSource, Env, Platform, Workflow, Cache, EnvironmentSecret } from './common';
2
+ import { ArchiveSource, Env, Platform, Workflow, Cache, EnvironmentSecret, ImageMatchRule, BuildTrigger } from './common';
3
3
  export declare type DistributionType = 'store' | 'internal' | 'simulator';
4
4
  export interface TargetCredentials {
5
5
  provisioningProfileBase64: string;
@@ -12,7 +12,7 @@ export interface DistributionCertificate {
12
12
  password: string;
13
13
  }
14
14
  export declare const builderBaseImages: readonly ["default", "latest", "stable", "macos-big-sur-11.4-xcode-12.5", "macos-big-sur-11.4-xcode-13.0", "macos-monterey-12.1-xcode-13.2", "macos-monterey-12.3-xcode-13.3", "macos-monterey-12.4-xcode-13.4", "macos-monterey-12.6-xcode-14.0", "macos-monterey-12.6-xcode-14.1"];
15
- export declare const sdkVersionToDefaultBuilderImage: Record<string, typeof builderBaseImages[number]>;
15
+ export declare const imageMatchRules: ImageMatchRule<typeof builderBaseImages[number]>[];
16
16
  export interface BuilderEnvironment {
17
17
  image?: typeof builderBaseImages[number];
18
18
  node?: string;
@@ -25,9 +25,11 @@ export interface BuilderEnvironment {
25
25
  }
26
26
  export interface Job {
27
27
  type: Workflow;
28
+ triggeredBy: BuildTrigger;
28
29
  projectArchive: ArchiveSource;
29
30
  platform: Platform.IOS;
30
31
  projectRootDirectory: string;
32
+ buildProfile?: string;
31
33
  releaseChannel?: string;
32
34
  updates?: {
33
35
  channel?: string;
@@ -35,6 +37,7 @@ export interface Job {
35
37
  secrets: {
36
38
  buildCredentials?: BuildCredentials;
37
39
  environmentSecrets?: EnvironmentSecret[];
40
+ robotAccessToken?: string;
38
41
  };
39
42
  builderEnvironment?: BuilderEnvironment;
40
43
  cache: Cache;
package/dist/ios.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.JobSchema = exports.sdkVersionToDefaultBuilderImage = exports.builderBaseImages = void 0;
6
+ exports.JobSchema = exports.imageMatchRules = exports.builderBaseImages = void 0;
7
7
  const joi_1 = __importDefault(require("joi"));
8
8
  const common_1 = require("./common");
9
9
  const TargetCredentialsSchema = joi_1.default.object().keys({
@@ -26,11 +26,26 @@ exports.builderBaseImages = [
26
26
  'macos-monterey-12.6-xcode-14.0',
27
27
  'macos-monterey-12.6-xcode-14.1',
28
28
  ];
29
- exports.sdkVersionToDefaultBuilderImage = {
30
- '<=44': 'macos-big-sur-11.4-xcode-13.0',
31
- '>=45 <47': 'macos-monterey-12.4-xcode-13.4',
32
- '>=47': 'macos-monterey-12.6-xcode-14.0',
33
- };
29
+ exports.imageMatchRules = [
30
+ {
31
+ image: 'macos-big-sur-11.4-xcode-13.0',
32
+ sdkSemverRange: '<=44',
33
+ workflows: [common_1.Workflow.MANAGED],
34
+ },
35
+ {
36
+ image: 'macos-monterey-12.4-xcode-13.4',
37
+ sdkSemverRange: '>=45 <47',
38
+ workflows: [common_1.Workflow.MANAGED],
39
+ },
40
+ {
41
+ image: 'macos-monterey-12.6-xcode-14.0',
42
+ sdkSemverRange: '>=47',
43
+ },
44
+ {
45
+ image: 'macos-monterey-12.6-xcode-14.0',
46
+ reactNativeSemverRange: '>=0.70.0',
47
+ },
48
+ ];
34
49
  const BuilderEnvironmentSchema = joi_1.default.object({
35
50
  image: joi_1.default.string().valid(...exports.builderBaseImages),
36
51
  node: joi_1.default.string(),
@@ -45,9 +60,17 @@ exports.JobSchema = joi_1.default.object({
45
60
  type: joi_1.default.string()
46
61
  .valid(...Object.values(common_1.Workflow))
47
62
  .required(),
63
+ triggeredBy: joi_1.default.string()
64
+ .valid(...Object.values(common_1.BuildTrigger))
65
+ .default(common_1.BuildTrigger.EAS_CLI),
48
66
  projectArchive: common_1.ArchiveSourceSchema.required(),
49
67
  platform: joi_1.default.string().valid(common_1.Platform.IOS).required(),
50
68
  projectRootDirectory: joi_1.default.string().required(),
69
+ buildProfile: joi_1.default.when('projectArchive', {
70
+ is: joi_1.default.string().valid(common_1.BuildTrigger.GIT_BASED_INTEGRATION),
71
+ then: joi_1.default.string().required(),
72
+ otherwise: joi_1.default.string(),
73
+ }),
51
74
  releaseChannel: joi_1.default.string(),
52
75
  updates: joi_1.default.object({
53
76
  channel: joi_1.default.string(),
@@ -55,6 +78,7 @@ exports.JobSchema = joi_1.default.object({
55
78
  secrets: joi_1.default.object({
56
79
  buildCredentials: BuildCredentialsSchema,
57
80
  environmentSecrets: common_1.EnvironmentSecretsSchema,
81
+ robotAccessToken: joi_1.default.string(),
58
82
  }).required(),
59
83
  builderEnvironment: BuilderEnvironmentSchema,
60
84
  cache: common_1.CacheSchema.default(),
package/dist/ios.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ios.js","sourceRoot":"","sources":["../src/ios.ts"],"names":[],"mappings":"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","sourcesContent":["import Joi from 'joi';\n\nimport {\n ArchiveSource,\n ArchiveSourceSchema,\n Env,\n EnvSchema,\n Platform,\n Workflow,\n Cache,\n CacheSchema,\n EnvironmentSecretsSchema,\n EnvironmentSecret,\n} from './common';\n\nexport type DistributionType = 'store' | 'internal' | 'simulator';\n\nconst TargetCredentialsSchema = Joi.object().keys({\n provisioningProfileBase64: Joi.string().required(),\n distributionCertificate: Joi.object({\n dataBase64: Joi.string().required(),\n password: Joi.string().allow('').required(),\n }).required(),\n});\n\nexport interface TargetCredentials {\n provisioningProfileBase64: string;\n distributionCertificate: DistributionCertificate;\n}\n\nconst BuildCredentialsSchema = Joi.object().pattern(\n Joi.string().required(),\n TargetCredentialsSchema\n);\n\ntype Target = string;\nexport type BuildCredentials = Record<Target, TargetCredentials>;\n\nexport interface DistributionCertificate {\n dataBase64: string;\n password: string;\n}\n\nexport const builderBaseImages = [\n 'default',\n 'latest',\n 'stable',\n 'macos-big-sur-11.4-xcode-12.5',\n 'macos-big-sur-11.4-xcode-13.0',\n 'macos-monterey-12.1-xcode-13.2',\n 'macos-monterey-12.3-xcode-13.3',\n 'macos-monterey-12.4-xcode-13.4',\n 'macos-monterey-12.6-xcode-14.0',\n 'macos-monterey-12.6-xcode-14.1',\n] as const;\n\nexport const sdkVersionToDefaultBuilderImage: Record<string, typeof builderBaseImages[number]> = {\n '<=44': 'macos-big-sur-11.4-xcode-13.0',\n '>=45 <47': 'macos-monterey-12.4-xcode-13.4',\n '>=47': 'macos-monterey-12.6-xcode-14.0',\n};\n\nexport interface BuilderEnvironment {\n image?: typeof builderBaseImages[number];\n node?: string;\n yarn?: string;\n expoCli?: string;\n bundler?: string;\n fastlane?: string;\n cocoapods?: string;\n env?: Env;\n}\n\nconst BuilderEnvironmentSchema = Joi.object({\n image: Joi.string().valid(...builderBaseImages),\n node: Joi.string(),\n yarn: Joi.string(),\n expoCli: Joi.string(),\n bundler: Joi.string(),\n fastlane: Joi.string(),\n cocoapods: Joi.string(),\n env: EnvSchema,\n});\n\nexport interface Job {\n type: Workflow;\n projectArchive: ArchiveSource;\n platform: Platform.IOS;\n projectRootDirectory: string;\n releaseChannel?: string;\n updates?: {\n channel?: string;\n };\n secrets: {\n buildCredentials?: BuildCredentials;\n environmentSecrets?: EnvironmentSecret[];\n };\n builderEnvironment?: BuilderEnvironment;\n cache: Cache;\n developmentClient?: boolean;\n simulator?: boolean;\n version?: {\n buildNumber?: string;\n /**\n * support for this field is implemented, but specifying it is disabled on schema level\n */\n appVersion?: string;\n /**\n * support for this field is implemented, but specifying it is disabled on schema level\n */\n runtimeVersion?: string;\n };\n buildArtifactPaths?: string[];\n\n scheme?: string;\n buildConfiguration?: string;\n applicationArchivePath?: string;\n\n username?: string;\n\n experimental?: {\n prebuildCommand?: string;\n };\n}\n\nexport const JobSchema = Joi.object({\n type: Joi.string()\n .valid(...Object.values(Workflow))\n .required(),\n projectArchive: ArchiveSourceSchema.required(),\n platform: Joi.string().valid(Platform.IOS).required(),\n projectRootDirectory: Joi.string().required(),\n releaseChannel: Joi.string(),\n updates: Joi.object({\n channel: Joi.string(),\n }),\n secrets: Joi.object({\n buildCredentials: BuildCredentialsSchema,\n environmentSecrets: EnvironmentSecretsSchema,\n }).required(),\n builderEnvironment: BuilderEnvironmentSchema,\n cache: CacheSchema.default(),\n developmentClient: Joi.boolean(),\n simulator: Joi.boolean(),\n version: Joi.object({\n buildNumber: Joi.string(),\n }),\n buildArtifactPaths: Joi.array().items(Joi.string()),\n\n scheme: Joi.string(),\n buildConfiguration: Joi.string(),\n applicationArchivePath: Joi.string(),\n\n username: Joi.string(),\n\n experimental: Joi.object({\n prebuildCommand: Joi.string(),\n }),\n}).oxor('releaseChannel', 'updates.channel');\n"]}
1
+ {"version":3,"file":"ios.js","sourceRoot":"","sources":["../src/ios.ts"],"names":[],"mappings":"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","sourcesContent":["import Joi from 'joi';\n\nimport {\n ArchiveSource,\n ArchiveSourceSchema,\n Env,\n EnvSchema,\n Platform,\n Workflow,\n Cache,\n CacheSchema,\n EnvironmentSecretsSchema,\n EnvironmentSecret,\n ImageMatchRule,\n BuildTrigger,\n} from './common';\n\nexport type DistributionType = 'store' | 'internal' | 'simulator';\n\nconst TargetCredentialsSchema = Joi.object().keys({\n provisioningProfileBase64: Joi.string().required(),\n distributionCertificate: Joi.object({\n dataBase64: Joi.string().required(),\n password: Joi.string().allow('').required(),\n }).required(),\n});\n\nexport interface TargetCredentials {\n provisioningProfileBase64: string;\n distributionCertificate: DistributionCertificate;\n}\n\nconst BuildCredentialsSchema = Joi.object().pattern(\n Joi.string().required(),\n TargetCredentialsSchema\n);\n\ntype Target = string;\nexport type BuildCredentials = Record<Target, TargetCredentials>;\n\nexport interface DistributionCertificate {\n dataBase64: string;\n password: string;\n}\n\nexport const builderBaseImages = [\n 'default',\n 'latest',\n 'stable',\n 'macos-big-sur-11.4-xcode-12.5',\n 'macos-big-sur-11.4-xcode-13.0',\n 'macos-monterey-12.1-xcode-13.2',\n 'macos-monterey-12.3-xcode-13.3',\n 'macos-monterey-12.4-xcode-13.4',\n 'macos-monterey-12.6-xcode-14.0',\n 'macos-monterey-12.6-xcode-14.1',\n] as const;\n\nexport const imageMatchRules: ImageMatchRule<typeof builderBaseImages[number]>[] = [\n {\n image: 'macos-big-sur-11.4-xcode-13.0',\n sdkSemverRange: '<=44',\n workflows: [Workflow.MANAGED],\n },\n {\n image: 'macos-monterey-12.4-xcode-13.4',\n sdkSemverRange: '>=45 <47',\n workflows: [Workflow.MANAGED],\n },\n {\n image: 'macos-monterey-12.6-xcode-14.0',\n sdkSemverRange: '>=47',\n },\n {\n image: 'macos-monterey-12.6-xcode-14.0',\n reactNativeSemverRange: '>=0.70.0',\n },\n];\n\nexport interface BuilderEnvironment {\n image?: typeof builderBaseImages[number];\n node?: string;\n yarn?: string;\n expoCli?: string;\n bundler?: string;\n fastlane?: string;\n cocoapods?: string;\n env?: Env;\n}\n\nconst BuilderEnvironmentSchema = Joi.object({\n image: Joi.string().valid(...builderBaseImages),\n node: Joi.string(),\n yarn: Joi.string(),\n expoCli: Joi.string(),\n bundler: Joi.string(),\n fastlane: Joi.string(),\n cocoapods: Joi.string(),\n env: EnvSchema,\n});\n\nexport interface Job {\n type: Workflow;\n triggeredBy: BuildTrigger;\n projectArchive: ArchiveSource;\n platform: Platform.IOS;\n projectRootDirectory: string;\n buildProfile?: string;\n releaseChannel?: string;\n updates?: {\n channel?: string;\n };\n secrets: {\n buildCredentials?: BuildCredentials;\n environmentSecrets?: EnvironmentSecret[];\n robotAccessToken?: string;\n };\n builderEnvironment?: BuilderEnvironment;\n cache: Cache;\n developmentClient?: boolean;\n simulator?: boolean;\n version?: {\n buildNumber?: string;\n /**\n * support for this field is implemented, but specifying it is disabled on schema level\n */\n appVersion?: string;\n /**\n * support for this field is implemented, but specifying it is disabled on schema level\n */\n runtimeVersion?: string;\n };\n buildArtifactPaths?: string[];\n\n scheme?: string;\n buildConfiguration?: string;\n applicationArchivePath?: string;\n\n username?: string;\n\n experimental?: {\n prebuildCommand?: string;\n };\n}\n\nexport const JobSchema = Joi.object({\n type: Joi.string()\n .valid(...Object.values(Workflow))\n .required(),\n triggeredBy: Joi.string()\n .valid(...Object.values(BuildTrigger))\n .default(BuildTrigger.EAS_CLI),\n projectArchive: ArchiveSourceSchema.required(),\n platform: Joi.string().valid(Platform.IOS).required(),\n projectRootDirectory: Joi.string().required(),\n buildProfile: Joi.when('projectArchive', {\n is: Joi.string().valid(BuildTrigger.GIT_BASED_INTEGRATION),\n then: Joi.string().required(),\n otherwise: Joi.string(),\n }),\n releaseChannel: Joi.string(),\n updates: Joi.object({\n channel: Joi.string(),\n }),\n secrets: Joi.object({\n buildCredentials: BuildCredentialsSchema,\n environmentSecrets: EnvironmentSecretsSchema,\n robotAccessToken: Joi.string(),\n }).required(),\n builderEnvironment: BuilderEnvironmentSchema,\n cache: CacheSchema.default(),\n developmentClient: Joi.boolean(),\n simulator: Joi.boolean(),\n version: Joi.object({\n buildNumber: Joi.string(),\n }),\n buildArtifactPaths: Joi.array().items(Joi.string()),\n\n scheme: Joi.string(),\n buildConfiguration: Joi.string(),\n applicationArchivePath: Joi.string(),\n\n username: Joi.string(),\n\n experimental: Joi.object({\n prebuildCommand: Joi.string(),\n }),\n}).oxor('releaseChannel', 'updates.channel');\n"]}
package/dist/job.d.ts CHANGED
@@ -1,11 +1,18 @@
1
1
  import Joi from 'joi';
2
+ import { Workflow } from './common';
2
3
  import * as Android from './android';
3
4
  import * as Ios from './ios';
4
5
  export declare type Job = Android.Job | Ios.Job;
6
+ interface ImageMatchArgs {
7
+ sdkVersion?: string;
8
+ reactNativeVersion?: string;
9
+ workflow: Workflow;
10
+ }
5
11
  export declare const JobSchema: Joi.ObjectSchema<Job>;
6
12
  export declare function sanitizeJob(rawJob: object, { sdkVersion, reactNativeVersion }?: {
7
13
  reactNativeVersion?: string;
8
14
  sdkVersion?: string;
9
15
  }): Job;
10
- export declare function setAndroidBuilderImage(job: Job, sdkVersion?: string, reactNativeVersion?: string): void;
11
- export declare function setIosBuilderImageForManagedJob(job: Job, sdkVersion?: string): void;
16
+ export declare function setAndroidBuilderImage(job: Job, args: ImageMatchArgs): void;
17
+ export declare function setIosBuilderImage(job: Job, args: ImageMatchArgs): void;
18
+ export {};
package/dist/job.js CHANGED
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.setIosBuilderImageForManagedJob = exports.setAndroidBuilderImage = exports.sanitizeJob = exports.JobSchema = void 0;
29
+ exports.setIosBuilderImage = exports.setAndroidBuilderImage = exports.sanitizeJob = exports.JobSchema = void 0;
30
30
  const joi_1 = __importDefault(require("joi"));
31
31
  const semver_1 = __importDefault(require("semver"));
32
32
  const common_1 = require("./common");
@@ -40,17 +40,25 @@ exports.JobSchema = joi_1.default.object({
40
40
  .when(joi_1.default.object({ platform: common_1.Platform.ANDROID }).unknown(), { then: Android.JobSchema })
41
41
  .when(joi_1.default.object({ platform: common_1.Platform.IOS }).unknown(), { then: Ios.JobSchema });
42
42
  function sanitizeJob(rawJob, { sdkVersion, reactNativeVersion } = {}) {
43
+ var _a;
43
44
  const { value, error } = exports.JobSchema.validate(rawJob, {
44
45
  stripUnknown: true,
45
46
  convert: true,
46
47
  abortEarly: false,
47
48
  });
48
49
  const job = value;
49
- if (job.platform === common_1.Platform.IOS) {
50
- setIosBuilderImageForManagedJob(job, sdkVersion);
51
- }
52
- else if (job.platform === common_1.Platform.ANDROID) {
53
- setAndroidBuilderImage(job, sdkVersion, reactNativeVersion);
50
+ if (!((_a = job === null || job === void 0 ? void 0 : job.builderEnvironment) === null || _a === void 0 ? void 0 : _a.image)) {
51
+ const resolveArgs = {
52
+ sdkVersion,
53
+ reactNativeVersion,
54
+ workflow: job.type,
55
+ };
56
+ if (job.platform === common_1.Platform.IOS) {
57
+ setIosBuilderImage(job, resolveArgs);
58
+ }
59
+ else if (job.platform === common_1.Platform.ANDROID) {
60
+ setAndroidBuilderImage(job, resolveArgs);
61
+ }
54
62
  }
55
63
  if (error) {
56
64
  throw error;
@@ -60,32 +68,40 @@ function sanitizeJob(rawJob, { sdkVersion, reactNativeVersion } = {}) {
60
68
  }
61
69
  }
62
70
  exports.sanitizeJob = sanitizeJob;
63
- function setAndroidBuilderImage(job, sdkVersion, reactNativeVersion) {
64
- var _a;
65
- if (((_a = job.builderEnvironment) === null || _a === void 0 ? void 0 : _a.image) || !reactNativeVersion || !sdkVersion) {
66
- return;
71
+ function doesImageRuleMatch(rule, { sdkVersion, reactNativeVersion, workflow }) {
72
+ if (rule.reactNativeSemverRange) {
73
+ if (!reactNativeVersion || !semver_1.default.satisfies(reactNativeVersion, rule.reactNativeSemverRange)) {
74
+ return false;
75
+ }
76
+ }
77
+ if (rule.sdkSemverRange) {
78
+ if (!sdkVersion || !semver_1.default.satisfies(sdkVersion, rule.sdkSemverRange)) {
79
+ return false;
80
+ }
67
81
  }
68
- for (const rule of Android.reactNativeImageMatchRules) {
69
- if (semver_1.default.satisfies(reactNativeVersion, rule.reactNativeSemverRange) &&
70
- semver_1.default.satisfies(sdkVersion, rule.sdkSemverRange)) {
71
- job.builderEnvironment = Object.assign({ image: rule.image }, job.builderEnvironment);
82
+ if (rule.workflows) {
83
+ if (!workflow || !rule.workflows.includes(workflow)) {
84
+ return false;
85
+ }
86
+ }
87
+ return true;
88
+ }
89
+ function setAndroidBuilderImage(job, args) {
90
+ for (const rule of Android.imageMatchRules) {
91
+ if (doesImageRuleMatch(rule, args)) {
92
+ job.builderEnvironment = Object.assign(Object.assign({}, job.builderEnvironment), { image: rule.image });
72
93
  return;
73
94
  }
74
95
  }
75
96
  }
76
97
  exports.setAndroidBuilderImage = setAndroidBuilderImage;
77
- function setIosBuilderImageForManagedJob(job, sdkVersion) {
78
- var _a;
79
- if (job.type !== common_1.Workflow.MANAGED || ((_a = job.builderEnvironment) === null || _a === void 0 ? void 0 : _a.image) || !sdkVersion) {
80
- return;
81
- }
82
- const ranges = Object.keys(Ios.sdkVersionToDefaultBuilderImage);
83
- const matchingRange = ranges.find((range) => semver_1.default.satisfies(sdkVersion, range));
84
- if (!matchingRange) {
85
- return;
98
+ function setIosBuilderImage(job, args) {
99
+ for (const rule of Ios.imageMatchRules) {
100
+ if (doesImageRuleMatch(rule, args)) {
101
+ job.builderEnvironment = Object.assign(Object.assign({}, job.builderEnvironment), { image: rule.image });
102
+ return;
103
+ }
86
104
  }
87
- const image = Ios.sdkVersionToDefaultBuilderImage[matchingRange];
88
- job.builderEnvironment = Object.assign({ image }, job.builderEnvironment);
89
105
  }
90
- exports.setIosBuilderImageForManagedJob = setIosBuilderImageForManagedJob;
106
+ exports.setIosBuilderImage = setIosBuilderImage;
91
107
  //# sourceMappingURL=job.js.map
package/dist/job.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"job.js","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAsB;AACtB,oDAA4B;AAE5B,qCAA8C;AAC9C,mDAAqC;AACrC,2CAA6B;AAIhB,QAAA,SAAS,GAAG,aAAG,CAAC,MAAM,CAAM;IACvC,QAAQ,EAAE,aAAG,CAAC,MAAM,EAAE;SACnB,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAQ,CAAC,CAAC;SACjC,QAAQ,EAAE;CACd,CAAC;KACC,IAAI,CAAC,aAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,iBAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;KACvF,IAAI,CAAC,aAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,iBAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AAEnF,SAAgB,WAAW,CACzB,MAAc,EACd,EAAE,UAAU,EAAE,kBAAkB,KAA2D,EAAE;IAE7F,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,iBAAS,CAAC,QAAQ,CAAC,MAAM,EAAE;QAClD,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,MAAM,GAAG,GAAQ,KAAK,CAAC;IACvB,IAAI,GAAG,CAAC,QAAQ,KAAK,iBAAQ,CAAC,GAAG,EAAE;QACjC,+BAA+B,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;KAClD;SAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,iBAAQ,CAAC,OAAO,EAAE;QAC5C,sBAAsB,CAAC,GAAG,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;KAC7D;IAED,IAAI,KAAK,EAAE;QACT,MAAM,KAAK,CAAC;KACb;SAAM;QACL,OAAO,GAAG,CAAC;KACZ;AACH,CAAC;AAtBD,kCAsBC;AAED,SAAgB,sBAAsB,CACpC,GAAQ,EACR,UAAmB,EACnB,kBAA2B;;IAE3B,IAAI,CAAA,MAAA,GAAG,CAAC,kBAAkB,0CAAE,KAAK,KAAI,CAAC,kBAAkB,IAAI,CAAC,UAAU,EAAE;QACvE,OAAO;KACR;IAED,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,0BAA0B,EAAE;QACrD,IACE,gBAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,CAAC;YACjE,gBAAM,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,EACjD;YACA,GAAG,CAAC,kBAAkB,mBACpB,KAAK,EAAE,IAAI,CAAC,KAAK,IACd,GAAG,CAAC,kBAAkB,CAC1B,CAAC;YACF,OAAO;SACR;KACF;AACH,CAAC;AArBD,wDAqBC;AAED,SAAgB,+BAA+B,CAAC,GAAQ,EAAE,UAAmB;;IAC3E,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAQ,CAAC,OAAO,KAAI,MAAA,GAAG,CAAC,kBAAkB,0CAAE,KAAK,CAAA,IAAI,CAAC,UAAU,EAAE;QACjF,OAAO;KACR;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAM,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAClF,IAAI,CAAC,aAAa,EAAE;QAClB,OAAO;KACR;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,+BAA+B,CAAC,aAAa,CAAC,CAAC;IACjE,GAAG,CAAC,kBAAkB,mBACpB,KAAK,IACF,GAAG,CAAC,kBAAkB,CAC1B,CAAC;AACJ,CAAC;AAfD,0EAeC","sourcesContent":["import Joi from 'joi';\nimport semver from 'semver';\n\nimport { Platform, Workflow } from './common';\nimport * as Android from './android';\nimport * as Ios from './ios';\n\nexport type Job = Android.Job | Ios.Job;\n\nexport const JobSchema = Joi.object<Job>({\n platform: Joi.string()\n .valid(...Object.values(Platform))\n .required(),\n})\n .when(Joi.object({ platform: Platform.ANDROID }).unknown(), { then: Android.JobSchema })\n .when(Joi.object({ platform: Platform.IOS }).unknown(), { then: Ios.JobSchema });\n\nexport function sanitizeJob(\n rawJob: object,\n { sdkVersion, reactNativeVersion }: { reactNativeVersion?: string; sdkVersion?: string } = {}\n): Job {\n const { value, error } = JobSchema.validate(rawJob, {\n stripUnknown: true,\n convert: true,\n abortEarly: false,\n });\n\n const job: Job = value;\n if (job.platform === Platform.IOS) {\n setIosBuilderImageForManagedJob(job, sdkVersion);\n } else if (job.platform === Platform.ANDROID) {\n setAndroidBuilderImage(job, sdkVersion, reactNativeVersion);\n }\n\n if (error) {\n throw error;\n } else {\n return job;\n }\n}\n\nexport function setAndroidBuilderImage(\n job: Job,\n sdkVersion?: string,\n reactNativeVersion?: string\n): void {\n if (job.builderEnvironment?.image || !reactNativeVersion || !sdkVersion) {\n return;\n }\n\n for (const rule of Android.reactNativeImageMatchRules) {\n if (\n semver.satisfies(reactNativeVersion, rule.reactNativeSemverRange) &&\n semver.satisfies(sdkVersion, rule.sdkSemverRange)\n ) {\n job.builderEnvironment = {\n image: rule.image,\n ...job.builderEnvironment,\n };\n return;\n }\n }\n}\n\nexport function setIosBuilderImageForManagedJob(job: Job, sdkVersion?: string): void {\n if (job.type !== Workflow.MANAGED || job.builderEnvironment?.image || !sdkVersion) {\n return;\n }\n\n const ranges = Object.keys(Ios.sdkVersionToDefaultBuilderImage);\n const matchingRange = ranges.find((range) => semver.satisfies(sdkVersion, range));\n if (!matchingRange) {\n return;\n }\n const image = Ios.sdkVersionToDefaultBuilderImage[matchingRange];\n job.builderEnvironment = {\n image,\n ...job.builderEnvironment,\n };\n}\n"]}
1
+ {"version":3,"file":"job.js","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":"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","sourcesContent":["import Joi from 'joi';\nimport semver from 'semver';\n\nimport { ImageMatchRule, Platform, Workflow } from './common';\nimport * as Android from './android';\nimport * as Ios from './ios';\n\nexport type Job = Android.Job | Ios.Job;\n\ninterface ImageMatchArgs {\n sdkVersion?: string;\n reactNativeVersion?: string;\n workflow: Workflow;\n}\n\nexport const JobSchema = Joi.object<Job>({\n platform: Joi.string()\n .valid(...Object.values(Platform))\n .required(),\n})\n .when(Joi.object({ platform: Platform.ANDROID }).unknown(), { then: Android.JobSchema })\n .when(Joi.object({ platform: Platform.IOS }).unknown(), { then: Ios.JobSchema });\n\nexport function sanitizeJob(\n rawJob: object,\n { sdkVersion, reactNativeVersion }: { reactNativeVersion?: string; sdkVersion?: string } = {}\n): Job {\n const { value, error } = JobSchema.validate(rawJob, {\n stripUnknown: true,\n convert: true,\n abortEarly: false,\n });\n\n const job: Job = value;\n if (!job?.builderEnvironment?.image) {\n const resolveArgs: ImageMatchArgs = {\n sdkVersion,\n reactNativeVersion,\n workflow: job.type,\n };\n if (job.platform === Platform.IOS) {\n setIosBuilderImage(job, resolveArgs);\n } else if (job.platform === Platform.ANDROID) {\n setAndroidBuilderImage(job, resolveArgs);\n }\n }\n\n if (error) {\n throw error;\n } else {\n return job;\n }\n}\n\nfunction doesImageRuleMatch<T extends string>(\n rule: ImageMatchRule<T>,\n { sdkVersion, reactNativeVersion, workflow }: ImageMatchArgs\n): boolean {\n if (rule.reactNativeSemverRange) {\n if (!reactNativeVersion || !semver.satisfies(reactNativeVersion, rule.reactNativeSemverRange)) {\n return false;\n }\n }\n if (rule.sdkSemverRange) {\n if (!sdkVersion || !semver.satisfies(sdkVersion, rule.sdkSemverRange)) {\n return false;\n }\n }\n if (rule.workflows) {\n if (!workflow || !rule.workflows.includes(workflow)) {\n return false;\n }\n }\n return true;\n}\n\nexport function setAndroidBuilderImage(job: Job, args: ImageMatchArgs): void {\n for (const rule of Android.imageMatchRules) {\n if (doesImageRuleMatch(rule, args)) {\n job.builderEnvironment = {\n ...job.builderEnvironment,\n image: rule.image,\n };\n return;\n }\n }\n}\n\nexport function setIosBuilderImage(job: Job, args: ImageMatchArgs): void {\n for (const rule of Ios.imageMatchRules) {\n if (doesImageRuleMatch(rule, args)) {\n job.builderEnvironment = {\n ...job.builderEnvironment,\n image: rule.image,\n };\n return;\n }\n }\n}\n"]}
package/dist/logs.d.ts CHANGED
@@ -12,6 +12,7 @@ export declare enum BuildPhase {
12
12
  PREPARE_PROJECT = "PREPARE_PROJECT",
13
13
  RESTORE_CACHE = "RESTORE_CACHE",
14
14
  INSTALL_DEPENDENCIES = "INSTALL_DEPENDENCIES",
15
+ EAS_BUILD_INTERNAL = "EAS_BUILD_INTERNAL",
15
16
  PREBUILD = "PREBUILD",
16
17
  PREPARE_CREDENTIALS = "PREPARE_CREDENTIALS",
17
18
  CONFIGURE_EXPO_UPDATES = "CONFIGURE_EXPO_UPDATES",
package/dist/logs.js CHANGED
@@ -16,6 +16,7 @@ var BuildPhase;
16
16
  BuildPhase["PREPARE_PROJECT"] = "PREPARE_PROJECT";
17
17
  BuildPhase["RESTORE_CACHE"] = "RESTORE_CACHE";
18
18
  BuildPhase["INSTALL_DEPENDENCIES"] = "INSTALL_DEPENDENCIES";
19
+ BuildPhase["EAS_BUILD_INTERNAL"] = "EAS_BUILD_INTERNAL";
19
20
  BuildPhase["PREBUILD"] = "PREBUILD";
20
21
  BuildPhase["PREPARE_CREDENTIALS"] = "PREPARE_CREDENTIALS";
21
22
  BuildPhase["CONFIGURE_EXPO_UPDATES"] = "CONFIGURE_EXPO_UPDATES";
package/dist/logs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":";;;AAAA,IAAY,UA6CX;AA7CD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,6BAAe,CAAA;IACf,iDAAmC,CAAA;IACnC,2CAA6B,CAAA;IAC7B,iDAAmC,CAAA;IACnC,qDAAuC,CAAA;IACvC,iDAAmC,CAAA;IACnC,mEAAqD,CAAA;IACrD,yCAA2B,CAAA;IAC3B,2DAA6C,CAAA;IAC7C,iDAAmC,CAAA;IACnC,6CAA+B,CAAA;IAC/B,2DAA6C,CAAA;IAC7C,mCAAqB,CAAA;IACrB,yDAA2C,CAAA;IAC3C,+DAAiD,CAAA;IACjD,uCAAyB,CAAA;IACzB;;OAEG;IACH,mDAAqC,CAAA;IACrC,uEAAyD,CAAA;IACzD,+DAAiD,CAAA;IACjD,qDAAuC,CAAA;IACvC,2DAA6C,CAAA;IAC7C,+CAAiC,CAAA;IACjC,uCAAyB,CAAA;IAEzB,UAAU;IACV,yCAA2B,CAAA;IAC3B,yCAA2B,CAAA;IAE3B,MAAM;IACN,2CAA6B,CAAA;IAC7B,iEAAmD,CAAA;IACnD,2CAA6B,CAAA;IAE7B,QAAQ;IACR,mDAAqC,CAAA;IACrC,qDAAuC,CAAA;IACvC,qEAAuD,CAAA;IACvD,6DAA+C,CAAA;IAC/C,yDAA2C,CAAA;IAC3C,+DAAiD,CAAA;AACnD,CAAC,EA7CW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QA6CrB;AAED,IAAY,gBAMX;AAND,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,mCAAe,CAAA;IACf,uCAAmB,CAAA;IACnB,uCAAmB,CAAA;IACnB,uCAAmB,CAAA;AACrB,CAAC,EANW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAM3B;AAED,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,wCAA2B,CAAA;IAC3B,oCAAuB,CAAA;AACzB,CAAC,EAHW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGpB","sourcesContent":["export enum BuildPhase {\n UNKNOWN = 'UNKNOWN',\n QUEUE = 'QUEUE',\n SPIN_UP_BUILDER = 'SPIN_UP_BUILDER',\n BUILDER_INFO = 'BUILDER_INFO',\n READ_APP_CONFIG = 'READ_APP_CONFIG',\n READ_PACKAGE_JSON = 'READ_PACKAGE_JSON',\n RUN_EXPO_DOCTOR = 'RUN_EXPO_DOCTOR',\n SET_UP_BUILD_ENVIRONMENT = 'SET_UP_BUILD_ENVIRONMENT',\n START_BUILD = 'START_BUILD',\n INSTALL_CUSTOM_TOOLS = 'INSTALL_CUSTOM_TOOLS',\n PREPARE_PROJECT = 'PREPARE_PROJECT',\n RESTORE_CACHE = 'RESTORE_CACHE',\n INSTALL_DEPENDENCIES = 'INSTALL_DEPENDENCIES',\n PREBUILD = 'PREBUILD',\n PREPARE_CREDENTIALS = 'PREPARE_CREDENTIALS',\n CONFIGURE_EXPO_UPDATES = 'CONFIGURE_EXPO_UPDATES',\n SAVE_CACHE = 'SAVE_CACHE',\n /**\n * @deprecated\n */\n UPLOAD_ARTIFACTS = 'UPLOAD_ARTIFACTS',\n UPLOAD_APPLICATION_ARCHIVE = 'UPLOAD_APPLICATION_ARCHIVE',\n UPLOAD_BUILD_ARTIFACTS = 'UPLOAD_BUILD_ARTIFACTS',\n PREPARE_ARTIFACTS = 'PREPARE_ARTIFACTS',\n CLEAN_UP_CREDENTIALS = 'CLEAN_UP_CREDENTIALS',\n COMPLETE_BUILD = 'COMPLETE_BUILD',\n FAIL_BUILD = 'FAIL_BUILD',\n\n // ANDROID\n FIX_GRADLEW = 'FIX_GRADLEW',\n RUN_GRADLEW = 'RUN_GRADLEW',\n\n // IOS\n INSTALL_PODS = 'INSTALL_PODS',\n CONFIGURE_XCODE_PROJECT = 'CONFIGURE_XCODE_PROJECT',\n RUN_FASTLANE = 'RUN_FASTLANE',\n\n // HOOKS\n PRE_INSTALL_HOOK = 'PRE_INSTALL_HOOK',\n POST_INSTALL_HOOK = 'POST_INSTALL_HOOK',\n PRE_UPLOAD_ARTIFACTS_HOOK = 'PRE_UPLOAD_ARTIFACTS_HOOK',\n ON_BUILD_SUCCESS_HOOK = 'ON_BUILD_SUCCESS_HOOK',\n ON_BUILD_ERROR_HOOK = 'ON_BUILD_ERROR_HOOK',\n ON_BUILD_COMPLETE_HOOK = 'ON_BUILD_COMPLETE_HOOK',\n}\n\nexport enum BuildPhaseResult {\n SUCCESS = 'success',\n FAIL = 'failed',\n WARNING = 'warning',\n SKIPPED = 'skipped',\n UNKNOWN = 'unknown',\n}\n\nexport enum LogMarker {\n START_PHASE = 'START_PHASE',\n END_PHASE = 'END_PHASE',\n}\n"]}
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":";;;AAAA,IAAY,UA8CX;AA9CD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,6BAAe,CAAA;IACf,iDAAmC,CAAA;IACnC,2CAA6B,CAAA;IAC7B,iDAAmC,CAAA;IACnC,qDAAuC,CAAA;IACvC,iDAAmC,CAAA;IACnC,mEAAqD,CAAA;IACrD,yCAA2B,CAAA;IAC3B,2DAA6C,CAAA;IAC7C,iDAAmC,CAAA;IACnC,6CAA+B,CAAA;IAC/B,2DAA6C,CAAA;IAC7C,uDAAyC,CAAA;IACzC,mCAAqB,CAAA;IACrB,yDAA2C,CAAA;IAC3C,+DAAiD,CAAA;IACjD,uCAAyB,CAAA;IACzB;;OAEG;IACH,mDAAqC,CAAA;IACrC,uEAAyD,CAAA;IACzD,+DAAiD,CAAA;IACjD,qDAAuC,CAAA;IACvC,2DAA6C,CAAA;IAC7C,+CAAiC,CAAA;IACjC,uCAAyB,CAAA;IAEzB,UAAU;IACV,yCAA2B,CAAA;IAC3B,yCAA2B,CAAA;IAE3B,MAAM;IACN,2CAA6B,CAAA;IAC7B,iEAAmD,CAAA;IACnD,2CAA6B,CAAA;IAE7B,QAAQ;IACR,mDAAqC,CAAA;IACrC,qDAAuC,CAAA;IACvC,qEAAuD,CAAA;IACvD,6DAA+C,CAAA;IAC/C,yDAA2C,CAAA;IAC3C,+DAAiD,CAAA;AACnD,CAAC,EA9CW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QA8CrB;AAED,IAAY,gBAMX;AAND,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,mCAAe,CAAA;IACf,uCAAmB,CAAA;IACnB,uCAAmB,CAAA;IACnB,uCAAmB,CAAA;AACrB,CAAC,EANW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAM3B;AAED,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,wCAA2B,CAAA;IAC3B,oCAAuB,CAAA;AACzB,CAAC,EAHW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGpB","sourcesContent":["export enum BuildPhase {\n UNKNOWN = 'UNKNOWN',\n QUEUE = 'QUEUE',\n SPIN_UP_BUILDER = 'SPIN_UP_BUILDER',\n BUILDER_INFO = 'BUILDER_INFO',\n READ_APP_CONFIG = 'READ_APP_CONFIG',\n READ_PACKAGE_JSON = 'READ_PACKAGE_JSON',\n RUN_EXPO_DOCTOR = 'RUN_EXPO_DOCTOR',\n SET_UP_BUILD_ENVIRONMENT = 'SET_UP_BUILD_ENVIRONMENT',\n START_BUILD = 'START_BUILD',\n INSTALL_CUSTOM_TOOLS = 'INSTALL_CUSTOM_TOOLS',\n PREPARE_PROJECT = 'PREPARE_PROJECT',\n RESTORE_CACHE = 'RESTORE_CACHE',\n INSTALL_DEPENDENCIES = 'INSTALL_DEPENDENCIES',\n EAS_BUILD_INTERNAL = 'EAS_BUILD_INTERNAL',\n PREBUILD = 'PREBUILD',\n PREPARE_CREDENTIALS = 'PREPARE_CREDENTIALS',\n CONFIGURE_EXPO_UPDATES = 'CONFIGURE_EXPO_UPDATES',\n SAVE_CACHE = 'SAVE_CACHE',\n /**\n * @deprecated\n */\n UPLOAD_ARTIFACTS = 'UPLOAD_ARTIFACTS',\n UPLOAD_APPLICATION_ARCHIVE = 'UPLOAD_APPLICATION_ARCHIVE',\n UPLOAD_BUILD_ARTIFACTS = 'UPLOAD_BUILD_ARTIFACTS',\n PREPARE_ARTIFACTS = 'PREPARE_ARTIFACTS',\n CLEAN_UP_CREDENTIALS = 'CLEAN_UP_CREDENTIALS',\n COMPLETE_BUILD = 'COMPLETE_BUILD',\n FAIL_BUILD = 'FAIL_BUILD',\n\n // ANDROID\n FIX_GRADLEW = 'FIX_GRADLEW',\n RUN_GRADLEW = 'RUN_GRADLEW',\n\n // IOS\n INSTALL_PODS = 'INSTALL_PODS',\n CONFIGURE_XCODE_PROJECT = 'CONFIGURE_XCODE_PROJECT',\n RUN_FASTLANE = 'RUN_FASTLANE',\n\n // HOOKS\n PRE_INSTALL_HOOK = 'PRE_INSTALL_HOOK',\n POST_INSTALL_HOOK = 'POST_INSTALL_HOOK',\n PRE_UPLOAD_ARTIFACTS_HOOK = 'PRE_UPLOAD_ARTIFACTS_HOOK',\n ON_BUILD_SUCCESS_HOOK = 'ON_BUILD_SUCCESS_HOOK',\n ON_BUILD_ERROR_HOOK = 'ON_BUILD_ERROR_HOOK',\n ON_BUILD_COMPLETE_HOOK = 'ON_BUILD_COMPLETE_HOOK',\n}\n\nexport enum BuildPhaseResult {\n SUCCESS = 'success',\n FAIL = 'failed',\n WARNING = 'warning',\n SKIPPED = 'skipped',\n UNKNOWN = 'unknown',\n}\n\nexport enum LogMarker {\n START_PHASE = 'START_PHASE',\n END_PHASE = 'END_PHASE',\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/eas-build-job",
3
- "version": "0.2.97",
3
+ "version": "0.2.99",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [