@payloadcms/figma 0.0.1-alpha.5 → 0.0.1-alpha.51
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/dist/api/control-plane.d.ts +31 -1
- package/dist/api/control-plane.js +137 -67
- package/dist/api/figma-api.d.ts +20 -0
- package/dist/api/figma-api.js +77 -21
- package/dist/auth/callback-server.js +2 -1
- package/dist/auth/crypto-utils.js +5 -5
- package/dist/auth/jwt-validator.d.ts +2 -1
- package/dist/auth/jwt-validator.js +2 -2
- package/dist/auth/oauth-flow.d.ts +1 -1
- package/dist/auth/oauth-flow.js +15 -11
- package/dist/auth/project-token.js +11 -6
- package/dist/auth/refresh.d.ts +2 -1
- package/dist/auth/refresh.js +25 -12
- package/dist/auth/token-store.d.ts +40 -1
- package/dist/auth/token-store.js +65 -5
- package/dist/auth/types.d.ts +17 -4
- package/dist/cli.js +54 -6
- package/dist/commands/build-lambda-zip.d.ts +5 -0
- package/dist/commands/build-lambda-zip.js +19 -0
- package/dist/commands/debug.d.ts +8 -0
- package/dist/commands/debug.js +161 -0
- package/dist/commands/deploy.d.ts +6 -0
- package/dist/commands/deploy.js +94 -126
- package/dist/commands/env.d.ts +13 -0
- package/dist/commands/env.js +88 -0
- package/dist/commands/init.d.ts +3 -5
- package/dist/commands/init.js +118 -94
- package/dist/commands/list-tokens.d.ts +3 -3
- package/dist/commands/list-tokens.js +22 -7
- package/dist/commands/login.d.ts +8 -1
- package/dist/commands/login.js +30 -12
- package/dist/commands/logout.d.ts +5 -4
- package/dist/commands/logout.js +56 -13
- package/dist/config/oauth.d.ts +4 -14
- package/dist/config/oauth.js +18 -40
- package/dist/constants.d.ts +36 -19
- package/dist/constants.js +58 -20
- package/dist/db-content-api/README.md +98 -0
- package/dist/db-content-api/generated/content-api-types.d.ts +3746 -0
- package/dist/db-content-api/generated/content-api-types.js +7 -0
- package/dist/db-content-api/index.d.ts +20 -0
- package/dist/db-content-api/index.js +702 -0
- package/dist/db-content-api/temp-utilities/slug.d.ts +2 -0
- package/dist/db-content-api/temp-utilities/slug.js +3 -0
- package/dist/db-content-api/temp-utilities/sorting.d.ts +3 -0
- package/dist/db-content-api/temp-utilities/sorting.js +32 -0
- package/dist/db-content-api/temp-utilities/types.d.ts +22 -0
- package/dist/db-content-api/temp-utilities/types.js +15 -0
- package/dist/db-content-api/temp-utilities/unwrapDocument.d.ts +34 -0
- package/dist/db-content-api/temp-utilities/unwrapDocument.js +53 -0
- package/dist/db-content-api/utilities/auth.d.ts +30 -0
- package/dist/db-content-api/utilities/auth.js +81 -0
- package/dist/db-content-api/utilities/data/applyDefaults.d.ts +7 -0
- package/dist/db-content-api/utilities/data/applyDefaults.js +59 -0
- package/dist/db-content-api/utilities/data/castFieldValue.d.ts +11 -0
- package/dist/db-content-api/utilities/data/castFieldValue.js +69 -0
- package/dist/db-content-api/utilities/data/index.d.ts +42 -0
- package/dist/db-content-api/utilities/data/index.js +211 -0
- package/dist/db-content-api/utilities/data/removeVirtualFields.d.ts +12 -0
- package/dist/db-content-api/utilities/data/removeVirtualFields.js +54 -0
- package/dist/db-content-api/utilities/data/stripFields.d.ts +48 -0
- package/dist/db-content-api/utilities/data/stripFields.js +195 -0
- package/dist/db-content-api/utilities/data/transformPublishedLocale.d.ts +23 -0
- package/dist/db-content-api/utilities/data/transformPublishedLocale.js +42 -0
- package/dist/db-content-api/utilities/joins.d.ts +55 -0
- package/dist/db-content-api/utilities/joins.js +136 -0
- package/dist/db-content-api/utilities/locale/index.d.ts +10 -0
- package/dist/db-content-api/utilities/locale/index.js +21 -0
- package/dist/db-content-api/utilities/meta/buildLocalizedPaths.d.ts +11 -0
- package/dist/db-content-api/utilities/meta/buildLocalizedPaths.js +66 -0
- package/dist/db-content-api/utilities/meta/buildMeta.d.ts +37 -0
- package/dist/db-content-api/utilities/meta/buildMeta.js +33 -0
- package/dist/db-content-api/utilities/meta/buildPathTypes.d.ts +13 -0
- package/dist/db-content-api/utilities/meta/buildPathTypes.js +181 -0
- package/dist/db-content-api/utilities/where.d.ts +20 -0
- package/dist/db-content-api/utilities/where.js +127 -0
- package/dist/endpoints/health.d.ts +3 -0
- package/dist/endpoints/health.js +11 -0
- package/dist/endpoints/schema.d.ts +3 -0
- package/dist/endpoints/schema.js +29 -0
- package/dist/exports/client.d.ts +3 -0
- package/dist/exports/client.js +3 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -1
- package/dist/oauth/components/FigmaAvatar/index.d.ts +4 -0
- package/dist/oauth/components/FigmaAvatar/index.js +27 -0
- package/dist/oauth/components/FigmaAvatar/index.scss +12 -0
- package/dist/oauth/components/FigmaAvatarCell/index.d.ts +5 -0
- package/dist/oauth/components/FigmaAvatarCell/index.js +25 -0
- package/dist/oauth/components/FigmaAvatarCell/index.scss +5 -0
- package/dist/oauth/components/FigmaAvatarPlaceholder/index.d.ts +9 -0
- package/dist/oauth/components/FigmaAvatarPlaceholder/index.js +37 -0
- package/dist/oauth/components/FigmaAvatarPlaceholder/index.scss +28 -0
- package/dist/oauth/components/LoginButton/index.js +50 -6
- package/dist/oauth/components/LoginButton/index.scss +50 -3
- package/dist/oauth/components/LogoutButton/index.js +5 -4
- package/dist/oauth/defaults.js +67 -10
- package/dist/oauth/endpoints/getLoginEndpoint.js +69 -24
- package/dist/oauth/endpoints/getLogoutEndpoint.js +7 -4
- package/dist/oauth/index.js +40 -5
- package/dist/oauth/strategy/index.d.ts +0 -2
- package/dist/oauth/strategy/index.js +40 -17
- package/dist/oauth/types.d.ts +6 -6
- package/dist/oauth/utilities/isDuplicateKeyError.d.ts +7 -0
- package/dist/oauth/utilities/isDuplicateKeyError.js +14 -0
- package/dist/oauth/utilities/refreshTokens.js +3 -3
- package/dist/plugin/build-config.d.ts +21 -14
- package/dist/plugin/build-config.js +208 -17
- package/dist/storage-content-api/api-types.d.ts +168 -0
- package/dist/storage-content-api/api-types.js +6 -0
- package/dist/storage-content-api/client-uploads/ClientUploadHandler.d.ts +9 -0
- package/dist/storage-content-api/client-uploads/ClientUploadHandler.js +42 -0
- package/dist/storage-content-api/client-uploads/generateSignedURL.d.ts +13 -0
- package/dist/storage-content-api/client-uploads/generateSignedURL.js +39 -0
- package/dist/storage-content-api/client.d.ts +6 -0
- package/dist/storage-content-api/client.js +36 -0
- package/dist/storage-content-api/generateURL.d.ts +7 -0
- package/dist/storage-content-api/generateURL.js +8 -0
- package/dist/storage-content-api/handleDelete.d.ts +8 -0
- package/dist/storage-content-api/handleDelete.js +17 -0
- package/dist/storage-content-api/handleUpload.d.ts +11 -0
- package/dist/storage-content-api/handleUpload.js +144 -0
- package/dist/storage-content-api/index.d.ts +5 -0
- package/dist/storage-content-api/index.js +31 -0
- package/dist/storage-content-api/staticHandler.d.ts +10 -0
- package/dist/storage-content-api/staticHandler.js +56 -0
- package/dist/storage-content-api/types.d.ts +10 -0
- package/dist/storage-content-api/types.js +3 -0
- package/dist/storage-content-api/utilities/getSafeFilename.d.ts +12 -0
- package/dist/storage-content-api/utilities/getSafeFilename.js +61 -0
- package/dist/storage-content-api/utilities/index.d.ts +2 -0
- package/dist/storage-content-api/utilities/index.js +3 -0
- package/dist/templates/.env.example +5 -0
- package/dist/templates/README.md +19 -0
- package/dist/types/config.d.ts +2 -1
- package/dist/types/config.js +0 -2
- package/dist/types.d.ts +3 -1
- package/dist/utils/asset-collection.d.ts +3 -6
- package/dist/utils/asset-collection.js +10 -34
- package/dist/utils/build-lambda-zip.d.ts +14 -0
- package/dist/utils/build-lambda-zip.js +81 -0
- package/dist/utils/cache-bootstrap.d.ts +8 -0
- package/dist/utils/cache-bootstrap.js +18 -0
- package/dist/utils/config.js +1 -1
- package/dist/utils/env-management.d.ts +16 -7
- package/dist/utils/env-management.js +85 -64
- package/dist/utils/format-env-suffix.d.ts +12 -0
- package/dist/utils/format-env-suffix.js +13 -0
- package/dist/utils/formatter.js +3 -5
- package/dist/utils/lambda-config.d.ts +3 -1
- package/dist/utils/lambda-config.js +38 -32
- package/dist/utils/messages.d.ts +1 -1
- package/dist/utils/messages.js +22 -8
- package/dist/utils/package-manager.d.ts +24 -0
- package/dist/utils/package-manager.js +53 -0
- package/dist/utils/payload-config-ast.d.ts +22 -3
- package/dist/utils/payload-config-ast.js +96 -31
- package/dist/utils/payload-config-finder.d.ts +2 -2
- package/dist/utils/payload-config-finder.js +48 -9
- package/dist/utils/payload-config-modifier.d.ts +1 -1
- package/dist/utils/payload-config-modifier.js +61 -10
- package/dist/utils/payload-package-check.d.ts +12 -1
- package/dist/utils/payload-package-check.js +63 -5
- package/dist/utils/project.d.ts +3 -2
- package/dist/utils/project.js +29 -15
- package/dist/utils/resolve-environment.d.ts +14 -0
- package/dist/utils/resolve-environment.js +28 -0
- package/dist/utils/s3-upload.d.ts +0 -1
- package/dist/utils/s3-upload.js +10 -3
- package/dist/utils/token-display.js +11 -5
- package/dist/utils/typescript-validator.js +4 -6
- package/dist/utils/version-check.d.ts +3 -0
- package/dist/utils/version-check.js +38 -0
- package/package.json +29 -10
- package/dist/api/control-plane.d.ts.map +0 -1
- package/dist/api/control-plane.js.map +0 -1
- package/dist/api/figma-api.d.ts.map +0 -1
- package/dist/api/figma-api.js.map +0 -1
- package/dist/auth/browser.d.ts.map +0 -1
- package/dist/auth/browser.js.map +0 -1
- package/dist/auth/callback-server.d.ts.map +0 -1
- package/dist/auth/callback-server.js.map +0 -1
- package/dist/auth/crypto-utils.d.ts.map +0 -1
- package/dist/auth/crypto-utils.js.map +0 -1
- package/dist/auth/jwt-validator.d.ts.map +0 -1
- package/dist/auth/jwt-validator.js.map +0 -1
- package/dist/auth/oauth-flow.d.ts.map +0 -1
- package/dist/auth/oauth-flow.js.map +0 -1
- package/dist/auth/pkce.d.ts.map +0 -1
- package/dist/auth/pkce.js.map +0 -1
- package/dist/auth/project-token.d.ts.map +0 -1
- package/dist/auth/project-token.js.map +0 -1
- package/dist/auth/refresh.d.ts.map +0 -1
- package/dist/auth/refresh.js.map +0 -1
- package/dist/auth/token-store.d.ts.map +0 -1
- package/dist/auth/token-store.js.map +0 -1
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/auth/types.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/commands/deploy.d.ts.map +0 -1
- package/dist/commands/deploy.js.map +0 -1
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/list-tokens.d.ts.map +0 -1
- package/dist/commands/list-tokens.js.map +0 -1
- package/dist/commands/login.d.ts.map +0 -1
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.d.ts.map +0 -1
- package/dist/commands/logout.js.map +0 -1
- package/dist/config/oauth.d.ts.map +0 -1
- package/dist/config/oauth.js.map +0 -1
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/exports/client.d.ts.map +0 -1
- package/dist/exports/client.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/oauth/components/LoginButton/index.d.ts.map +0 -1
- package/dist/oauth/components/LoginButton/index.js.map +0 -1
- package/dist/oauth/components/LogoutButton/index.d.ts.map +0 -1
- package/dist/oauth/components/LogoutButton/index.js.map +0 -1
- package/dist/oauth/defaults.d.ts.map +0 -1
- package/dist/oauth/defaults.js.map +0 -1
- package/dist/oauth/endpoints/getLoginEndpoint.d.ts.map +0 -1
- package/dist/oauth/endpoints/getLoginEndpoint.js.map +0 -1
- package/dist/oauth/endpoints/getLogoutEndpoint.d.ts.map +0 -1
- package/dist/oauth/endpoints/getLogoutEndpoint.js.map +0 -1
- package/dist/oauth/endpoints/getMetaEndpoint.d.ts.map +0 -1
- package/dist/oauth/endpoints/getMetaEndpoint.js.map +0 -1
- package/dist/oauth/endpoints/getRedirectToLoginEndpoint.d.ts.map +0 -1
- package/dist/oauth/endpoints/getRedirectToLoginEndpoint.js.map +0 -1
- package/dist/oauth/exports/client.d.ts.map +0 -1
- package/dist/oauth/exports/client.js.map +0 -1
- package/dist/oauth/hooks/afterLogout.d.ts.map +0 -1
- package/dist/oauth/hooks/afterLogout.js.map +0 -1
- package/dist/oauth/hooks/me.d.ts.map +0 -1
- package/dist/oauth/hooks/me.js.map +0 -1
- package/dist/oauth/hooks/refresh.d.ts.map +0 -1
- package/dist/oauth/hooks/refresh.js.map +0 -1
- package/dist/oauth/index.d.ts.map +0 -1
- package/dist/oauth/index.js.map +0 -1
- package/dist/oauth/strategy/index.d.ts.map +0 -1
- package/dist/oauth/strategy/index.js.map +0 -1
- package/dist/oauth/types.d.ts.map +0 -1
- package/dist/oauth/types.js.map +0 -1
- package/dist/oauth/utilities/clearCookie.d.ts.map +0 -1
- package/dist/oauth/utilities/clearCookie.js.map +0 -1
- package/dist/oauth/utilities/createCookieOptions.d.ts.map +0 -1
- package/dist/oauth/utilities/createCookieOptions.js.map +0 -1
- package/dist/oauth/utilities/createDebugLogger.d.ts.map +0 -1
- package/dist/oauth/utilities/createDebugLogger.js.map +0 -1
- package/dist/oauth/utilities/extractOrigin.d.ts.map +0 -1
- package/dist/oauth/utilities/extractOrigin.js.map +0 -1
- package/dist/oauth/utilities/getAdminCollectionSlug.d.ts.map +0 -1
- package/dist/oauth/utilities/getAdminCollectionSlug.js.map +0 -1
- package/dist/oauth/utilities/getAdminPath.d.ts +0 -8
- package/dist/oauth/utilities/getAdminPath.d.ts.map +0 -1
- package/dist/oauth/utilities/getAdminPath.js +0 -9
- package/dist/oauth/utilities/getAdminPath.js.map +0 -1
- package/dist/oauth/utilities/getAuthorizeURL.d.ts.map +0 -1
- package/dist/oauth/utilities/getAuthorizeURL.js.map +0 -1
- package/dist/oauth/utilities/getCookieExpiration.d.ts.map +0 -1
- package/dist/oauth/utilities/getCookieExpiration.js.map +0 -1
- package/dist/oauth/utilities/getSecondsFromTokenExp.d.ts.map +0 -1
- package/dist/oauth/utilities/getSecondsFromTokenExp.js.map +0 -1
- package/dist/oauth/utilities/getTokenExp.d.ts.map +0 -1
- package/dist/oauth/utilities/getTokenExp.js.map +0 -1
- package/dist/oauth/utilities/getUsernameField.d.ts.map +0 -1
- package/dist/oauth/utilities/getUsernameField.js.map +0 -1
- package/dist/oauth/utilities/hasUserTokenPropsChanged.d.ts.map +0 -1
- package/dist/oauth/utilities/hasUserTokenPropsChanged.js.map +0 -1
- package/dist/oauth/utilities/mergeHeaders.d.ts.map +0 -1
- package/dist/oauth/utilities/mergeHeaders.js.map +0 -1
- package/dist/oauth/utilities/refreshTokens.d.ts.map +0 -1
- package/dist/oauth/utilities/refreshTokens.js.map +0 -1
- package/dist/plugin/adapter.d.ts.map +0 -1
- package/dist/plugin/adapter.js.map +0 -1
- package/dist/plugin/build-config.d.ts.map +0 -1
- package/dist/plugin/build-config.js.map +0 -1
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils/asset-collection.d.ts.map +0 -1
- package/dist/utils/asset-collection.js.map +0 -1
- package/dist/utils/build-detection.d.ts.map +0 -1
- package/dist/utils/build-detection.js.map +0 -1
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/download-template.d.ts.map +0 -1
- package/dist/utils/download-template.js.map +0 -1
- package/dist/utils/env-management.d.ts.map +0 -1
- package/dist/utils/env-management.js.map +0 -1
- package/dist/utils/format.d.ts.map +0 -1
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/formatter.d.ts.map +0 -1
- package/dist/utils/formatter.js.map +0 -1
- package/dist/utils/git.d.ts.map +0 -1
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/is-debug.d.ts.map +0 -1
- package/dist/utils/is-debug.js.map +0 -1
- package/dist/utils/lambda-config.d.ts.map +0 -1
- package/dist/utils/lambda-config.js.map +0 -1
- package/dist/utils/log.d.ts.map +0 -1
- package/dist/utils/log.js.map +0 -1
- package/dist/utils/messages.d.ts.map +0 -1
- package/dist/utils/messages.js.map +0 -1
- package/dist/utils/package-manager.d.ts.map +0 -1
- package/dist/utils/package-manager.js.map +0 -1
- package/dist/utils/payload-config-ast.d.ts.map +0 -1
- package/dist/utils/payload-config-ast.js.map +0 -1
- package/dist/utils/payload-config-finder.d.ts.map +0 -1
- package/dist/utils/payload-config-finder.js.map +0 -1
- package/dist/utils/payload-config-modifier.d.ts.map +0 -1
- package/dist/utils/payload-config-modifier.js.map +0 -1
- package/dist/utils/payload-package-check.d.ts.map +0 -1
- package/dist/utils/payload-package-check.js.map +0 -1
- package/dist/utils/project.d.ts.map +0 -1
- package/dist/utils/project.js.map +0 -1
- package/dist/utils/s3-upload.d.ts.map +0 -1
- package/dist/utils/s3-upload.js.map +0 -1
- package/dist/utils/token-display.d.ts.map +0 -1
- package/dist/utils/token-display.js.map +0 -1
- package/dist/utils/typescript-validator.d.ts.map +0 -1
- package/dist/utils/typescript-validator.js.map +0 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import crypto from 'crypto';
|
|
2
|
+
import { configToJSONSchema } from 'payload';
|
|
3
|
+
export const schema = {
|
|
4
|
+
handler: (req)=>{
|
|
5
|
+
if (!req.user) {
|
|
6
|
+
return Response.json({
|
|
7
|
+
error: 'Unauthorized'
|
|
8
|
+
}, {
|
|
9
|
+
status: 401
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
const format = req.query?.format;
|
|
13
|
+
const jsonSchema = configToJSONSchema(req.payload.config);
|
|
14
|
+
const hash = crypto.createHash('sha256').update(JSON.stringify(jsonSchema)).digest('hex');
|
|
15
|
+
if (format === 'hash') {
|
|
16
|
+
return Response.json({
|
|
17
|
+
hash
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return Response.json({
|
|
21
|
+
hash,
|
|
22
|
+
schema: jsonSchema
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
method: 'get',
|
|
26
|
+
path: '/figma/schema'
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=schema.js.map
|
package/dist/exports/client.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
export { FigmaAvatar } from '../oauth/components/FigmaAvatar/index.js';
|
|
2
|
+
export { FigmaAvatarCell } from '../oauth/components/FigmaAvatarCell/index.js';
|
|
1
3
|
export { DefaultLoginButton } from '../oauth/components/LoginButton/index.js';
|
|
2
4
|
export { LogoutButton } from '../oauth/components/LogoutButton/index.js';
|
|
5
|
+
export { ContentApiClientUploadHandler } from '../storage-content-api/client-uploads/ClientUploadHandler.js';
|
|
3
6
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/exports/client.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
export { FigmaAvatar } from '../oauth/components/FigmaAvatar/index.js';
|
|
2
|
+
export { FigmaAvatarCell } from '../oauth/components/FigmaAvatarCell/index.js';
|
|
1
3
|
export { DefaultLoginButton } from '../oauth/components/LoginButton/index.js';
|
|
2
4
|
export { LogoutButton } from '../oauth/components/LogoutButton/index.js';
|
|
5
|
+
export { ContentApiClientUploadHandler } from '../storage-content-api/client-uploads/ClientUploadHandler.js';
|
|
3
6
|
|
|
4
7
|
//# sourceMappingURL=client.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
export { contentAPIAdapter } from './db-content-api/index.js';
|
|
1
2
|
export { figmaContentSystem } from './plugin/adapter.js';
|
|
2
3
|
export type { FigmaContentSystemOptions } from './plugin/adapter.js';
|
|
3
|
-
export {
|
|
4
|
+
export { buildFigmaConfig } from './plugin/build-config.js';
|
|
4
5
|
export type { FigmaConfig } from './plugin/build-config.js';
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
// Export contentAPIAdapter for testing use cases
|
|
2
|
+
export { contentAPIAdapter } from './db-content-api/index.js';
|
|
1
3
|
// Export database adapter for advanced use cases
|
|
2
4
|
export { figmaContentSystem } from './plugin/adapter.js';
|
|
3
5
|
// Export buildConfig wrapper and its config type
|
|
4
|
-
export {
|
|
6
|
+
export { buildFigmaConfig } from './plugin/build-config.js';
|
|
5
7
|
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useAuth } from '@payloadcms/ui';
|
|
4
|
+
import { useState } from 'react';
|
|
5
|
+
import { FigmaAvatarPlaceholder, isValidImageUrl } from '../FigmaAvatarPlaceholder/index.js';
|
|
6
|
+
import './index.scss';
|
|
7
|
+
const baseClass = 'figma-avatar';
|
|
8
|
+
export const FigmaAvatar = ()=>{
|
|
9
|
+
const { user } = useAuth();
|
|
10
|
+
const [hasError, setHasError] = useState(false);
|
|
11
|
+
const figmaImageUrl = user?.figmaImageUrl;
|
|
12
|
+
if (!figmaImageUrl || hasError || !isValidImageUrl(figmaImageUrl)) {
|
|
13
|
+
return /*#__PURE__*/ _jsx(FigmaAvatarPlaceholder, {
|
|
14
|
+
size: 25
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return /*#__PURE__*/ _jsx("img", {
|
|
18
|
+
alt: "Profile",
|
|
19
|
+
className: `${baseClass}__image`,
|
|
20
|
+
height: 25,
|
|
21
|
+
onError: ()=>setHasError(true),
|
|
22
|
+
src: figmaImageUrl,
|
|
23
|
+
width: 25
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { FigmaAvatarPlaceholder, isValidImageUrl } from '../FigmaAvatarPlaceholder/index.js';
|
|
5
|
+
import './index.scss';
|
|
6
|
+
const baseClass = 'figma-avatar-cell';
|
|
7
|
+
export const FigmaAvatarCell = ({ cellData })=>{
|
|
8
|
+
const [hasError, setHasError] = useState(false);
|
|
9
|
+
const figmaImageUrl = cellData;
|
|
10
|
+
if (!figmaImageUrl || hasError || !isValidImageUrl(figmaImageUrl)) {
|
|
11
|
+
return /*#__PURE__*/ _jsx(FigmaAvatarPlaceholder, {
|
|
12
|
+
size: 20
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
return /*#__PURE__*/ _jsx("img", {
|
|
16
|
+
alt: "Avatar",
|
|
17
|
+
className: `${baseClass}__image`,
|
|
18
|
+
height: 20,
|
|
19
|
+
onError: ()=>setHasError(true),
|
|
20
|
+
src: figmaImageUrl,
|
|
21
|
+
width: 20
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import './index.scss';
|
|
3
|
+
type FigmaAvatarPlaceholderProps = {
|
|
4
|
+
size?: number;
|
|
5
|
+
};
|
|
6
|
+
export declare const FigmaAvatarPlaceholder: React.FC<FigmaAvatarPlaceholderProps>;
|
|
7
|
+
export declare function isValidImageUrl(url: string): boolean;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import './index.scss';
|
|
3
|
+
const baseClass = 'figma-avatar-placeholder';
|
|
4
|
+
export const FigmaAvatarPlaceholder = ({ size = 25 })=>/*#__PURE__*/ _jsxs("svg", {
|
|
5
|
+
className: baseClass,
|
|
6
|
+
height: size,
|
|
7
|
+
viewBox: "0 0 25 25",
|
|
8
|
+
width: size,
|
|
9
|
+
children: [
|
|
10
|
+
/*#__PURE__*/ _jsx("circle", {
|
|
11
|
+
className: `${baseClass}__bg`,
|
|
12
|
+
cx: "12.5",
|
|
13
|
+
cy: "12.5",
|
|
14
|
+
r: "11.5"
|
|
15
|
+
}),
|
|
16
|
+
/*#__PURE__*/ _jsx("circle", {
|
|
17
|
+
className: `${baseClass}__head`,
|
|
18
|
+
cx: "12.5",
|
|
19
|
+
cy: "10",
|
|
20
|
+
r: "4"
|
|
21
|
+
}),
|
|
22
|
+
/*#__PURE__*/ _jsx("path", {
|
|
23
|
+
className: `${baseClass}__body`,
|
|
24
|
+
d: "M12.5 15c-4 0-7 2-7 4.5v1h14v-1c0-2.5-3-4.5-7-4.5z"
|
|
25
|
+
})
|
|
26
|
+
]
|
|
27
|
+
});
|
|
28
|
+
export function isValidImageUrl(url) {
|
|
29
|
+
try {
|
|
30
|
+
const parsed = new URL(url);
|
|
31
|
+
return parsed.protocol === 'https:' || parsed.protocol === 'http:';
|
|
32
|
+
} catch {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
@layer payload-default {
|
|
2
|
+
.figma-avatar-placeholder {
|
|
3
|
+
&__bg {
|
|
4
|
+
fill: var(--theme-elevation-50);
|
|
5
|
+
stroke: var(--theme-elevation-200);
|
|
6
|
+
stroke-width: 1px;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
&__head,
|
|
10
|
+
&__body {
|
|
11
|
+
fill: var(--theme-elevation-200);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
&:hover {
|
|
15
|
+
.figma-avatar-placeholder {
|
|
16
|
+
&__bg {
|
|
17
|
+
fill: var(--theme-elevation-200);
|
|
18
|
+
stroke: var(--theme-elevation-600);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
&__head,
|
|
22
|
+
&__body {
|
|
23
|
+
fill: var(--theme-elevation-600);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -1,10 +1,49 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useConfig } from '@payloadcms/ui';
|
|
4
4
|
import { useSearchParams } from 'next/navigation.js';
|
|
5
5
|
import React, { useEffect, useState } from 'react';
|
|
6
6
|
import './index.scss';
|
|
7
7
|
const baseClass = 'oauth-login';
|
|
8
|
+
// Figma logo SVG colored version
|
|
9
|
+
// const FigmaIcon: React.FC = () => (
|
|
10
|
+
// <svg fill="none" height="27" viewBox="0 0 400 600" width="18">
|
|
11
|
+
// <path
|
|
12
|
+
// d="M0 500C0 444.772 44.772 400 100 400H200V500C200 555.228 155.228 600 100 600C44.772 600 0 555.228 0 500Z"
|
|
13
|
+
// fill="#24CB71"
|
|
14
|
+
// />
|
|
15
|
+
// <path
|
|
16
|
+
// d="M200 0V200H300C355.228 200 400 155.228 400 100C400 44.772 355.228 0 300 0H200Z"
|
|
17
|
+
// fill="#FF7237"
|
|
18
|
+
// />
|
|
19
|
+
// <path
|
|
20
|
+
// d="M299.167 400C354.395 400 399.167 355.228 399.167 300C399.167 244.772 354.395 200 299.167 200C243.939 200 199.167 244.772 199.167 300C199.167 355.228 243.939 400 299.167 400Z"
|
|
21
|
+
// fill="#00B6FF"
|
|
22
|
+
// />
|
|
23
|
+
// <path
|
|
24
|
+
// d="M0 100C0 155.228 44.772 200 100 200H200V0H100C44.772 0 0 44.772 0 100Z"
|
|
25
|
+
// fill="#FF3737"
|
|
26
|
+
// />
|
|
27
|
+
// <path
|
|
28
|
+
// d="M0 300C0 355.228 44.772 400 100 400H200V200H100C44.772 200 0 244.772 0 300Z"
|
|
29
|
+
// fill="#874FFF"
|
|
30
|
+
// />
|
|
31
|
+
// </svg>
|
|
32
|
+
// )
|
|
33
|
+
// Figma logo SVG monochrome version
|
|
34
|
+
const FigmaIcon = ()=>/*#__PURE__*/ _jsx("svg", {
|
|
35
|
+
fill: "none",
|
|
36
|
+
height: "20px",
|
|
37
|
+
viewBox: "0 0 15 15",
|
|
38
|
+
width: "20px",
|
|
39
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
40
|
+
children: /*#__PURE__*/ _jsx("path", {
|
|
41
|
+
clipRule: "evenodd",
|
|
42
|
+
d: "M7.00005 2.04999H5.52505C4.71043 2.04999 4.05005 2.71037 4.05005 3.52499C4.05005 4.33961 4.71043 4.99999 5.52505 4.99999H7.00005V2.04999ZM7.00005 1.04999H8.00005H9.47505C10.842 1.04999 11.95 2.15808 11.95 3.52499C11.95 4.33163 11.5642 5.04815 10.9669 5.49999C11.5642 5.95184 11.95 6.66836 11.95 7.475C11.95 8.8419 10.842 9.95 9.47505 9.95C8.92236 9.95 8.41198 9.76884 8.00005 9.46266V9.95L8.00005 11.425C8.00005 12.7919 6.89195 13.9 5.52505 13.9C4.15814 13.9 3.05005 12.7919 3.05005 11.425C3.05005 10.6183 3.43593 9.90184 4.03317 9.44999C3.43593 8.99814 3.05005 8.28163 3.05005 7.475C3.05005 6.66836 3.43594 5.95184 4.03319 5.5C3.43594 5.04815 3.05005 4.33163 3.05005 3.52499C3.05005 2.15808 4.15814 1.04999 5.52505 1.04999H7.00005ZM8.00005 2.04999V4.99999H9.47505C10.2897 4.99999 10.95 4.33961 10.95 3.52499C10.95 2.71037 10.2897 2.04999 9.47505 2.04999H8.00005ZM5.52505 8.94998H7.00005L7.00005 7.4788L7.00005 7.475L7.00005 7.4712V6H5.52505C4.71043 6 4.05005 6.66038 4.05005 7.475C4.05005 8.28767 4.70727 8.94684 5.5192 8.94999L5.52505 8.94998ZM4.05005 11.425C4.05005 10.6123 4.70727 9.95315 5.5192 9.94999L5.52505 9.95H7.00005L7.00005 11.425C7.00005 12.2396 6.33967 12.9 5.52505 12.9C4.71043 12.9 4.05005 12.2396 4.05005 11.425ZM8.00005 7.47206C8.00164 6.65879 8.66141 6 9.47505 6C10.2897 6 10.95 6.66038 10.95 7.475C10.95 8.28962 10.2897 8.95 9.47505 8.95C8.66141 8.95 8.00164 8.29121 8.00005 7.47794V7.47206Z",
|
|
43
|
+
fill: "#FFFFFF",
|
|
44
|
+
fillRule: "evenodd"
|
|
45
|
+
})
|
|
46
|
+
});
|
|
8
47
|
export const DefaultLoginButton = ({ disabled, endpointSlug })=>{
|
|
9
48
|
const { config: { admin: { user: userSlug }, routes: { api }, serverURL } } = useConfig();
|
|
10
49
|
const [authorizeURL, setAuthorizeURL] = useState('');
|
|
@@ -40,11 +79,16 @@ export const DefaultLoginButton = ({ disabled, endpointSlug })=>{
|
|
|
40
79
|
}
|
|
41
80
|
return /*#__PURE__*/ _jsx("div", {
|
|
42
81
|
className: baseClass,
|
|
43
|
-
children: /*#__PURE__*/
|
|
82
|
+
children: /*#__PURE__*/ _jsxs("a", {
|
|
44
83
|
className: `${baseClass}__btn`,
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
84
|
+
href: authorizeURL,
|
|
85
|
+
children: [
|
|
86
|
+
/*#__PURE__*/ _jsx(FigmaIcon, {}),
|
|
87
|
+
/*#__PURE__*/ _jsx("span", {
|
|
88
|
+
className: `${baseClass}__text`,
|
|
89
|
+
children: "Log in with Figma"
|
|
90
|
+
})
|
|
91
|
+
]
|
|
48
92
|
})
|
|
49
93
|
});
|
|
50
94
|
};
|
|
@@ -1,10 +1,57 @@
|
|
|
1
1
|
.oauth-login {
|
|
2
2
|
display: flex;
|
|
3
3
|
justify-content: center;
|
|
4
|
+
padding: 1rem 0;
|
|
4
5
|
|
|
5
|
-
&__btn
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
&__btn {
|
|
7
|
+
display: inline-flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
justify-content: center;
|
|
10
|
+
gap: 0.75rem;
|
|
11
|
+
padding: 0.75rem 1.5rem;
|
|
12
|
+
min-height: 3rem;
|
|
13
|
+
background-color: #4d49fc;
|
|
14
|
+
color: #ffffff;
|
|
15
|
+
border: none;
|
|
16
|
+
border-radius: 0.5rem;
|
|
17
|
+
font-size: 1rem;
|
|
18
|
+
font-weight: 450;
|
|
19
|
+
letter-spacing: 0.05px;
|
|
20
|
+
text-decoration: none;
|
|
21
|
+
cursor: pointer;
|
|
22
|
+
transition: background-color 0.2s ease, transform 0.1s ease;
|
|
23
|
+
box-shadow: none;
|
|
24
|
+
|
|
25
|
+
&:hover {
|
|
26
|
+
background-color: #4440e8;
|
|
27
|
+
transform: translateY(-1px);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&:active {
|
|
31
|
+
background-color: #3c38d4;
|
|
32
|
+
transform: translateY(0);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
&:focus {
|
|
36
|
+
outline: none;
|
|
37
|
+
box-shadow: 0 0 0 2px rgba(77, 73, 252, 0.4);
|
|
8
38
|
}
|
|
9
39
|
}
|
|
40
|
+
|
|
41
|
+
&__icon {
|
|
42
|
+
flex-shrink: 0;
|
|
43
|
+
width: 20px;
|
|
44
|
+
height: 20px;
|
|
45
|
+
display: flex;
|
|
46
|
+
align-items: center;
|
|
47
|
+
justify-content: center;
|
|
48
|
+
color: #ffffff;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
&__text {
|
|
52
|
+
white-space: nowrap;
|
|
53
|
+
line-height: 1rem;
|
|
54
|
+
font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
|
|
55
|
+
Oxygen, Ubuntu, Cantarell, sans-serif;
|
|
56
|
+
}
|
|
10
57
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { Logout, useConfig } from '@payloadcms/ui';
|
|
4
|
+
import { formatAdminURL } from 'payload/shared';
|
|
4
5
|
import React from 'react';
|
|
5
|
-
import { getAdminPath } from '../../utilities/getAdminPath.js';
|
|
6
6
|
import './index.scss';
|
|
7
7
|
const baseClass = 'oauth-logout';
|
|
8
8
|
export const LogoutButton = ({ disabled, endpointSlug })=>{
|
|
@@ -16,9 +16,10 @@ export const LogoutButton = ({ disabled, endpointSlug })=>{
|
|
|
16
16
|
if (port) {
|
|
17
17
|
redirectToSet += `:${port}`;
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
setRedirect(formatAdminURL({
|
|
20
|
+
adminRoute: config.routes.admin,
|
|
21
|
+
serverURL: redirectToSet
|
|
22
|
+
}));
|
|
22
23
|
}, [
|
|
23
24
|
config
|
|
24
25
|
]);
|
package/dist/oauth/defaults.js
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
|
+
import { parseCookies } from 'payload';
|
|
1
2
|
import { v4 as uuid } from 'uuid';
|
|
2
3
|
import { hasUserTokenPropsChanged } from './utilities/hasUserTokenPropsChanged.js';
|
|
4
|
+
import { isDuplicateKeyError } from './utilities/isDuplicateKeyError.js';
|
|
5
|
+
function getFigmaUserInfo(headers) {
|
|
6
|
+
try {
|
|
7
|
+
const cookies = parseCookies(headers);
|
|
8
|
+
const encoded = cookies.get('figma-user-info');
|
|
9
|
+
if (!encoded) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
return JSON.parse(Buffer.from(encoded, 'base64').toString('utf-8'));
|
|
13
|
+
} catch {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
3
17
|
export const defaultScope = [
|
|
4
18
|
'openid',
|
|
5
19
|
'profile',
|
|
@@ -14,7 +28,7 @@ export const defaultUsernameField = {
|
|
|
14
28
|
},
|
|
15
29
|
unique: true
|
|
16
30
|
};
|
|
17
|
-
export const defaultVerify = ({ collection, strategyName, usernameField })=>async ({ payload, token })=>{
|
|
31
|
+
export const defaultVerify = ({ collection, strategyName, usernameField })=>async ({ headers, payload, token })=>{
|
|
18
32
|
let tokenUsername = 'preferred_username';
|
|
19
33
|
if (usernameField.name !== 'preferredUsername') {
|
|
20
34
|
tokenUsername = usernameField.name;
|
|
@@ -24,6 +38,13 @@ export const defaultVerify = ({ collection, strategyName, usernameField })=>asyn
|
|
|
24
38
|
user: null
|
|
25
39
|
};
|
|
26
40
|
}
|
|
41
|
+
const figmaUserInfo = getFigmaUserInfo(headers);
|
|
42
|
+
let responseHeaders;
|
|
43
|
+
// Clear the cookie after reading
|
|
44
|
+
if (figmaUserInfo) {
|
|
45
|
+
responseHeaders = new Headers();
|
|
46
|
+
responseHeaders.append('Set-Cookie', 'figma-user-info=; Max-Age=0; Path=/;');
|
|
47
|
+
}
|
|
27
48
|
let user = null;
|
|
28
49
|
const depth = typeof collection.auth === 'object' ? collection.auth.depth : undefined;
|
|
29
50
|
try {
|
|
@@ -40,13 +61,19 @@ export const defaultVerify = ({ collection, strategyName, usernameField })=>asyn
|
|
|
40
61
|
});
|
|
41
62
|
if (results.docs.length > 0) {
|
|
42
63
|
user = results.docs[0];
|
|
43
|
-
//
|
|
44
|
-
|
|
64
|
+
// Check if update needed (token changed OR figma info missing/changed)
|
|
65
|
+
const userWithFigma = user;
|
|
66
|
+
const needsFigmaUpdate = figmaUserInfo && (userWithFigma.figmaHandle !== figmaUserInfo.handle || userWithFigma.figmaImageUrl !== figmaUserInfo.img_url);
|
|
67
|
+
if (hasUserTokenPropsChanged(user, token) || needsFigmaUpdate) {
|
|
45
68
|
user = await payload.update({
|
|
46
69
|
id: user.id,
|
|
47
70
|
collection: collection.slug,
|
|
48
71
|
data: {
|
|
49
|
-
...token
|
|
72
|
+
...token,
|
|
73
|
+
...figmaUserInfo && {
|
|
74
|
+
figmaHandle: figmaUserInfo.handle,
|
|
75
|
+
figmaImageUrl: figmaUserInfo.img_url
|
|
76
|
+
}
|
|
50
77
|
},
|
|
51
78
|
depth
|
|
52
79
|
});
|
|
@@ -55,16 +82,43 @@ export const defaultVerify = ({ collection, strategyName, usernameField })=>asyn
|
|
|
55
82
|
const newUser = {
|
|
56
83
|
email: token.preferredUsername || token.email,
|
|
57
84
|
[usernameField.name]: token[tokenUsername],
|
|
58
|
-
...token
|
|
85
|
+
...token,
|
|
86
|
+
...figmaUserInfo && {
|
|
87
|
+
figmaHandle: figmaUserInfo.handle,
|
|
88
|
+
figmaImageUrl: figmaUserInfo.img_url
|
|
89
|
+
}
|
|
59
90
|
};
|
|
60
91
|
if (typeof collection.auth === 'object' && !collection.auth.disableLocalStrategy) {
|
|
61
92
|
newUser.password = uuid();
|
|
62
93
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
94
|
+
try {
|
|
95
|
+
user = await payload.create({
|
|
96
|
+
collection: collection.slug,
|
|
97
|
+
data: newUser,
|
|
98
|
+
depth,
|
|
99
|
+
overrideAccess: true
|
|
100
|
+
});
|
|
101
|
+
} catch (createErr) {
|
|
102
|
+
// Race condition: if unique constraint violation, user was created by concurrent request
|
|
103
|
+
if (isDuplicateKeyError(createErr)) {
|
|
104
|
+
const retryResults = await payload.find({
|
|
105
|
+
collection: collection.slug,
|
|
106
|
+
depth,
|
|
107
|
+
limit: 1,
|
|
108
|
+
pagination: false,
|
|
109
|
+
where: {
|
|
110
|
+
[usernameField.name]: {
|
|
111
|
+
equals: token[tokenUsername]
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
if (retryResults.docs.length > 0) {
|
|
116
|
+
user = retryResults.docs[0];
|
|
117
|
+
}
|
|
118
|
+
} else {
|
|
119
|
+
throw createErr;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
68
122
|
}
|
|
69
123
|
} catch (err) {
|
|
70
124
|
payload.logger.error({
|
|
@@ -72,6 +126,7 @@ export const defaultVerify = ({ collection, strategyName, usernameField })=>asyn
|
|
|
72
126
|
msg: 'Error verifying user from defaultVerify.'
|
|
73
127
|
});
|
|
74
128
|
return {
|
|
129
|
+
responseHeaders,
|
|
75
130
|
user: null
|
|
76
131
|
};
|
|
77
132
|
}
|
|
@@ -80,10 +135,12 @@ export const defaultVerify = ({ collection, strategyName, usernameField })=>asyn
|
|
|
80
135
|
user._strategy = strategyName;
|
|
81
136
|
user.exp = token.exp;
|
|
82
137
|
return {
|
|
138
|
+
responseHeaders,
|
|
83
139
|
user
|
|
84
140
|
};
|
|
85
141
|
}
|
|
86
142
|
return {
|
|
143
|
+
responseHeaders,
|
|
87
144
|
user: null
|
|
88
145
|
};
|
|
89
146
|
};
|