@imagina-build/ias-cli 0.0.0 → 0.1.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.
- package/README.md +406 -2
- package/bin/ias.mjs +19 -0
- package/package.json +31 -12
- package/schema/ias.schema.json +535 -0
- package/shared/credentials/cms.mjs +105 -0
- package/shared/credentials/index.mjs +354 -0
- package/shared/credentials/plist.mjs +93 -0
- package/shared/vault/approvers-vectors.mjs +188 -0
- package/shared/vault/approvers.mjs +234 -0
- package/shared/vault/index.mjs +583 -0
- package/shared/vault/plaintext.mjs +115 -0
- package/shared/vault/test-vectors/ias-vault-2/approvers.json +2122 -0
- package/shared/vault/test-vectors/ias-vault-2/keys.json +43 -0
- package/shared/vault/test-vectors/ias-vault-2/malformed.json +1739 -0
- package/shared/vault/test-vectors/ias-vault-2/plaintexts.json +149 -0
- package/shared/vault/test-vectors/ias-vault-2/runners.json +580 -0
- package/shared/vault/test-vectors/ias-vault-2/sealed.json +567 -0
- package/shared/vault/test-vectors/ias-vault-2/tampered.json +989 -0
- package/shared/vault/test-vectors/keys.json +31 -0
- package/shared/vault/test-vectors/malformed.json +1341 -0
- package/shared/vault/test-vectors/sealed.json +384 -0
- package/shared/vault/test-vectors/tampered.json +610 -0
- package/shared/vault/vectors.mjs +720 -0
- package/src/cli.mjs +231 -0
- package/src/commands/apps/index.mjs +36 -0
- package/src/commands/auth/index.mjs +141 -0
- package/src/commands/build/follow.mjs +168 -0
- package/src/commands/build/index.mjs +110 -0
- package/src/commands/build/local.mjs +69 -0
- package/src/commands/build/profile.mjs +50 -0
- package/src/commands/build/source.mjs +71 -0
- package/src/commands/builds/index.mjs +148 -0
- package/src/commands/credentials/index.mjs +256 -0
- package/src/commands/credentials/material.mjs +159 -0
- package/src/commands/devices/asc.mjs +116 -0
- package/src/commands/devices/index.mjs +65 -0
- package/src/commands/devices/sync.mjs +223 -0
- package/src/commands/dist/index.mjs +108 -0
- package/src/commands/doctor/index.mjs +158 -0
- package/src/commands/env/index.mjs +163 -0
- package/src/commands/github/index.mjs +53 -0
- package/src/commands/init/index.mjs +224 -0
- package/src/commands/migrate/credentials.mjs +213 -0
- package/src/commands/migrate/eas-cli.mjs +153 -0
- package/src/commands/migrate/index.mjs +73 -0
- package/src/commands/migrate/numbers.mjs +85 -0
- package/src/commands/migrate/profiles.mjs +174 -0
- package/src/commands/migrate/project.mjs +249 -0
- package/src/commands/migrate/survey.mjs +205 -0
- package/src/commands/migrate/variables.mjs +183 -0
- package/src/commands/push/index.mjs +334 -0
- package/src/commands/sdk/index.mjs +81 -0
- package/src/commands/submit/index.mjs +85 -0
- package/src/commands/update/index.mjs +526 -0
- package/src/commands/usage/index.mjs +57 -0
- package/src/commands/vault/approvers.mjs +129 -0
- package/src/commands/vault/index.mjs +159 -0
- package/src/commands/vault/runners.mjs +115 -0
- package/src/commands/vault/team.mjs +111 -0
- package/src/commands/version/index.mjs +71 -0
- package/src/commands/webhooks/index.mjs +104 -0
- package/src/commands/workflows/index.mjs +88 -0
- package/src/config.mjs +261 -0
- package/src/dist.mjs +99 -0
- package/src/errors.mjs +158 -0
- package/src/http.mjs +45 -0
- package/src/legacy.mjs +73 -0
- package/src/manage.mjs +120 -0
- package/src/ota.mjs +122 -0
- package/src/output.mjs +36 -0
- package/src/process.mjs +45 -0
- package/src/schema.mjs +131 -0
- package/src/sdk.mjs +120 -0
- package/src/secret-input.mjs +27 -0
- package/src/secrets.mjs +37 -0
- package/src/shared.mjs +5 -0
- package/src/team-vault.mjs +152 -0
- package/src/token-store.mjs +93 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
{
|
|
2
|
+
"format": "ias-vault-2",
|
|
3
|
+
"description": "What an envelope holds for each credential type (docs/technical/vault.md §3.5): good has one plaintext per type, with fake files; bad must be refused with code by validatePlaintext(type, bytes). text is the UTF-8 of the plaintext; plaintext, its bytes in base64url.",
|
|
4
|
+
"warning": "Test vectors: the keys are public. Never use them for anything else.",
|
|
5
|
+
"good": [
|
|
6
|
+
{
|
|
7
|
+
"type": "apple_distribution_certificate",
|
|
8
|
+
"scope": "team",
|
|
9
|
+
"text": "{\"type\":\"apple_distribution_certificate\",\"p12\":\"bm90IGEgcmVhbCBwMTI6ILHzqRYEKDaZOuWFAuPckU7HfyHhKFhP5ZA2iKwRhN3K\",\"password\":\"not-a-real-p12-password\"}",
|
|
10
|
+
"plaintext": "eyJ0eXBlIjoiYXBwbGVfZGlzdHJpYnV0aW9uX2NlcnRpZmljYXRlIiwicDEyIjoiYm05MElHRWdjbVZoYkNCd01USTZJTEh6cVJZRUtEYVpPdVdGQXVQY2tVN0hmeUhoS0ZoUDVaQTJpS3dSaE4zSyIsInBhc3N3b3JkIjoibm90LWEtcmVhbC1wMTItcGFzc3dvcmQifQ"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"type": "apple_provisioning_profile",
|
|
14
|
+
"scope": "application",
|
|
15
|
+
"text": "{\"type\":\"apple_provisioning_profile\",\"application\":\"jscheduler\",\"mobileprovision\":\"bm90IGEgcmVhbCBtb2JpbGVwcm92aXNpb246IIDrY0XB8PVcacIIcw-xNptlAHE7I5Lm7FoXmd9BDQ-_\"}",
|
|
16
|
+
"plaintext": "eyJ0eXBlIjoiYXBwbGVfcHJvdmlzaW9uaW5nX3Byb2ZpbGUiLCJhcHBsaWNhdGlvbiI6ImpzY2hlZHVsZXIiLCJtb2JpbGVwcm92aXNpb24iOiJibTkwSUdFZ2NtVmhiQ0J0YjJKcGJHVndjbTkyYVhOcGIyNDZJSURyWTBYQjhQVmNhY0lJY3cteE5wdGxBSEU3STVMbTdGb1htZDlCRFEtXyJ9"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"type": "android_upload_keystore",
|
|
20
|
+
"scope": "application",
|
|
21
|
+
"text": "{\"type\":\"android_upload_keystore\",\"application\":\"jscheduler\",\"keystore\":\"bm90IGEgcmVhbCBrZXlzdG9yZTogMO71fmTakhtYsX8RWMg43IvFFkhqSsTD7KXa_TJeqws\",\"store_password\":\"not-a-real-store-password\",\"key_alias\":\"upload\",\"key_password\":\"not-a-real-key-password\"}",
|
|
22
|
+
"plaintext": "eyJ0eXBlIjoiYW5kcm9pZF91cGxvYWRfa2V5c3RvcmUiLCJhcHBsaWNhdGlvbiI6ImpzY2hlZHVsZXIiLCJrZXlzdG9yZSI6ImJtOTBJR0VnY21WaGJDQnJaWGx6ZEc5eVpUb2dNTzcxZm1UYWtodFlzWDhSV01nNDNJdkZGa2hxU3NURDdLWGFfVEplcXdzIiwic3RvcmVfcGFzc3dvcmQiOiJub3QtYS1yZWFsLXN0b3JlLXBhc3N3b3JkIiwia2V5X2FsaWFzIjoidXBsb2FkIiwia2V5X3Bhc3N3b3JkIjoibm90LWEtcmVhbC1rZXktcGFzc3dvcmQifQ"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "apns_key",
|
|
26
|
+
"scope": "team",
|
|
27
|
+
"text": "{\"type\":\"apns_key\",\"p8\":\"LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tClVla1hBNC9rL0ovR2dwcy9wUE54UHArKytoVlduU0VONGVIbG1UK2t0NjQ9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K\",\"key_id\":\"ABCDE12345\",\"team_id\":\"CF798UCN8C\"}",
|
|
28
|
+
"plaintext": "eyJ0eXBlIjoiYXBuc19rZXkiLCJwOCI6IkxTMHRMUzFDUlVkSlRpQlFVa2xXUVZSRklFdEZXUzB0TFMwdENsVmxhMWhCTkM5ckwwb3ZSMmR3Y3k5d1VFNTRVSEFyS3l0b1ZsZHVVMFZPTkdWSWJHMVVLMnQwTmpROUNpMHRMUzB0UlU1RUlGQlNTVlpCVkVVZ1MwVlpMUzB0TFMwSyIsImtleV9pZCI6IkFCQ0RFMTIzNDUiLCJ0ZWFtX2lkIjoiQ0Y3OThVQ044QyJ9"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"type": "asc_api_key",
|
|
32
|
+
"scope": "team",
|
|
33
|
+
"text": "{\"type\":\"asc_api_key\",\"p8\":\"LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCjRzNTNMZjU3aUl6TnUxY1lVeW1HTFN0bzRwM3UrSkJKOTVGS1N4R0JPdlU9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K\",\"key_id\":\"FGHIJ67890\",\"issuer_id\":\"6a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d\"}",
|
|
34
|
+
"plaintext": "eyJ0eXBlIjoiYXNjX2FwaV9rZXkiLCJwOCI6IkxTMHRMUzFDUlVkSlRpQlFVa2xXUVZSRklFdEZXUzB0TFMwdENqUnpOVE5NWmpVM2FVbDZUblV4WTFsVmVXMUhURk4wYnpSd00zVXJTa0pLT1RWR1MxTjRSMEpQZGxVOUNpMHRMUzB0UlU1RUlGQlNTVlpCVkVVZ1MwVlpMUzB0TFMwSyIsImtleV9pZCI6IkZHSElKNjc4OTAiLCJpc3N1ZXJfaWQiOiI2YTFiMmMzZC00ZTVmLTRhNmItOGM3ZC05ZTBmMWEyYjNjNGQifQ"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"type": "google_service_account",
|
|
38
|
+
"scope": "application",
|
|
39
|
+
"text": "{\"type\":\"google_service_account\",\"application\":\"jscheduler\",\"json\":\"eyJ0eXBlIjoic2VydmljZV9hY2NvdW50IiwicHJvamVjdF9pZCI6Im5vdC1hLXJlYWwtcHJvamVjdCJ9Cg\"}",
|
|
40
|
+
"plaintext": "eyJ0eXBlIjoiZ29vZ2xlX3NlcnZpY2VfYWNjb3VudCIsImFwcGxpY2F0aW9uIjoianNjaGVkdWxlciIsImpzb24iOiJleUowZVhCbElqb2ljMlZ5ZG1salpWOWhZMk52ZFc1MElpd2ljSEp2YW1WamRGOXBaQ0k2SW01dmRDMWhMWEpsWVd3dGNISnZhbVZqZENKOUNnIn0"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "environment_variable",
|
|
44
|
+
"scope": "application",
|
|
45
|
+
"text": "{\"type\":\"environment_variable\",\"application\":\"jscheduler\",\"environment\":\"production\",\"name\":\"SENTRY_AUTH_TOKEN\",\"value\":\"not-a-real-sentry-token\"}",
|
|
46
|
+
"plaintext": "eyJ0eXBlIjoiZW52aXJvbm1lbnRfdmFyaWFibGUiLCJhcHBsaWNhdGlvbiI6ImpzY2hlZHVsZXIiLCJlbnZpcm9ubWVudCI6InByb2R1Y3Rpb24iLCJuYW1lIjoiU0VOVFJZX0FVVEhfVE9LRU4iLCJ2YWx1ZSI6Im5vdC1hLXJlYWwtc2VudHJ5LXRva2VuIn0"
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"bad": [
|
|
50
|
+
{
|
|
51
|
+
"name": "not-json",
|
|
52
|
+
"type": "android_upload_keystore",
|
|
53
|
+
"code": "plaintext.json",
|
|
54
|
+
"description": "Not JSON.",
|
|
55
|
+
"text": "{\"type\":\"android_upload_keystore\","
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "not-utf-8",
|
|
59
|
+
"type": "android_upload_keystore",
|
|
60
|
+
"code": "plaintext.json",
|
|
61
|
+
"description": "Bytes that are not UTF-8.",
|
|
62
|
+
"plaintext": "e_99"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "array",
|
|
66
|
+
"type": "android_upload_keystore",
|
|
67
|
+
"code": "plaintext.json",
|
|
68
|
+
"description": "A JSON list.",
|
|
69
|
+
"text": "[{\"type\":\"android_upload_keystore\",\"application\":\"jscheduler\",\"keystore\":\"bm90IGEgcmVhbCBrZXlzdG9yZTogMO71fmTakhtYsX8RWMg43IvFFkhqSsTD7KXa_TJeqws\",\"store_password\":\"not-a-real-store-password\",\"key_alias\":\"upload\",\"key_password\":\"not-a-real-key-password\"}]"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"name": "missing-field",
|
|
73
|
+
"type": "android_upload_keystore",
|
|
74
|
+
"code": "plaintext.fields",
|
|
75
|
+
"description": "Without key_password.",
|
|
76
|
+
"text": "{\"type\":\"android_upload_keystore\",\"application\":\"jscheduler\",\"keystore\":\"bm90IGEgcmVhbCBrZXlzdG9yZTogMO71fmTakhtYsX8RWMg43IvFFkhqSsTD7KXa_TJeqws\",\"store_password\":\"not-a-real-store-password\",\"key_alias\":\"upload\"}"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"name": "extra-field",
|
|
80
|
+
"type": "android_upload_keystore",
|
|
81
|
+
"code": "plaintext.fields",
|
|
82
|
+
"description": "A field the type does not have.",
|
|
83
|
+
"text": "{\"type\":\"android_upload_keystore\",\"application\":\"jscheduler\",\"keystore\":\"bm90IGEgcmVhbCBrZXlzdG9yZTogMO71fmTakhtYsX8RWMg43IvFFkhqSsTD7KXa_TJeqws\",\"store_password\":\"not-a-real-store-password\",\"key_alias\":\"upload\",\"key_password\":\"not-a-real-key-password\",\"sha256\":\"AA\"}"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"name": "other-type",
|
|
87
|
+
"type": "android_upload_keystore",
|
|
88
|
+
"code": "plaintext.type",
|
|
89
|
+
"description": "The fields of a keystore under another type field.",
|
|
90
|
+
"text": "{\"type\":\"apple_provisioning_profile\",\"application\":\"jscheduler\",\"keystore\":\"bm90IGEgcmVhbCBrZXlzdG9yZTogMO71fmTakhtYsX8RWMg43IvFFkhqSsTD7KXa_TJeqws\",\"store_password\":\"not-a-real-store-password\",\"key_alias\":\"upload\",\"key_password\":\"not-a-real-key-password\"}"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "file-empty",
|
|
94
|
+
"type": "android_upload_keystore",
|
|
95
|
+
"code": "plaintext.keystore",
|
|
96
|
+
"description": "An empty keystore.",
|
|
97
|
+
"text": "{\"type\":\"android_upload_keystore\",\"application\":\"jscheduler\",\"keystore\":\"\",\"store_password\":\"not-a-real-store-password\",\"key_alias\":\"upload\",\"key_password\":\"not-a-real-key-password\"}"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"name": "file-standard-base64",
|
|
101
|
+
"type": "android_upload_keystore",
|
|
102
|
+
"code": "plaintext.keystore",
|
|
103
|
+
"description": "The keystore in standard base64 with padding.",
|
|
104
|
+
"text": "{\"type\":\"android_upload_keystore\",\"application\":\"jscheduler\",\"keystore\":\"bm90IGEgcmVhbCBrZXlzdG9yZTogMO71fmTakhtYsX8RWMg43IvFFkhqSsTD7KXa/TJeqws=\",\"store_password\":\"not-a-real-store-password\",\"key_alias\":\"upload\",\"key_password\":\"not-a-real-key-password\"}"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"name": "password-number",
|
|
108
|
+
"type": "android_upload_keystore",
|
|
109
|
+
"code": "plaintext.store_password",
|
|
110
|
+
"description": "A password that is a number.",
|
|
111
|
+
"text": "{\"type\":\"android_upload_keystore\",\"application\":\"jscheduler\",\"keystore\":\"bm90IGEgcmVhbCBrZXlzdG9yZTogMO71fmTakhtYsX8RWMg43IvFFkhqSsTD7KXa_TJeqws\",\"store_password\":123456,\"key_alias\":\"upload\",\"key_password\":\"not-a-real-key-password\"}"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"name": "application-uppercase",
|
|
115
|
+
"type": "android_upload_keystore",
|
|
116
|
+
"code": "plaintext.application",
|
|
117
|
+
"description": "An application code in capitals.",
|
|
118
|
+
"text": "{\"type\":\"android_upload_keystore\",\"application\":\"jScheduler\",\"keystore\":\"bm90IGEgcmVhbCBrZXlzdG9yZTogMO71fmTakhtYsX8RWMg43IvFFkhqSsTD7KXa_TJeqws\",\"store_password\":\"not-a-real-store-password\",\"key_alias\":\"upload\",\"key_password\":\"not-a-real-key-password\"}"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"name": "variable-expo-public",
|
|
122
|
+
"type": "environment_variable",
|
|
123
|
+
"code": "plaintext.name",
|
|
124
|
+
"description": "An EXPO_PUBLIC_ variable: those are always plain, never sealed.",
|
|
125
|
+
"text": "{\"type\":\"environment_variable\",\"application\":\"jscheduler\",\"environment\":\"production\",\"name\":\"EXPO_PUBLIC_API_KEY\",\"value\":\"not-a-real-sentry-token\"}"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"name": "variable-environment",
|
|
129
|
+
"type": "environment_variable",
|
|
130
|
+
"code": "plaintext.environment",
|
|
131
|
+
"description": "An environment that is not one of the three.",
|
|
132
|
+
"text": "{\"type\":\"environment_variable\",\"application\":\"jscheduler\",\"environment\":\"staging\",\"name\":\"SENTRY_AUTH_TOKEN\",\"value\":\"not-a-real-sentry-token\"}"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"name": "asc-issuer",
|
|
136
|
+
"type": "asc_api_key",
|
|
137
|
+
"code": "plaintext.issuer_id",
|
|
138
|
+
"description": "An issuer id that is not a UUID.",
|
|
139
|
+
"text": "{\"type\":\"asc_api_key\",\"p8\":\"LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCjRzNTNMZjU3aUl6TnUxY1lVeW1HTFN0bzRwM3UrSkJKOTVGS1N4R0JPdlU9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K\",\"key_id\":\"FGHIJ67890\",\"issuer_id\":\"not-a-uuid\"}"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": "unknown-type",
|
|
143
|
+
"type": "build_secret",
|
|
144
|
+
"code": "plaintext.type",
|
|
145
|
+
"description": "A type without a plaintext.",
|
|
146
|
+
"text": "{\"type\":\"build_secret\",\"value\":\"x\"}"
|
|
147
|
+
}
|
|
148
|
+
]
|
|
149
|
+
}
|