@solana-mobile/dapp-store-publishing-tools 0.1.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.
Files changed (109) hide show
  1. package/LICENSE +202 -0
  2. package/lib/esm/create/app.js +47 -0
  3. package/lib/esm/create/app.js.map +1 -0
  4. package/lib/esm/create/index.js +4 -0
  5. package/lib/esm/create/index.js.map +1 -0
  6. package/lib/esm/create/publisher.js +43 -0
  7. package/lib/esm/create/publisher.js.map +1 -0
  8. package/lib/esm/create/release.js +127 -0
  9. package/lib/esm/create/release.js.map +1 -0
  10. package/lib/esm/index.js +5 -0
  11. package/lib/esm/index.js.map +1 -0
  12. package/lib/esm/publish/attestation.js +15 -0
  13. package/lib/esm/publish/attestation.js.map +1 -0
  14. package/lib/esm/publish/dapp_publisher_portal.js +56 -0
  15. package/lib/esm/publish/dapp_publisher_portal.js.map +1 -0
  16. package/lib/esm/publish/index.js +6 -0
  17. package/lib/esm/publish/index.js.map +1 -0
  18. package/lib/esm/publish/remove.js +57 -0
  19. package/lib/esm/publish/remove.js.map +1 -0
  20. package/lib/esm/publish/submit.js +69 -0
  21. package/lib/esm/publish/submit.js.map +1 -0
  22. package/lib/esm/publish/support.js +54 -0
  23. package/lib/esm/publish/support.js.map +1 -0
  24. package/lib/esm/publish/types.js +2 -0
  25. package/lib/esm/publish/types.js.map +1 -0
  26. package/lib/esm/publish/update.js +69 -0
  27. package/lib/esm/publish/update.js.map +1 -0
  28. package/lib/esm/types.js +2 -0
  29. package/lib/esm/types.js.map +1 -0
  30. package/lib/esm/utils.js +19 -0
  31. package/lib/esm/utils.js.map +1 -0
  32. package/lib/esm/validate/generated/appJsonMetadata.js +8 -0
  33. package/lib/esm/validate/generated/appJsonMetadata.js.map +1 -0
  34. package/lib/esm/validate/generated/index.js +4 -0
  35. package/lib/esm/validate/generated/index.js.map +1 -0
  36. package/lib/esm/validate/generated/publisherJsonMetadata.js +8 -0
  37. package/lib/esm/validate/generated/publisherJsonMetadata.js.map +1 -0
  38. package/lib/esm/validate/generated/releaseJsonMetadata.js +8 -0
  39. package/lib/esm/validate/generated/releaseJsonMetadata.js.map +1 -0
  40. package/lib/esm/validate/index.js +46 -0
  41. package/lib/esm/validate/index.js.map +1 -0
  42. package/lib/esm/validate/schemas/appJsonMetadata.json +57 -0
  43. package/lib/esm/validate/schemas/publisherJsonMetadata.json +82 -0
  44. package/lib/esm/validate/schemas/releaseJsonMetadata.json +214 -0
  45. package/lib/types/create/app.d.ts +11 -0
  46. package/lib/types/create/app.d.ts.map +1 -0
  47. package/lib/types/create/index.d.ts +4 -0
  48. package/lib/types/create/index.d.ts.map +1 -0
  49. package/lib/types/create/publisher.d.ts +11 -0
  50. package/lib/types/create/publisher.d.ts.map +1 -0
  51. package/lib/types/create/release.d.ts +33 -0
  52. package/lib/types/create/release.d.ts.map +1 -0
  53. package/lib/types/index.d.ts +5 -0
  54. package/lib/types/index.d.ts.map +1 -0
  55. package/lib/types/publish/attestation.d.ts +7 -0
  56. package/lib/types/publish/attestation.d.ts.map +1 -0
  57. package/lib/types/publish/dapp_publisher_portal.d.ts +25 -0
  58. package/lib/types/publish/dapp_publisher_portal.d.ts.map +1 -0
  59. package/lib/types/publish/index.d.ts +6 -0
  60. package/lib/types/publish/index.d.ts.map +1 -0
  61. package/lib/types/publish/remove.d.ts +10 -0
  62. package/lib/types/publish/remove.d.ts.map +1 -0
  63. package/lib/types/publish/submit.d.ts +11 -0
  64. package/lib/types/publish/submit.d.ts.map +1 -0
  65. package/lib/types/publish/support.d.ts +10 -0
  66. package/lib/types/publish/support.d.ts.map +1 -0
  67. package/lib/types/publish/types.d.ts +8 -0
  68. package/lib/types/publish/types.d.ts.map +1 -0
  69. package/lib/types/publish/update.d.ts +12 -0
  70. package/lib/types/publish/update.d.ts.map +1 -0
  71. package/lib/types/types.d.ts +63 -0
  72. package/lib/types/types.d.ts.map +1 -0
  73. package/lib/types/utils.d.ts +8 -0
  74. package/lib/types/utils.d.ts.map +1 -0
  75. package/lib/types/validate/generated/appJsonMetadata.d.ts +27 -0
  76. package/lib/types/validate/generated/appJsonMetadata.d.ts.map +1 -0
  77. package/lib/types/validate/generated/index.d.ts +4 -0
  78. package/lib/types/validate/generated/index.d.ts.map +1 -0
  79. package/lib/types/validate/generated/publisherJsonMetadata.d.ts +32 -0
  80. package/lib/types/validate/generated/publisherJsonMetadata.d.ts.map +1 -0
  81. package/lib/types/validate/generated/releaseJsonMetadata.d.ts +82 -0
  82. package/lib/types/validate/generated/releaseJsonMetadata.d.ts.map +1 -0
  83. package/lib/types/validate/index.d.ts +5 -0
  84. package/lib/types/validate/index.d.ts.map +1 -0
  85. package/package.json +44 -0
  86. package/src/create/app.ts +71 -0
  87. package/src/create/index.ts +3 -0
  88. package/src/create/publisher.ts +63 -0
  89. package/src/create/release.ts +195 -0
  90. package/src/index.ts +4 -0
  91. package/src/publish/attestation.ts +32 -0
  92. package/src/publish/dapp_publisher_portal.ts +64 -0
  93. package/src/publish/index.ts +5 -0
  94. package/src/publish/remove.ts +109 -0
  95. package/src/publish/submit.ts +128 -0
  96. package/src/publish/support.ts +102 -0
  97. package/src/publish/types.ts +8 -0
  98. package/src/publish/update.ts +134 -0
  99. package/src/types/index.d.ts +6 -0
  100. package/src/types.ts +77 -0
  101. package/src/utils.ts +40 -0
  102. package/src/validate/generated/appJsonMetadata.ts +28 -0
  103. package/src/validate/generated/index.ts +3 -0
  104. package/src/validate/generated/publisherJsonMetadata.ts +33 -0
  105. package/src/validate/generated/releaseJsonMetadata.ts +83 -0
  106. package/src/validate/index.ts +61 -0
  107. package/src/validate/schemas/appJsonMetadata.json +57 -0
  108. package/src/validate/schemas/publisherJsonMetadata.json +82 -0
  109. package/src/validate/schemas/releaseJsonMetadata.json +214 -0
