UNPKG

uspto-patents-view-api

Version:

An api wrapper for the patent view api run by the uspto

75 lines 9.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Range = void 0; const path_1 = __importDefault(require("path")); const rxjs_1 = require("rxjs"); const operators_1 = require("rxjs/operators"); const query_system_1 = require("../../../query-system"); const base_1 = require("../../base"); const config_1 = __importDefault(require("../config")); function buildRangeQueryStringObject(args) { return [ { _eq: { patent_type: 'design' } }, { _gte: { patent_date: args.startDate } }, { _lte: { patent_date: args.endDate } } ]; } class Range extends base_1.BaseEndpoint { constructor() { super(); this.endNotifier = new rxjs_1.Subject(); this.apiEndpointUrl = path_1.default.join(config_1.default.subsdirectory, config_1.default.endpoint); } // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types between({ args, dataPoints = [], sortBy }) { const { pageSize, ...rangeArgs } = args; this.pageSize = pageSize || base_1.PAGE_SIZE; this.pages = args.pages || 10; const queryObject = query_system_1.QueryBuilder.build({ and: buildRangeQueryStringObject(args) }); const requestArgs = { args: rangeArgs, dataPoints, queryParamObject: queryObject, sortingOptions: sortBy }; return this.request(requestArgs, 1).pipe((0, operators_1.expand)((data, index) => { const { count, total_patent_count } = data; const hasHitMaxUserReqPageCount = this.pageSize * this.pages <= count; const hasHitMaxServerPageCount = count >= total_patent_count; if (hasHitMaxServerPageCount || hasHitMaxUserReqPageCount) { this.completeRequestSequence(); return rxjs_1.EMPTY; } const nextPage = index + 1; return this.request(requestArgs, nextPage); }), (0, operators_1.takeUntil)(this.endNotifier), (0, operators_1.map)((data) => [...data.patents]), (0, operators_1.reduce)((acc, data) => { return acc.concat(...data); })); } mapper(data) { return JSON.parse(data); } completeRequestSequence() { this.endNotifier.next(true); this.endNotifier.complete(); } } exports.Range = Range; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUF3QjtBQUN4QiwrQkFBc0M7QUFDdEMsOENBQWdFO0FBR2hFLHdEQUFpRTtBQUNqRSxxQ0FBaUU7QUFFakUsdURBQXFDO0FBY3JDLFNBQVMsMkJBQTJCLENBQUMsSUFBZTtJQUNsRCxPQUFPO1FBQ0w7WUFDRSxHQUFHLEVBQUU7Z0JBQ0gsV0FBVyxFQUFFLFFBQVE7YUFDdEI7U0FDRjtRQUNEO1lBQ0UsSUFBSSxFQUFFO2dCQUNKLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUzthQUM1QjtTQUNGO1FBQ0Q7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPO2FBQzFCO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQWEsS0FBTSxTQUFRLG1CQUFZO0lBSXJDO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFGRixnQkFBVyxHQUFHLElBQUksY0FBTyxFQUFXLENBQUM7UUFHM0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFZLENBQUMsYUFBYSxFQUFFLGdCQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUNELDZFQUE2RTtJQUM3RSxPQUFPLENBQUMsRUFDTixJQUFJLEVBQ0osVUFBVSxHQUFHLEVBQUUsRUFDZixNQUFNLEVBS1A7UUFDQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLGdCQUFTLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUM5QixNQUFNLFdBQVcsR0FBRywyQkFBWSxDQUFDLEtBQUssQ0FBQztZQUNyQyxHQUFHLEVBQUUsMkJBQTJCLENBQUMsSUFBSSxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztRQUNILE1BQU0sV0FBVyxHQUFHO1lBQ2xCLElBQUksRUFBRSxTQUFTO1lBQ2YsVUFBVTtZQUNWLGdCQUFnQixFQUFFLFdBQVc7WUFDN0IsY0FBYyxFQUFFLE1BQU07U0FDTCxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN0QyxJQUFBLGtCQUFNLEVBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDckIsTUFBTSxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxHQUFHLElBQUksQ0FBQztZQUMzQyxNQUFNLHlCQUF5QixHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7WUFDdEUsTUFBTSx3QkFBd0IsR0FBRyxLQUFLLElBQUksa0JBQWtCLENBQUM7WUFDN0QsSUFBSSx3QkFBd0IsSUFBSSx5QkFBeUIsRUFBRTtnQkFDekQsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7Z0JBQy9CLE9BQU8sWUFBSyxDQUFDO2FBQ2Q7WUFDRCxNQUFNLFFBQVEsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLEVBQ0YsSUFBQSxxQkFBUyxFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFDM0IsSUFBQSxlQUFHLEVBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDaEMsSUFBQSxrQkFBTSxFQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ25CLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRWtCLE1BQU0sQ0FBQyxJQUFZO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQW1CLENBQUM7SUFDNUMsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7Q0FDRjtBQTFERCxzQkEwREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcclxuaW1wb3J0IHsgRU1QVFksIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZXhwYW5kLCBtYXAsIHJlZHVjZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBSZXF1ZXN0UGF5bG9hZCwgU29ydGluZ09wdGlvbnMgfSBmcm9tICcuLi8uLic7XHJcblxyXG5pbXBvcnQgeyBTZWFyY2hUZXJtLCBRdWVyeUJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9xdWVyeS1zeXN0ZW0nO1xyXG5pbXBvcnQgeyBCYXNlRW5kcG9pbnQsIFBBR0VfU0laRSwgUGFnaW5hdGlvbiB9IGZyb20gJy4uLy4uL2Jhc2UnO1xyXG5pbXBvcnQgeyBEYXRhUG9pbnRzIH0gZnJvbSAnLi4vLi4vc2hhcmVkLXR5cGVzJztcclxuaW1wb3J0IFBhdGVudENvbmZpZyBmcm9tICcuLi9jb25maWcnO1xyXG5pbXBvcnQgeyBQYXRlbnQgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSYW5nZUFyZ3MgZXh0ZW5kcyBQYWdpbmF0aW9uIHtcclxuICBzdGFydERhdGU6IHN0cmluZztcclxuICBlbmREYXRlOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0ZW50UmVzcG9uc2Uge1xyXG4gIHBhdGVudHM6IFBhdGVudFtdO1xyXG4gIGNvdW50OiBudW1iZXI7XHJcbiAgdG90YWxfcGF0ZW50X2NvdW50OiBudW1iZXI7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGJ1aWxkUmFuZ2VRdWVyeVN0cmluZ09iamVjdChhcmdzOiBSYW5nZUFyZ3MpOiBTZWFyY2hUZXJtW10ge1xyXG4gIHJldHVybiBbXHJcbiAgICB7XHJcbiAgICAgIF9lcToge1xyXG4gICAgICAgIHBhdGVudF90eXBlOiAnZGVzaWduJ1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBfZ3RlOiB7XHJcbiAgICAgICAgcGF0ZW50X2RhdGU6IGFyZ3Muc3RhcnREYXRlXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIF9sdGU6IHtcclxuICAgICAgICBwYXRlbnRfZGF0ZTogYXJncy5lbmREYXRlXHJcbiAgICAgIH1cclxuICAgIH1cclxuICBdO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmFuZ2UgZXh0ZW5kcyBCYXNlRW5kcG9pbnQge1xyXG4gIHByb3RlY3RlZCBwYWdlU2l6ZTogbnVtYmVyO1xyXG4gIHByaXZhdGUgcGFnZXM6IG51bWJlcjtcclxuICBwcml2YXRlIGVuZE5vdGlmaWVyID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmFwaUVuZHBvaW50VXJsID0gcGF0aC5qb2luKFBhdGVudENvbmZpZy5zdWJzZGlyZWN0b3J5LCBQYXRlbnRDb25maWcuZW5kcG9pbnQpO1xyXG4gIH1cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xyXG4gIGJldHdlZW4oe1xyXG4gICAgYXJncyxcclxuICAgIGRhdGFQb2ludHMgPSBbXSxcclxuICAgIHNvcnRCeVxyXG4gIH06IHtcclxuICAgIGFyZ3M6IFJhbmdlQXJncztcclxuICAgIGRhdGFQb2ludHM/OiBEYXRhUG9pbnRzO1xyXG4gICAgc29ydEJ5PzogU29ydGluZ09wdGlvbnM7XHJcbiAgfSkge1xyXG4gICAgY29uc3QgeyBwYWdlU2l6ZSwgLi4ucmFuZ2VBcmdzIH0gPSBhcmdzO1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplIHx8IFBBR0VfU0laRTtcclxuICAgIHRoaXMucGFnZXMgPSBhcmdzLnBhZ2VzIHx8IDEwO1xyXG4gICAgY29uc3QgcXVlcnlPYmplY3QgPSBRdWVyeUJ1aWxkZXIuYnVpbGQoe1xyXG4gICAgICBhbmQ6IGJ1aWxkUmFuZ2VRdWVyeVN0cmluZ09iamVjdChhcmdzKVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCByZXF1ZXN0QXJncyA9IHtcclxuICAgICAgYXJnczogcmFuZ2VBcmdzLFxyXG4gICAgICBkYXRhUG9pbnRzLFxyXG4gICAgICBxdWVyeVBhcmFtT2JqZWN0OiBxdWVyeU9iamVjdCxcclxuICAgICAgc29ydGluZ09wdGlvbnM6IHNvcnRCeVxyXG4gICAgfSBhcyBSZXF1ZXN0UGF5bG9hZDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QocmVxdWVzdEFyZ3MsIDEpLnBpcGUoXHJcbiAgICAgIGV4cGFuZCgoZGF0YSwgaW5kZXgpID0+IHtcclxuICAgICAgICBjb25zdCB7IGNvdW50LCB0b3RhbF9wYXRlbnRfY291bnQgfSA9IGRhdGE7XHJcbiAgICAgICAgY29uc3QgaGFzSGl0TWF4VXNlclJlcVBhZ2VDb3VudCA9IHRoaXMucGFnZVNpemUgKiB0aGlzLnBhZ2VzIDw9IGNvdW50O1xyXG4gICAgICAgIGNvbnN0IGhhc0hpdE1heFNlcnZlclBhZ2VDb3VudCA9IGNvdW50ID49IHRvdGFsX3BhdGVudF9jb3VudDtcclxuICAgICAgICBpZiAoaGFzSGl0TWF4U2VydmVyUGFnZUNvdW50IHx8IGhhc0hpdE1heFVzZXJSZXFQYWdlQ291bnQpIHtcclxuICAgICAgICAgIHRoaXMuY29tcGxldGVSZXF1ZXN0U2VxdWVuY2UoKTtcclxuICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbmV4dFBhZ2UgPSBpbmRleCArIDE7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdChyZXF1ZXN0QXJncywgbmV4dFBhZ2UpO1xyXG4gICAgICB9KSxcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZW5kTm90aWZpZXIpLFxyXG4gICAgICBtYXAoKGRhdGEpID0+IFsuLi5kYXRhLnBhdGVudHNdKSxcclxuICAgICAgcmVkdWNlKChhY2MsIGRhdGEpID0+IHtcclxuICAgICAgICByZXR1cm4gYWNjLmNvbmNhdCguLi5kYXRhKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbWFwcGVyKGRhdGE6IHN0cmluZyk6IFBhdGVudFJlc3BvbnNlIHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIGFzIFBhdGVudFJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wbGV0ZVJlcXVlc3RTZXF1ZW5jZSgpIHtcclxuICAgIHRoaXMuZW5kTm90aWZpZXIubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZW5kTm90aWZpZXIuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19