UNPKG

@skyway-sdk/token

Version:

The official Next Generation JavaScript SDK for SkyWay

78 lines 2.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.matchScopeIdentifier = exports.nowInSec = void 0; const common_1 = require("@skyway-sdk/common"); const _1 = require("."); const log = new common_1.Logger('packages/token/src/util.ts'); /**@private */ const nowInSec = () => Math.floor(Date.now() / 1000); exports.nowInSec = nowInSec; /**@internal */ function matchId( // 指定されてない場合は `*` として扱う(何でもマッチする) queryId = '*', id) { if (queryId === '*') { return true; } // queryId が指定されているにも関わらず、id がない場合は NG if (id === undefined) { return false; } return queryId === id; } /**@internal */ function matchName(tokenVersion, // 指定されてない場合は `*` として扱う(何でもマッチする) queryName = '*', name) { if (queryName === '*') { return true; } switch (tokenVersion) { case 1: // queryName が指定されているにも関わらず、name がない場合は NG if (name === undefined) { return false; } // 完全一致の場合マッチしていると判定する return queryName === name; case 2: case 3: // v2, 3 の場合、`*` を部分一致として解釈し、一致している場合マッチしていると判定する return matchVersion2ScopeName(queryName, name); default: { // should never reach here throw new common_1.SkyWayError({ path: log.prefix, info: _1.tokenErrors.invalidParameter, error: new Error(`invalid token version: version ${tokenVersion} is not supported.`), }); } } } /**@internal */ function matchVersion2ScopeName(query, name) { const m = query.match(/\*/g); if (m && m.length > 8) { return false; } // nameがundefinedの場合は、tokenName文字列が*でのみ構成されている場合のみtrue if (name === undefined) { if (query.match(/^\**$/)) { return true; } return false; } const replacedName = query .replace(/\./g, '\\.') // 「.」をエスケープ .replace(/\*/g, '.*') // *を「.*」に置換 .replace(/\\\.\*/g, '\\*'); // 「\.*」を「\*」に置換 const regex = new RegExp(`^${replacedName}$`); return regex.test(name); } /**@internal */ function matchScopeIdentifier(query, channelIdentifier, tokenVersion) { return (matchId(channelIdentifier.id, query.id) && matchName(tokenVersion, channelIdentifier.name, query.name)); } exports.matchScopeIdentifier = matchScopeIdentifier; //# sourceMappingURL=util.js.map