@@ -0,0 +1,69 @@
1
+ import { createAttestationPayload } from "./attestation.js";
2
+ import { CONTACT_OBJECT_ID, CONTACT_PROPERTY_COMPANY, CONTACT_PROPERTY_EMAIL, CONTACT_PROPERTY_WEBSITE, submitRequestToSolanaDappPublisherPortal, TICKET_OBJECT_ID, TICKET_PROPERTY_ATTESTATION_PAYLOAD, TICKET_PROPERTY_AUTHORIZED_REQUEST, TICKET_PROPERTY_DAPP_RELEASE_ACCOUNT_ADDRESS, TICKET_PROPERTY_GOOGLE_PLAY_STORE_PACKAGE_NAME, TICKET_PROPERTY_POLICY_COMPLIANT, TICKET_PROPERTY_REQUEST_UNIQUE_ID, TICKET_PROPERTY_TESTING_INSTRUCTIONS, URL_FORM_SUBMIT } from "./dapp_publisher_portal.js";
3
+ const createSubmitRequest = async (connection, sign, releaseMintAddress, publisherDetails, solanaMobileDappPublisherPortalDetails, compliesWithSolanaDappStorePolicies, requestorIsAuthorized) => {
4
+ const { attestationPayload, requestUniqueId } = await createAttestationPayload(connection, sign);
5
+ const request = {
6
+ fields: [
7
+ {
8
+ objectTypeId: CONTACT_OBJECT_ID,
9
+ name: CONTACT_PROPERTY_COMPANY,
10
+ value: publisherDetails.name
11
+ },
12
+ {
13
+ objectTypeId: CONTACT_OBJECT_ID,
14
+ name: CONTACT_PROPERTY_EMAIL,
15
+ value: publisherDetails.email
16
+ },
17
+ {
18
+ objectTypeId: CONTACT_OBJECT_ID,
19
+ name: CONTACT_PROPERTY_WEBSITE,
20
+ value: publisherDetails.website
21
+ },
22
+ {
23
+ objectTypeId: TICKET_OBJECT_ID,
24
+ name: TICKET_PROPERTY_ATTESTATION_PAYLOAD,
25
+ value: attestationPayload
26
+ },
27
+ {
28
+ objectTypeId: TICKET_OBJECT_ID,
29
+ name: TICKET_PROPERTY_DAPP_RELEASE_ACCOUNT_ADDRESS,
30
+ value: releaseMintAddress
31
+ },
32
+ {
33
+ objectTypeId: TICKET_OBJECT_ID,
34
+ name: TICKET_PROPERTY_REQUEST_UNIQUE_ID,
35
+ value: requestUniqueId
36
+ },
37
+ {
38
+ objectTypeId: TICKET_OBJECT_ID,
39
+ name: TICKET_PROPERTY_AUTHORIZED_REQUEST,
40
+ value: requestorIsAuthorized
41
+ },
42
+ {
43
+ objectTypeId: TICKET_OBJECT_ID,
44
+ name: TICKET_PROPERTY_POLICY_COMPLIANT,
45
+ value: compliesWithSolanaDappStorePolicies
46
+ }
47
+ ]
48
+ };
49
+ if (solanaMobileDappPublisherPortalDetails.google_store_package !== undefined) {
50
+ request.fields.push({
51
+ objectTypeId: TICKET_OBJECT_ID,
52
+ name: TICKET_PROPERTY_GOOGLE_PLAY_STORE_PACKAGE_NAME,
53
+ value: solanaMobileDappPublisherPortalDetails.google_store_package
54
+ });
55
+ }
56
+ if (solanaMobileDappPublisherPortalDetails.testing_instructions !== undefined) {
57
+ request.fields.push({
58
+ objectTypeId: TICKET_OBJECT_ID,
59
+ name: TICKET_PROPERTY_TESTING_INSTRUCTIONS,
60
+ value: solanaMobileDappPublisherPortalDetails.testing_instructions
61
+ });
62
+ }
63
+ return request;
64
+ };
65
+ export const publishSubmit = async (publishSolanaNetworkInput, { releaseMintAddress, publisherDetails, solanaMobileDappPublisherPortalDetails, compliesWithSolanaDappStorePolicies, requestorIsAuthorized, }, dryRun) => {
66
+ const submitRequest = await createSubmitRequest(publishSolanaNetworkInput.connection, publishSolanaNetworkInput.sign, releaseMintAddress, publisherDetails, solanaMobileDappPublisherPortalDetails, compliesWithSolanaDappStorePolicies, requestorIsAuthorized);
67
+ return submitRequestToSolanaDappPublisherPortal(submitRequest, URL_FORM_SUBMIT, dryRun);
68
+ };
69
+ //# sourceMappingURL=submit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../src/publish/submit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,wCAAwC,EACxC,gBAAgB,EAChB,mCAAmC,EACnC,kCAAkC,EAClC,4CAA4C,EAC5C,8CAA8C,EAC9C,gCAAgC,EAChC,iCAAiC,EACjC,oCAAoC,EACpC,eAAe,EAChB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,mBAAmB,GAAG,KAAK,EAC/B,UAAsB,EACtB,IAA8B,EAC9B,kBAA0B,EAC1B,gBAA2B,EAC3B,sCAAuE,EACvE,mCAA4C,EAC5C,qBAA8B,EAC9B,EAAE;IACF,MAAM,EAAE,kBAAkB,EAAE,eAAe,EAAE,GAAG,MAAM,wBAAwB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAEjG,MAAM,OAAO,GAAG;QACd,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,wBAAwB;gBAC9B,KAAK,EAAE,gBAAgB,CAAC,IAAI;aAC7B;YACD;gBACE,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,gBAAgB,CAAC,KAAK;aAC9B;YACD;gBACE,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,wBAAwB;gBAC9B,KAAK,EAAE,gBAAgB,CAAC,OAAO;aAChC;YACD;gBACE,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,mCAAmC;gBACzC,KAAK,EAAE,kBAAkB;aAC1B;YACD;gBACE,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,4CAA4C;gBAClD,KAAK,EAAE,kBAAkB;aAC1B;YACD;gBACE,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,iCAAiC;gBACvC,KAAK,EAAE,eAAe;aACvB;YACD;gBACE,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,kCAAkC;gBACxC,KAAK,EAAE,qBAAqB;aAC7B;YACD;gBACE,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,gCAAgC;gBACtC,KAAK,EAAE,mCAAmC;aAC3C;SACF;KACF,CAAC;IAEF,IAAI,sCAAsC,CAAC,oBAAoB,KAAK,SAAS,EAAE;QAC7E,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAClB,YAAY,EAAE,gBAAgB;YAC9B,IAAI,EAAE,8CAA8C;YACpD,KAAK,EAAE,sCAAsC,CAAC,oBAAoB;SACnE,CAAC,CAAC;KACJ;IAED,IAAI,sCAAsC,CAAC,oBAAoB,KAAK,SAAS,EAAE;QAC7E,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB;YACE,YAAY,EAAE,gBAAgB;YAC9B,IAAI,EAAE,oCAAoC;YAC1C,KAAK,EAAE,sCAAsC,CAAC,oBAAoB;SACnE,CACF,CAAC;KACH;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAUF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,yBAAoD,EACpD,EACE,kBAAkB,EAClB,gBAAgB,EAChB,sCAAsC,EACtC,mCAAmC,EACnC,qBAAqB,GACD,EACtB,MAAe,EACf,EAAE;IACF,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAC7C,yBAAyB,CAAC,UAAU,EACpC,yBAAyB,CAAC,IAAI,EAC9B,kBAAkB,EAClB,gBAAgB,EAChB,sCAAsC,EACtC,mCAAmC,EACnC,qBAAqB,CAAC,CAAC;IAEzB,OAAO,wCAAwC,CAAC,aAAa,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;AAC1F,CAAC,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { createAttestationPayload } from "./attestation.js";
2
+ import { CONTACT_OBJECT_ID, CONTACT_PROPERTY_COMPANY, CONTACT_PROPERTY_EMAIL, CONTACT_PROPERTY_WEBSITE, submitRequestToSolanaDappPublisherPortal, TICKET_OBJECT_ID, TICKET_PROPERTY_ATTESTATION_PAYLOAD, TICKET_PROPERTY_AUTHORIZED_REQUEST, TICKET_PROPERTY_CONTENT, TICKET_PROPERTY_DAPP_RELEASE_ACCOUNT_ADDRESS, TICKET_PROPERTY_REQUEST_UNIQUE_ID, URL_FORM_SUPPORT } from "./dapp_publisher_portal.js";
3
+ const createSupportRequest = async (connection, sign, releaseMintAddress, publisherDetails, requestorIsAuthorized, requestDetails) => {
4
+ const { attestationPayload, requestUniqueId } = await createAttestationPayload(connection, sign);
5
+ return {
6
+ fields: [
7
+ {
8
+ objectTypeId: CONTACT_OBJECT_ID,
9
+ name: CONTACT_PROPERTY_COMPANY,
10
+ value: publisherDetails.name
11
+ },
12
+ {
13
+ objectTypeId: CONTACT_OBJECT_ID,
14
+ name: CONTACT_PROPERTY_EMAIL,
15
+ value: publisherDetails.email
16
+ },
17
+ {
18
+ objectTypeId: CONTACT_OBJECT_ID,
19
+ name: CONTACT_PROPERTY_WEBSITE,
20
+ value: publisherDetails.website
21
+ },
22
+ {
23
+ objectTypeId: TICKET_OBJECT_ID,
24
+ name: TICKET_PROPERTY_ATTESTATION_PAYLOAD,
25
+ value: attestationPayload
26
+ },
27
+ {
28
+ objectTypeId: TICKET_OBJECT_ID,
29
+ name: TICKET_PROPERTY_CONTENT,
30
+ value: requestDetails
31
+ },
32
+ {
33
+ objectTypeId: TICKET_OBJECT_ID,
34
+ name: TICKET_PROPERTY_DAPP_RELEASE_ACCOUNT_ADDRESS,
35
+ value: releaseMintAddress
36
+ },
37
+ {
38
+ objectTypeId: TICKET_OBJECT_ID,
39
+ name: TICKET_PROPERTY_REQUEST_UNIQUE_ID,
40
+ value: requestUniqueId
41
+ },
42
+ {
43
+ objectTypeId: TICKET_OBJECT_ID,
44
+ name: TICKET_PROPERTY_AUTHORIZED_REQUEST,
45
+ value: requestorIsAuthorized
46
+ }
47
+ ]
48
+ };
49
+ };
50
+ export const publishSupport = async (publishSolanaNetworkInput, { releaseMintAddress, publisherDetails, requestorIsAuthorized, requestDetails, }, dryRun) => {
51
+ const supportRequest = await createSupportRequest(publishSolanaNetworkInput.connection, publishSolanaNetworkInput.sign, releaseMintAddress, publisherDetails, requestorIsAuthorized, requestDetails);
52
+ return submitRequestToSolanaDappPublisherPortal(supportRequest, URL_FORM_SUPPORT, dryRun);
53
+ };
54
+ //# sourceMappingURL=support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"support.js","sourceRoot":"","sources":["../../../src/publish/support.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,wCAAwC,EACxC,gBAAgB,EAChB,mCAAmC,EACnC,kCAAkC,EAClC,uBAAuB,EACvB,4CAA4C,EAC5C,iCAAiC,EACjC,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,oBAAoB,GAAG,KAAK,EAChC,UAAsB,EACtB,IAA8B,EAC9B,kBAA0B,EAC1B,gBAA2B,EAC3B,qBAA8B,EAC9B,cAAsB,EACtB,EAAE;IACF,MAAM,EAAE,kBAAkB,EAAE,eAAe,EAAE,GAAG,MAAM,wBAAwB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAEjG,OAAO;QACL,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,wBAAwB;gBAC9B,KAAK,EAAE,gBAAgB,CAAC,IAAI;aAC7B;YACD;gBACE,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,gBAAgB,CAAC,KAAK;aAC9B;YACD;gBACE,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,wBAAwB;gBAC9B,KAAK,EAAE,gBAAgB,CAAC,OAAO;aAChC;YACD;gBACE,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,mCAAmC;gBACzC,KAAK,EAAE,kBAAkB;aAC1B;YACD;gBACE,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,uBAAuB;gBAC7B,KAAK,EAAE,cAAc;aACtB;YACD;gBACE,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,4CAA4C;gBAClD,KAAK,EAAE,kBAAkB;aAC1B;YACD;gBACE,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,iCAAiC;gBACvC,KAAK,EAAE,eAAe;aACvB;YACD;gBACE,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,kCAAkC;gBACxC,KAAK,EAAE,qBAAqB;aAC7B;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AASF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,yBAAoD,EACpD,EACE,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,GACO,EACvB,MAAe,EACf,EAAE;IACF,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAC/C,yBAAyB,CAAC,UAAU,EACpC,yBAAyB,CAAC,IAAI,EAC9B,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,CAAC,CAAC;IAElB,OAAO,wCAAwC,CAAC,cAAc,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAC5F,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/publish/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,69 @@
1
+ import { createAttestationPayload } from "./attestation.js";
2
+ import { CONTACT_OBJECT_ID, CONTACT_PROPERTY_COMPANY, CONTACT_PROPERTY_EMAIL, CONTACT_PROPERTY_WEBSITE, submitRequestToSolanaDappPublisherPortal, TICKET_OBJECT_ID, TICKET_PROPERTY_ATTESTATION_PAYLOAD, TICKET_PROPERTY_AUTHORIZED_REQUEST, TICKET_PROPERTY_CRITICAL_UPDATE, TICKET_PROPERTY_DAPP_RELEASE_ACCOUNT_ADDRESS, TICKET_PROPERTY_POLICY_COMPLIANT, TICKET_PROPERTY_REQUEST_UNIQUE_ID, TICKET_PROPERTY_TESTING_INSTRUCTIONS, URL_FORM_UPDATE } from "./dapp_publisher_portal.js";
3
+ const createUpdateRequest = async (connection, sign, releaseMintAddress, publisherDetails, solanaMobileDappPublisherPortalDetails, compliesWithSolanaDappStorePolicies, requestorIsAuthorized, criticalUpdate) => {
4
+ const { attestationPayload, requestUniqueId } = await createAttestationPayload(connection, sign);
5
+ const request = {
6
+ fields: [
7
+ {
8
+ objectTypeId: CONTACT_OBJECT_ID,
9
+ name: CONTACT_PROPERTY_COMPANY,
10
+ value: publisherDetails.name
11
+ },
12
+ {
13
+ objectTypeId: CONTACT_OBJECT_ID,
14
+ name: CONTACT_PROPERTY_EMAIL,
15
+ value: publisherDetails.email
16
+ },
17
+ {
18
+ objectTypeId: CONTACT_OBJECT_ID,
19
+ name: CONTACT_PROPERTY_WEBSITE,
20
+ value: publisherDetails.website
21
+ },
22
+ {
23
+ objectTypeId: TICKET_OBJECT_ID,
24
+ name: TICKET_PROPERTY_ATTESTATION_PAYLOAD,
25
+ value: attestationPayload
26
+ },
27
+ {
28
+ objectTypeId: TICKET_OBJECT_ID,
29
+ name: TICKET_PROPERTY_DAPP_RELEASE_ACCOUNT_ADDRESS,
30
+ value: releaseMintAddress
31
+ },
32
+ {
33
+ objectTypeId: TICKET_OBJECT_ID,
34
+ name: TICKET_PROPERTY_REQUEST_UNIQUE_ID,
35
+ value: requestUniqueId
36
+ },
37
+ {
38
+ objectTypeId: TICKET_OBJECT_ID,
39
+ name: TICKET_PROPERTY_AUTHORIZED_REQUEST,
40
+ value: requestorIsAuthorized
41
+ },
42
+ {
43
+ objectTypeId: TICKET_OBJECT_ID,
44
+ name: TICKET_PROPERTY_POLICY_COMPLIANT,
45
+ value: compliesWithSolanaDappStorePolicies
46
+ }
47
+ ]
48
+ };
49
+ if (criticalUpdate) {
50
+ request.fields.push({
51
+ objectTypeId: TICKET_OBJECT_ID,
52
+ name: TICKET_PROPERTY_CRITICAL_UPDATE,
53
+ value: criticalUpdate
54
+ });
55
+ }
56
+ if (solanaMobileDappPublisherPortalDetails.testing_instructions !== undefined) {
57
+ request.fields.push({
58
+ objectTypeId: TICKET_OBJECT_ID,
59
+ name: TICKET_PROPERTY_TESTING_INSTRUCTIONS,
60
+ value: solanaMobileDappPublisherPortalDetails.testing_instructions
61
+ });
62
+ }
63
+ return request;
64
+ };
65
+ export const publishUpdate = async (publishSolanaNetworkInput, { releaseMintAddress, publisherDetails, solanaMobileDappPublisherPortalDetails, compliesWithSolanaDappStorePolicies, requestorIsAuthorized, criticalUpdate, }, dryRun) => {
66
+ const updateRequest = await createUpdateRequest(publishSolanaNetworkInput.connection, publishSolanaNetworkInput.sign, releaseMintAddress, publisherDetails, solanaMobileDappPublisherPortalDetails, compliesWithSolanaDappStorePolicies, requestorIsAuthorized, criticalUpdate);
67
+ submitRequestToSolanaDappPublisherPortal(updateRequest, URL_FORM_UPDATE, dryRun);
68
+ };
69
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/publish/update.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,wCAAwC,EACxC,gBAAgB,EAChB,mCAAmC,EACnC,kCAAkC,EAClC,+BAA+B,EAC/B,4CAA4C,EAC5C,gCAAgC,EAChC,iCAAiC,EACjC,oCAAoC,EACpC,eAAe,EAChB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,mBAAmB,GAAG,KAAK,EAC/B,UAAsB,EACtB,IAA8B,EAC9B,kBAA0B,EAC1B,gBAA2B,EAC3B,sCAAuE,EACvE,mCAA4C,EAC5C,qBAA8B,EAC9B,cAAuB,EACvB,EAAE;IACF,MAAM,EAAE,kBAAkB,EAAE,eAAe,EAAE,GAAG,MAAM,wBAAwB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAEjG,MAAM,OAAO,GAAG;QACd,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,wBAAwB;gBAC9B,KAAK,EAAE,gBAAgB,CAAC,IAAI;aAC7B;YACD;gBACE,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,gBAAgB,CAAC,KAAK;aAC9B;YACD;gBACE,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,wBAAwB;gBAC9B,KAAK,EAAE,gBAAgB,CAAC,OAAO;aAChC;YACD;gBACE,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,mCAAmC;gBACzC,KAAK,EAAE,kBAAkB;aAC1B;YACD;gBACE,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,4CAA4C;gBAClD,KAAK,EAAE,kBAAkB;aAC1B;YACD;gBACE,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,iCAAiC;gBACvC,KAAK,EAAE,eAAe;aACvB;YACD;gBACE,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,kCAAkC;gBACxC,KAAK,EAAE,qBAAqB;aAC7B;YACD;gBACE,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,gCAAgC;gBACtC,KAAK,EAAE,mCAAmC;aAC3C;SACF;KACF,CAAC;IAEF,IAAI,cAAc,EAAE;QAClB,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB;YACE,YAAY,EAAE,gBAAgB;YAC9B,IAAI,EAAE,+BAA+B;YACrC,KAAK,EAAE,cAAc;SACtB,CACF,CAAC;KACH;IAED,IAAI,sCAAsC,CAAC,oBAAoB,KAAK,SAAS,EAAE;QAC7E,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB;YACE,YAAY,EAAE,gBAAgB;YAC9B,IAAI,EAAE,oCAAoC;YAC1C,KAAK,EAAE,sCAAsC,CAAC,oBAAoB;SACnE,CACF,CAAC;KACH;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAWF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,yBAAoD,EACpD,EACE,kBAAkB,EAClB,gBAAgB,EAChB,sCAAsC,EACtC,mCAAmC,EACnC,qBAAqB,EACrB,cAAc,GACM,EACtB,MAAe,EACf,EAAE;IACF,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAC7C,yBAAyB,CAAC,UAAU,EACpC,yBAAyB,CAAC,IAAI,EAC9B,kBAAkB,EAClB,gBAAgB,EAChB,sCAAsC,EACtC,mCAAmC,EACnC,qBAAqB,EACrB,cAAc,CAAC,CAAC;IAElB,wCAAwC,CAAC,aAAa,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;AACnF,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ export const truncateAddress = (address) => {
2
+ return `${address.slice(0, 4)}...${address.slice(address.length - 4, address.length)}`;
3
+ };
4
+ export const mintNft = async (metaplex, json, createNftInput) => {
5
+ console.info({ json });
6
+ const { uri } = await metaplex.nfts().uploadMetadata(json);
7
+ const txBuilder = await metaplex
8
+ .nfts()
9
+ .builders()
10
+ .create({
11
+ ...createNftInput,
12
+ uri,
13
+ // @ts-ignore
14
+ name: json.name,
15
+ sellerFeeBasisPoints: 0,
16
+ });
17
+ return txBuilder;
18
+ };
19
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,EAAE;IACjD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAC9C,OAAO,CAAC,MAAM,GAAG,CAAC,EAClB,OAAO,CAAC,MAAM,CACf,EAAE,CAAC;AACN,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAC1B,QAAkB,EAClB,IAA8B,EAC9B,cAA6E,EAChD,EAAE;IAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAE3D,MAAM,SAAS,GAAG,MAAM,QAAQ;SAC7B,IAAI,EAAE;SACN,QAAQ,EAAE;SACV,MAAM,CAAC;QACN,GAAG,cAAc;QACjB,GAAG;QACH,aAAa;QACb,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,oBAAoB,EAAE,CAAC;KACxB,CAAC,CAAC;IAEL,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /* tslint:disable */
2
+ /**
3
+ * This file was automatically generated by json-schema-to-typescript.
4
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
5
+ * and run json-schema-to-typescript to regenerate this file.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=appJsonMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appJsonMetadata.js","sourceRoot":"","sources":["../../../../src/validate/generated/appJsonMetadata.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB;;;;GAIG"}
@@ -0,0 +1,4 @@
1
+ export * from "./publisherJsonMetadata.js";
2
+ export * from "./appJsonMetadata.js";
3
+ export * from "./releaseJsonMetadata.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/validate/generated/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,8 @@
1
+ /* tslint:disable */
2
+ /**
3
+ * This file was automatically generated by json-schema-to-typescript.
4
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
5
+ * and run json-schema-to-typescript to regenerate this file.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=publisherJsonMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publisherJsonMetadata.js","sourceRoot":"","sources":["../../../../src/validate/generated/publisherJsonMetadata.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB;;;;GAIG"}
@@ -0,0 +1,8 @@
1
+ /* tslint:disable */
2
+ /**
3
+ * This file was automatically generated by json-schema-to-typescript.
4
+ * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
5
+ * and run json-schema-to-typescript to regenerate this file.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=releaseJsonMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releaseJsonMetadata.js","sourceRoot":"","sources":["../../../../src/validate/generated/releaseJsonMetadata.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB;;;;GAIG"}
@@ -0,0 +1,46 @@
1
+ import Ajv from "ajv";
2
+ // eslint-disable-next-line require-extensions/require-extensions
3
+ import publisherSchema from "./schemas/publisherJsonMetadata.json";
4
+ // eslint-disable-next-line require-extensions/require-extensions
5
+ import appSchema from "./schemas/appJsonMetadata.json";
6
+ // eslint-disable-next-line require-extensions/require-extensions
7
+ import releaseSchema from "./schemas/releaseJsonMetadata.json";
8
+ export const validatePublisher = (publisherJson) => {
9
+ const jsonToValidate = { ...publisherJson };
10
+ if (typeof jsonToValidate.image !== "string") {
11
+ jsonToValidate.image = jsonToValidate.image?.fileName;
12
+ }
13
+ const ajv = new Ajv({ strictTuples: false });
14
+ const validate = ajv.compile(publisherSchema);
15
+ const valid = validate(jsonToValidate);
16
+ if (!valid) {
17
+ console.error(validate.errors);
18
+ throw new Error("Publisher JSON not valid");
19
+ }
20
+ return valid;
21
+ };
22
+ export const validateApp = (appJson) => {
23
+ const jsonToValidate = { ...appJson };
24
+ if (typeof jsonToValidate.image !== "string") {
25
+ jsonToValidate.image = jsonToValidate.image?.fileName;
26
+ }
27
+ const ajv = new Ajv({ strictTuples: false });
28
+ const validate = ajv.compile(appSchema);
29
+ const valid = validate(jsonToValidate);
30
+ if (!valid) {
31
+ console.error(validate.errors);
32
+ throw new Error("App JSON not valid");
33
+ }
34
+ return valid;
35
+ };
36
+ export const validateRelease = (releaseJson) => {
37
+ const ajv = new Ajv({ strictTuples: false });
38
+ const validate = ajv.compile(releaseSchema);
39
+ const valid = validate(releaseJson);
40
+ if (!valid) {
41
+ console.error(validate.errors);
42
+ throw new Error("Release JSON not valid");
43
+ }
44
+ return valid;
45
+ };
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/validate/index.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,KAAK,CAAC;AAQtB,iEAAiE;AACjE,OAAO,eAAe,MAAM,sCAAsC,CAAC;AACnE,iEAAiE;AACjE,OAAO,SAAS,MAAM,gCAAgC,CAAC;AACvD,iEAAiE;AACjE,OAAO,aAAa,MAAM,oCAAoC,CAAC;AAE/D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,aAAgC,EAAE,EAAE;IACpE,MAAM,cAAc,GAAG,EAAE,GAAG,aAAa,EAAE,CAAC;IAC5C,IAAI,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ,EAAE;QAC5C,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC;KACvD;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAE9C,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;KAC7C;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAoB,EAAE,EAAE;IAClD,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IACtC,IAAI,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ,EAAE;QAC5C,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC;KACvD;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAExC,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KACvC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,WAAgC,EAAE,EAAE;IAClE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC3C;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
@@ -0,0 +1,57 @@
1
+ {
2
+ "type": "object",
3
+ "properties": {
4
+ "schema_version": {
5
+ "type": "string"
6
+ },
7
+ "name": {
8
+ "type": "string"
9
+ },
10
+ "image": {
11
+ "type": "string"
12
+ },
13
+ "properties": {
14
+ "type": "object",
15
+ "properties": {
16
+ "category": {
17
+ "type": "string"
18
+ },
19
+ "creators": {
20
+ "type": "array",
21
+ "items": {
22
+ "type": "object",
23
+ "properties": {
24
+ "address": {
25
+ "type": "string"
26
+ }
27
+ },
28
+ "required": ["address"]
29
+ }
30
+ }
31
+ },
32
+ "required": ["category", "creators"]
33
+ },
34
+ "extensions": {
35
+ "type": "object",
36
+ "properties": {
37
+ "solana_dapp_store": {
38
+ "type": "object",
39
+ "properties": {
40
+ "android_package": {
41
+ "type": "string"
42
+ }
43
+ },
44
+ "required": ["android_package"]
45
+ }
46
+ },
47
+ "required": ["solana_dapp_store"]
48
+ }
49
+ },
50
+ "required": [
51
+ "schema_version",
52
+ "name",
53
+ "image",
54
+ "properties",
55
+ "extensions"
56
+ ]
57
+ }
@@ -0,0 +1,82 @@
1
+ {
2
+ "type": "object",
3
+ "properties": {
4
+ "schema_version": {
5
+ "type": "string"
6
+ },
7
+ "name": {
8
+ "type": "string"
9
+ },
10
+ "image": {
11
+ "type": "string"
12
+ },
13
+ "properties": {
14
+ "type": "object",
15
+ "properties": {
16
+ "category": {
17
+ "type": "string"
18
+ },
19
+ "creators": {
20
+ "type": "array",
21
+ "items": {
22
+ "type": "object",
23
+ "properties": {
24
+ "address": {
25
+ "type": "string"
26
+ }
27
+ },
28
+ "required": [
29
+ "address"
30
+ ]
31
+ }
32
+ }
33
+ },
34
+ "required": [
35
+ "category",
36
+ "creators"
37
+ ]
38
+ },
39
+ "extensions": {
40
+ "type": "object",
41
+ "properties": {
42
+ "solana_dapp_store": {
43
+ "type": "object",
44
+ "properties": {
45
+ "publisher_details": {
46
+ "type": "object",
47
+ "properties": {
48
+ "name": {
49
+ "type": "string"
50
+ },
51
+ "website": {
52
+ "type": "string"
53
+ },
54
+ "contact": {
55
+ "type": "string"
56
+ }
57
+ },
58
+ "required": [
59
+ "name",
60
+ "website",
61
+ "contact"
62
+ ]
63
+ }
64
+ },
65
+ "required": [
66
+ "publisher_details"
67
+ ]
68
+ }
69
+ },
70
+ "required": [
71
+ "solana_dapp_store"
72
+ ]
73
+ }
74
+ },
75
+ "required": [
76
+ "schema_version",
77
+ "name",
78
+ "image",
79
+ "properties",
80
+ "extensions"
81
+ ]
82
+ }