eas-cli 12.6.0 → 12.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/README.md +63 -63
  2. package/build/build/android/prepareJob.js +4 -0
  3. package/build/build/evaluateConfigWithEnvVarsAsync.js +27 -11
  4. package/build/build/ios/prepareJob.js +4 -0
  5. package/build/build/local.js +1 -1
  6. package/build/commandUtils/EasCommand.d.ts +36 -5
  7. package/build/commandUtils/EasCommand.js +27 -2
  8. package/build/commandUtils/context/ContextField.d.ts +5 -0
  9. package/build/commandUtils/context/DynamicLoggedInContextField.d.ts +14 -0
  10. package/build/commandUtils/context/DynamicLoggedInContextField.js +25 -0
  11. package/build/commandUtils/context/DynamicProjectConfigContextField.d.ts +2 -2
  12. package/build/commandUtils/context/DynamicProjectConfigContextField.js +40 -2
  13. package/build/commandUtils/context/LoggedInContextField.d.ts +7 -7
  14. package/build/commandUtils/context/LoggedInContextField.js +2 -1
  15. package/build/commandUtils/context/MaybeLoggedInContextField.d.ts +9 -7
  16. package/build/commandUtils/context/MaybeLoggedInContextField.js +1 -0
  17. package/build/commandUtils/context/OptionalPrivateProjectConfigContextField.d.ts +1 -1
  18. package/build/commandUtils/context/OptionalPrivateProjectConfigContextField.js +17 -2
  19. package/build/commandUtils/context/PrivateProjectConfigContextField.d.ts +1 -1
  20. package/build/commandUtils/context/PrivateProjectConfigContextField.js +17 -2
  21. package/build/commandUtils/context/ProjectIdContextField.d.ts +4 -0
  22. package/build/commandUtils/context/ProjectIdContextField.js +19 -0
  23. package/build/commandUtils/context/ServerSideEnvironmentVariablesContextField.d.ts +6 -0
  24. package/build/commandUtils/context/ServerSideEnvironmentVariablesContextField.js +36 -0
  25. package/build/commandUtils/context/contextUtils/loadServerSideEnvironmentVariablesAsync.d.ts +7 -0
  26. package/build/commandUtils/context/contextUtils/loadServerSideEnvironmentVariablesAsync.js +42 -0
  27. package/build/commands/account/view.d.ts +0 -1
  28. package/build/commands/account/view.js +2 -3
  29. package/build/commands/branch/create.d.ts +1 -1
  30. package/build/commands/branch/create.js +2 -2
  31. package/build/commands/branch/delete.d.ts +1 -1
  32. package/build/commands/branch/delete.js +2 -2
  33. package/build/commands/branch/list.d.ts +1 -1
  34. package/build/commands/branch/list.js +2 -2
  35. package/build/commands/branch/rename.d.ts +1 -1
  36. package/build/commands/branch/rename.js +2 -2
  37. package/build/commands/branch/view.d.ts +1 -1
  38. package/build/commands/branch/view.js +2 -2
  39. package/build/commands/build/cancel.d.ts +1 -1
  40. package/build/commands/build/cancel.js +2 -2
  41. package/build/commands/build/configure.js +1 -0
  42. package/build/commands/build/delete.d.ts +1 -1
  43. package/build/commands/build/delete.js +2 -2
  44. package/build/commands/build/index.js +1 -0
  45. package/build/commands/build/inspect.js +1 -0
  46. package/build/commands/build/internal.js +1 -0
  47. package/build/commands/build/list.d.ts +1 -1
  48. package/build/commands/build/list.js +2 -2
  49. package/build/commands/build/resign.js +1 -0
  50. package/build/commands/build/run.d.ts +1 -2
  51. package/build/commands/build/run.js +2 -3
  52. package/build/commands/build/version/get.js +1 -0
  53. package/build/commands/build/version/set.js +1 -0
  54. package/build/commands/build/version/sync.js +1 -0
  55. package/build/commands/build/view.d.ts +1 -1
  56. package/build/commands/build/view.js +2 -2
  57. package/build/commands/channel/create.d.ts +1 -1
  58. package/build/commands/channel/create.js +2 -2
  59. package/build/commands/channel/delete.d.ts +1 -1
  60. package/build/commands/channel/delete.js +2 -2
  61. package/build/commands/channel/edit.d.ts +1 -1
  62. package/build/commands/channel/edit.js +2 -2
  63. package/build/commands/channel/list.d.ts +1 -1
  64. package/build/commands/channel/list.js +2 -2
  65. package/build/commands/channel/pause.d.ts +1 -1
  66. package/build/commands/channel/pause.js +2 -2
  67. package/build/commands/channel/resume.d.ts +1 -1
  68. package/build/commands/channel/resume.js +2 -2
  69. package/build/commands/channel/rollout.js +1 -0
  70. package/build/commands/channel/view.d.ts +1 -1
  71. package/build/commands/channel/view.js +2 -2
  72. package/build/commands/config.d.ts +1 -1
  73. package/build/commands/config.js +4 -7
  74. package/build/commands/credentials/configure-build.js +1 -0
  75. package/build/commands/credentials/index.d.ts +1 -1
  76. package/build/commands/credentials/index.js +2 -1
  77. package/build/commands/device/create.d.ts +1 -1
  78. package/build/commands/device/create.js +2 -1
  79. package/build/commands/device/delete.d.ts +1 -1
  80. package/build/commands/device/delete.js +2 -2
  81. package/build/commands/device/list.d.ts +1 -1
  82. package/build/commands/device/list.js +2 -2
  83. package/build/commands/device/rename.d.ts +1 -1
  84. package/build/commands/device/rename.js +2 -2
  85. package/build/commands/device/view.d.ts +1 -1
  86. package/build/commands/device/view.js +2 -2
  87. package/build/commands/env/create.d.ts +1 -1
  88. package/build/commands/env/create.js +8 -3
  89. package/build/commands/env/delete.d.ts +1 -1
  90. package/build/commands/env/delete.js +2 -2
  91. package/build/commands/env/exec.d.ts +1 -1
  92. package/build/commands/env/exec.js +2 -2
  93. package/build/commands/env/get.d.ts +1 -1
  94. package/build/commands/env/get.js +2 -2
  95. package/build/commands/env/link.d.ts +1 -1
  96. package/build/commands/env/link.js +2 -2
  97. package/build/commands/env/list.d.ts +1 -1
  98. package/build/commands/env/list.js +2 -2
  99. package/build/commands/env/pull.d.ts +2 -1
  100. package/build/commands/env/pull.js +42 -15
  101. package/build/commands/env/push.d.ts +1 -1
  102. package/build/commands/env/push.js +13 -2
  103. package/build/commands/env/unlink.d.ts +1 -1
  104. package/build/commands/env/unlink.js +2 -2
  105. package/build/commands/env/update.d.ts +1 -1
  106. package/build/commands/env/update.js +8 -6
  107. package/build/commands/metadata/pull.js +1 -0
  108. package/build/commands/metadata/push.js +1 -0
  109. package/build/commands/open.js +1 -0
  110. package/build/commands/project/info.d.ts +1 -1
  111. package/build/commands/project/info.js +2 -2
  112. package/build/commands/secret/create.d.ts +1 -1
  113. package/build/commands/secret/create.js +2 -2
  114. package/build/commands/secret/delete.d.ts +1 -1
  115. package/build/commands/secret/delete.js +2 -2
  116. package/build/commands/secret/list.d.ts +1 -1
  117. package/build/commands/secret/list.js +2 -2
  118. package/build/commands/secret/push.d.ts +1 -1
  119. package/build/commands/secret/push.js +2 -2
  120. package/build/commands/submit/internal.js +1 -0
  121. package/build/commands/submit.js +1 -0
  122. package/build/commands/update/configure.js +1 -0
  123. package/build/commands/update/edit.d.ts +1 -1
  124. package/build/commands/update/edit.js +2 -2
  125. package/build/commands/update/index.d.ts +2 -0
  126. package/build/commands/update/index.js +29 -3
  127. package/build/commands/update/list.d.ts +1 -1
  128. package/build/commands/update/list.js +2 -2
  129. package/build/commands/update/republish.js +1 -0
  130. package/build/commands/update/roll-back-to-embedded.js +1 -0
  131. package/build/commands/webhook/create.d.ts +1 -1
  132. package/build/commands/webhook/create.js +2 -2
  133. package/build/commands/webhook/delete.d.ts +1 -1
  134. package/build/commands/webhook/delete.js +2 -2
  135. package/build/commands/webhook/list.d.ts +1 -1
  136. package/build/commands/webhook/list.js +2 -2
  137. package/build/commands/worker/alias.js +1 -0
  138. package/build/commands/worker/deploy.js +1 -1
  139. package/build/graphql/mutations/EnvironmentVariableMutation.d.ts +1 -0
  140. package/build/project/publish.d.ts +2 -1
  141. package/build/project/publish.js +10 -4
  142. package/build/user/SessionManager.d.ts +1 -1
  143. package/build/utils/expoCli.d.ts +2 -1
  144. package/build/utils/expoCli.js +5 -1
  145. package/oclif.manifest.json +99 -85
  146. package/package.json +6 -6
