naystack 1.8.19 → 1.9.1

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 (122) hide show
  1. package/README.md +99 -34
  2. package/dist/auth/client.cjs.js +2 -2
  3. package/dist/auth/client.esm.js +2 -2
  4. package/dist/auth/email/client.cjs.js +2 -2
  5. package/dist/auth/email/client.esm.js +2 -2
  6. package/dist/auth/email/index.cjs.js +2 -2
  7. package/dist/auth/email/index.esm.js +2 -2
  8. package/dist/auth/email/next.cjs.js +2 -2
  9. package/dist/auth/email/next.esm.js +2 -2
  10. package/dist/auth/email/routes/delete.cjs.js +2 -2
  11. package/dist/auth/email/routes/delete.esm.js +2 -2
  12. package/dist/auth/email/routes/get.cjs.js +2 -2
  13. package/dist/auth/email/routes/get.esm.js +2 -2
  14. package/dist/auth/email/routes/post.cjs.js +2 -2
  15. package/dist/auth/email/routes/post.esm.js +2 -2
  16. package/dist/auth/email/routes/put.cjs.js +2 -2
  17. package/dist/auth/email/routes/put.esm.js +2 -2
  18. package/dist/auth/email/token.cjs.js +2 -2
  19. package/dist/auth/email/token.esm.js +2 -2
  20. package/dist/auth/email/utils.cjs.js +2 -2
  21. package/dist/auth/email/utils.esm.js +2 -2
  22. package/dist/auth/google/get.cjs.js +2 -2
  23. package/dist/auth/google/get.esm.js +2 -2
  24. package/dist/auth/google/index.cjs.js +2 -2
  25. package/dist/auth/google/index.esm.js +2 -2
  26. package/dist/auth/index.cjs.js +4 -306
  27. package/dist/auth/index.d.mts +0 -5
  28. package/dist/auth/index.d.ts +0 -5
  29. package/dist/auth/index.esm.js +3 -302
  30. package/dist/auth/token-store.cjs.js +2 -2
  31. package/dist/auth/token-store.esm.js +2 -2
  32. package/dist/env.cjs.js +3 -3
  33. package/dist/env.d.mts +3 -2
  34. package/dist/env.d.ts +3 -2
  35. package/dist/env.esm.js +3 -3
  36. package/dist/file/client.cjs.js +2 -2
  37. package/dist/file/client.esm.js +2 -2
  38. package/dist/file/index.cjs.js +2 -2
  39. package/dist/file/index.esm.js +2 -2
  40. package/dist/file/put.cjs.js +2 -2
  41. package/dist/file/put.esm.js +2 -2
  42. package/dist/file/setup.cjs.js +2 -2
  43. package/dist/file/setup.esm.js +2 -2
  44. package/dist/file/utils.cjs.js +2 -2
  45. package/dist/file/utils.esm.js +2 -2
  46. package/dist/graphql/client.cjs.js +2 -2
  47. package/dist/graphql/client.esm.js +2 -2
  48. package/dist/graphql/index.cjs.js +2 -2
  49. package/dist/graphql/index.esm.js +2 -2
  50. package/dist/graphql/init.cjs.js +2 -2
  51. package/dist/graphql/init.esm.js +2 -2
  52. package/dist/graphql/links.cjs.js +2 -2
  53. package/dist/graphql/links.esm.js +2 -2
  54. package/dist/graphql/next.cjs.js +2 -2
  55. package/dist/graphql/next.esm.js +2 -2
  56. package/dist/graphql/server.cjs.js +2 -2
  57. package/dist/graphql/server.esm.js +2 -2
  58. package/dist/graphql/utils.cjs.js +2 -2
  59. package/dist/graphql/utils.esm.js +2 -2
  60. package/dist/socials/connect.cjs.js +151 -0
  61. package/dist/socials/connect.d.mts +70 -0
  62. package/dist/socials/connect.d.ts +70 -0
  63. package/dist/socials/connect.esm.js +126 -0
  64. package/dist/socials/index.cjs.js +345 -21
  65. package/dist/socials/index.d.mts +8 -2
  66. package/dist/socials/index.d.ts +8 -2
  67. package/dist/socials/index.esm.js +335 -20
  68. package/dist/socials/instagram/adapter.cjs.js +276 -0
  69. package/dist/socials/instagram/adapter.d.mts +30 -0
  70. package/dist/socials/instagram/adapter.d.ts +30 -0
  71. package/dist/socials/instagram/adapter.esm.js +249 -0
  72. package/dist/{auth/instagram/utils.cjs.js → socials/instagram/auth.cjs.js} +43 -41
  73. package/dist/socials/instagram/auth.d.mts +52 -0
  74. package/dist/socials/instagram/auth.d.ts +52 -0
  75. package/dist/{auth/instagram/utils.esm.js → socials/instagram/auth.esm.js} +37 -35
  76. package/dist/socials/instagram/getters.d.mts +1 -0
  77. package/dist/socials/instagram/getters.d.ts +1 -0
  78. package/dist/socials/instagram/setters.cjs.js +33 -17
  79. package/dist/socials/instagram/setters.d.mts +1 -0
  80. package/dist/socials/instagram/setters.d.ts +1 -0
  81. package/dist/socials/instagram/setters.esm.js +33 -17
  82. package/dist/socials/instagram/types.d.mts +2 -1
  83. package/dist/socials/instagram/types.d.ts +2 -1
  84. package/dist/socials/meta/container.cjs.js +34 -16
  85. package/dist/socials/meta/container.d.mts +5 -27
  86. package/dist/socials/meta/container.d.ts +5 -27
  87. package/dist/socials/meta/container.esm.js +33 -17
  88. package/dist/socials/provider.cjs.js +18 -0
  89. package/dist/socials/provider.d.mts +54 -0
  90. package/dist/socials/provider.d.ts +54 -0
  91. package/dist/socials/provider.esm.js +0 -0
  92. package/dist/socials/threads/getters.d.mts +1 -0
  93. package/dist/socials/threads/getters.d.ts +1 -0
  94. package/dist/socials/threads/setters.cjs.js +33 -17
  95. package/dist/socials/threads/setters.d.mts +1 -0
  96. package/dist/socials/threads/setters.d.ts +1 -0
  97. package/dist/socials/threads/setters.esm.js +33 -17
  98. package/dist/socials/threads/types.d.mts +2 -1
  99. package/dist/socials/threads/types.d.ts +2 -1
  100. package/dist/socials/types.cjs.js +43 -0
  101. package/dist/socials/types.d.mts +99 -0
  102. package/dist/socials/types.d.ts +99 -0
  103. package/dist/socials/types.esm.js +17 -0
  104. package/dist/socials/utils/poll.cjs.js +59 -0
  105. package/dist/socials/utils/poll.d.mts +85 -0
  106. package/dist/socials/utils/poll.d.ts +85 -0
  107. package/dist/socials/utils/poll.esm.js +33 -0
  108. package/dist/utils/client/index.cjs.js +2 -2
  109. package/dist/utils/client/index.esm.js +2 -2
  110. package/dist/utils/client/seo.cjs.js +2 -2
  111. package/dist/utils/client/seo.esm.js +2 -2
  112. package/package.json +1 -1
  113. package/dist/auth/instagram/index.cjs.js +0 -388
  114. package/dist/auth/instagram/index.d.mts +0 -58
  115. package/dist/auth/instagram/index.d.ts +0 -58
  116. package/dist/auth/instagram/index.esm.js +0 -359
  117. package/dist/auth/instagram/route.cjs.js +0 -368
  118. package/dist/auth/instagram/route.d.mts +0 -15
  119. package/dist/auth/instagram/route.d.ts +0 -15
  120. package/dist/auth/instagram/route.esm.js +0 -343
  121. package/dist/auth/instagram/utils.d.mts +0 -57
  122. package/dist/auth/instagram/utils.d.ts +0 -57
