@thirdweb-dev/service-utils 0.0.0-dev-7899994-20230714075259 → 0.0.0-dev-1d8a47a-20230714075515

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 (41) hide show
  1. package/cf-worker/dist/thirdweb-dev-service-utils-cf-worker.cjs.d.ts +2 -0
  2. package/cf-worker/dist/thirdweb-dev-service-utils-cf-worker.cjs.d.ts.map +1 -0
  3. package/cf-worker/dist/thirdweb-dev-service-utils-cf-worker.cjs.dev.js +115 -0
  4. package/cf-worker/dist/thirdweb-dev-service-utils-cf-worker.cjs.js +7 -0
  5. package/cf-worker/dist/thirdweb-dev-service-utils-cf-worker.cjs.prod.js +115 -0
  6. package/cf-worker/dist/thirdweb-dev-service-utils-cf-worker.esm.js +105 -0
  7. package/dist/declarations/src/cf-worker/index.d.ts +18 -0
  8. package/dist/declarations/src/cf-worker/index.d.ts.map +1 -0
  9. package/dist/declarations/src/core/api.d.ts +31 -0
  10. package/dist/declarations/src/core/api.d.ts.map +1 -0
  11. package/dist/declarations/src/core/authorize/index.d.ts +18 -0
  12. package/dist/declarations/src/core/authorize/index.d.ts.map +1 -0
  13. package/dist/declarations/src/core/authorize/types.d.ts +11 -0
  14. package/dist/declarations/src/core/authorize/types.d.ts.map +1 -0
  15. package/dist/declarations/src/core/services.d.ts +101 -0
  16. package/dist/declarations/src/core/services.d.ts.map +1 -0
  17. package/dist/declarations/src/core/types.d.ts +5 -0
  18. package/dist/declarations/src/core/types.d.ts.map +1 -0
  19. package/dist/declarations/src/index.d.ts +2 -0
  20. package/dist/declarations/src/index.d.ts.map +1 -0
  21. package/dist/declarations/src/node/index.d.ts +16 -0
  22. package/dist/declarations/src/node/index.d.ts.map +1 -0
  23. package/dist/index-20c60154.cjs.prod.js +254 -0
  24. package/dist/index-781b85e1.cjs.dev.js +254 -0
  25. package/dist/index-9343e4ac.esm.js +252 -0
  26. package/dist/services-86283509.esm.js +44 -0
  27. package/dist/services-9e185105.cjs.prod.js +49 -0
  28. package/dist/services-a3f36057.cjs.dev.js +49 -0
  29. package/dist/thirdweb-dev-service-utils.cjs.d.ts +2 -0
  30. package/dist/thirdweb-dev-service-utils.cjs.d.ts.map +1 -0
  31. package/dist/thirdweb-dev-service-utils.cjs.dev.js +12 -0
  32. package/dist/thirdweb-dev-service-utils.cjs.js +7 -0
  33. package/dist/thirdweb-dev-service-utils.cjs.prod.js +12 -0
  34. package/dist/thirdweb-dev-service-utils.esm.js +1 -0
  35. package/node/dist/thirdweb-dev-service-utils-node.cjs.d.ts +2 -0
  36. package/node/dist/thirdweb-dev-service-utils-node.cjs.d.ts.map +1 -0
  37. package/node/dist/thirdweb-dev-service-utils-node.cjs.dev.js +113 -0
  38. package/node/dist/thirdweb-dev-service-utils-node.cjs.js +7 -0
  39. package/node/dist/thirdweb-dev-service-utils-node.cjs.prod.js +113 -0
  40. package/node/dist/thirdweb-dev-service-utils-node.esm.js +102 -0
  41. package/package.json +1 -1
