@solana-mobile/dapp-store-publishing-tools 0.16.0 → 1.0.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/lib/CoreUtils.js +0 -3
- package/lib/index.js +1 -0
- package/lib/portal/attestation.js +189 -0
- package/lib/portal/compat.js +3 -0
- package/lib/portal/index.js +5 -0
- package/lib/portal/signer.js +432 -0
- package/lib/portal/types.js +1 -0
- package/lib/portal/workflow/contracts.js +1 -0
- package/lib/portal/workflow/execution.js +493 -0
- package/lib/portal/workflow/ingestion.js +265 -0
- package/lib/portal/workflow/lifecycle.js +616 -0
- package/lib/portal/workflow/logging.js +8 -0
- package/lib/portal/workflow/source/files.js +304 -0
- package/lib/portal/workflow/source/preparation.js +318 -0
- package/lib/portal/workflow/state/bundle.js +260 -0
- package/lib/portal/workflow/state/checkpoints.js +53 -0
- package/lib/portal/workflow/state/session.js +100 -0
- package/lib/portal/workflow.js +1 -0
- package/lib/publish/PublishCoreAttestation.js +18 -17
- package/lib/publish/PublishCoreRemove.js +7 -89
- package/lib/publish/PublishCoreSubmit.js +7 -117
- package/lib/publish/PublishCoreSupport.js +7 -86
- package/lib/publish/PublishCoreUpdate.js +7 -117
- package/lib/publish/index.js +1 -0
- package/lib/schemas/releaseJsonMetadata.json +1 -2
- package/package.json +2 -4
- package/src/CoreUtils.ts +0 -6
- package/src/index.ts +1 -0
- package/src/portal/attestation.ts +76 -0
- package/src/portal/compat.ts +5 -0
- package/src/portal/index.ts +5 -0
- package/src/portal/signer.ts +327 -0
- package/src/portal/types.ts +447 -0
- package/src/portal/workflow/contracts.ts +108 -0
- package/src/portal/workflow/execution.ts +412 -0
- package/src/portal/workflow/ingestion.ts +187 -0
- package/src/portal/workflow/lifecycle.ts +435 -0
- package/src/portal/workflow/logging.ts +17 -0
- package/src/portal/workflow/source/files.ts +49 -0
- package/src/portal/workflow/source/preparation.ts +189 -0
- package/src/portal/workflow/state/bundle.ts +193 -0
- package/src/portal/workflow/state/checkpoints.ts +70 -0
- package/src/portal/workflow/state/session.ts +87 -0
- package/src/portal/workflow.ts +9 -0
- package/src/publish/PublishCoreAttestation.ts +21 -26
- package/src/publish/PublishCoreRemove.ts +13 -109
- package/src/publish/PublishCoreSubmit.ts +18 -150
- package/src/publish/PublishCoreSupport.ts +13 -102
- package/src/publish/PublishCoreUpdate.ts +17 -155
- package/src/publish/index.ts +2 -1
- package/src/schemas/releaseJsonMetadata.json +1 -2
- package/lib/publish/dapp_publisher_portal.js +0 -206
- package/src/publish/dapp_publisher_portal.ts +0 -81
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
2
|
-
try {
|
|
3
|
-
var info = gen[key](arg);
|
|
4
|
-
var value = info.value;
|
|
5
|
-
} catch (error) {
|
|
6
|
-
reject(error);
|
|
7
|
-
return;
|
|
8
|
-
}
|
|
9
|
-
if (info.done) {
|
|
10
|
-
resolve(value);
|
|
11
|
-
} else {
|
|
12
|
-
Promise.resolve(value).then(_next, _throw);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
function _async_to_generator(fn) {
|
|
16
|
-
return function() {
|
|
17
|
-
var self = this, args = arguments;
|
|
18
|
-
return new Promise(function(resolve, reject) {
|
|
19
|
-
var gen = fn.apply(self, args);
|
|
20
|
-
function _next(value) {
|
|
21
|
-
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
22
|
-
}
|
|
23
|
-
function _throw(err) {
|
|
24
|
-
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
25
|
-
}
|
|
26
|
-
_next(undefined);
|
|
27
|
-
});
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
function _ts_generator(thisArg, body) {
|
|
31
|
-
var f, y, t, _ = {
|
|
32
|
-
label: 0,
|
|
33
|
-
sent: function() {
|
|
34
|
-
if (t[0] & 1) throw t[1];
|
|
35
|
-
return t[1];
|
|
36
|
-
},
|
|
37
|
-
trys: [],
|
|
38
|
-
ops: []
|
|
39
|
-
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
40
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
41
|
-
return this;
|
|
42
|
-
}), g;
|
|
43
|
-
function verb(n) {
|
|
44
|
-
return function(v) {
|
|
45
|
-
return step([
|
|
46
|
-
n,
|
|
47
|
-
v
|
|
48
|
-
]);
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
function step(op) {
|
|
52
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
53
|
-
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
54
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
55
|
-
if (y = 0, t) op = [
|
|
56
|
-
op[0] & 2,
|
|
57
|
-
t.value
|
|
58
|
-
];
|
|
59
|
-
switch(op[0]){
|
|
60
|
-
case 0:
|
|
61
|
-
case 1:
|
|
62
|
-
t = op;
|
|
63
|
-
break;
|
|
64
|
-
case 4:
|
|
65
|
-
_.label++;
|
|
66
|
-
return {
|
|
67
|
-
value: op[1],
|
|
68
|
-
done: false
|
|
69
|
-
};
|
|
70
|
-
case 5:
|
|
71
|
-
_.label++;
|
|
72
|
-
y = op[1];
|
|
73
|
-
op = [
|
|
74
|
-
0
|
|
75
|
-
];
|
|
76
|
-
continue;
|
|
77
|
-
case 7:
|
|
78
|
-
op = _.ops.pop();
|
|
79
|
-
_.trys.pop();
|
|
80
|
-
continue;
|
|
81
|
-
default:
|
|
82
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
83
|
-
_ = 0;
|
|
84
|
-
continue;
|
|
85
|
-
}
|
|
86
|
-
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
87
|
-
_.label = op[1];
|
|
88
|
-
break;
|
|
89
|
-
}
|
|
90
|
-
if (op[0] === 6 && _.label < t[1]) {
|
|
91
|
-
_.label = t[1];
|
|
92
|
-
t = op;
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
if (t && _.label < t[2]) {
|
|
96
|
-
_.label = t[2];
|
|
97
|
-
_.ops.push(op);
|
|
98
|
-
break;
|
|
99
|
-
}
|
|
100
|
-
if (t[2]) _.ops.pop();
|
|
101
|
-
_.trys.pop();
|
|
102
|
-
continue;
|
|
103
|
-
}
|
|
104
|
-
op = body.call(thisArg, _);
|
|
105
|
-
} catch (e) {
|
|
106
|
-
op = [
|
|
107
|
-
6,
|
|
108
|
-
e
|
|
109
|
-
];
|
|
110
|
-
y = 0;
|
|
111
|
-
} finally{
|
|
112
|
-
f = t = 0;
|
|
113
|
-
}
|
|
114
|
-
if (op[0] & 5) throw op[1];
|
|
115
|
-
return {
|
|
116
|
-
value: op[0] ? op[1] : void 0,
|
|
117
|
-
done: true
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
import axios from "axios";
|
|
122
|
-
export var PORTAL_ID = "22812690";
|
|
123
|
-
export var CONTACT_OBJECT_ID = "0-1";
|
|
124
|
-
export var CONTACT_PROPERTY_COMPANY = "company"; // string
|
|
125
|
-
export var CONTACT_PROPERTY_EMAIL = "email"; // string
|
|
126
|
-
export var CONTACT_PROPERTY_WEBSITE = "website"; // string
|
|
127
|
-
export var TICKET_OBJECT_ID = "0-5";
|
|
128
|
-
export var TICKET_PROPERTY_CONTENT = "content"; // string
|
|
129
|
-
export var TICKET_PROPERTY_ATTESTATION_PAYLOAD = "attestation_payload"; // base64-encoded string
|
|
130
|
-
export var TICKET_PROPERTY_AUTHORIZED_REQUEST = "requestor_is_authorized_to_submit_this_request"; // boolean
|
|
131
|
-
export var TICKET_PROPERTY_CRITICAL_UPDATE = "critical_update"; // boolean
|
|
132
|
-
export var TICKET_PROPERTY_DAPP_COLLECTION_ACCOUNT_ADDRESS = "dapp_collection_account_address"; // base58-encoded string
|
|
133
|
-
export var TICKET_PROPERTY_DAPP_RELEASE_ACCOUNT_ADDRESS = "dapp_release_account_address"; // base58-encoded string
|
|
134
|
-
export var TICKET_PROPERTY_GOOGLE_PLAY_STORE_PACKAGE_NAME = "google_play_store_package_name"; // string
|
|
135
|
-
export var TICKET_PROPERTY_POLICY_COMPLIANT = "complies_with_solana_dapp_store_policies"; // boolean
|
|
136
|
-
export var TICKET_PROPERTY_REQUEST_UNIQUE_ID = "request_unique_id"; // string (32 base-10 digits)
|
|
137
|
-
export var TICKET_PROPERTY_TESTING_INSTRUCTIONS = "testing_instructions"; // string
|
|
138
|
-
export var TICKET_PROPERTY_ALPHA_TEST = "alpha_test"; // boolean
|
|
139
|
-
export var TICKET_PROPERTY_ALPHA_TESTERS = "alpha_testers"; // string
|
|
140
|
-
export var FORM_SUBMIT = "1464247f-6804-46e1-8114-952f372daa81";
|
|
141
|
-
export var FORM_UPDATE = "87b4cbe7-957f-495c-a132-8b789678883d";
|
|
142
|
-
export var FORM_REMOVE = "913a4e44-ec90-4db6-8aa9-c49f29b569b9";
|
|
143
|
-
export var FORM_SUPPORT = "2961f018-6a4d-4e9d-8332-e219428c8cf2";
|
|
144
|
-
export var URL_FORM_SUBMIT = "https://api.hsforms.com/submissions/v3/integration/submit/".concat(PORTAL_ID, "/").concat(FORM_SUBMIT);
|
|
145
|
-
export var URL_FORM_UPDATE = "https://api.hsforms.com/submissions/v3/integration/submit/".concat(PORTAL_ID, "/").concat(FORM_UPDATE);
|
|
146
|
-
export var URL_FORM_REMOVE = "https://api.hsforms.com/submissions/v3/integration/submit/".concat(PORTAL_ID, "/").concat(FORM_REMOVE);
|
|
147
|
-
export var URL_FORM_SUPPORT = "https://api.hsforms.com/submissions/v3/integration/submit/".concat(PORTAL_ID, "/").concat(FORM_SUPPORT);
|
|
148
|
-
export var submitRequestToSolanaDappPublisherPortal = function(request, url, dryRun) {
|
|
149
|
-
return _async_to_generator(function() {
|
|
150
|
-
var config;
|
|
151
|
-
return _ts_generator(this, function(_state) {
|
|
152
|
-
switch(_state.label){
|
|
153
|
-
case 0:
|
|
154
|
-
config = {
|
|
155
|
-
method: "POST",
|
|
156
|
-
url: url,
|
|
157
|
-
headers: {
|
|
158
|
-
"Content-Type": "application/json"
|
|
159
|
-
},
|
|
160
|
-
data: JSON.stringify(request)
|
|
161
|
-
};
|
|
162
|
-
if (!!dryRun) return [
|
|
163
|
-
3,
|
|
164
|
-
2
|
|
165
|
-
];
|
|
166
|
-
return [
|
|
167
|
-
4,
|
|
168
|
-
axios(config).then(function(response) {
|
|
169
|
-
var isAlphaObject = request.fields.find(function(obj) {
|
|
170
|
-
return obj.name === TICKET_PROPERTY_ALPHA_TEST;
|
|
171
|
-
});
|
|
172
|
-
if (isAlphaObject !== undefined && isAlphaObject.value) {
|
|
173
|
-
var requestUniqueId = request.fields.find(function(obj) {
|
|
174
|
-
return obj.name === TICKET_PROPERTY_REQUEST_UNIQUE_ID;
|
|
175
|
-
}).value;
|
|
176
|
-
console.log("Your alpha submission has been received.\n" + "It will not be reviewed or published to users.\n" + "Use nonce '".concat(requestUniqueId, "' to launch alpha app.\n") + "This can only be used on devices for which the genesis token was listed in your 'config.yaml'");
|
|
177
|
-
} else {
|
|
178
|
-
console.info("dApp publisher portal response:", response.data);
|
|
179
|
-
}
|
|
180
|
-
}).catch(function(error) {
|
|
181
|
-
if (error.response) {
|
|
182
|
-
throw new Error("Failed to submit request\nError status code: ".concat(error.response.status, "\nError message: ").concat(error.response.data));
|
|
183
|
-
} else if (error.request) {
|
|
184
|
-
throw new Error("Failed to submit request: ".concat(error.request));
|
|
185
|
-
} else {
|
|
186
|
-
throw new Error("Failed to submit request: ".concat(error));
|
|
187
|
-
}
|
|
188
|
-
})
|
|
189
|
-
];
|
|
190
|
-
case 1:
|
|
191
|
-
_state.sent();
|
|
192
|
-
return [
|
|
193
|
-
3,
|
|
194
|
-
3
|
|
195
|
-
];
|
|
196
|
-
case 2:
|
|
197
|
-
console.warn("Dry run, not actually sending request to dApp publisher portal");
|
|
198
|
-
_state.label = 3;
|
|
199
|
-
case 3:
|
|
200
|
-
return [
|
|
201
|
-
2
|
|
202
|
-
];
|
|
203
|
-
}
|
|
204
|
-
});
|
|
205
|
-
})();
|
|
206
|
-
};
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import axios, { AxiosRequestConfig } from "axios";
|
|
2
|
-
|
|
3
|
-
export const PORTAL_ID = "22812690";
|
|
4
|
-
|
|
5
|
-
export const CONTACT_OBJECT_ID = "0-1";
|
|
6
|
-
export const CONTACT_PROPERTY_COMPANY = "company"; // string
|
|
7
|
-
export const CONTACT_PROPERTY_EMAIL = "email"; // string
|
|
8
|
-
export const CONTACT_PROPERTY_WEBSITE = "website"; // string
|
|
9
|
-
|
|
10
|
-
export const TICKET_OBJECT_ID = "0-5";
|
|
11
|
-
export const TICKET_PROPERTY_CONTENT = "content"; // string
|
|
12
|
-
export const TICKET_PROPERTY_ATTESTATION_PAYLOAD = "attestation_payload"; // base64-encoded string
|
|
13
|
-
export const TICKET_PROPERTY_AUTHORIZED_REQUEST = "requestor_is_authorized_to_submit_this_request"; // boolean
|
|
14
|
-
export const TICKET_PROPERTY_CRITICAL_UPDATE = "critical_update"; // boolean
|
|
15
|
-
export const TICKET_PROPERTY_DAPP_COLLECTION_ACCOUNT_ADDRESS = "dapp_collection_account_address"; // base58-encoded string
|
|
16
|
-
export const TICKET_PROPERTY_DAPP_RELEASE_ACCOUNT_ADDRESS = "dapp_release_account_address"; // base58-encoded string
|
|
17
|
-
export const TICKET_PROPERTY_GOOGLE_PLAY_STORE_PACKAGE_NAME = "google_play_store_package_name"; // string
|
|
18
|
-
export const TICKET_PROPERTY_POLICY_COMPLIANT = "complies_with_solana_dapp_store_policies"; // boolean
|
|
19
|
-
export const TICKET_PROPERTY_REQUEST_UNIQUE_ID = "request_unique_id"; // string (32 base-10 digits)
|
|
20
|
-
export const TICKET_PROPERTY_TESTING_INSTRUCTIONS = "testing_instructions"; // string
|
|
21
|
-
export const TICKET_PROPERTY_ALPHA_TEST = "alpha_test"; // boolean
|
|
22
|
-
export const TICKET_PROPERTY_ALPHA_TESTERS = "alpha_testers"; // string
|
|
23
|
-
|
|
24
|
-
export const FORM_SUBMIT = "1464247f-6804-46e1-8114-952f372daa81";
|
|
25
|
-
export const FORM_UPDATE = "87b4cbe7-957f-495c-a132-8b789678883d";
|
|
26
|
-
export const FORM_REMOVE = "913a4e44-ec90-4db6-8aa9-c49f29b569b9";
|
|
27
|
-
export const FORM_SUPPORT = "2961f018-6a4d-4e9d-8332-e219428c8cf2";
|
|
28
|
-
|
|
29
|
-
export const URL_FORM_SUBMIT = `https://api.hsforms.com/submissions/v3/integration/submit/${PORTAL_ID}/${FORM_SUBMIT}`
|
|
30
|
-
export const URL_FORM_UPDATE = `https://api.hsforms.com/submissions/v3/integration/submit/${PORTAL_ID}/${FORM_UPDATE}`
|
|
31
|
-
export const URL_FORM_REMOVE = `https://api.hsforms.com/submissions/v3/integration/submit/${PORTAL_ID}/${FORM_REMOVE}`
|
|
32
|
-
export const URL_FORM_SUPPORT = `https://api.hsforms.com/submissions/v3/integration/submit/${PORTAL_ID}/${FORM_SUPPORT}`
|
|
33
|
-
|
|
34
|
-
export const submitRequestToSolanaDappPublisherPortal = async (
|
|
35
|
-
request: any,
|
|
36
|
-
url: string,
|
|
37
|
-
dryRun: boolean
|
|
38
|
-
) => {
|
|
39
|
-
const config = {
|
|
40
|
-
method: "POST",
|
|
41
|
-
url: url,
|
|
42
|
-
headers: {
|
|
43
|
-
"Content-Type": "application/json",
|
|
44
|
-
},
|
|
45
|
-
data: JSON.stringify(request),
|
|
46
|
-
} as AxiosRequestConfig;
|
|
47
|
-
|
|
48
|
-
if (!dryRun) {
|
|
49
|
-
await axios(config)
|
|
50
|
-
.then((response) => {
|
|
51
|
-
const isAlphaObject = request.fields.find((obj: { objectTypeId: string, name: string; value: string}) => {
|
|
52
|
-
return obj.name === TICKET_PROPERTY_ALPHA_TEST
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
if (isAlphaObject !== undefined && isAlphaObject.value) {
|
|
56
|
-
const requestUniqueId = request.fields.find((obj: { objectTypeId: string, name: string; value: string}) => {
|
|
57
|
-
return obj.name === TICKET_PROPERTY_REQUEST_UNIQUE_ID
|
|
58
|
-
}).value
|
|
59
|
-
console.log(
|
|
60
|
-
`Your alpha submission has been received.\n` +
|
|
61
|
-
`It will not be reviewed or published to users.\n` +
|
|
62
|
-
`Use nonce '${requestUniqueId}' to launch alpha app.\n` +
|
|
63
|
-
`This can only be used on devices for which the genesis token was listed in your 'config.yaml'`
|
|
64
|
-
)
|
|
65
|
-
} else {
|
|
66
|
-
console.info(`dApp publisher portal response:`, response.data);
|
|
67
|
-
}
|
|
68
|
-
})
|
|
69
|
-
.catch((error) => {
|
|
70
|
-
if (error.response) {
|
|
71
|
-
throw new Error(`Failed to submit request\nError status code: ${error.response.status}\nError message: ${error.response.data}`);
|
|
72
|
-
} else if (error.request) {
|
|
73
|
-
throw new Error(`Failed to submit request: ${error.request}`);
|
|
74
|
-
} else {
|
|
75
|
-
throw new Error(`Failed to submit request: ${error}`);
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
} else {
|
|
79
|
-
console.warn("Dry run, not actually sending request to dApp publisher portal");
|
|
80
|
-
}
|
|
81
|
-
};
|