@@ -14,8 +14,8 @@ var getEnvValue = (key) => {
14
14
  return process.env.NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT || EXTRA_ENV.EMAIL_AUTH_ENDPOINT;
15
15
  case "NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT" /* NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT */:
16
16
  return process.env.NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT || EXTRA_ENV.GOOGLE_AUTH_ENDPOINT;
17
- case "NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT" /* NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT */:
18
- return process.env.NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT || EXTRA_ENV.INSTAGRAM_AUTH_ENDPOINT;
17
+ case "NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT" /* NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT */:
18
+ return process.env.NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT || EXTRA_ENV.SOCIAL_AUTH_ENDPOINT;
19
19
  case "NEXT_PUBLIC_FILE_ENDPOINT" /* NEXT_PUBLIC_FILE_ENDPOINT */:
20
20
  return process.env.NEXT_PUBLIC_FILE_ENDPOINT || EXTRA_ENV.FILE_ENDPOINT;
21
21
  case "NEXT_PUBLIC_BASE_URL" /* NEXT_PUBLIC_BASE_URL */:
@@ -72,8 +72,8 @@ var getEnvValue = (key) => {
72
72
  return process.env.NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT || EXTRA_ENV.EMAIL_AUTH_ENDPOINT;
73
73
  case "NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT" /* NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT */:
74
74
  return process.env.NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT || EXTRA_ENV.GOOGLE_AUTH_ENDPOINT;
75
- case "NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT" /* NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT */:
76
- return process.env.NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT || EXTRA_ENV.INSTAGRAM_AUTH_ENDPOINT;
75
+ case "NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT" /* NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT */:
76
+ return process.env.NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT || EXTRA_ENV.SOCIAL_AUTH_ENDPOINT;
77
77
  case "NEXT_PUBLIC_FILE_ENDPOINT" /* NEXT_PUBLIC_FILE_ENDPOINT */:
78
78
  return process.env.NEXT_PUBLIC_FILE_ENDPOINT || EXTRA_ENV.FILE_ENDPOINT;
79
79
  case "NEXT_PUBLIC_BASE_URL" /* NEXT_PUBLIC_BASE_URL */:
@@ -43,8 +43,8 @@ var getEnvValue = (key) => {
43
43
  return process.env.NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT || EXTRA_ENV.EMAIL_AUTH_ENDPOINT;
44
44
  case "NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT" /* NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT */:
45
45
  return process.env.NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT || EXTRA_ENV.GOOGLE_AUTH_ENDPOINT;
46
- case "NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT" /* NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT */:
47
- return process.env.NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT || EXTRA_ENV.INSTAGRAM_AUTH_ENDPOINT;
46
+ case "NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT" /* NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT */:
47
+ return process.env.NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT || EXTRA_ENV.SOCIAL_AUTH_ENDPOINT;
48
48
  case "NEXT_PUBLIC_FILE_ENDPOINT" /* NEXT_PUBLIC_FILE_ENDPOINT */:
49
49
  return process.env.NEXT_PUBLIC_FILE_ENDPOINT || EXTRA_ENV.FILE_ENDPOINT;
50
50
  case "NEXT_PUBLIC_BASE_URL" /* NEXT_PUBLIC_BASE_URL */:
@@ -50,8 +50,8 @@ var getEnvValue = (key) => {
50
50
  return process.env.NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT || EXTRA_ENV.EMAIL_AUTH_ENDPOINT;
51
51
  case "NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT" /* NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT */:
52
52
  return process.env.NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT || EXTRA_ENV.GOOGLE_AUTH_ENDPOINT;
53
- case "NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT" /* NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT */:
54
- return process.env.NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT || EXTRA_ENV.INSTAGRAM_AUTH_ENDPOINT;
53
+ case "NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT" /* NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT */:
54
+ return process.env.NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT || EXTRA_ENV.SOCIAL_AUTH_ENDPOINT;
55
55
  case "NEXT_PUBLIC_FILE_ENDPOINT" /* NEXT_PUBLIC_FILE_ENDPOINT */:
56
56
  return process.env.NEXT_PUBLIC_FILE_ENDPOINT || EXTRA_ENV.FILE_ENDPOINT;
57
57
  case "NEXT_PUBLIC_BASE_URL" /* NEXT_PUBLIC_BASE_URL */:
@@ -19,8 +19,8 @@ var getEnvValue = (key) => {
19
19
  return process.env.NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT || EXTRA_ENV.EMAIL_AUTH_ENDPOINT;
20
20
  case "NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT" /* NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT */:
21
21
  return process.env.NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT || EXTRA_ENV.GOOGLE_AUTH_ENDPOINT;
22
- case "NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT" /* NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT */:
23
- return process.env.NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT || EXTRA_ENV.INSTAGRAM_AUTH_ENDPOINT;
22
+ case "NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT" /* NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT */:
23
+ return process.env.NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT || EXTRA_ENV.SOCIAL_AUTH_ENDPOINT;
24
24
  case "NEXT_PUBLIC_FILE_ENDPOINT" /* NEXT_PUBLIC_FILE_ENDPOINT */:
25
25
  return process.env.NEXT_PUBLIC_FILE_ENDPOINT || EXTRA_ENV.FILE_ENDPOINT;
26
26
  case "NEXT_PUBLIC_BASE_URL" /* NEXT_PUBLIC_BASE_URL */:
@@ -58,8 +58,8 @@ var getEnvValue = (key) => {
58
58
  return process.env.NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT || EXTRA_ENV.EMAIL_AUTH_ENDPOINT;
59
59
  case "NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT" /* NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT */:
60
60
  return process.env.NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT || EXTRA_ENV.GOOGLE_AUTH_ENDPOINT;
61
- case "NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT" /* NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT */:
62
- return process.env.NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT || EXTRA_ENV.INSTAGRAM_AUTH_ENDPOINT;
61
+ case "NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT" /* NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT */:
62
+ return process.env.NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT || EXTRA_ENV.SOCIAL_AUTH_ENDPOINT;
63
63
  case "NEXT_PUBLIC_FILE_ENDPOINT" /* NEXT_PUBLIC_FILE_ENDPOINT */:
64
64
  return process.env.NEXT_PUBLIC_FILE_ENDPOINT || EXTRA_ENV.FILE_ENDPOINT;
65
65
  case "NEXT_PUBLIC_BASE_URL" /* NEXT_PUBLIC_BASE_URL */:
@@ -43,8 +43,8 @@ var getEnvValue = (key) => {
43
43
  return process.env.NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT || EXTRA_ENV.EMAIL_AUTH_ENDPOINT;
44
44
  case "NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT" /* NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT */:
45
45
  return process.env.NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT || EXTRA_ENV.GOOGLE_AUTH_ENDPOINT;
46
- case "NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT" /* NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT */:
47
- return process.env.NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT || EXTRA_ENV.INSTAGRAM_AUTH_ENDPOINT;
46
+ case "NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT" /* NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT */:
47
+ return process.env.NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT || EXTRA_ENV.SOCIAL_AUTH_ENDPOINT;
48
48
  case "NEXT_PUBLIC_FILE_ENDPOINT" /* NEXT_PUBLIC_FILE_ENDPOINT */:
49
49
  return process.env.NEXT_PUBLIC_FILE_ENDPOINT || EXTRA_ENV.FILE_ENDPOINT;
50
50
  case "NEXT_PUBLIC_BASE_URL" /* NEXT_PUBLIC_BASE_URL */:
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/socials/connect.ts
21
+ var connect_exports = {};
22
+ __export(connect_exports, {
23
+ setupSocialAuth: () => setupSocialAuth
24
+ });
25
+ module.exports = __toCommonJS(connect_exports);
26
+ var import_server2 = require("next/server");
27
+
28
+ // src/auth/email/token.ts
29
+ var import_bcryptjs = require("bcryptjs");
30
+ var import_jsonwebtoken = require("jsonwebtoken");
31
+ var import_headers = require("next/headers");
32
+ var import_navigation = require("next/navigation");
33
+ var import_server = require("next/server");
34
+
35
+ // src/env.ts
36
+ var EXTRA_ENV = globalThis.__NAYSTACK_ENV__ || (globalThis.__NAYSTACK_ENV__ = {});
37
+ var getEnvValue = (key) => {
38
+ switch (key) {
39
+ case "NEXT_PUBLIC_GRAPHQL_ENDPOINT" /* NEXT_PUBLIC_GRAPHQL_ENDPOINT */:
40
+ return process.env.NEXT_PUBLIC_GRAPHQL_ENDPOINT || EXTRA_ENV.GRAPHQL_ENDPOINT;
41
+ case "NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT" /* NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT */:
42
+ return process.env.NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT || EXTRA_ENV.EMAIL_AUTH_ENDPOINT;
43
+ case "NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT" /* NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT */:
44
+ return process.env.NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT || EXTRA_ENV.GOOGLE_AUTH_ENDPOINT;
45
+ case "NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT" /* NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT */:
46
+ return process.env.NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT || EXTRA_ENV.SOCIAL_AUTH_ENDPOINT;
47
+ case "NEXT_PUBLIC_FILE_ENDPOINT" /* NEXT_PUBLIC_FILE_ENDPOINT */:
48
+ return process.env.NEXT_PUBLIC_FILE_ENDPOINT || EXTRA_ENV.FILE_ENDPOINT;
49
+ case "NEXT_PUBLIC_BASE_URL" /* NEXT_PUBLIC_BASE_URL */:
50
+ return process.env.NEXT_PUBLIC_BASE_URL || EXTRA_ENV.BASE_URL;
51
+ case "REFRESH_KEY" /* REFRESH_KEY */:
52
+ return process.env.REFRESH_KEY;
53
+ case "SIGNING_KEY" /* SIGNING_KEY */:
54
+ return process.env.SIGNING_KEY;
55
+ case "INSTAGRAM_CLIENT_SECRET" /* INSTAGRAM_CLIENT_SECRET */:
56
+ return process.env.INSTAGRAM_CLIENT_SECRET;
57
+ case "INSTAGRAM_CLIENT_ID" /* INSTAGRAM_CLIENT_ID */:
58
+ return process.env.INSTAGRAM_CLIENT_ID;
59
+ case "GOOGLE_CLIENT_SECRET" /* GOOGLE_CLIENT_SECRET */:
60
+ return process.env.GOOGLE_CLIENT_SECRET;
61
+ case "GOOGLE_CLIENT_ID" /* GOOGLE_CLIENT_ID */:
62
+ return process.env.GOOGLE_CLIENT_ID;
63
+ case "TURNSTILE_KEY" /* TURNSTILE_KEY */:
64
+ return process.env.TURNSTILE_KEY;
65
+ case "S3_ACCESS_KEY_ID" /* S3_ACCESS_KEY_ID */:
66
+ return process.env.S3_ACCESS_KEY_ID;
67
+ case "S3_ACCESS_KEY_SECRET" /* S3_ACCESS_KEY_SECRET */:
68
+ return process.env.S3_ACCESS_KEY_SECRET;
69
+ case "S3_REGION" /* S3_REGION */:
70
+ return process.env.S3_REGION;
71
+ case "S3_BUCKET" /* S3_BUCKET */:
72
+ return process.env.S3_BUCKET;
73
+ case "NODE_ENV" /* NODE_ENV */:
74
+ return process.env.NODE_ENV;
75
+ default:
76
+ return process.env[key];
77
+ }
78
+ };
79
+ function getEnv(key, skipCheck) {
80
+ const value = getEnvValue(key);
81
+ if (!skipCheck && !value) throw new Error(`${key} is not defined`);
82
+ return value;
83
+ }
84
+
85
+ // src/auth/email/token.ts
86
+ function getUserIdFromAccessToken(accessToken) {
87
+ if (accessToken)
88
+ try {
89
+ const decoded = (0, import_jsonwebtoken.verify)(accessToken, getEnv("SIGNING_KEY" /* SIGNING_KEY */));
90
+ if (typeof decoded !== "string" && typeof decoded.id === "number")
91
+ return decoded.id;
92
+ } catch (e) {
93
+ if (!(e instanceof import_jsonwebtoken.JsonWebTokenError)) console.error(e, "errors");
94
+ return null;
95
+ }
96
+ return null;
97
+ }
98
+
99
+ // src/socials/connect.ts
100
+ function setupSocialAuth({
101
+ providers,
102
+ endpoint,
103
+ onConnect,
104
+ redirectURL,
105
+ errorRedirectURL,
106
+ scopes
107
+ }) {
108
+ const handleError = (message) => import_server2.NextResponse.redirect(`${errorRedirectURL}?error=${message}`);
109
+ const GET = async (req, ctx) => {
110
+ const { platform } = await ctx.params;
111
+ const provider = providers.find((p) => p.platform === platform);
112
+ if (!provider) return handleError("Unsupported platform");
113
+ const code = req.nextUrl.searchParams.get("code");
114
+ const error = req.nextUrl.searchParams.get("error");
115
+ const state = req.nextUrl.searchParams.get("state");
116
+ if (error) return handleError(error);
117
+ if (!state) return handleError("Invalid request");
118
+ const redirectURI = `${endpoint}/${provider.platform}`;
119
+ if (!code) {
120
+ return import_server2.NextResponse.redirect(
121
+ provider.auth.authorizationURL({
122
+ state,
123
+ redirectURI,
124
+ scopes: scopes?.[provider.platform]
125
+ }),
126
+ 302
127
+ );
128
+ }
129
+ const exchanged = await provider.auth.exchangeCode({ code, redirectURI });
130
+ if (!exchanged) return handleError("Couldn't connect your account");
131
+ const { platformUserId, ...tokens } = exchanged;
132
+ const profile = await provider.fetchProfile(tokens.accessToken);
133
+ if (!profile) return handleError("Couldn't read your profile");
134
+ const errorMessage = await onConnect({
135
+ platform: provider.platform,
136
+ profile: {
137
+ ...profile,
138
+ platformUserId: profile.platformUserId ?? platformUserId
139
+ },
140
+ tokens,
141
+ userId: getUserIdFromAccessToken(state)
142
+ });
143
+ if (errorMessage) return handleError(errorMessage);
144
+ return import_server2.NextResponse.redirect(redirectURL);
145
+ };
146
+ return { GET };
147
+ }
148
+ // Annotate the CommonJS export names for ESM import in node:
149
+ 0 && (module.exports = {
150
+ setupSocialAuth
151
+ });
@@ -0,0 +1,70 @@
1
+ import { NextRequest, NextResponse } from 'next/server';
2
+ import { SocialProvider } from './provider.mjs';
3
+ import { SocialPlatform, SocialProfile, SocialTokens } from './types.mjs';
4
+
5
+ /**
6
+ * A freshly connected account, handed to `onConnect`.
7
+ *
8
+ * @property userId - Your app's user id from the state token; `null` when that token was invalid or expired.
9
+ *
10
+ * @category Socials
11
+ */
12
+ interface SocialConnection {
13
+ platform: SocialPlatform;
14
+ profile: SocialProfile;
15
+ tokens: SocialTokens;
16
+ userId: number | null;
17
+ }
18
+ /**
19
+ * Options for {@link setupSocialAuth}.
20
+ *
21
+ * @property endpoint - Base URL this route is mounted at, e.g. `"https://yourapp.com/api/social"`. Each provider's redirect URI is `<endpoint>/<platform>` and must be registered with that platform verbatim.
22
+ * @property onConnect - Return a string to show as an error (redirects to `errorRedirectURL`); return `void` on success.
23
+ * @property scopes - Per-platform permissions; each provider has its own default.
24
+ *
25
+ * @category Socials
26
+ */
27
+ interface SetupSocialAuthOptions {
28
+ providers: SocialProvider[];
29
+ endpoint: string;
30
+ onConnect: (connection: SocialConnection) => Promise<string | void>;
31
+ redirectURL: string;
32
+ errorRedirectURL: string;
33
+ scopes?: Partial<Record<SocialPlatform, string[]>>;
34
+ }
35
+ /**
36
+ * One OAuth route for every platform a user can connect.
37
+ *
38
+ * Mount the GET handler on a dynamic segment — `app/api/social/[platform]/route.ts`
39
+ * — and `/api/social/instagram`, `/api/social/youtube`, … are the same handler. It
40
+ * serves both the connect entry point (`?state`, no code → 302 to the platform's
41
+ * authorize URL) and the callback (`?code`).
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * // app/api/social/[platform]/route.ts
46
+ * import { InstagramProvider, setupSocialAuth } from "naystack/socials";
47
+ *
48
+ * export const { GET } = setupSocialAuth({
49
+ * providers: [InstagramProvider],
50
+ * endpoint: "https://yourapp.com/api/social",
51
+ * redirectURL: "/profile",
52
+ * errorRedirectURL: "/signup",
53
+ * onConnect: async ({ platform, profile, tokens, userId }) => {
54
+ * if (!userId) return "You are not logged in";
55
+ * await saveSocialAccount(userId, platform, profile, tokens);
56
+ * },
57
+ * });
58
+ * ```
59
+ *
60
+ * @category Socials
61
+ */
62
+ declare function setupSocialAuth({ providers, endpoint, onConnect, redirectURL, errorRedirectURL, scopes, }: SetupSocialAuthOptions): {
63
+ GET: (req: NextRequest, ctx: {
64
+ params: Promise<{
65
+ platform: string;
66
+ }>;
67
+ }) => Promise<NextResponse<unknown>>;
68
+ };
69
+
70
+ export { type SetupSocialAuthOptions, type SocialConnection, setupSocialAuth };
@@ -0,0 +1,70 @@
1
+ import { NextRequest, NextResponse } from 'next/server';
2
+ import { SocialProvider } from './provider.js';
3
+ import { SocialPlatform, SocialProfile, SocialTokens } from './types.js';
4
+
5
+ /**
6
+ * A freshly connected account, handed to `onConnect`.
7
+ *
8
+ * @property userId - Your app's user id from the state token; `null` when that token was invalid or expired.
9
+ *
10
+ * @category Socials
11
+ */
12
+ interface SocialConnection {
13
+ platform: SocialPlatform;
14
+ profile: SocialProfile;
15
+ tokens: SocialTokens;
16
+ userId: number | null;
17
+ }
18
+ /**
19
+ * Options for {@link setupSocialAuth}.
20
+ *
21
+ * @property endpoint - Base URL this route is mounted at, e.g. `"https://yourapp.com/api/social"`. Each provider's redirect URI is `<endpoint>/<platform>` and must be registered with that platform verbatim.
22
+ * @property onConnect - Return a string to show as an error (redirects to `errorRedirectURL`); return `void` on success.
23
+ * @property scopes - Per-platform permissions; each provider has its own default.
24
+ *
25
+ * @category Socials
26
+ */
27
+ interface SetupSocialAuthOptions {
28
+ providers: SocialProvider[];
29
+ endpoint: string;
30
+ onConnect: (connection: SocialConnection) => Promise<string | void>;
31
+ redirectURL: string;
32
+ errorRedirectURL: string;
33
+ scopes?: Partial<Record<SocialPlatform, string[]>>;
34
+ }
35
+ /**
36
+ * One OAuth route for every platform a user can connect.
37
+ *
38
+ * Mount the GET handler on a dynamic segment — `app/api/social/[platform]/route.ts`
39
+ * — and `/api/social/instagram`, `/api/social/youtube`, … are the same handler. It
40
+ * serves both the connect entry point (`?state`, no code → 302 to the platform's
41
+ * authorize URL) and the callback (`?code`).
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * // app/api/social/[platform]/route.ts
46
+ * import { InstagramProvider, setupSocialAuth } from "naystack/socials";
47
+ *
48
+ * export const { GET } = setupSocialAuth({
49
+ * providers: [InstagramProvider],
50
+ * endpoint: "https://yourapp.com/api/social",
51
+ * redirectURL: "/profile",
52
+ * errorRedirectURL: "/signup",
53
+ * onConnect: async ({ platform, profile, tokens, userId }) => {
54
+ * if (!userId) return "You are not logged in";
55
+ * await saveSocialAccount(userId, platform, profile, tokens);
56
+ * },
57
+ * });
58
+ * ```
59
+ *
60
+ * @category Socials
61
+ */
62
+ declare function setupSocialAuth({ providers, endpoint, onConnect, redirectURL, errorRedirectURL, scopes, }: SetupSocialAuthOptions): {
63
+ GET: (req: NextRequest, ctx: {
64
+ params: Promise<{
65
+ platform: string;
66
+ }>;
67
+ }) => Promise<NextResponse<unknown>>;
68
+ };
69
+
70
+ export { type SetupSocialAuthOptions, type SocialConnection, setupSocialAuth };
@@ -0,0 +1,126 @@
1
+ // src/socials/connect.ts
2
+ import { NextResponse as NextResponse2 } from "next/server";
3
+
4
+ // src/auth/email/token.ts
5
+ import { compare } from "bcryptjs";
6
+ import { JsonWebTokenError, sign, verify } from "jsonwebtoken";
7
+ import { cookies } from "next/headers";
8
+ import { redirect } from "next/navigation";
9
+ import { NextResponse } from "next/server";
10
+
11
+ // src/env.ts
12
+ var EXTRA_ENV = globalThis.__NAYSTACK_ENV__ || (globalThis.__NAYSTACK_ENV__ = {});
13
+ var getEnvValue = (key) => {
14
+ switch (key) {
15
+ case "NEXT_PUBLIC_GRAPHQL_ENDPOINT" /* NEXT_PUBLIC_GRAPHQL_ENDPOINT */:
16
+ return process.env.NEXT_PUBLIC_GRAPHQL_ENDPOINT || EXTRA_ENV.GRAPHQL_ENDPOINT;
17
+ case "NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT" /* NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT */:
18
+ return process.env.NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT || EXTRA_ENV.EMAIL_AUTH_ENDPOINT;
19
+ case "NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT" /* NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT */:
20
+ return process.env.NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT || EXTRA_ENV.GOOGLE_AUTH_ENDPOINT;
21
+ case "NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT" /* NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT */:
22
+ return process.env.NEXT_PUBLIC_SOCIAL_AUTH_ENDPOINT || EXTRA_ENV.SOCIAL_AUTH_ENDPOINT;
23
+ case "NEXT_PUBLIC_FILE_ENDPOINT" /* NEXT_PUBLIC_FILE_ENDPOINT */:
24
+ return process.env.NEXT_PUBLIC_FILE_ENDPOINT || EXTRA_ENV.FILE_ENDPOINT;
25
+ case "NEXT_PUBLIC_BASE_URL" /* NEXT_PUBLIC_BASE_URL */:
26
+ return process.env.NEXT_PUBLIC_BASE_URL || EXTRA_ENV.BASE_URL;
27
+ case "REFRESH_KEY" /* REFRESH_KEY */:
28
+ return process.env.REFRESH_KEY;
29
+ case "SIGNING_KEY" /* SIGNING_KEY */:
30
+ return process.env.SIGNING_KEY;
31
+ case "INSTAGRAM_CLIENT_SECRET" /* INSTAGRAM_CLIENT_SECRET */:
32
+ return process.env.INSTAGRAM_CLIENT_SECRET;
33
+ case "INSTAGRAM_CLIENT_ID" /* INSTAGRAM_CLIENT_ID */:
34
+ return process.env.INSTAGRAM_CLIENT_ID;
35
+ case "GOOGLE_CLIENT_SECRET" /* GOOGLE_CLIENT_SECRET */:
36
+ return process.env.GOOGLE_CLIENT_SECRET;
37
+ case "GOOGLE_CLIENT_ID" /* GOOGLE_CLIENT_ID */:
38
+ return process.env.GOOGLE_CLIENT_ID;
39
+ case "TURNSTILE_KEY" /* TURNSTILE_KEY */:
40
+ return process.env.TURNSTILE_KEY;
41
+ case "S3_ACCESS_KEY_ID" /* S3_ACCESS_KEY_ID */:
42
+ return process.env.S3_ACCESS_KEY_ID;
43
+ case "S3_ACCESS_KEY_SECRET" /* S3_ACCESS_KEY_SECRET */:
44
+ return process.env.S3_ACCESS_KEY_SECRET;
45
+ case "S3_REGION" /* S3_REGION */:
46
+ return process.env.S3_REGION;
47
+ case "S3_BUCKET" /* S3_BUCKET */:
48
+ return process.env.S3_BUCKET;
49
+ case "NODE_ENV" /* NODE_ENV */:
50
+ return process.env.NODE_ENV;
51
+ default:
52
+ return process.env[key];
53
+ }
54
+ };
55
+ function getEnv(key, skipCheck) {
56
+ const value = getEnvValue(key);
57
+ if (!skipCheck && !value) throw new Error(`${key} is not defined`);
58
+ return value;
59
+ }
60
+
61
+ // src/auth/email/token.ts
62
+ function getUserIdFromAccessToken(accessToken) {
63
+ if (accessToken)
64
+ try {
65
+ const decoded = verify(accessToken, getEnv("SIGNING_KEY" /* SIGNING_KEY */));
66
+ if (typeof decoded !== "string" && typeof decoded.id === "number")
67
+ return decoded.id;
68
+ } catch (e) {
69
+ if (!(e instanceof JsonWebTokenError)) console.error(e, "errors");
70
+ return null;
71
+ }
72
+ return null;
73
+ }
74
+
75
+ // src/socials/connect.ts
76
+ function setupSocialAuth({
77
+ providers,
78
+ endpoint,
79
+ onConnect,
80
+ redirectURL,
81
+ errorRedirectURL,
82
+ scopes
83
+ }) {
84
+ const handleError = (message) => NextResponse2.redirect(`${errorRedirectURL}?error=${message}`);
85
+ const GET = async (req, ctx) => {
86
+ const { platform } = await ctx.params;
87
+ const provider = providers.find((p) => p.platform === platform);
88
+ if (!provider) return handleError("Unsupported platform");
89
+ const code = req.nextUrl.searchParams.get("code");
90
+ const error = req.nextUrl.searchParams.get("error");
91
+ const state = req.nextUrl.searchParams.get("state");
92
+ if (error) return handleError(error);
93
+ if (!state) return handleError("Invalid request");
94
+ const redirectURI = `${endpoint}/${provider.platform}`;
95
+ if (!code) {
96
+ return NextResponse2.redirect(
97
+ provider.auth.authorizationURL({
98
+ state,
99
+ redirectURI,
100
+ scopes: scopes?.[provider.platform]
101
+ }),
102
+ 302
103
+ );
104
+ }
105
+ const exchanged = await provider.auth.exchangeCode({ code, redirectURI });
106
+ if (!exchanged) return handleError("Couldn't connect your account");
107
+ const { platformUserId, ...tokens } = exchanged;
108
+ const profile = await provider.fetchProfile(tokens.accessToken);
109
+ if (!profile) return handleError("Couldn't read your profile");
110
+ const errorMessage = await onConnect({
111
+ platform: provider.platform,
112
+ profile: {
113
+ ...profile,
114
+ platformUserId: profile.platformUserId ?? platformUserId
115
+ },
116
+ tokens,
117
+ userId: getUserIdFromAccessToken(state)
118
+ });
119
+ if (errorMessage) return handleError(errorMessage);
120
+ return NextResponse2.redirect(redirectURL);
121
+ };
122
+ return { GET };
123
+ }
124
+ export {
125
+ setupSocialAuth
126
+ };