@@ -21,7 +21,7 @@ class EnvironmentVariableUpdate extends EasCommand_1.default {
21
21
  async runAsync() {
22
22
  const { flags } = await this.parse(_a);
23
23
  const { name, value: rawValue, scope, 'variable-name': currentName, 'variable-environment': currentEnvironment, 'non-interactive': nonInteractive, environment: environments, type, visibility, } = this.validateFlags(flags);
24
- const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
24
+ const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
25
25
  nonInteractive,
26
26
  });
27
27
  const [projectDisplayName, ownerAccount] = await Promise.all([
@@ -60,7 +60,7 @@ class EnvironmentVariableUpdate extends EasCommand_1.default {
60
60
  selectedVariable = existingVariables[0];
61
61
  }
62
62
  (0, assert_1.default)(selectedVariable, 'Variable must be selected');
63
- const { name: newName, value: newValue, environment: newEnvironments, visibility: newVisibility, type: newType, } = await this.promptForMissingFlagsAsync(selectedVariable, {
63
+ const { name: newName, value: newValue, environment: newEnvironments, visibility: newVisibility, type: newType, fileName, } = await this.promptForMissingFlagsAsync(selectedVariable, {
64
64
  name,
65
65
  value: rawValue,
66
66
  environment: environments,
@@ -75,6 +75,7 @@ class EnvironmentVariableUpdate extends EasCommand_1.default {
75
75
  environments: newEnvironments,
76
76
  type: newType,
77
77
  visibility: newVisibility,
78
+ fileName: newValue ? fileName : undefined,
78
79
  });
79
80
  if (!variable) {
80
81
  throw new Error(`Could not update variable with name ${name} ${suffix}`);
@@ -95,6 +96,7 @@ class EnvironmentVariableUpdate extends EasCommand_1.default {
95
96
  async promptForMissingFlagsAsync(selectedVariable, { name, value, environment: environments, visibility, 'non-interactive': nonInteractive, type, ...rest }) {
96
97
  let newType;
97
98
  let newVisibility;
99
+ let fileName;
98
100
  if (type === 'file') {
99
101
  newType = generated_1.EnvironmentSecretType.FileBase64;
100
102
  }
@@ -110,9 +112,6 @@ class EnvironmentVariableUpdate extends EasCommand_1.default {
110
112
  }
111
113
  if (!type && !value && !nonInteractive) {
112
114
  newType = await (0, prompts_2.promptVariableTypeAsync)(nonInteractive, selectedVariable.type);
113
- if (!newType || newType === selectedVariable.type) {
114
- newType = undefined;
115
- }
116
115
  }
117
116
  if (!value) {
118
117
  value = await (0, prompts_2.promptVariableValueAsync)({
@@ -125,6 +124,7 @@ class EnvironmentVariableUpdate extends EasCommand_1.default {
125
124
  });
126
125
  if (!value || value.length === 0 || value === selectedVariable.value) {
127
126
  value = undefined;
127
+ newType = undefined;
128
128
  }
129
129
  }
130
130
  let environmentFilePath;
@@ -133,6 +133,7 @@ class EnvironmentVariableUpdate extends EasCommand_1.default {
133
133
  if (!(await fs_extra_1.default.pathExists(environmentFilePath))) {
134
134
  throw new Error(`File "${value}" does not exist`);
135
135
  }
136
+ fileName = path_1.default.basename(environmentFilePath);
136
137
  }
137
138
  value = environmentFilePath ? await fs_extra_1.default.readFile(environmentFilePath, 'base64') : value;
138
139
  if (!environments || environments.length === 0) {
@@ -165,6 +166,7 @@ class EnvironmentVariableUpdate extends EasCommand_1.default {
165
166
  scope: rest.scope ?? generated_1.EnvironmentVariableScope.Project,
166
167
  'non-interactive': nonInteractive,
167
168
  type: newType,
169
+ fileName,
168
170
  ...rest,
169
171
  };
170
172
  }
@@ -196,7 +198,7 @@ EnvironmentVariableUpdate.flags = {
196
198
  ...flags_1.EASNonInteractiveFlag,
197
199
  };
198
200
  EnvironmentVariableUpdate.contextDefinition = {
199
- ..._a.ContextOptions.ProjectConfig,
201
+ ..._a.ContextOptions.ProjectId,
200
202
  ..._a.ContextOptions.Analytics,
201
203
  ..._a.ContextOptions.LoggedIn,
202
204
  };
@@ -20,6 +20,7 @@ class MetadataPull extends EasCommand_1.default {
20
20
  const { flags } = await this.parse(_a);
21
21
  const { loggedIn: { actor, graphqlClient }, privateProjectConfig: { exp, projectId, projectDir }, analytics, vcsClient, } = await this.getContextAsync(_a, {
22
22
  nonInteractive: false,
23
+ withServerSideEnvironment: null,
23
24
  });
24
25
  // this command is interactive (all nonInteractive flags passed to utility functions are false)
25
26
  await (0, configure_1.ensureProjectConfiguredAsync)({ projectDir, nonInteractive: false, vcsClient });
@@ -18,6 +18,7 @@ class MetadataPush extends EasCommand_1.default {
18
18
  const { flags } = await this.parse(_a);
19
19
  const { loggedIn: { actor, graphqlClient }, privateProjectConfig: { exp, projectId, projectDir }, analytics, vcsClient, } = await this.getContextAsync(_a, {
20
20
  nonInteractive: false,
21
+ withServerSideEnvironment: null,
21
22
  });
22
23
  // this command is interactive (all nonInteractive flags passed to utility functions are false)
23
24
  await (0, configure_1.ensureProjectConfiguredAsync)({ projectDir, nonInteractive: false, vcsClient });
@@ -12,6 +12,7 @@ class Open extends EasCommand_1.default {
12
12
  // this command is interactive by nature (only really run by humans in a terminal)
13
13
  const { privateProjectConfig: { projectId, exp }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
14
14
  nonInteractive: false,
15
+ withServerSideEnvironment: null,
15
16
  });
16
17
  const account = await (0, projectUtils_1.getOwnerAccountForProjectIdAsync)(graphqlClient, projectId);
17
18
  const projectName = exp.slug;
@@ -3,7 +3,7 @@ export default class ProjectInfo extends EasCommand {
3
3
  static description: string;
4
4
  static contextDefinition: {
5
5
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
6
- privateProjectConfig: import("../../commandUtils/context/PrivateProjectConfigContextField").PrivateProjectConfigContextField;
6
+ projectId: import("../../commandUtils/context/ProjectIdContextField").ProjectIdContextField;
7
7
  };
8
8
  runAsync(): Promise<void>;
9
9
  }
@@ -24,7 +24,7 @@ async function projectInfoByIdAsync(graphqlClient, appId) {
24
24
  }
25
25
  class ProjectInfo extends EasCommand_1.default {
26
26
  async runAsync() {
27
- const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
27
+ const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
28
28
  nonInteractive: true,
29
29
  });
30
30
  const { app } = await projectInfoByIdAsync(graphqlClient, projectId);
@@ -41,7 +41,7 @@ class ProjectInfo extends EasCommand_1.default {
41
41
  _a = ProjectInfo;
42
42
  ProjectInfo.description = 'information about the current project';
43
43
  ProjectInfo.contextDefinition = {
44
- ..._a.ContextOptions.ProjectConfig,
44
+ ..._a.ContextOptions.ProjectId,
45
45
  ..._a.ContextOptions.LoggedIn,
46
46
  };
47
47
  exports.default = ProjectInfo;
@@ -13,7 +13,7 @@ export default class EnvironmentSecretCreate extends EasCommand {
13
13
  };
14
14
  static contextDefinition: {
15
15
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
16
- privateProjectConfig: import("../../commandUtils/context/PrivateProjectConfigContextField").PrivateProjectConfigContextField;
16
+ projectId: import("../../commandUtils/context/ProjectIdContextField").ProjectIdContextField;
17
17
  };
18
18
  runAsync(): Promise<void>;
19
19
  }
@@ -18,7 +18,7 @@ const prompts_1 = require("../../prompts");
18
18
  class EnvironmentSecretCreate extends EasCommand_1.default {
19
19
  async runAsync() {
20
20
  let { flags: { name, value: secretValue, scope, force, type: secretType, 'non-interactive': nonInteractive, }, } = await this.parse(_a);
21
- const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
21
+ const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
22
22
  nonInteractive,
23
23
  });
24
24
  const projectDisplayName = await (0, projectUtils_1.getDisplayNameForProjectIdAsync)(graphqlClient, projectId);
@@ -179,7 +179,7 @@ EnvironmentSecretCreate.flags = {
179
179
  ...flags_1.EASNonInteractiveFlag,
180
180
  };
181
181
  EnvironmentSecretCreate.contextDefinition = {
182
- ..._a.ContextOptions.ProjectConfig,
182
+ ..._a.ContextOptions.ProjectId,
183
183
  ..._a.ContextOptions.LoggedIn,
184
184
  };
185
185
  exports.default = EnvironmentSecretCreate;
@@ -7,7 +7,7 @@ export default class EnvironmentSecretDelete extends EasCommand {
7
7
  };
8
8
  static contextDefinition: {
9
9
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
10
- privateProjectConfig: import("../../commandUtils/context/PrivateProjectConfigContextField").PrivateProjectConfigContextField;
10
+ projectId: import("../../commandUtils/context/ProjectIdContextField").ProjectIdContextField;
11
11
  };
12
12
  runAsync(): Promise<void>;
13
13
  }
@@ -12,7 +12,7 @@ const prompts_1 = require("../../prompts");
12
12
  class EnvironmentSecretDelete extends EasCommand_1.default {
13
13
  async runAsync() {
14
14
  let { flags: { id, 'non-interactive': nonInteractive }, } = await this.parse(_a);
15
- const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
15
+ const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
16
16
  nonInteractive,
17
17
  });
18
18
  let secret;
@@ -63,7 +63,7 @@ EnvironmentSecretDelete.flags = {
63
63
  ...flags_1.EASNonInteractiveFlag,
64
64
  };
65
65
  EnvironmentSecretDelete.contextDefinition = {
66
- ..._a.ContextOptions.ProjectConfig,
66
+ ..._a.ContextOptions.ProjectId,
67
67
  ..._a.ContextOptions.LoggedIn,
68
68
  };
69
69
  exports.default = EnvironmentSecretDelete;
@@ -3,7 +3,7 @@ export default class EnvironmentSecretList extends EasCommand {
3
3
  static description: string;
4
4
  static contextDefinition: {
5
5
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
6
- privateProjectConfig: import("../../commandUtils/context/PrivateProjectConfigContextField").PrivateProjectConfigContextField;
6
+ projectId: import("../../commandUtils/context/ProjectIdContextField").ProjectIdContextField;
7
7
  };
8
8
  runAsync(): Promise<void>;
9
9
  }
@@ -10,7 +10,7 @@ const log_1 = tslib_1.__importDefault(require("../../log"));
10
10
  const formatFields_1 = tslib_1.__importDefault(require("../../utils/formatFields"));
11
11
  class EnvironmentSecretList extends EasCommand_1.default {
12
12
  async runAsync() {
13
- const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
13
+ const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
14
14
  nonInteractive: true,
15
15
  });
16
16
  const secrets = await EnvironmentSecretsQuery_1.EnvironmentSecretsQuery.allAsync(graphqlClient, projectId);
@@ -21,7 +21,7 @@ class EnvironmentSecretList extends EasCommand_1.default {
21
21
  _a = EnvironmentSecretList;
22
22
  EnvironmentSecretList.description = 'list environment secrets available for your current app';
23
23
  EnvironmentSecretList.contextDefinition = {
24
- ..._a.ContextOptions.ProjectConfig,
24
+ ..._a.ContextOptions.ProjectId,
25
25
  ..._a.ContextOptions.LoggedIn,
26
26
  };
27
27
  exports.default = EnvironmentSecretList;
@@ -10,7 +10,7 @@ export default class EnvironmentSecretPush extends EasCommand {
10
10
  };
11
11
  static contextDefinition: {
12
12
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
13
- privateProjectConfig: import("../../commandUtils/context/PrivateProjectConfigContextField").PrivateProjectConfigContextField;
13
+ projectId: import("../../commandUtils/context/ProjectIdContextField").ProjectIdContextField;
14
14
  };
15
15
  runAsync(): Promise<void>;
16
16
  }
@@ -20,7 +20,7 @@ const intersection_1 = tslib_1.__importDefault(require("../../utils/expodash/int
20
20
  class EnvironmentSecretPush extends EasCommand_1.default {
21
21
  async runAsync() {
22
22
  const { flags: { scope, force, 'env-file': maybeEnvFilePath, 'non-interactive': nonInteractive }, } = await this.parse(_a);
23
- const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
23
+ const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
24
24
  nonInteractive,
25
25
  });
26
26
  const projectDisplayName = await (0, projectUtils_1.getDisplayNameForProjectIdAsync)(graphqlClient, projectId);
@@ -62,7 +62,7 @@ EnvironmentSecretPush.flags = {
62
62
  ...flags_1.EASNonInteractiveFlag,
63
63
  };
64
64
  EnvironmentSecretPush.contextDefinition = {
65
- ..._a.ContextOptions.ProjectConfig,
65
+ ..._a.ContextOptions.ProjectId,
66
66
  ..._a.ContextOptions.LoggedIn,
67
67
  };
68
68
  exports.default = EnvironmentSecretPush;
@@ -29,6 +29,7 @@ class SubmitInternal extends EasCommand_1.default {
29
29
  const { loggedIn: { actor, graphqlClient }, privateProjectConfig: { exp, projectId, projectDir }, analytics, vcsClient, } = await this.getContextAsync(_a, {
30
30
  nonInteractive: true,
31
31
  vcsClientOverride: new gitNoCommit_1.default(),
32
+ withServerSideEnvironment: null,
32
33
  });
33
34
  const submissionProfile = await eas_json_1.EasJsonUtils.getSubmitProfileAsync(eas_json_1.EasJsonAccessor.fromProjectPath(projectDir), flags.platform, flags.profile);
34
35
  const ctx = await (0, context_1.createSubmissionContextAsync)({
@@ -20,6 +20,7 @@ class Submit extends EasCommand_1.default {
20
20
  const { flags: rawFlags } = await this.parse(_a);
21
21
  const { loggedIn: { actor, graphqlClient }, privateProjectConfig: { exp, projectId, projectDir }, analytics, vcsClient, } = await this.getContextAsync(_a, {
22
22
  nonInteractive: false,
23
+ withServerSideEnvironment: null,
23
24
  });
24
25
  const flags = this.sanitizeFlags(rawFlags);
25
26
  await (0, statuspageService_1.maybeWarnAboutEasOutagesAsync)(graphqlClient, [generated_1.StatuspageServiceName.EasSubmit]);
@@ -15,6 +15,7 @@ class UpdateConfigure extends EasCommand_1.default {
15
15
  const platform = flags.platform;
16
16
  const { privateProjectConfig: { projectId, exp, projectDir }, vcsClient, } = await this.getContextAsync(_a, {
17
17
  nonInteractive: flags['non-interactive'],
18
+ withServerSideEnvironment: null,
18
19
  });
19
20
  log_1.default.log('💡 The following process will configure your project to use EAS Update. These changes only apply to your local project files and you can safely revert them at any time.');
20
21
  await vcsClient.ensureRepoExistsAsync();
@@ -13,7 +13,7 @@ export default class UpdateEdit extends EasCommand {
13
13
  };
14
14
  static contextDefinition: {
15
15
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
16
- privateProjectConfig: import("../../commandUtils/context/PrivateProjectConfigContextField").PrivateProjectConfigContextField;
16
+ projectId: import("../../commandUtils/context/ProjectIdContextField").ProjectIdContextField;
17
17
  };
18
18
  runAsync(): Promise<void>;
19
19
  }
@@ -18,7 +18,7 @@ const json_1 = require("../../utils/json");
18
18
  class UpdateEdit extends EasCommand_1.default {
19
19
  async runAsync() {
20
20
  const { args: { groupId: maybeGroupId }, flags: { 'rollout-percentage': rolloutPercentage, json: jsonFlag, 'non-interactive': nonInteractive, branch: branchFlag, }, } = await this.parse(_a);
21
- const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, { nonInteractive });
21
+ const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, { nonInteractive });
22
22
  if (jsonFlag) {
23
23
  (0, json_1.enableJsonOutput)();
24
24
  }
@@ -133,7 +133,7 @@ UpdateEdit.flags = {
133
133
  ...flags_1.EasNonInteractiveAndJsonFlags,
134
134
  };
135
135
  UpdateEdit.contextDefinition = {
136
- ..._a.ContextOptions.ProjectConfig,
136
+ ..._a.ContextOptions.ProjectId,
137
137
  ..._a.ContextOptions.LoggedIn,
138
138
  };
139
139
  exports.default = UpdateEdit;
@@ -15,8 +15,10 @@ export default class UpdatePublish extends EasCommand {
15
15
  platform: import("@oclif/core/lib/interfaces").OptionFlag<string>;
16
16
  auto: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
17
17
  'private-key-path': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
18
+ 'with-eas-environment-variables-set': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
18
19
  };
19
20
  static contextDefinition: {
21
+ getServerSideEnvironmentVariablesAsync: import("../../commandUtils/context/ServerSideEnvironmentVariablesContextField").ServerSideEnvironmentVariablesContextField;
20
22
  vcsClient: import("../../commandUtils/context/VcsClientContextField").default;
21
23
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
22
24
  getDynamicPublicProjectConfigAsync: import("../../commandUtils/context/DynamicProjectConfigContextField").DynamicPublicProjectConfigContextField;
@@ -34,9 +34,10 @@ class UpdatePublish extends EasCommand_1.default {
34
34
  async runAsync() {
35
35
  const { flags: rawFlags } = await this.parse(_a);
36
36
  const paginatedQueryOptions = (0, pagination_1.getPaginatedQueryOptions)(rawFlags);
37
- const { auto: autoFlag, platform: requestedPlatform, channelName: channelNameArg, updateMessage: updateMessageArg, inputDir, skipBundler, clearCache, privateKeyPath, json: jsonFlag, nonInteractive, branchName: branchNameArg, emitMetadata, rolloutPercentage, } = this.sanitizeFlags(rawFlags);
38
- const { getDynamicPublicProjectConfigAsync, getDynamicPrivateProjectConfigAsync, loggedIn: { graphqlClient }, vcsClient, } = await this.getContextAsync(_a, {
37
+ const { auto: autoFlag, platform: requestedPlatform, channelName: channelNameArg, updateMessage: updateMessageArg, inputDir, skipBundler, clearCache, privateKeyPath, json: jsonFlag, nonInteractive, branchName: branchNameArg, emitMetadata, rolloutPercentage, withEasEnvironmentVariablesSet, } = this.sanitizeFlags(rawFlags);
38
+ const { getDynamicPublicProjectConfigAsync, getDynamicPrivateProjectConfigAsync, loggedIn: { graphqlClient }, vcsClient, getServerSideEnvironmentVariablesAsync, } = await this.getContextAsync(_a, {
39
39
  nonInteractive,
40
+ withServerSideEnvironment: withEasEnvironmentVariablesSet ?? null,
40
41
  });
41
42
  if (jsonFlag) {
42
43
  (0, json_1.enableJsonOutput)();
@@ -82,6 +83,11 @@ class UpdatePublish extends EasCommand_1.default {
82
83
  exp,
83
84
  platformFlag: requestedPlatform,
84
85
  clearCache,
86
+ extraEnv: {
87
+ ...(withEasEnvironmentVariablesSet
88
+ ? { ...(await getServerSideEnvironmentVariablesAsync()), EXPO_NO_DOTENV: '1' }
89
+ : {}),
90
+ },
85
91
  });
86
92
  bundleSpinner.succeed('Exported bundle(s)');
87
93
  }
@@ -373,6 +379,12 @@ class UpdatePublish extends EasCommand_1.default {
373
379
  emitMetadata = false;
374
380
  log_1.default.warn('ignoring flag --emit-metadata as metadata cannot be generated when skipping bundle generation');
375
381
  }
382
+ if (flags['with-eas-environment-variables-set'] &&
383
+ !Object.values(generated_1.EnvironmentVariableEnvironment).includes(flags['with-eas-environment-variables-set'])) {
384
+ core_1.Errors.error(`--with-eas-environment-variables-set must be one of ${Object.values(generated_1.EnvironmentVariableEnvironment)
385
+ .map(env => `"${env.toLocaleLowerCase()}"`)
386
+ .join(', ')}`, { exit: 1 });
387
+ }
376
388
  return {
377
389
  auto,
378
390
  branchName,
@@ -380,13 +392,14 @@ class UpdatePublish extends EasCommand_1.default {
380
392
  updateMessage,
381
393
  inputDir: flags['input-dir'],
382
394
  skipBundler,
383
- clearCache: flags['clear-cache'],
395
+ clearCache: flags['clear-cache'] ? true : !!flags['with-eas-environment-variables-set'],
384
396
  platform: flags.platform,
385
397
  privateKeyPath: flags['private-key-path'],
386
398
  rolloutPercentage: flags['rollout-percentage'],
387
399
  nonInteractive,
388
400
  emitMetadata,
389
401
  json: flags.json ?? false,
402
+ withEasEnvironmentVariablesSet: flags['with-eas-environment-variables-set'],
390
403
  };
391
404
  }
392
405
  }
@@ -447,11 +460,24 @@ UpdatePublish.flags = {
447
460
  description: `File containing the PEM-encoded private key corresponding to the certificate in expo-updates' configuration. Defaults to a file named "private-key.pem" in the certificate's directory. Only relevant if you are using code signing: https://docs.expo.dev/eas-update/code-signing/`,
448
461
  required: false,
449
462
  }),
463
+ 'with-eas-environment-variables-set': core_1.Flags.enum({
464
+ description: 'Environment to use for EAS environment variables',
465
+ options: [
466
+ generated_1.EnvironmentVariableEnvironment.Development,
467
+ generated_1.EnvironmentVariableEnvironment.Preview,
468
+ generated_1.EnvironmentVariableEnvironment.Production,
469
+ ].map(env => env.toLowerCase()),
470
+ // eslint-disable-next-line async-protect/async-suffix
471
+ parse: async (input) => input.toUpperCase(),
472
+ required: false,
473
+ hidden: true,
474
+ }),
450
475
  ...flags_1.EasNonInteractiveAndJsonFlags,
451
476
  };
452
477
  UpdatePublish.contextDefinition = {
453
478
  ..._a.ContextOptions.DynamicProjectConfig,
454
479
  ..._a.ContextOptions.LoggedIn,
455
480
  ..._a.ContextOptions.Vcs,
481
+ ..._a.ContextOptions.ServerSideEnvironmentVariables,
456
482
  };
457
483
  exports.default = UpdatePublish;
@@ -11,7 +11,7 @@ export default class UpdateList extends EasCommand {
11
11
  };
12
12
  static contextDefinition: {
13
13
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
14
- privateProjectConfig: import("../../commandUtils/context/PrivateProjectConfigContextField").PrivateProjectConfigContextField;
14
+ projectId: import("../../commandUtils/context/ProjectIdContextField").ProjectIdContextField;
15
15
  };
16
16
  runAsync(): Promise<void>;
17
17
  }
@@ -13,7 +13,7 @@ class UpdateList extends EasCommand_1.default {
13
13
  async runAsync() {
14
14
  const { flags } = await this.parse(_a);
15
15
  const { branch: branchFlag, all, json: jsonFlag, 'non-interactive': nonInteractive } = flags;
16
- const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
16
+ const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
17
17
  nonInteractive,
18
18
  });
19
19
  const paginatedQueryOptions = (0, pagination_1.getPaginatedQueryOptions)(flags);
@@ -79,7 +79,7 @@ UpdateList.flags = {
79
79
  ...flags_1.EasNonInteractiveAndJsonFlags,
80
80
  };
81
81
  UpdateList.contextDefinition = {
82
- ..._a.ContextOptions.ProjectConfig,
82
+ ..._a.ContextOptions.ProjectId,
83
83
  ..._a.ContextOptions.LoggedIn,
84
84
  };
85
85
  exports.default = UpdateList;
@@ -25,6 +25,7 @@ class UpdateRepublish extends EasCommand_1.default {
25
25
  const flags = this.sanitizeFlags(rawFlags);
26
26
  const { privateProjectConfig: { exp, projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
27
27
  nonInteractive: flags.nonInteractive,
28
+ withServerSideEnvironment: null,
28
29
  });
29
30
  if (flags.json) {
30
31
  (0, json_1.enableJsonOutput)();
@@ -32,6 +32,7 @@ class UpdateRollBackToEmbedded extends EasCommand_1.default {
32
32
  const { auto: autoFlag, platform: platformFlag, channelName: channelNameArg, updateMessage: updateMessageArg, privateKeyPath, json: jsonFlag, nonInteractive, branchName: branchNameArg, } = this.sanitizeFlags(rawFlags);
33
33
  const { getDynamicPublicProjectConfigAsync, getDynamicPrivateProjectConfigAsync, loggedIn: { graphqlClient }, vcsClient, } = await this.getContextAsync(_a, {
34
34
  nonInteractive,
35
+ withServerSideEnvironment: null,
35
36
  });
36
37
  if (jsonFlag) {
37
38
  (0, json_1.enableJsonOutput)();
@@ -10,7 +10,7 @@ export default class WebhookCreate extends EasCommand {
10
10
  };
11
11
  static contextDefinition: {
12
12
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
13
- privateProjectConfig: import("../../commandUtils/context/PrivateProjectConfigContextField").PrivateProjectConfigContextField;
13
+ projectId: import("../../commandUtils/context/ProjectIdContextField").ProjectIdContextField;
14
14
  };
15
15
  runAsync(): Promise<void>;
16
16
  }
@@ -12,7 +12,7 @@ const input_1 = require("../../webhooks/input");
12
12
  class WebhookCreate extends EasCommand_1.default {
13
13
  async runAsync() {
14
14
  const { flags } = await this.parse(_a);
15
- const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
15
+ const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
16
16
  nonInteractive: flags['non-interactive'],
17
17
  });
18
18
  const webhookInputParams = await (0, input_1.prepareInputParamsAsync)(flags);
@@ -43,7 +43,7 @@ WebhookCreate.flags = {
43
43
  ...flags_1.EASNonInteractiveFlag,
44
44
  };
45
45
  WebhookCreate.contextDefinition = {
46
- ..._a.ContextOptions.ProjectConfig,
46
+ ..._a.ContextOptions.ProjectId,
47
47
  ..._a.ContextOptions.LoggedIn,
48
48
  };
49
49
  exports.default = WebhookCreate;
@@ -11,7 +11,7 @@ export default class WebhookDelete extends EasCommand {
11
11
  };
12
12
  static contextDefinition: {
13
13
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
14
- privateProjectConfig: import("../../commandUtils/context/PrivateProjectConfigContextField").PrivateProjectConfigContextField;
14
+ projectId: import("../../commandUtils/context/ProjectIdContextField").ProjectIdContextField;
15
15
  };
16
16
  runAsync(): Promise<void>;
17
17
  }
@@ -16,7 +16,7 @@ const formatWebhook_1 = require("../../webhooks/formatWebhook");
16
16
  class WebhookDelete extends EasCommand_1.default {
17
17
  async runAsync() {
18
18
  let { args: { ID: webhookId }, flags: { 'non-interactive': nonInteractive }, } = await this.parse(_a);
19
- const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
19
+ const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
20
20
  nonInteractive,
21
21
  });
22
22
  let webhook = webhookId && (await WebhookQuery_1.WebhookQuery.byIdAsync(graphqlClient, webhookId));
@@ -78,7 +78,7 @@ WebhookDelete.flags = {
78
78
  ...flags_1.EASNonInteractiveFlag,
79
79
  };
80
80
  WebhookDelete.contextDefinition = {
81
- ..._a.ContextOptions.ProjectConfig,
81
+ ..._a.ContextOptions.ProjectId,
82
82
  ..._a.ContextOptions.LoggedIn,
83
83
  };
84
84
  exports.default = WebhookDelete;
@@ -8,7 +8,7 @@ export default class WebhookList extends EasCommand {
8
8
  };
9
9
  static contextDefinition: {
10
10
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
11
- privateProjectConfig: import("../../commandUtils/context/PrivateProjectConfigContextField").PrivateProjectConfigContextField;
11
+ projectId: import("../../commandUtils/context/ProjectIdContextField").ProjectIdContextField;
12
12
  };
13
13
  runAsync(): Promise<void>;
14
14
  }
@@ -19,7 +19,7 @@ class WebhookList extends EasCommand_1.default {
19
19
  if (json) {
20
20
  (0, json_1.enableJsonOutput)();
21
21
  }
22
- const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
22
+ const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
23
23
  nonInteractive: true,
24
24
  });
25
25
  const projectDisplayName = await (0, projectUtils_1.getDisplayNameForProjectIdAsync)(graphqlClient, projectId);
@@ -58,7 +58,7 @@ WebhookList.flags = {
58
58
  ...flags_1.EasJsonOnlyFlag,
59
59
  };
60
60
  WebhookList.contextDefinition = {
61
- ..._a.ContextOptions.ProjectConfig,
61
+ ..._a.ContextOptions.ProjectId,
62
62
  ..._a.ContextOptions.LoggedIn,
63
63
  };
64
64
  exports.default = WebhookList;
@@ -22,6 +22,7 @@ class WorkerAlias extends EasCommand_1.default {
22
22
  log_1.default.warn('EAS Worker Deployments are in beta and subject to breaking changes.');
23
23
  const { getDynamicPrivateProjectConfigAsync, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
24
24
  nonInteractive: true,
25
+ withServerSideEnvironment: null,
25
26
  });
26
27
  const { projectId } = await getDynamicPrivateProjectConfigAsync();
27
28
  const aliasName = await resolveDeploymentAliasAsync(flags);
@@ -29,7 +29,7 @@ class WorkerDeploy extends EasCommand_1.default {
29
29
  (0, json_1.enableJsonOutput)();
30
30
  }
31
31
  log_1.default.warn('EAS Worker Deployments are in beta and subject to breaking changes.');
32
- const { getDynamicPrivateProjectConfigAsync, loggedIn: { graphqlClient }, projectDir, } = await this.getContextAsync(_a, flags);
32
+ const { getDynamicPrivateProjectConfigAsync, loggedIn: { graphqlClient }, projectDir, } = await this.getContextAsync(_a, { ...flags, withServerSideEnvironment: null });
33
33
  const projectDist = await resolveExportedProjectAsync(flags, projectDir);
34
34
  const { projectId } = await getDynamicPrivateProjectConfigAsync();
35
35
  logExportedProjectInfo(projectDist);
@@ -6,6 +6,7 @@ type CreateVariableArgs = {
6
6
  visibility: EnvironmentVariableVisibility;
7
7
  environments: EnvironmentVariableEnvironment[];
8
8
  type: EnvironmentSecretType;
9
+ fileName?: string;
9
10
  };
10
11
  export type EnvironmentVariablePushInput = {
11
12
  name: string;
@@ -71,12 +71,13 @@ export declare function convertAssetToUpdateInfoGroupFormatAsync(asset: RawAsset
71
71
  */
72
72
  export declare function buildUnsortedUpdateInfoGroupAsync(assets: FilteredCollectedAssets, exp: ExpoConfig): Promise<Partial<UpdateInfoGroup>>;
73
73
  export type ExpoCLIExportPlatformFlag = ExpoConfigPlatform | 'all';
74
- export declare function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clearCache, }: {
74
+ export declare function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clearCache, extraEnv, }: {
75
75
  projectDir: string;
76
76
  inputDir: string;
77
77
  exp: Pick<ExpoConfig, 'sdkVersion' | 'web'>;
78
78
  platformFlag: ExpoCLIExportPlatformFlag;
79
79
  clearCache?: boolean;
80
+ extraEnv?: Record<string, string | undefined> | undefined;
80
81
  }): Promise<void>;
81
82
  export declare function resolveInputDirectoryAsync(inputDir: string, { skipBundler }: {
82
83
  skipBundler?: boolean;
@@ -121,7 +121,7 @@ async function buildUnsortedUpdateInfoGroupAsync(assets, exp) {
121
121
  return updateInfoGroup;
122
122
  }
123
123
  exports.buildUnsortedUpdateInfoGroupAsync = buildUnsortedUpdateInfoGroupAsync;
124
- async function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clearCache, }) {
124
+ async function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clearCache, extraEnv, }) {
125
125
  const packageJSON = json_file_1.default.read(path_1.default.resolve(projectDir, 'package.json'));
126
126
  if (!packageJSON) {
127
127
  throw new Error('Could not locate package.json');
@@ -138,7 +138,9 @@ async function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clea
138
138
  '--dump-assetmap',
139
139
  `--platform=${platformFlag}`,
140
140
  ...(clearCache ? ['--clear'] : []),
141
- ]);
141
+ ], {
142
+ extraEnv,
143
+ });
142
144
  return;
143
145
  }
144
146
  // Versioned Expo CLI, with multiple platform flag support
@@ -155,7 +157,9 @@ async function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clea
155
157
  '--dump-assetmap',
156
158
  ...platformArgs,
157
159
  ...(clearCache ? ['--clear'] : []),
158
- ]);
160
+ ], {
161
+ extraEnv,
162
+ });
159
163
  return;
160
164
  }
161
165
  // Versioned Expo CLI, without multiple platform flag support
@@ -173,7 +177,9 @@ async function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clea
173
177
  '--dump-assetmap',
174
178
  `--platform=${platformFlag}`,
175
179
  ...(clearCache ? ['--clear'] : []),
176
- ]);
180
+ ], {
181
+ extraEnv,
182
+ });
177
183
  }
178
184
  exports.buildBundlesAsync = buildBundlesAsync;
179
185
  async function resolveInputDirectoryAsync(inputDir, { skipBundler }) {
@@ -4,7 +4,7 @@ export declare enum UserSecondFactorDeviceMethod {
4
4
  AUTHENTICATOR = "authenticator",
5
5
  SMS = "sms"
6
6
  }
7
- type LoggedInAuthenticationInfo = {
7
+ export type LoggedInAuthenticationInfo = {
8
8
  accessToken: string;
9
9
  sessionSecret: null;
10
10
  } | {