{
  "version": 3,
  "sources": ["../../../src/seznam/index.js", "../../../src/consts.js", "../../../src/class/OAuth2Client.js", "../../../src/seznam/SeznamAccount.js", "../../../src/class/OAuth2Account.js", "../../../src/tools.js", "../../../src/seznam/SeznamGrant.js", "../../../src/errors.js", "../../../src/class/OAuth2Grant.js"],
  "sourcesContent": ["import { OAuth2Client } from \"../class/OAuth2Client\";\r\nimport { SeznamAccount } from \"./SeznamAccount\";\r\nimport { SeznamGrant } from \"./SeznamGrant\";\r\n\r\n\r\nexport const createSeznamOAuth2 = (options={})=>new OAuth2Client(SeznamGrant, options);\r\nexport default createSeznamOAuth2;\r\n\r\nexport {\r\n    SeznamAccount,\r\n    SeznamGrant\r\n}", "\r\n\r\nexport const vault = new WeakMap();", "import { vault } from \"../consts\";\r\nimport { virtuals } from \"@randajan/props\";\r\n\r\n\r\nexport class OAuth2Client {\r\n\r\n    constructor(Grant, options={}) {\r\n        const grant = new Grant(this, options);\r\n\r\n        virtuals(this, {\r\n            name:_=>grant.name,\r\n            uidKey:_=>grant.uidKey\r\n        })\r\n\r\n        vault.set(this, grant);\r\n    }\r\n\r\n    account(credentials, ...args) {\r\n        const grant = vault.get(this);\r\n        const c = grant.getCredentials ? grant.getCredentials(credentials, ...args) : credentials;\r\n        return (c instanceof Promise) ? c.then(cr => grant.createAccount(cr)) : grant.createAccount(c);\r\n    }\r\n\r\n    getInitAuthURL(options = {}) {\r\n        const grant = vault.get(this);\r\n        try { return grant.getInitAuthURL(options); }\r\n        catch (err) { return grant.fallbackRedirect(1, err); }\r\n    }\r\n\r\n    getExitAuthURL({ code, state }, context) {\r\n        const grant = vault.get(this);\r\n        try { return grant.getExitAuthURL({ code, state }, context); }\r\n        catch (err) { return grant.fallbackRedirect(2, err); }\r\n    }\r\n\r\n}", "import { google } from \"googleapis\";\r\nimport { solids } from \"@randajan/props\";\r\n\r\nimport { OAuth2Account } from \"../class/OAuth2Account\";\r\nimport { vault } from \"../consts\";\r\n\r\n\r\n\r\nexport class SeznamAccount extends OAuth2Account {\r\n\r\n    async profile() {\r\n        const grant = vault.get(this.client);\r\n        const { access_token } = this.credentials;\r\n\r\n        return grant.fetchApiGet(\"/user\", {\r\n            Authorization: `bearer ${access_token}`, \"Accept\": \"application/json\"\r\n        });\r\n    }\r\n\r\n    async tokens() {\r\n        return this.credentials;\r\n    }\r\n\r\n    async scopes() {\r\n        if (this.credentials?.scopes) {\r\n            return super.scopes(this.credentials.scopes);\r\n        }\r\n        return [];\r\n    }\r\n\r\n}", "import { solids } from \"@randajan/props\";\r\nimport { vault } from \"../consts\";\r\nimport { formatCredentials } from \"../tools\";\r\n\r\n\r\n\r\n\r\nexport class OAuth2Account {\r\n\r\n    constructor(client, credentials={}) {\r\n\r\n        credentials = formatCredentials(credentials);\r\n\r\n        solids(this, {\r\n            client,\r\n            credentials\r\n        }, false);\r\n    }\r\n\r\n    async uid() {\r\n        const profile = await this.profile();\r\n        const { name, uidKey } = this.client;\r\n        const id = profile?.[uidKey];\r\n        if (id) { return `${name}:${id}`; }\r\n    }\r\n\r\n    async profile() {\r\n        return {};\r\n    }\r\n\r\n    async tokens() {\r\n        return {};\r\n    }\r\n\r\n    async scopes(scopes) {\r\n        const grant = vault.get(this.client);\r\n        return grant.effaceScopes(scopes);\r\n    }\r\n\r\n}", "\r\nexport const sliceMap = (arr, size, callback) => {\r\n    size = Math.max(1, size) || 1;\r\n    const r = [];\r\n    if (!Array.isArray(arr)) { return r; }\r\n    for (let k = 0; k < arr.length; k += size) {\r\n        r.push(callback(arr.slice(k, k + size), r.length, size, arr.length));\r\n    }\r\n    return r;\r\n}\r\n\r\nexport const extendURL = (url, query = {}) => {\r\n    const u = new URL(url);\r\n    for (let i in query) {\r\n        if (query[i] != null) { u.searchParams.append(i, query[i]); }\r\n    }\r\n    return u.toString();\r\n}\r\n\r\n\r\nexport const isValidURL = str => {\r\n    try { new URL(str); } catch (e) { return false; }\r\n    return true;\r\n}\r\n\r\nexport const validateURL = (required, url, errProp) => {\r\n    if (!url && !required) { return; }\r\n    if (isValidURL(url)) { return url; }\r\n    throw new Error(`${errProp} is not a valid URL`);\r\n}\r\n\r\nexport const validateFn = (required, fn, errProp) => {\r\n    if (!fn && !required) { return; }\r\n    if (typeof fn === \"function\") { return fn; }\r\n    throw new Error(`${errProp} is not a valid function`);\r\n}\r\n\r\nexport const validateStr = (required, str, errProp) => {\r\n    if (!str && !required) { return; }\r\n    if (typeof str === \"string\") { return str; }\r\n    throw new Error(`${errProp} is not a valid string`);\r\n}\r\n\r\n\r\nexport const formatCredentials = (credentials={}) => {\r\n    const c = {...credentials};\r\n\r\n    if (c.expires_in && !c.expiry_date) {\r\n        c.expiry_date = Date.now() + c.expires_in * 1000;\r\n    }\r\n\r\n    if (c.refresh_token && !c.expiry_date) {\r\n        throw new Error(`OAuth2 credentials 'refresh_token' must be provided with 'expiry_date'`);\r\n    }\r\n\r\n    if (!c.access_token && !c.refresh_token) {\r\n        throw new Error(`OAuth2 credentials 'access_token' of 'refresh_token' must be provided`);\r\n    }\r\n\r\n    return c;\r\n}\r\n\r\n\r\nexport const strToBase64 = str => Buffer.from(str, 'utf8').toString('base64');\r\nexport const strFromBase64 = strEncoded => Buffer.from(strEncoded, 'base64').toString('utf8');\r\n\r\nexport const objToBase64 = obj => strToBase64(JSON.stringify(obj));\r\nexport const objFromBase64 = objEncoded => JSON.parse(strFromBase64(objEncoded));", "// SeznamGrant.js\r\nimport fetch from \"node-fetch\";\r\nimport { OAuth2Grant } from \"../class/OAuth2Grant\";\r\nimport { extendURL } from \"../tools\";\r\nimport { RedirectError } from \"../errors\";\r\nimport { SeznamAccount } from \"./SeznamAccount\";\r\n\r\nexport class SeznamGrant extends OAuth2Grant {\r\n\r\n    static name = \"seznam\";\r\n    static uidKey = \"email\";\r\n    static scopePrefix = \"\";                 // Seznam prefix nepou\u017E\u00EDv\u00E1\r\n    static scopesCommon = [\"identity\"];      // povinn\u00FD scope\r\n    static scopesNoPrefix = [];              // nic zvl\u00E1\u0161tn\u00EDho\r\n    static Account = SeznamAccount;\r\n\r\n    createApiUrl(path, query = {}) {\r\n        return extendURL(\r\n            `https://login.szn.cz/api/v1${path}`,\r\n            query\r\n        );\r\n    }\r\n\r\n    async fetchApiGet(path, headers, errorCode = 2) {\r\n        const url = this.createApiUrl(path);\r\n        const res = await fetch(url, { headers });\r\n        if (!res.ok) { throw new RedirectError(errorCode, await res.text()); }\r\n        return res.json();\r\n    }\r\n\r\n    async fetchApiPost(path, body, errorCode = 2) {\r\n        const url = this.createApiUrl(path);\r\n        const res = await fetch(url, {\r\n            method: \"POST\",\r\n            headers: { \"Content-Type\": \"application/json\", \"Accept\": \"application/json\" },\r\n            body: JSON.stringify(body)\r\n        });\r\n        if (!res.ok) { throw new RedirectError(errorCode, await res.text()); }\r\n        return res.json();\r\n    }\r\n\r\n    generateAuthUrl(scope, state, extra) {\r\n        const { clientId, redirectUri, isOffline } = this;\r\n\r\n        const access_type = isOffline ? \"offline\" : \"\";\r\n\r\n        return this.createApiUrl(\"/oauth/auth\", {\r\n            ...extra,\r\n            access_type,\r\n            response_type: \"code\",\r\n            client_id: clientId,\r\n            redirect_uri: redirectUri,\r\n            scope: scope.join(\",\"),          // Seznam odd\u011Bluje \u010D\u00E1rkou\r\n            state,\r\n        });\r\n    }\r\n\r\n    async swapCodeForTokens(code) {\r\n        const { clientId, clientSecret, redirectUri } = this;\r\n\r\n        return this.fetchApiPost(\"/oauth/token\", {\r\n            grant_type: \"authorization_code\",\r\n            code,\r\n            client_id: clientId,\r\n            client_secret: clientSecret,\r\n            redirect_uri: redirectUri\r\n        }, 2);\r\n\r\n    }\r\n}\r\n", "\r\n\r\n\r\n\r\nexport class RedirectError extends Error {\r\n\r\n    static is(any) {\r\n        return any instanceof RedirectError;\r\n    }\r\n\r\n    constructor(code, message, options) {\r\n        super(message, options);\r\n        this.code = code;\r\n    }\r\n}", "import { RedirectError } from \"../errors\";\r\nimport { extendURL, isValidURL, objFromBase64, objToBase64, validateFn, validateURL } from \"../tools\";\r\nimport { OAuth2Account } from \"./OAuth2Account\";\r\n\r\nexport class OAuth2Grant {\r\n\r\n    static name=\"\";\r\n    static uidKey=\"\";\r\n    static scopePrefix=\"\";\r\n    static scopesCommon=[];\r\n    static scopesNoPrefix=[];\r\n    static Account = OAuth2Account;\r\n\r\n    constructor(client, opt={}) {\r\n        const { name, uidKey, scopesCommon } = this.constructor;\r\n\r\n        this.client = client;\r\n        this.name = opt.name || name;\r\n        this.uidKey = opt.uidKey || uidKey;\r\n\r\n        this.isOffline = !!opt.isOffline;\r\n        this.clientId = opt.clientId;\r\n        this.clientSecret = opt.clientSecret;\r\n\r\n        this.redirectUri = validateURL(true, opt.redirectUri, \"options.redirectUri\");\r\n        this.fallbackUri = validateURL(true, opt.fallbackUri, \"options.fallbackUri\");\r\n        this.landingUri = validateURL(false, opt.landingUri, \"options.landingUri\");\r\n\r\n        this.onAuth = validateFn(true, opt.onAuth, \"options.onAuth\");\r\n        this.onRenew = validateFn(true, opt.onRenew, \"options.onRenew\");\r\n        this.getCredentials = validateFn(false, opt.getCredentials, \"options.getCredentials\");\r\n        this.optExtra = (opt.extra || {});\r\n            \r\n        this.scopesRequired = this.effaceScopes([...scopesCommon, ...(opt.scopes || [])]);\r\n    }\r\n\r\n    createAccount(credentials) {\r\n        const { client, constructor:{ Account } } = this;\r\n        return new Account(client, credentials);\r\n    }\r\n\r\n    effaceScope(scope, withPrefix=false) {\r\n        const { scopePrefix, scopesNoPrefix } = this.constructor;\r\n\r\n        if (scope == null) { return; }\r\n        scope = String(scope).replace(/[\\s\\n\\r]+/g, \" \").trim().toLowerCase();\r\n        if (!scopePrefix || scopesNoPrefix.includes(scope)) { return scope; }\r\n        const sw = scope.startsWith(scopePrefix);\r\n        return (sw === withPrefix) ? scope : (withPrefix ? (scopePrefix+scope) : scope.substring(scopePrefix.length));\r\n    }\r\n\r\n    effaceScopes(scopes, withPrefix=false, withRequired=false) {\r\n        const { scopesRequired } = this;\r\n\r\n        if (typeof scopes === \"string\") { scopes = scopes.split(\" \"); }\r\n        if (!Array.isArray(scopes)) { scopes = []; }\r\n        if (withRequired) { scopes = scopes.concat(scopesRequired); }\r\n\r\n        const r = new Set();\r\n        for (let scope of scopes) {\r\n            if (scope) { scope = this.effaceScope(scope, withPrefix); }\r\n            if (scope) { r.add(scope); }\r\n        }\r\n        return [...r];\r\n    }\r\n\r\n    generateAuthUrl(scope, state, extra={}) {\r\n\r\n    }\r\n\r\n    getInitAuthURL(options={}) {\r\n        const { landingUri, state:stateObj, scopes, extra } = options;\r\n\r\n        if ((landingUri || !this.landingUri) && !isValidURL(landingUri)) {\r\n            throw new RedirectError(1, \"Bad request. Missing valid 'landingUri'\");\r\n        }\r\n\r\n        const scope = this.effaceScopes(scopes, true, true);\r\n        const state = objToBase64([ landingUri || this.landingUri, stateObj ]);\r\n\r\n        return this.generateAuthUrl(scope, state, extra || {});\r\n    }\r\n\r\n    async swapCodeForTokens(code) {\r\n\r\n    }\r\n\r\n    async getExitAuthURL({code, state}, context) {\r\n        if (!code) { throw new RedirectError(201, \"Bad request. Missing 'code'\"); }\r\n\r\n        const [ landingUri, stateObj ] = objFromBase64(state);\r\n        if (!isValidURL(landingUri)) { throw new RedirectError(202, \"Bad request. Missing valid 'state'\"); }\r\n\r\n        const tokens = await this.swapCodeForTokens(code);\r\n        const account = this.createAccount(tokens);\r\n        \r\n        const customUri = await this.onAuth(account, { context, landingUri, state:stateObj });\r\n        return customUri || landingUri;\r\n    }\r\n    \r\n    fallbackRedirect(majorCode, err) {\r\n        const c = RedirectError.is(err) ? err.code : 0;\r\n        return extendURL(this.fallbackUri, {errorCode:majorCode*100+c, errorMessage:err.message});\r\n    }\r\n\r\n}"],
  "mappings": "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",
  "names": ["import_props", "import_props", "fetch"]
}