@@ -0,0 +1,102 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { a as authorize } from '../../dist/index-9343e4ac.esm.js';
3
+ export { b as SERVICES, S as SERVICE_DEFINITIONS, a as SERVICE_NAMES, g as getServiceByName } from '../../dist/services-86283509.esm.js';
4
+
5
+ async function authorizeNode(authInput, serviceConfig) {
6
+ let authData;
7
+ try {
8
+ authData = extractAuthorizationData(authInput);
9
+ } catch (e) {
10
+ if (e instanceof Error && e.message === "KEY_CONFLICT") {
11
+ return {
12
+ authorized: false,
13
+ status: 400,
14
+ errorMessage: "Please pass either a client id or a secret key.",
15
+ errorCode: "KEY_CONFLICT"
16
+ };
17
+ }
18
+ return {
19
+ authorized: false,
20
+ status: 500,
21
+ errorMessage: "Internal Server Error",
22
+ errorCode: "INTERNAL_SERVER_ERROR"
23
+ };
24
+ }
25
+ return await authorize(authData, serviceConfig);
26
+ }
27
+ function getHeader(headers, headerName) {
28
+ const header = headers[headerName];
29
+ if (Array.isArray(header)) {
30
+ return header[0];
31
+ }
32
+ return header ?? null;
33
+ }
34
+ function extractAuthorizationData(authInput) {
35
+ if (!authInput.req.url) {
36
+ throw new Error("no req.url in authInput.req");
37
+ }
38
+ const requestUrl = new URL(authInput.req.url, authInput.req.headers.host);
39
+ const headers = authInput.req.headers;
40
+ const secretKey = getHeader(headers, "x-secret-key");
41
+ // prefer clientId that is explicitly passed in
42
+ let clientId = authInput.clientId ?? null;
43
+ if (!clientId) {
44
+ // next preference is clientId from header
45
+ clientId = getHeader(headers, "x-client-id");
46
+ }
47
+
48
+ // next preference is search param
49
+ if (!clientId) {
50
+ clientId = requestUrl.searchParams.get("clientId");
51
+ }
52
+ // bundle id from header is first preference
53
+ let bundleId = getHeader(headers, "x-bundle-id");
54
+
55
+ // next preference is search param
56
+ if (!bundleId) {
57
+ bundleId = requestUrl.searchParams.get("bundleId");
58
+ }
59
+ let origin = getHeader(headers, "origin");
60
+ // if origin header is not available we'll fall back to referrer;
61
+ if (!origin) {
62
+ origin = getHeader(headers, "referer");
63
+ }
64
+ // if we have an origin at this point, normalize it
65
+ if (origin) {
66
+ try {
67
+ origin = new URL(origin).hostname;
68
+ } catch (e) {
69
+ console.warn("failed to parse origin", origin, e);
70
+ }
71
+ }
72
+
73
+ // handle if we a secret key is passed in the headers
74
+ let secretKeyHash = null;
75
+ if (secretKey) {
76
+ // hash the secret key
77
+ secretKeyHash = hashSecretKey(secretKey);
78
+ // derive the client id from the secret key hash
79
+ const derivedClientId = deriveClientIdFromSecretKeyHash(secretKeyHash);
80
+ // if we already have a client id passed in we need to make sure they match
81
+ if (clientId && clientId !== derivedClientId) {
82
+ throw new Error("KEY_CONFLICT");
83
+ }
84
+ // otherwise set the client id to the derived client id (client id based off of secret key)
85
+ clientId = derivedClientId;
86
+ }
87
+ return {
88
+ secretKeyHash,
89
+ secretKey,
90
+ clientId,
91
+ origin,
92
+ bundleId
93
+ };
94
+ }
95
+ function hashSecretKey(secretKey) {
96
+ return createHash("sha256").update(secretKey).digest("hex");
97
+ }
98
+ function deriveClientIdFromSecretKeyHash(secretKeyHash) {
99
+ return secretKeyHash.slice(0, 32);
100
+ }
101
+
102
+ export { authorizeNode, deriveClientIdFromSecretKeyHash, extractAuthorizationData, hashSecretKey };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thirdweb-dev/service-utils",
3
- "version": "0.0.0-dev-7899994-20230714075259",
3
+ "version": "0.0.0-dev-1d8a47a-20230714075515",
4
4
  "main": "dist/thirdweb-dev-service-utils.cjs.js",
5
5
  "module": "dist/thirdweb-dev-service-utils.esm.js",
6
6
  "exports": {