lim 0.50.1 → 0.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/JSON_OUTPUT.md +2 -1
  2. package/README.md +1 -1
  3. package/dist/base-command.d.ts +6 -0
  4. package/dist/base-command.d.ts.map +1 -1
  5. package/dist/base-command.js +6 -2
  6. package/dist/base-command.js.map +1 -1
  7. package/dist/commands/ios/create.d.ts +0 -6
  8. package/dist/commands/ios/create.d.ts.map +1 -1
  9. package/dist/commands/ios/create.js +9 -45
  10. package/dist/commands/ios/create.js.map +1 -1
  11. package/dist/commands/ios/create.test.js +22 -35
  12. package/dist/commands/ios/create.test.js.map +1 -1
  13. package/dist/commands/ios/keychain/restore.d.ts +0 -2
  14. package/dist/commands/ios/keychain/restore.d.ts.map +1 -1
  15. package/dist/commands/ios/keychain/restore.js +5 -23
  16. package/dist/commands/ios/keychain/restore.js.map +1 -1
  17. package/dist/commands/ios/keychain/save.d.ts +0 -2
  18. package/dist/commands/ios/keychain/save.d.ts.map +1 -1
  19. package/dist/commands/ios/keychain/save.js +8 -37
  20. package/dist/commands/ios/keychain/save.js.map +1 -1
  21. package/dist/commands/ios/keychain/transfer.test.d.ts +2 -0
  22. package/dist/commands/ios/keychain/transfer.test.d.ts.map +1 -0
  23. package/dist/commands/ios/keychain/transfer.test.js +64 -0
  24. package/dist/commands/ios/keychain/transfer.test.js.map +1 -0
  25. package/dist/commands/ios/snapshot/delete.d.ts +21 -0
  26. package/dist/commands/ios/snapshot/delete.d.ts.map +1 -0
  27. package/dist/commands/ios/snapshot/delete.js +30 -0
  28. package/dist/commands/ios/snapshot/delete.js.map +1 -0
  29. package/dist/commands/ios/{keychain/generate-key.d.ts → snapshot/get.d.ts} +6 -2
  30. package/dist/commands/ios/snapshot/get.d.ts.map +1 -0
  31. package/dist/commands/ios/snapshot/get.js +36 -0
  32. package/dist/commands/ios/snapshot/get.js.map +1 -0
  33. package/dist/commands/ios/snapshot/list.d.ts +20 -0
  34. package/dist/commands/ios/snapshot/list.d.ts.map +1 -0
  35. package/dist/commands/ios/snapshot/list.js +45 -0
  36. package/dist/commands/ios/snapshot/list.js.map +1 -0
  37. package/dist/commands/xcode/snapshot/delete.d.ts +21 -0
  38. package/dist/commands/xcode/snapshot/delete.d.ts.map +1 -0
  39. package/dist/commands/xcode/snapshot/delete.js +30 -0
  40. package/dist/commands/xcode/snapshot/delete.js.map +1 -0
  41. package/dist/commands/xcode/snapshot/get.d.ts +20 -0
  42. package/dist/commands/xcode/snapshot/get.d.ts.map +1 -0
  43. package/dist/commands/xcode/snapshot/get.js +36 -0
  44. package/dist/commands/xcode/snapshot/get.js.map +1 -0
  45. package/dist/commands/xcode/snapshot/list.d.ts +20 -0
  46. package/dist/commands/xcode/snapshot/list.d.ts.map +1 -0
  47. package/dist/commands/xcode/snapshot/list.js +45 -0
  48. package/dist/commands/xcode/snapshot/list.js.map +1 -0
  49. package/dist/commands/xcode/snapshot/manage.test.d.ts +2 -0
  50. package/dist/commands/xcode/snapshot/manage.test.d.ts.map +1 -0
  51. package/dist/commands/xcode/snapshot/manage.test.js +65 -0
  52. package/dist/commands/xcode/snapshot/manage.test.js.map +1 -0
  53. package/dist/commands/xcode/test.d.ts +2 -0
  54. package/dist/commands/xcode/test.d.ts.map +1 -1
  55. package/dist/commands/xcode/test.js +19 -2
  56. package/dist/commands/xcode/test.js.map +1 -1
  57. package/dist/commands/xcode/test.test.d.ts +2 -0
  58. package/dist/commands/xcode/test.test.d.ts.map +1 -0
  59. package/dist/commands/xcode/test.test.js +67 -0
  60. package/dist/commands/xcode/test.test.js.map +1 -0
  61. package/dist/json-contract.test.js +13 -5
  62. package/dist/json-contract.test.js.map +1 -1
  63. package/dist/lib/ios-device-selection.d.ts +10 -0
  64. package/dist/lib/ios-device-selection.d.ts.map +1 -0
  65. package/dist/lib/ios-device-selection.js +24 -0
  66. package/dist/lib/ios-device-selection.js.map +1 -0
  67. package/dist/lib/keychain.d.ts +2 -0
  68. package/dist/lib/keychain.d.ts.map +1 -0
  69. package/dist/lib/keychain.js +5 -0
  70. package/dist/lib/keychain.js.map +1 -0
  71. package/dist/lib/snapshots.d.ts +20 -0
  72. package/dist/lib/snapshots.d.ts.map +1 -0
  73. package/dist/lib/snapshots.js +23 -0
  74. package/dist/lib/snapshots.js.map +1 -0
  75. package/dist/lib/snapshots.test.d.ts +2 -0
  76. package/dist/lib/snapshots.test.d.ts.map +1 -0
  77. package/dist/lib/snapshots.test.js +46 -0
  78. package/dist/lib/snapshots.test.js.map +1 -0
  79. package/dist/lib/xctest-render.d.ts +1 -1
  80. package/dist/lib/xctest-render.d.ts.map +1 -1
  81. package/dist/lib/xctest-render.js +7 -2
  82. package/dist/lib/xctest-render.js.map +1 -1
  83. package/dist/lib/xctest-render.test.js +23 -0
  84. package/dist/lib/xctest-render.test.js.map +1 -1
  85. package/package.json +8 -2
  86. package/dist/commands/ios/keychain/generate-key.d.ts.map +0 -1
  87. package/dist/commands/ios/keychain/generate-key.js +0 -20
  88. package/dist/commands/ios/keychain/generate-key.js.map +0 -1
  89. package/dist/lib/keychain-encryption-key.d.ts +0 -9
  90. package/dist/lib/keychain-encryption-key.d.ts.map +0 -1
  91. package/dist/lib/keychain-encryption-key.js +0 -55
  92. package/dist/lib/keychain-encryption-key.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"create.test.js","sourceRoot":"","sources":["../../../src/commands/ios/create.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.test.js","sourceRoot":"","sources":["../../../src/commands/ios/create.test.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,6 @@ export default class IosKeychainRestore extends BaseCommand {
10
10
  id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
11
  url: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
12
  'asset-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
- 'encryption-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
- 'encryption-key-stdin': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
13
  'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
16
14
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
17
15
  quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../../../src/commands/ios/keychain/restore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAcpD,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,WAAW;IACzD,MAAM,CAAC,OAAO,SAAmD;IACjE,MAAM,CAAC,WAAW,SACwI;IAC1J,MAAM,CAAC,QAAQ,WAMb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;MAkBV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAkCZ,+BAA+B;CAsC9C"}
1
+ {"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../../../src/commands/ios/keychain/restore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAWpD,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,WAAW;IACzD,MAAM,CAAC,OAAO,SAAmD;IACjE,MAAM,CAAC,WAAW,SACoJ;IACtK,MAAM,CAAC,QAAQ,WAKb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;MAWV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAwBZ,+BAA+B;CAsC9C"}
@@ -3,28 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const core_1 = require("@oclif/core");
4
4
  const base_command_1 = require("../../../base-command");
5
5
  const instance_client_factory_1 = require("../../../lib/instance-client-factory");
6
- const keychain_encryption_key_1 = require("../../../lib/keychain-encryption-key");
6
+ const keychain_1 = require("../../../lib/keychain");
7
7
  class IosKeychainRestore extends base_command_1.BaseCommand {
8
8
  async run() {
9
9
  const { args, flags } = await this.parse(IosKeychainRestore);
10
10
  this.setParsedFlags(flags);
11
- let encryptionKey;
12
- try {
13
- encryptionKey = await (0, keychain_encryption_key_1.resolveKeychainEncryptionKey)({
14
- encryptionKey: flags['encryption-key'],
15
- encryptionKeyStdin: flags['encryption-key-stdin'],
16
- });
17
- }
18
- catch (error) {
19
- this.error(error.message);
20
- }
21
11
  await this.withAuth(async () => {
22
12
  const resolvedInstance = this.resolveIosInstance(flags.id);
23
- const assetName = args.asset_name ?? (!flags.url && !flags['asset-id'] ? keychain_encryption_key_1.DEFAULT_KEYCHAIN_ASSET_NAME : undefined);
13
+ const assetName = args.asset_name ?? (!flags.url && !flags['asset-id'] ? keychain_1.DEFAULT_KEYCHAIN_ASSET_NAME : undefined);
24
14
  const url = flags.url ?? (await this.resolveKeychainAssetDownloadUrl(assetName, flags['asset-id']));
25
15
  const { client, disconnect } = await (0, instance_client_factory_1.getIosInstanceClient)(this.client, resolvedInstance);
26
16
  try {
27
- const result = await client.restoreKeychain({ url, encryptionKey });
17
+ const result = await client.restoreKeychain({ url });
28
18
  if (flags.json) {
29
19
  this.outputJson(result);
30
20
  return;
@@ -76,17 +66,16 @@ class IosKeychainRestore extends base_command_1.BaseCommand {
76
66
  }
77
67
  }
78
68
  IosKeychainRestore.summary = 'Restore iOS keychain state from asset storage';
79
- IosKeychainRestore.description = 'Resolve a Keychain asset by name, then ask the target iOS simulator to download and apply the keychain tar.gz. Use --asset-id to restore by asset ID.';
69
+ IosKeychainRestore.description = 'Resolve a Keychain asset by name, then ask the target iOS simulator to download and apply the unencrypted keychain tar.gz. Use --asset-id to restore by asset ID.';
80
70
  IosKeychainRestore.examples = [
81
71
  '<%= config.bin %> ios keychain restore keychain/login.tar.gz',
82
72
  '<%= config.bin %> ios keychain restore keychain/login.tar.gz --id <instance-ID>',
83
73
  '<%= config.bin %> ios keychain restore --asset-id <asset-ID>',
84
74
  '<%= config.bin %> ios keychain restore --url https://example.t3.storage.dev/... --json',
85
- '<%= config.bin %> ios keychain restore keychain/login.tar.gz --encryption-key-stdin < keychain.key',
86
75
  ];
87
76
  IosKeychainRestore.args = {
88
77
  asset_name: core_1.Args.string({
89
- description: `Keychain asset name to restore. Defaults to ${keychain_encryption_key_1.DEFAULT_KEYCHAIN_ASSET_NAME}.`,
78
+ description: `Keychain asset name to restore. Defaults to ${keychain_1.DEFAULT_KEYCHAIN_ASSET_NAME}.`,
90
79
  required: false,
91
80
  }),
92
81
  };
@@ -101,13 +90,6 @@ IosKeychainRestore.flags = {
101
90
  'asset-id': core_1.Flags.string({
102
91
  description: 'Keychain asset ID to restore instead of resolving the positional asset name.',
103
92
  }),
104
- 'encryption-key': core_1.Flags.string({
105
- description: 'Base64/base64url 32-byte decryption key for the keychain archive.',
106
- }),
107
- 'encryption-key-stdin': core_1.Flags.boolean({
108
- description: 'Read the base64/base64url 32-byte decryption key from stdin.',
109
- default: false,
110
- }),
111
93
  };
112
94
  exports.default = IosKeychainRestore;
113
95
  //# sourceMappingURL=restore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"restore.js","sourceRoot":"","sources":["../../../../src/commands/ios/keychain/restore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restore.js","sourceRoot":"","sources":["../../../../src/commands/ios/keychain/restore.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAC1C,wDAAoD;AACpD,kFAA4E;AAC5E,oDAAoE;AASpE,MAAqB,kBAAmB,SAAQ,0BAAW;IA+BzD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC7D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,SAAS,GACb,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,sCAA2B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAClG,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,+BAA+B,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACpG,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,8CAAoB,EAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YACzF,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;gBACrD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;oBACxB,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,aAAa,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;YAClD,CAAC;oBAAS,CAAC;gBACT,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,+BAA+B,CAAC,SAA6B,EAAE,OAA2B;QACtG,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,KAAoB,CAAC;QACzB,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC7C,UAAU,EAAE,SAAU;gBACtB,UAAU,EAAE,UAAU;gBACtB,kBAAkB,EAAE,IAAI;aACzB,CAAC,CAAoB,CAAC;YACvB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,KAAK,CAAC,6BAA6B,SAAS,aAAa,CAAC,CAAC;YAClE,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,OAAO;qBAChB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;qBAClD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;qBACX,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,wBAAwB,SAAS,8BAA8B,GAAG,oBAAoB,CAAC,CAAC;YACrG,CAAC;YACD,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QACtB,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,IAAI,IAAI,SAAS,2BAA2B,CAAC,CAAC;QACzG,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,KAAK,CAAC,iBAAiB,CAAC;IACjC,CAAC;;AA3FM,0BAAO,GAAG,+CAA+C,CAAC;AAC1D,8BAAW,GAChB,mKAAmK,CAAC;AAC/J,2BAAQ,GAAG;IAChB,8DAA8D;IAC9D,iFAAiF;IACjF,8DAA8D;IAC9D,wFAAwF;CACzF,CAAC;AAEK,uBAAI,GAAG;IACZ,UAAU,EAAE,WAAI,CAAC,MAAM,CAAC;QACtB,WAAW,EAAE,+CAA+C,sCAA2B,GAAG;QAC1F,QAAQ,EAAE,KAAK;KAChB,CAAC;CACH,CAAC;AAEK,wBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,EAAE,EAAE,YAAK,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,6EAA6E;KAC3F,CAAC;IACF,GAAG,EAAE,YAAK,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,2EAA2E;KACzF,CAAC;IACF,UAAU,EAAE,YAAK,CAAC,MAAM,CAAC;QACvB,WAAW,EAAE,8EAA8E;KAC5F,CAAC;CACH,CAAC;kBA7BiB,kBAAkB"}
@@ -10,8 +10,6 @@ export default class IosKeychainSave extends BaseCommand {
10
10
  id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
11
  'asset-name': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
12
  ttl: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
- 'encryption-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
- 'encryption-key-stdin': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
13
  yes: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
16
14
  'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
17
15
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../../../../src/commands/ios/keychain/save.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAcpD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,WAAW;IACtD,MAAM,CAAC,OAAO,SAA8C;IAC5D,MAAM,CAAC,WAAW,SACuJ;IACzK,MAAM,CAAC,QAAQ,WAOb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;MAuBV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAkEZ,0BAA0B;YAO1B,gBAAgB;CAuB/B"}
1
+ {"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../../../../src/commands/ios/keychain/save.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAUpD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,WAAW;IACtD,MAAM,CAAC,OAAO,SAA8C;IAC5D,MAAM,CAAC,WAAW,SACmK;IACrL,MAAM,CAAC,QAAQ,WAKb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;MAeV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA2CZ,0BAA0B;YAO1B,gBAAgB;CAuB/B"}
@@ -7,29 +7,12 @@ const core_1 = require("@oclif/core");
7
7
  const prompts_1 = __importDefault(require("prompts"));
8
8
  const base_command_1 = require("../../../base-command");
9
9
  const instance_client_factory_1 = require("../../../lib/instance-client-factory");
10
- const keychain_encryption_key_1 = require("../../../lib/keychain-encryption-key");
10
+ const keychain_1 = require("../../../lib/keychain");
11
11
  class IosKeychainSave extends base_command_1.BaseCommand {
12
12
  async run() {
13
13
  const { args, flags } = await this.parse(IosKeychainSave);
14
14
  this.setParsedFlags(flags);
15
- const assetName = args.asset_name ?? flags['asset-name'] ?? keychain_encryption_key_1.DEFAULT_KEYCHAIN_ASSET_NAME;
16
- let encryptionKey;
17
- let generatedEncryptionKey = false;
18
- try {
19
- if (flags['encryption-key'] !== undefined || flags['encryption-key-stdin']) {
20
- encryptionKey = await (0, keychain_encryption_key_1.resolveKeychainEncryptionKey)({
21
- encryptionKey: flags['encryption-key'],
22
- encryptionKeyStdin: flags['encryption-key-stdin'],
23
- });
24
- }
25
- else {
26
- encryptionKey = (0, keychain_encryption_key_1.generateKeychainEncryptionKey)();
27
- generatedEncryptionKey = true;
28
- }
29
- }
30
- catch (error) {
31
- this.error(error.message);
32
- }
15
+ const assetName = args.asset_name ?? flags['asset-name'] ?? keychain_1.DEFAULT_KEYCHAIN_ASSET_NAME;
33
16
  await this.withAuth(async () => {
34
17
  const resolvedInstance = this.resolveIosInstance(flags.id);
35
18
  const existingAssets = await this.listExistingKeychainAssets(assetName);
@@ -48,13 +31,13 @@ class IosKeychainSave extends base_command_1.BaseCommand {
48
31
  });
49
32
  const { client, disconnect } = await (0, instance_client_factory_1.getIosInstanceClient)(this.client, resolvedInstance);
50
33
  try {
51
- await client.saveKeychain({ url: asset.signedUploadUrl, encryptionKey });
34
+ await client.saveKeychain({ url: asset.signedUploadUrl });
52
35
  }
53
36
  finally {
54
37
  disconnect();
55
38
  }
56
39
  if (flags.json) {
57
- this.outputJson(generatedEncryptionKey ? { ...asset, encryptionKey } : asset);
40
+ this.outputJson(asset);
58
41
  return;
59
42
  }
60
43
  this.output(`ID: ${asset.id}`);
@@ -62,10 +45,7 @@ class IosKeychainSave extends base_command_1.BaseCommand {
62
45
  if (asset.expiresAt) {
63
46
  this.output(`Expires At: ${asset.expiresAt}`);
64
47
  }
65
- if (generatedEncryptionKey) {
66
- this.output(`Auto-generated the encryption key.`);
67
- }
68
- this.output(`You can restore with the following command: \n\n$ lim ios keychain restore ${asset.name} --encryption-key ${generatedEncryptionKey ? encryptionKey : '<key>'}`);
48
+ this.output(`Restore with: lim ios keychain restore ${asset.name}`);
69
49
  });
70
50
  }
71
51
  async listExistingKeychainAssets(assetName) {
@@ -93,18 +73,16 @@ class IosKeychainSave extends base_command_1.BaseCommand {
93
73
  }
94
74
  }
95
75
  IosKeychainSave.summary = 'Save iOS keychain state to asset storage';
96
- IosKeychainSave.description = 'Create a Keychain asset or confirm overwriting an existing one, ask the target iOS simulator to upload its keychain tar.gz to asset storage, and print the asset ID.';
76
+ IosKeychainSave.description = 'Create a Keychain asset or confirm overwriting an existing one, ask the target iOS simulator to upload its unencrypted keychain tar.gz to asset storage, and print the asset ID.';
97
77
  IosKeychainSave.examples = [
98
78
  '<%= config.bin %> ios keychain save',
99
79
  '<%= config.bin %> ios keychain save keychain/login.tar.gz',
100
80
  '<%= config.bin %> ios keychain save keychain/login.tar.gz --ttl 24h --json',
101
81
  '<%= config.bin %> ios keychain save keychain/login.tar.gz --yes',
102
- '<%= config.bin %> ios keychain generate-key > keychain.key',
103
- '<%= config.bin %> ios keychain save keychain/login.tar.gz --encryption-key-stdin < keychain.key',
104
82
  ];
105
83
  IosKeychainSave.args = {
106
84
  asset_name: core_1.Args.string({
107
- description: `Keychain asset name to store the saved keychain under. Defaults to ${keychain_encryption_key_1.DEFAULT_KEYCHAIN_ASSET_NAME}.`,
85
+ description: `Keychain asset name to store the saved keychain under. Defaults to ${keychain_1.DEFAULT_KEYCHAIN_ASSET_NAME}.`,
108
86
  required: false,
109
87
  }),
110
88
  };
@@ -114,18 +92,11 @@ IosKeychainSave.flags = {
114
92
  description: 'iOS instance ID to save from. Defaults to the last created iOS instance.',
115
93
  }),
116
94
  'asset-name': core_1.Flags.string({
117
- description: `Asset name to store the saved keychain under. Defaults to ${keychain_encryption_key_1.DEFAULT_KEYCHAIN_ASSET_NAME}. Prefer the positional <asset-name> argument.`,
95
+ description: `Asset name to store the saved keychain under. Defaults to ${keychain_1.DEFAULT_KEYCHAIN_ASSET_NAME}. Prefer the positional <asset-name> argument.`,
118
96
  }),
119
97
  ttl: core_1.Flags.string({
120
98
  description: 'Time-to-live as a Go duration (e.g. "24h", min 1m). Defaults to no expiry.',
121
99
  }),
122
- 'encryption-key': core_1.Flags.string({
123
- description: 'Base64/base64url 32-byte encryption key for the saved keychain archive. Generated and printed if omitted.',
124
- }),
125
- 'encryption-key-stdin': core_1.Flags.boolean({
126
- description: 'Read the base64/base64url 32-byte encryption key from stdin.',
127
- default: false,
128
- }),
129
100
  yes: core_1.Flags.boolean({
130
101
  description: 'Overwrite an existing keychain asset without prompting.',
131
102
  default: false,
@@ -1 +1 @@
1
- {"version":3,"file":"save.js","sourceRoot":"","sources":["../../../../src/commands/ios/keychain/save.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"save.js","sourceRoot":"","sources":["../../../../src/commands/ios/keychain/save.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transfer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.test.d.ts","sourceRoot":"","sources":["../../../../src/commands/ios/keychain/transfer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const save_1 = __importDefault(require("./save"));
7
+ const restore_1 = __importDefault(require("./restore"));
8
+ const instance_client_factory_1 = require("../../../lib/instance-client-factory");
9
+ jest.mock('../../../lib/instance-client-factory', () => ({ getIosInstanceClient: jest.fn() }));
10
+ const asset = {
11
+ id: 'asset_test',
12
+ name: 'keychain/login.tar.gz',
13
+ kind: 'Keychain',
14
+ signedUploadUrl: 'https://assets.example/upload',
15
+ signedDownloadUrl: 'https://assets.example/download',
16
+ };
17
+ function setup(commandClass) {
18
+ const command = Object.assign(Object.create(commandClass.prototype), {
19
+ parse: async () => ({ args: {}, flags: { json: true } }),
20
+ setParsedFlags: jest.fn(),
21
+ withAuth: async (run) => run(),
22
+ resolveIosInstance: () => ({ id: 'ios_test' }),
23
+ outputJson: jest.fn(),
24
+ });
25
+ const assets = { list: jest.fn(), getOrCreate: jest.fn().mockResolvedValue(asset) };
26
+ Object.defineProperty(command, 'client', { value: { assets } });
27
+ const client = {
28
+ saveKeychain: jest.fn().mockResolvedValue(undefined),
29
+ restoreKeychain: jest.fn().mockResolvedValue({ durationMs: 42 }),
30
+ };
31
+ const disconnect = jest.fn();
32
+ jest
33
+ .mocked(instance_client_factory_1.getIosInstanceClient)
34
+ .mockResolvedValue({ client, disconnect });
35
+ return { command, assets, client, disconnect };
36
+ }
37
+ test('save uploads the keychain and returns the asset without a generated key', async () => {
38
+ const { command, assets, client, disconnect } = setup(save_1.default);
39
+ assets.list.mockResolvedValue([]);
40
+ await command.run();
41
+ expect(assets.getOrCreate).toHaveBeenCalledWith({
42
+ name: asset.name,
43
+ kind: 'Keychain',
44
+ platform: 'ios',
45
+ ttl: undefined,
46
+ });
47
+ expect(client.saveKeychain).toHaveBeenCalledWith({ url: asset.signedUploadUrl });
48
+ expect(command.outputJson).toHaveBeenCalledWith(asset);
49
+ expect(disconnect).toHaveBeenCalledTimes(1);
50
+ });
51
+ test('restore resolves the default asset and applies it without a key', async () => {
52
+ const { command, assets, client, disconnect } = setup(restore_1.default);
53
+ assets.list.mockResolvedValue([asset]);
54
+ await command.run();
55
+ expect(assets.list).toHaveBeenCalledWith({
56
+ nameFilter: asset.name,
57
+ kindFilter: 'Keychain',
58
+ includeDownloadUrl: true,
59
+ });
60
+ expect(client.restoreKeychain).toHaveBeenCalledWith({ url: asset.signedDownloadUrl });
61
+ expect(command.outputJson).toHaveBeenCalledWith({ durationMs: 42 });
62
+ expect(disconnect).toHaveBeenCalledTimes(1);
63
+ });
64
+ //# sourceMappingURL=transfer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.test.js","sourceRoot":"","sources":["../../../../src/commands/ios/keychain/transfer.test.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,wDAAgC;AAChC,kFAA4E;AAE5E,IAAI,CAAC,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAE/F,MAAM,KAAK,GAAG;IACZ,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,UAAU;IAChB,eAAe,EAAE,+BAA+B;IAChD,iBAAiB,EAAE,iCAAiC;CACrD,CAAC;AAEF,SAAS,KAAK,CAAC,YAA0C;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;QACnE,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QACxD,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;QACzB,QAAQ,EAAE,KAAK,EAAE,GAAwB,EAAE,EAAE,CAAC,GAAG,EAAE;QACnD,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;QAC9C,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;KACtB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;IACpF,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG;QACb,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QACpD,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;KACjE,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC7B,IAAI;SACD,MAAM,CAAC,8CAAoB,CAAC;SAC5B,iBAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAiE,CAAC,CAAC;IAC5G,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACjD,CAAC;AAED,IAAI,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;IACzF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,cAAI,CAAC,CAAC;IAC5D,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;IACpB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC;QAC9C,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,SAAS;KACf,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;IACjF,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,CAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;IACjF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,iBAAO,CAAC,CAAC;IAC/D,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;IACpB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC;QACvC,UAAU,EAAE,KAAK,CAAC,IAAI;QACtB,UAAU,EAAE,UAAU;QACtB,kBAAkB,EAAE,IAAI;KACzB,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACtF,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IACpE,MAAM,CAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { BaseCommand } from '../../../base-command';
2
+ export default class IOSSnapshotDelete extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static aliases: string[];
6
+ static examples: string[];
7
+ static args: {
8
+ key: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
9
+ };
10
+ static flags: {
11
+ organization: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
16
+ workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
17
+ daemon: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../src/commands/ios/snapshot/delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,WAAW;IACxD,MAAM,CAAC,OAAO,SAA0B;IACxC,MAAM,CAAC,WAAW,SACiL;IACnM,MAAM,CAAC,OAAO,WAA0B;IACxC,MAAM,CAAC,QAAQ,WAAwD;IAEvE,MAAM,CAAC,IAAI;;MAAgF;IAE3F,MAAM,CAAC,KAAK;;;;;;;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAY3B"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../../base-command");
5
+ const backend_1 = require("../../../lib/backend");
6
+ const snapshots_1 = require("../../../lib/snapshots");
7
+ class IOSSnapshotDelete extends base_command_1.BaseCommand {
8
+ async run() {
9
+ const { args, flags } = await this.parse(IOSSnapshotDelete);
10
+ this.setParsedFlags(flags);
11
+ await this.withAuth(async () => {
12
+ const organizationId = flags.organization ?? (await (0, backend_1.whoAmI)(this.client));
13
+ await (0, snapshots_1.snapshotResource)(this.client, 'ios', organizationId).delete(args.key);
14
+ this.outputResult({ ok: true, key: args.key }, `Deleted snapshot ${args.key}. Running instances can save this key again.`);
15
+ });
16
+ }
17
+ }
18
+ IOSSnapshotDelete.summary = 'Delete iOS snapshots';
19
+ IOSSnapshotDelete.description = 'Permanently delete the saved archive and its index entry. Running instances can save it again. Stop instances saving this key first if it must remain empty. Also available as snapshot flush.';
20
+ IOSSnapshotDelete.aliases = ['ios:snapshot:flush'];
21
+ IOSSnapshotDelete.examples = ['<%= config.bin %> ios snapshot delete myapp-main'];
22
+ IOSSnapshotDelete.args = { key: core_1.Args.string({ required: true, description: 'Exact snapshot key.' }) };
23
+ IOSSnapshotDelete.flags = {
24
+ ...base_command_1.BaseCommand.baseFlags,
25
+ organization: core_1.Flags.string({
26
+ description: 'Organization ID. Defaults to the API key or login organization.',
27
+ }),
28
+ };
29
+ exports.default = IOSSnapshotDelete;
30
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/commands/ios/snapshot/delete.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAC1C,wDAAoD;AACpD,kDAA8C;AAC9C,sDAA0D;AAE1D,MAAqB,iBAAkB,SAAQ,0BAAW;IAgBxD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,MAAM,IAAA,gBAAM,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACzE,MAAM,IAAA,4BAAgB,EAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5E,IAAI,CAAC,YAAY,CACf,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAC3B,oBAAoB,IAAI,CAAC,GAAG,8CAA8C,CAC3E,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;;AA1BM,yBAAO,GAAG,sBAAsB,CAAC;AACjC,6BAAW,GAChB,gMAAgM,CAAC;AAC5L,yBAAO,GAAG,CAAC,oBAAoB,CAAC,CAAC;AACjC,0BAAQ,GAAG,CAAC,kDAAkD,CAAC,CAAC;AAEhE,sBAAI,GAAG,EAAE,GAAG,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC;AAEpF,uBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,YAAY,EAAE,YAAK,CAAC,MAAM,CAAC;QACzB,WAAW,EAAE,iEAAiE;KAC/E,CAAC;CACH,CAAC;kBAdiB,iBAAiB"}
@@ -1,9 +1,13 @@
1
1
  import { BaseCommand } from '../../../base-command';
2
- export default class IosKeychainGenerateKey extends BaseCommand {
2
+ export default class IOSSnapshotGet extends BaseCommand {
3
3
  static summary: string;
4
4
  static description: string;
5
5
  static examples: string[];
6
+ static args: {
7
+ key: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
8
+ };
6
9
  static flags: {
10
+ organization: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
7
11
  'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
12
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
9
13
  quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
@@ -13,4 +17,4 @@ export default class IosKeychainGenerateKey extends BaseCommand {
13
17
  };
14
18
  run(): Promise<void>;
15
19
  }
16
- //# sourceMappingURL=generate-key.d.ts.map
20
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/commands/ios/snapshot/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,WAAW;IACrD,MAAM,CAAC,OAAO,SAAuB;IACrC,MAAM,CAAC,WAAW,SAAoD;IACtE,MAAM,CAAC,QAAQ,WAAqD;IAEpE,MAAM,CAAC,IAAI;;MAAgF;IAE3F,MAAM,CAAC,KAAK;;;;;;;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmB3B"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../../base-command");
5
+ const backend_1 = require("../../../lib/backend");
6
+ const snapshots_1 = require("../../../lib/snapshots");
7
+ class IOSSnapshotGet extends base_command_1.BaseCommand {
8
+ async run() {
9
+ const { args, flags } = await this.parse(IOSSnapshotGet);
10
+ this.setParsedFlags(flags);
11
+ await this.withAuth(async () => {
12
+ const organizationId = flags.organization ?? (await (0, backend_1.whoAmI)(this.client));
13
+ const snapshot = await (0, snapshots_1.snapshotResource)(this.client, 'ios', organizationId).get(args.key);
14
+ if (flags.json) {
15
+ this.outputJson(snapshot);
16
+ return;
17
+ }
18
+ this.outputTable(['Field', 'Value'], Object.entries(snapshot).map(([field, value]) => [
19
+ field,
20
+ Array.isArray(value) ? value.join(', ') : String(value),
21
+ ]));
22
+ });
23
+ }
24
+ }
25
+ IOSSnapshotGet.summary = 'Get iOS snapshots';
26
+ IOSSnapshotGet.description = 'Get saved iOS snapshots for your organization.';
27
+ IOSSnapshotGet.examples = ['<%= config.bin %> ios snapshot get myapp-main'];
28
+ IOSSnapshotGet.args = { key: core_1.Args.string({ required: true, description: 'Exact snapshot key.' }) };
29
+ IOSSnapshotGet.flags = {
30
+ ...base_command_1.BaseCommand.baseFlags,
31
+ organization: core_1.Flags.string({
32
+ description: 'Organization ID. Defaults to the API key or login organization.',
33
+ }),
34
+ };
35
+ exports.default = IOSSnapshotGet;
36
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/commands/ios/snapshot/get.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAC1C,wDAAoD;AACpD,kDAA8C;AAC9C,sDAA0D;AAE1D,MAAqB,cAAe,SAAQ,0BAAW;IAcrD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,MAAM,IAAA,gBAAM,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACzE,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAgB,EAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1F,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,WAAW,CACd,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;gBAC/C,KAAK;gBACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aACxD,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;;AA/BM,sBAAO,GAAG,mBAAmB,CAAC;AAC9B,0BAAW,GAAG,gDAAgD,CAAC;AAC/D,uBAAQ,GAAG,CAAC,+CAA+C,CAAC,CAAC;AAE7D,mBAAI,GAAG,EAAE,GAAG,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC;AAEpF,oBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,YAAY,EAAE,YAAK,CAAC,MAAM,CAAC;QACzB,WAAW,EAAE,iEAAiE;KAC/E,CAAC;CACH,CAAC;kBAZiB,cAAc"}
@@ -0,0 +1,20 @@
1
+ import { BaseCommand } from '../../../base-command';
2
+ export default class IOSSnapshotList extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static flags: {
7
+ organization: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ prefix: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ limit: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ offset: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
16
+ daemon: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
17
+ };
18
+ run(): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/commands/ios/snapshot/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,WAAW;IACtD,MAAM,CAAC,OAAO,SAAwB;IACtC,MAAM,CAAC,WAAW,SAAqD;IACvE,MAAM,CAAC,QAAQ,WAAkD;IAEjE,MAAM,CAAC,KAAK;;;;;;;;;;;MAQV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA0B3B"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../../base-command");
5
+ const backend_1 = require("../../../lib/backend");
6
+ const snapshots_1 = require("../../../lib/snapshots");
7
+ class IOSSnapshotList extends base_command_1.BaseCommand {
8
+ async run() {
9
+ const { flags } = await this.parse(IOSSnapshotList);
10
+ this.setParsedFlags(flags);
11
+ await this.withAuth(async () => {
12
+ const organizationId = flags.organization ?? (await (0, backend_1.whoAmI)(this.client));
13
+ const result = await (0, snapshots_1.snapshotResource)(this.client, 'ios', organizationId).list({
14
+ prefix: flags.prefix,
15
+ limit: flags.limit,
16
+ offset: flags.offset,
17
+ });
18
+ if (flags.json) {
19
+ this.outputJson(result);
20
+ return;
21
+ }
22
+ this.outputTable(['Key', 'Size (bytes)', 'Saved at'], result.snapshots.map((snapshot) => [
23
+ snapshot.key,
24
+ String(snapshot.archiveSizeBytes ?? 'Not saved'),
25
+ snapshot.publishedAt ?? '',
26
+ ]));
27
+ if (result.nextOffset !== undefined)
28
+ this.info(`More snapshots: rerun with --offset ${result.nextOffset}.`);
29
+ });
30
+ }
31
+ }
32
+ IOSSnapshotList.summary = 'List iOS snapshots';
33
+ IOSSnapshotList.description = 'List saved iOS snapshots for your organization.';
34
+ IOSSnapshotList.examples = ['<%= config.bin %> ios snapshot list --json'];
35
+ IOSSnapshotList.flags = {
36
+ ...base_command_1.BaseCommand.baseFlags,
37
+ organization: core_1.Flags.string({
38
+ description: 'Organization ID. Defaults to the API key or login organization.',
39
+ }),
40
+ prefix: core_1.Flags.string({ description: 'Only keys starting with this literal prefix.' }),
41
+ limit: core_1.Flags.integer({ description: 'Number of keys per page.', min: 1, max: 100, default: 25 }),
42
+ offset: core_1.Flags.integer({ description: 'Number of keys to skip.', min: 0, max: 100000, default: 0 }),
43
+ };
44
+ exports.default = IOSSnapshotList;
45
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/ios/snapshot/list.ts"],"names":[],"mappings":";;AAAA,sCAAoC;AACpC,wDAAoD;AACpD,kDAA8C;AAC9C,sDAA0D;AAE1D,MAAqB,eAAgB,SAAQ,0BAAW;IAetD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,MAAM,IAAA,gBAAM,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAgB,EAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC;gBAC7E,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC,CAAC;YACH,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,IAAI,CAAC,WAAW,CACd,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,CAAC,EACnC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACjC,QAAQ,CAAC,GAAG;gBACZ,MAAM,CAAC,QAAQ,CAAC,gBAAgB,IAAI,WAAW,CAAC;gBAChD,QAAQ,CAAC,WAAW,IAAI,EAAE;aAC3B,CAAC,CACH,CAAC;YACF,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;gBACjC,IAAI,CAAC,IAAI,CAAC,uCAAuC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC;;AAvCM,uBAAO,GAAG,oBAAoB,CAAC;AAC/B,2BAAW,GAAG,iDAAiD,CAAC;AAChE,wBAAQ,GAAG,CAAC,4CAA4C,CAAC,CAAC;AAE1D,qBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,YAAY,EAAE,YAAK,CAAC,MAAM,CAAC;QACzB,WAAW,EAAE,iEAAiE;KAC/E,CAAC;IACF,MAAM,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,8CAA8C,EAAE,CAAC;IACrF,KAAK,EAAE,YAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,0BAA0B,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAChG,MAAM,EAAE,YAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;CACnG,CAAC;kBAbiB,eAAe"}
@@ -0,0 +1,21 @@
1
+ import { BaseCommand } from '../../../base-command';
2
+ export default class XcodeSnapshotDelete extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static aliases: string[];
6
+ static examples: string[];
7
+ static args: {
8
+ key: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
9
+ };
10
+ static flags: {
11
+ organization: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
16
+ workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
17
+ daemon: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../src/commands/xcode/snapshot/delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,WAAW;IAC1D,MAAM,CAAC,OAAO,SAA4B;IAC1C,MAAM,CAAC,WAAW,SACiL;IACnM,MAAM,CAAC,OAAO,WAA4B;IAC1C,MAAM,CAAC,QAAQ,WAA0D;IAEzE,MAAM,CAAC,IAAI;;MAAgF;IAE3F,MAAM,CAAC,KAAK;;;;;;;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAY3B"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../../base-command");
5
+ const backend_1 = require("../../../lib/backend");
6
+ const snapshots_1 = require("../../../lib/snapshots");
7
+ class XcodeSnapshotDelete extends base_command_1.BaseCommand {
8
+ async run() {
9
+ const { args, flags } = await this.parse(XcodeSnapshotDelete);
10
+ this.setParsedFlags(flags);
11
+ await this.withAuth(async () => {
12
+ const organizationId = flags.organization ?? (await (0, backend_1.whoAmI)(this.client));
13
+ await (0, snapshots_1.snapshotResource)(this.client, 'xcode', organizationId).delete(args.key);
14
+ this.outputResult({ ok: true, key: args.key }, `Deleted snapshot ${args.key}. Running instances can save this key again.`);
15
+ });
16
+ }
17
+ }
18
+ XcodeSnapshotDelete.summary = 'Delete Xcode snapshots';
19
+ XcodeSnapshotDelete.description = 'Permanently delete the saved archive and its index entry. Running instances can save it again. Stop instances saving this key first if it must remain empty. Also available as snapshot flush.';
20
+ XcodeSnapshotDelete.aliases = ['xcode:snapshot:flush'];
21
+ XcodeSnapshotDelete.examples = ['<%= config.bin %> xcode snapshot delete myapp-main'];
22
+ XcodeSnapshotDelete.args = { key: core_1.Args.string({ required: true, description: 'Exact snapshot key.' }) };
23
+ XcodeSnapshotDelete.flags = {
24
+ ...base_command_1.BaseCommand.baseFlags,
25
+ organization: core_1.Flags.string({
26
+ description: 'Organization ID. Defaults to the API key or login organization.',
27
+ }),
28
+ };
29
+ exports.default = XcodeSnapshotDelete;
30
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/commands/xcode/snapshot/delete.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAC1C,wDAAoD;AACpD,kDAA8C;AAC9C,sDAA0D;AAE1D,MAAqB,mBAAoB,SAAQ,0BAAW;IAgB1D,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC9D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,MAAM,IAAA,gBAAM,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACzE,MAAM,IAAA,4BAAgB,EAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9E,IAAI,CAAC,YAAY,CACf,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAC3B,oBAAoB,IAAI,CAAC,GAAG,8CAA8C,CAC3E,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;;AA1BM,2BAAO,GAAG,wBAAwB,CAAC;AACnC,+BAAW,GAChB,gMAAgM,CAAC;AAC5L,2BAAO,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACnC,4BAAQ,GAAG,CAAC,oDAAoD,CAAC,CAAC;AAElE,wBAAI,GAAG,EAAE,GAAG,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC;AAEpF,yBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,YAAY,EAAE,YAAK,CAAC,MAAM,CAAC;QACzB,WAAW,EAAE,iEAAiE;KAC/E,CAAC;CACH,CAAC;kBAdiB,mBAAmB"}