comic-vine-sdk 1.3.1 → 1.3.2

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/CHANGELOG.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
- ### [1.3.1](https://github.com/AllyMurray/comic-vine/compare/v1.3.0...v1.3.1) (2025-07-03)
5
+ ### [1.3.2](https://github.com/AllyMurray/comic-vine/compare/v1.3.1...v1.3.2) (2025-07-03)
6
6
 
7
7
  ## [1.2.8] - 2024-01-01
8
8
 
@@ -1,42 +1,44 @@
1
1
  import { userOptions } from './options/index.js';
2
- export declare class ComicVine {
3
- private _character;
4
- private _concept;
5
- private _episode;
6
- private _issue;
7
- private _location;
8
- private _movie;
9
- private _origin;
10
- private _person;
11
- private _power;
12
- private _promo;
13
- private _publisher;
14
- private _series;
15
- private _storyArc;
16
- private _team;
17
- private _thing;
18
- private _video;
19
- private _videoCategory;
20
- private _videoType;
21
- private _volume;
2
+ import { ResourceFactory } from './resources/index.js';
3
+ import * as resources from './resources/resource-list.js';
4
+ type ResourceInstance = ReturnType<ResourceFactory['create']>;
5
+ type ResourcePropertyMap = {
6
+ [K in keyof typeof resources as Uncapitalize<K>]: InstanceType<(typeof resources)[K]>;
7
+ };
8
+ export declare class ComicVine implements ResourcePropertyMap {
9
+ private resourceFactory;
10
+ private resourceCache;
11
+ private resourceNames;
12
+ readonly character: ResourcePropertyMap['character'];
13
+ readonly concept: ResourcePropertyMap['concept'];
14
+ readonly episode: ResourcePropertyMap['episode'];
15
+ readonly issue: ResourcePropertyMap['issue'];
16
+ readonly location: ResourcePropertyMap['location'];
17
+ readonly movie: ResourcePropertyMap['movie'];
18
+ readonly origin: ResourcePropertyMap['origin'];
19
+ readonly person: ResourcePropertyMap['person'];
20
+ readonly power: ResourcePropertyMap['power'];
21
+ readonly promo: ResourcePropertyMap['promo'];
22
+ readonly publisher: ResourcePropertyMap['publisher'];
23
+ readonly series: ResourcePropertyMap['series'];
24
+ readonly storyArc: ResourcePropertyMap['storyArc'];
25
+ readonly team: ResourcePropertyMap['team'];
26
+ readonly thing: ResourcePropertyMap['thing'];
27
+ readonly video: ResourcePropertyMap['video'];
28
+ readonly videoCategory: ResourcePropertyMap['videoCategory'];
29
+ readonly videoType: ResourcePropertyMap['videoType'];
30
+ readonly volume: ResourcePropertyMap['volume'];
22
31
  constructor(key: string, options?: userOptions);
23
- get character(): import("./resources/resource-list.js").Character;
24
- get concept(): import("./resources/resource-list.js").Concept;
25
- get episode(): import("./resources/resource-list.js").Episode;
26
- get issue(): import("./resources/resource-list.js").Issue;
27
- get location(): import("./resources/resource-list.js").Location;
28
- get movie(): import("./resources/resource-list.js").Movie;
29
- get origin(): import("./resources/resource-list.js").Origin;
30
- get person(): import("./resources/resource-list.js").Person;
31
- get power(): import("./resources/resource-list.js").Power;
32
- get promo(): import("./resources/resource-list.js").Promo;
33
- get publisher(): import("./resources/resource-list.js").Publisher;
34
- get series(): import("./resources/resource-list.js").Series;
35
- get storyArc(): import("./resources/resource-list.js").StoryArc;
36
- get team(): import("./resources/resource-list.js").Team;
37
- get thing(): import("./resources/resource-list.js").Thing;
38
- get video(): import("./resources/resource-list.js").Video;
39
- get videoCategory(): import("./resources/resource-list.js").VideoCategory;
40
- get videoType(): import("./resources/resource-list.js").VideoType;
41
- get volume(): import("./resources/resource-list.js").Volume;
32
+ private isResourceProperty;
33
+ private getResource;
34
+ getAvailableResources(): string[];
35
+ hasResource(resourceName: string): boolean;
36
+ getResourceByName(resourceName: string): ResourceInstance | undefined;
37
+ isResourceLoaded(resourceName: string): boolean;
38
+ getCacheStats(): {
39
+ total: number;
40
+ loaded: number;
41
+ loadedResources: string[];
42
+ };
42
43
  }
44
+ export {};
@@ -1,92 +1,105 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.ComicVine = void 0;
4
37
  const index_js_1 = require("./http-client/index.js");
5
38
  const index_js_2 = require("./options/index.js");
6
39
  const index_js_3 = require("./resources/index.js");
40
+ const resources = __importStar(require("./resources/resource-list.js"));
41
+ function classNameToPropertyName(className) {
42
+ return className.charAt(0).toLowerCase() + className.slice(1);
43
+ }
7
44
  class ComicVine {
8
45
  constructor(key, options) {
46
+ this.resourceCache = new Map();
9
47
  const _options = (0, index_js_2.loadOptions)(options);
10
48
  const httpClient = index_js_1.HttpClientFactory.createClient();
11
49
  const urlBuilder = index_js_1.HttpClientFactory.createUrlBuilder(key, _options.baseUrl);
12
- const resourceFactory = new index_js_3.ResourceFactory(httpClient, urlBuilder);
13
- this._character = resourceFactory.create('Character');
14
- this._concept = resourceFactory.create('Concept');
15
- this._episode = resourceFactory.create('Episode');
16
- this._issue = resourceFactory.create('Issue');
17
- this._location = resourceFactory.create('Location');
18
- this._movie = resourceFactory.create('Movie');
19
- this._origin = resourceFactory.create('Origin');
20
- this._person = resourceFactory.create('Person');
21
- this._power = resourceFactory.create('Power');
22
- this._promo = resourceFactory.create('Promo');
23
- this._publisher = resourceFactory.create('Publisher');
24
- this._series = resourceFactory.create('Series');
25
- this._storyArc = resourceFactory.create('StoryArc');
26
- this._team = resourceFactory.create('Team');
27
- this._thing = resourceFactory.create('Thing');
28
- this._video = resourceFactory.create('Video');
29
- this._videoCategory = resourceFactory.create('VideoCategory');
30
- this._videoType = resourceFactory.create('VideoType');
31
- this._volume = resourceFactory.create('Volume');
32
- }
33
- get character() {
34
- return this._character;
35
- }
36
- get concept() {
37
- return this._concept;
38
- }
39
- get episode() {
40
- return this._episode;
41
- }
42
- get issue() {
43
- return this._issue;
44
- }
45
- get location() {
46
- return this._location;
47
- }
48
- get movie() {
49
- return this._movie;
50
- }
51
- get origin() {
52
- return this._origin;
53
- }
54
- get person() {
55
- return this._person;
56
- }
57
- get power() {
58
- return this._power;
59
- }
60
- get promo() {
61
- return this._promo;
62
- }
63
- get publisher() {
64
- return this._publisher;
65
- }
66
- get series() {
67
- return this._series;
68
- }
69
- get storyArc() {
70
- return this._storyArc;
71
- }
72
- get team() {
73
- return this._team;
74
- }
75
- get thing() {
76
- return this._thing;
77
- }
78
- get video() {
79
- return this._video;
80
- }
81
- get videoCategory() {
82
- return this._videoCategory;
83
- }
84
- get videoType() {
85
- return this._videoType;
86
- }
87
- get volume() {
88
- return this._volume;
50
+ this.resourceFactory = new index_js_3.ResourceFactory(httpClient, urlBuilder);
51
+ // Discover available resources dynamically
52
+ this.resourceNames = Object.keys(resources);
53
+ // Return a proxy that provides lazy loading with full type safety
54
+ return new Proxy(this, {
55
+ get(target, prop) {
56
+ if (typeof prop === 'string' && target.isResourceProperty(prop)) {
57
+ return target.getResource(prop);
58
+ }
59
+ return Reflect.get(target, prop);
60
+ },
61
+ });
62
+ }
63
+ isResourceProperty(prop) {
64
+ // Check if this property corresponds to a known resource
65
+ const className = prop.charAt(0).toUpperCase() + prop.slice(1);
66
+ return this.resourceNames.includes(className);
67
+ }
68
+ getResource(propertyName) {
69
+ // Lazy loading: create resource only when first accessed
70
+ if (!this.resourceCache.has(propertyName)) {
71
+ const className = propertyName.charAt(0).toUpperCase() + propertyName.slice(1);
72
+ try {
73
+ const resource = this.resourceFactory.create(className);
74
+ this.resourceCache.set(propertyName, resource);
75
+ }
76
+ catch (error) {
77
+ throw new Error(`Failed to create resource '${className}': ${error}`);
78
+ }
79
+ }
80
+ return this.resourceCache.get(propertyName);
81
+ }
82
+ getAvailableResources() {
83
+ return this.resourceNames.map((name) => classNameToPropertyName(name));
84
+ }
85
+ hasResource(resourceName) {
86
+ return this.isResourceProperty(resourceName);
87
+ }
88
+ getResourceByName(resourceName) {
89
+ if (!this.isResourceProperty(resourceName)) {
90
+ return undefined;
91
+ }
92
+ return this.getResource(resourceName);
93
+ }
94
+ isResourceLoaded(resourceName) {
95
+ return this.resourceCache.has(resourceName);
96
+ }
97
+ getCacheStats() {
98
+ const total = this.resourceNames.length;
99
+ const loaded = this.resourceCache.size;
100
+ const loadedResources = Array.from(this.resourceCache.keys());
101
+ return { total, loaded, loadedResources };
89
102
  }
90
103
  }
91
104
  exports.ComicVine = ComicVine;
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29taWMtdmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21pYy12aW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUEyRDtBQUMzRCxpREFBOEQ7QUFDOUQsbURBQXVEO0FBRXZELE1BQWEsU0FBUztJQXFCcEIsWUFBWSxHQUFXLEVBQUUsT0FBcUI7UUFDNUMsTUFBTSxRQUFRLEdBQUcsSUFBQSxzQkFBVyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLDRCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BELE1BQU0sVUFBVSxHQUFHLDRCQUFpQixDQUFDLGdCQUFnQixDQUNuRCxHQUFHLEVBQ0gsUUFBUSxDQUFDLE9BQU8sQ0FDakIsQ0FBQztRQUNGLE1BQU0sZUFBZSxHQUFHLElBQUksMEJBQWUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxD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ZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnRGYWN0b3J5IH0gZnJvbSAnLi9odHRwLWNsaWVudC9pbmRleC5qcyc7XG5pbXBvcnQgeyB1c2VyT3B0aW9ucywgbG9hZE9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMvaW5kZXguanMnO1xuaW1wb3J0IHsgUmVzb3VyY2VGYWN0b3J5IH0gZnJvbSAnLi9yZXNvdXJjZXMvaW5kZXguanMnO1xuXG5leHBvcnQgY2xhc3MgQ29taWNWaW5lIHtcbiAgcHJpdmF0ZSBfY2hhcmFjdGVyO1xuICBwcml2YXRlIF9jb25jZXB0O1xuICBwcml2YXRlIF9lcGlzb2RlO1xuICBwcml2YXRlIF9pc3N1ZTtcbiAgcHJpdmF0ZSBfbG9jYXRpb247XG4gIHByaXZhdGUgX21vdmllO1xuICBwcml2YXRlIF9vcmlnaW47XG4gIHByaXZhdGUgX3BlcnNvbjtcbiAgcHJpdmF0ZSBfcG93ZXI7XG4gIHByaXZhdGUgX3Byb21vO1xuICBwcml2YXRlIF9wdWJsaXNoZXI7XG4gIHByaXZhdGUgX3NlcmllcztcbiAgcHJpdmF0ZSBfc3RvcnlBcmM7XG4gIHByaXZhdGUgX3RlYW07XG4gIHByaXZhdGUgX3RoaW5nO1xuICBwcml2YXRlIF92aWRlbztcbiAgcHJpdmF0ZSBfdmlkZW9DYXRlZ29yeTtcbiAgcHJpdmF0ZSBfdmlkZW9UeXBlO1xuICBwcml2YXRlIF92b2x1bWU7XG5cbiAgY29uc3RydWN0b3Ioa2V5OiBzdHJpbmcsIG9wdGlvbnM/OiB1c2VyT3B0aW9ucykge1xuICAgIGNvbnN0IF9vcHRpb25zID0gbG9hZE9wdGlvbnMob3B0aW9ucyk7XG4gICAgY29uc3QgaHR0cENsaWVudCA9IEh0dHBDbGllbnRGYWN0b3J5LmNyZWF0ZUNsaWVudCgpO1xuICAgIGNvbnN0IHVybEJ1aWxkZXIgPSBIdHRwQ2xpZW50RmFjdG9yeS5jcmVhdGVVcmxCdWlsZGVyKFxuICAgICAga2V5LFxuICAgICAgX29wdGlvbnMuYmFzZVVybCxcbiAgICApO1xuICAgIGNvbnN0IHJlc291cmNlRmFjdG9yeSA9IG5ldyBSZXNvdXJjZUZhY3RvcnkoaHR0cENsaWVudCwgdXJsQnVpbGRlcik7XG5cbiAgICB0aGlzLl9jaGFyYWN0ZXIgPSByZXNvdXJjZUZhY3RvcnkuY3JlYXRlKCdDaGFyYWN0ZXInKTtcbiAgICB0aGlzLl9jb25jZXB0ID0gcmVzb3VyY2VGYWN0b3J5LmNyZWF0ZSgnQ29uY2VwdCcpO1xuICAgIHRoaXMuX2VwaXNvZGUgPSByZXNvdXJjZUZhY3RvcnkuY3JlYXRlKCdFcGlzb2RlJyk7XG4gICAgdGhpcy5faXNzdWUgPSByZXNvdXJjZUZhY3RvcnkuY3JlYXRlKCdJc3N1ZScpO1xuICAgIHRoaXMuX2xvY2F0aW9uID0gcmVzb3VyY2VGYWN0b3J5LmNyZWF0ZSgnTG9jYXRpb24nKTtcbiAgICB0aGlzLl9tb3ZpZSA9IHJlc291cmNlRmFjdG9yeS5jcmVhdGUoJ01vdmllJyk7XG4gICAgdGhpcy5fb3JpZ2luID0gcmVzb3VyY2VGYWN0b3J5LmNyZWF0ZSgnT3JpZ2luJyk7XG4gICAgdGhpcy5fcGVyc29uID0gcmVzb3VyY2VGYWN0b3J5LmNyZWF0ZSgnUGVyc29uJyk7XG4gICAgdGhpcy5fcG93ZXIgPSByZXNvdXJjZUZhY3RvcnkuY3JlYXRlKCdQb3dlcicpO1xuICAgIHRoaXMuX3Byb21vID0gcmVzb3VyY2VGYWN0b3J5LmNyZWF0ZSgnUHJvbW8nKTtcbiAgICB0aGlzLl9wdWJsaXNoZXIgPSByZXNvdXJjZUZhY3RvcnkuY3JlYXRlKCdQdWJsaXNoZXInKTtcbiAgICB0aGlzLl9zZXJpZXMgPSByZXNvdXJjZUZhY3RvcnkuY3JlYXRlKCdTZXJpZXMnKTtcbiAgICB0aGlzLl9zdG9yeUFyYyA9IHJlc291cmNlRmFjdG9yeS5jcmVhdGUoJ1N0b3J5QXJjJyk7XG4gICAgdGhpcy5fdGVhbSA9IHJlc291cmNlRmFjdG9yeS5jcmVhdGUoJ1RlYW0nKTtcbiAgICB0aGlzLl90aGluZyA9IHJlc291cmNlRmFjdG9yeS5jcmVhdGUoJ1RoaW5nJyk7XG4gICAgdGhpcy5fdmlkZW8gPSByZXNvdXJjZUZhY3RvcnkuY3JlYXRlKCdWaWRlbycpO1xuICAgIHRoaXMuX3ZpZGVvQ2F0ZWdvcnkgPSByZXNvdXJjZUZhY3RvcnkuY3JlYXRlKCdWaWRlb0NhdGVnb3J5Jyk7XG4gICAgdGhpcy5fdmlkZW9UeXBlID0gcmVzb3VyY2VGYWN0b3J5LmNyZWF0ZSgnVmlkZW9UeXBlJyk7XG4gICAgdGhpcy5fdm9sdW1lID0gcmVzb3VyY2VGYWN0b3J5LmNyZWF0ZSgnVm9sdW1lJyk7XG4gIH1cblxuICBnZXQgY2hhcmFjdGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9jaGFyYWN0ZXI7XG4gIH1cblxuICBnZXQgY29uY2VwdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29uY2VwdDtcbiAgfVxuXG4gIGdldCBlcGlzb2RlKCkge1xuICAgIHJldHVybiB0aGlzLl9lcGlzb2RlO1xuICB9XG5cbiAgZ2V0IGlzc3VlKCkge1xuICAgIHJldHVybiB0aGlzLl9pc3N1ZTtcbiAgfVxuXG4gIGdldCBsb2NhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb247XG4gIH1cblxuICBnZXQgbW92aWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21vdmllO1xuICB9XG5cbiAgZ2V0IG9yaWdpbigpIHtcbiAgICByZXR1cm4gdGhpcy5fb3JpZ2luO1xuICB9XG5cbiAgZ2V0IHBlcnNvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fcGVyc29uO1xuICB9XG5cbiAgZ2V0IHBvd2VyKCkge1xuICAgIHJldHVybiB0aGlzLl9wb3dlcjtcbiAgfVxuXG4gIGdldCBwcm9tbygpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJvbW87XG4gIH1cblxuICBnZXQgcHVibGlzaGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wdWJsaXNoZXI7XG4gIH1cblxuICBnZXQgc2VyaWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9zZXJpZXM7XG4gIH1cblxuICBnZXQgc3RvcnlBcmMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3J5QXJjO1xuICB9XG5cbiAgZ2V0IHRlYW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RlYW07XG4gIH1cblxuICBnZXQgdGhpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RoaW5nO1xuICB9XG5cbiAgZ2V0IHZpZGVvKCkge1xuICAgIHJldHVybiB0aGlzLl92aWRlbztcbiAgfVxuXG4gIGdldCB2aWRlb0NhdGVnb3J5KCkge1xuICAgIHJldHVybiB0aGlzLl92aWRlb0NhdGVnb3J5O1xuICB9XG5cbiAgZ2V0IHZpZGVvVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlkZW9UeXBlO1xuICB9XG5cbiAgZ2V0IHZvbHVtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdm9sdW1lO1xuICB9XG59XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29taWMtdmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21pYy12aW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUEyRDtBQUMzRCxpREFBOEQ7QUFDOUQsbURBQXVEO0FBQ3ZELHdFQUEwRDtBQUUxRCxTQUFTLHVCQUF1QixDQUFDLFNBQWlCO0lBQ2hELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFXRCxNQUFhLFNBQVM7SUEwQnBCLFlBQVksR0FBVyxFQUFFLE9BQXFCO1FBeEJ0QyxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUE0QixDQUFDO1FBeUIxRCxNQUFNLFFBQVEsR0FBRyxJQUFBLHNCQUFXLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsTUFBTSxVQUFVLEdBQUcsNEJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEQsTUFBTSxVQUFVLEdBQUcsNEJBQWlCLENBQUMsZ0JBQWdCLENBQ25ELEdBQUcsRUFDSCxRQUFRLENBQUMsT0FBTyxDQUNqQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLDBCQUFlLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRW5FLDJDQUEyQztRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFNUMsa0VBQWtFO1FBQ2xFLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ3JCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBcUI7Z0JBQy9CLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNoRSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7Z0JBQ0QsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNuQyxDQUFDO1NBQ0YsQ0FBYyxDQUFDO0lBQ2xCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFZO1FBQ3JDLHlEQUF5RDtRQUN6RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU8sV0FBVyxDQUFDLFlBQW9CO1FBQ3RDLHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUMxQyxNQUFNLFNBQVMsR0FDYixZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDO2dCQUNILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUMxQyxTQUFtQyxDQUNwQyxDQUFDO2dCQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNqRCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixTQUFTLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN4RSxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxXQUFXLENBQUMsWUFBb0I7UUFDOUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGlCQUFpQixDQUFDLFlBQW9CO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxZQUFvQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxhQUFhO1FBS1gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDdkMsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLENBQUM7SUFDNUMsQ0FBQztDQUNGO0FBckdELDhCQXFHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnRGYWN0b3J5IH0gZnJvbSAnLi9odHRwLWNsaWVudC9pbmRleC5qcyc7XG5pbXBvcnQgeyB1c2VyT3B0aW9ucywgbG9hZE9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMvaW5kZXguanMnO1xuaW1wb3J0IHsgUmVzb3VyY2VGYWN0b3J5IH0gZnJvbSAnLi9yZXNvdXJjZXMvaW5kZXguanMnO1xuaW1wb3J0ICogYXMgcmVzb3VyY2VzIGZyb20gJy4vcmVzb3VyY2VzL3Jlc291cmNlLWxpc3QuanMnO1xuXG5mdW5jdGlvbiBjbGFzc05hbWVUb1Byb3BlcnR5TmFtZShjbGFzc05hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjbGFzc05hbWUuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBjbGFzc05hbWUuc2xpY2UoMSk7XG59XG5cbnR5cGUgUmVzb3VyY2VJbnN0YW5jZSA9IFJldHVyblR5cGU8UmVzb3VyY2VGYWN0b3J5WydjcmVhdGUnXT47XG5cbi8vIENyZWF0ZSByZXNvdXJjZSBwcm9wZXJ0eSB0eXBlIG1hcHBpbmcgZHluYW1pY2FsbHlcbnR5cGUgUmVzb3VyY2VQcm9wZXJ0eU1hcCA9IHtcbiAgW0sgaW4ga2V5b2YgdHlwZW9mIHJlc291cmNlcyBhcyBVbmNhcGl0YWxpemU8Sz5dOiBJbnN0YW5jZVR5cGU8XG4gICAgKHR5cGVvZiByZXNvdXJjZXMpW0tdXG4gID47XG59O1xuXG5leHBvcnQgY2xhc3MgQ29taWNWaW5lIGltcGxlbWVudHMgUmVzb3VyY2VQcm9wZXJ0eU1hcCB7XG4gIHByaXZhdGUgcmVzb3VyY2VGYWN0b3J5OiBSZXNvdXJjZUZhY3Rvcnk7XG4gIHByaXZhdGUgcmVzb3VyY2VDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBSZXNvdXJjZUluc3RhbmNlPigpO1xuICBwcml2YXRlIHJlc291cmNlTmFtZXM6IHN0cmluZ1tdO1xuXG4gIC8vIFR5cGVTY3JpcHQgcHJvcGVydHkgZGVjbGFyYXRpb25zIGZvciBzdGF0aWMgdHlwaW5nICh3aWxsIGJlIHByb3ZpZGVkIGJ5IFByb3h5KVxuICBkZWNsYXJlIHJlYWRvbmx5IGNoYXJhY3RlcjogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnY2hhcmFjdGVyJ107XG4gIGRlY2xhcmUgcmVhZG9ubHkgY29uY2VwdDogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnY29uY2VwdCddO1xuICBkZWNsYXJlIHJlYWRvbmx5IGVwaXNvZGU6IFJlc291cmNlUHJvcGVydHlNYXBbJ2VwaXNvZGUnXTtcbiAgZGVjbGFyZSByZWFkb25seSBpc3N1ZTogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnaXNzdWUnXTtcbiAgZGVjbGFyZSByZWFkb25seSBsb2NhdGlvbjogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnbG9jYXRpb24nXTtcbiAgZGVjbGFyZSByZWFkb25seSBtb3ZpZTogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnbW92aWUnXTtcbiAgZGVjbGFyZSByZWFkb25seSBvcmlnaW46IFJlc291cmNlUHJvcGVydHlNYXBbJ29yaWdpbiddO1xuICBkZWNsYXJlIHJlYWRvbmx5IHBlcnNvbjogUmVzb3VyY2VQcm9wZXJ0eU1hcFsncGVyc29uJ107XG4gIGRlY2xhcmUgcmVhZG9ubHkgcG93ZXI6IFJlc291cmNlUHJvcGVydHlNYXBbJ3Bvd2VyJ107XG4gIGRlY2xhcmUgcmVhZG9ubHkgcHJvbW86IFJlc291cmNlUHJvcGVydHlNYXBbJ3Byb21vJ107XG4gIGRlY2xhcmUgcmVhZG9ubHkgcHVibGlzaGVyOiBSZXNvdXJjZVByb3BlcnR5TWFwWydwdWJsaXNoZXInXTtcbiAgZGVjbGFyZSByZWFkb25seSBzZXJpZXM6IFJlc291cmNlUHJvcGVydHlNYXBbJ3NlcmllcyddO1xuICBkZWNsYXJlIHJlYWRvbmx5IHN0b3J5QXJjOiBSZXNvdXJjZVByb3BlcnR5TWFwWydzdG9yeUFyYyddO1xuICBkZWNsYXJlIHJlYWRvbmx5IHRlYW06IFJlc291cmNlUHJvcGVydHlNYXBbJ3RlYW0nXTtcbiAgZGVjbGFyZSByZWFkb25seSB0aGluZzogUmVzb3VyY2VQcm9wZXJ0eU1hcFsndGhpbmcnXTtcbiAgZGVjbGFyZSByZWFkb25seSB2aWRlbzogUmVzb3VyY2VQcm9wZXJ0eU1hcFsndmlkZW8nXTtcbiAgZGVjbGFyZSByZWFkb25seSB2aWRlb0NhdGVnb3J5OiBSZXNvdXJjZVByb3BlcnR5TWFwWyd2aWRlb0NhdGVnb3J5J107XG4gIGRlY2xhcmUgcmVhZG9ubHkgdmlkZW9UeXBlOiBSZXNvdXJjZVByb3BlcnR5TWFwWyd2aWRlb1R5cGUnXTtcbiAgZGVjbGFyZSByZWFkb25seSB2b2x1bWU6IFJlc291cmNlUHJvcGVydHlNYXBbJ3ZvbHVtZSddO1xuXG4gIGNvbnN0cnVjdG9yKGtleTogc3RyaW5nLCBvcHRpb25zPzogdXNlck9wdGlvbnMpIHtcbiAgICBjb25zdCBfb3B0aW9ucyA9IGxvYWRPcHRpb25zKG9wdGlvbnMpO1xuICAgIGNvbnN0IGh0dHBDbGllbnQgPSBIdHRwQ2xpZW50RmFjdG9yeS5jcmVhdGVDbGllbnQoKTtcbiAgICBjb25zdCB1cmxCdWlsZGVyID0gSHR0cENsaWVudEZhY3RvcnkuY3JlYXRlVXJsQnVpbGRlcihcbiAgICAgIGtleSxcbiAgICAgIF9vcHRpb25zLmJhc2VVcmwsXG4gICAgKTtcbiAgICB0aGlzLnJlc291cmNlRmFjdG9yeSA9IG5ldyBSZXNvdXJjZUZhY3RvcnkoaHR0cENsaWVudCwgdXJsQnVpbGRlcik7XG5cbiAgICAvLyBEaXNjb3ZlciBhdmFpbGFibGUgcmVzb3VyY2VzIGR5bmFtaWNhbGx5XG4gICAgdGhpcy5yZXNvdXJjZU5hbWVzID0gT2JqZWN0LmtleXMocmVzb3VyY2VzKTtcblxuICAgIC8vIFJldHVybiBhIHByb3h5IHRoYXQgcHJvdmlkZXMgbGF6eSBsb2FkaW5nIHdpdGggZnVsbCB0eXBlIHNhZmV0eVxuICAgIHJldHVybiBuZXcgUHJveHkodGhpcywge1xuICAgICAgZ2V0KHRhcmdldCwgcHJvcDogc3RyaW5nIHwgc3ltYm9sKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycgJiYgdGFyZ2V0LmlzUmVzb3VyY2VQcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICAgIHJldHVybiB0YXJnZXQuZ2V0UmVzb3VyY2UocHJvcCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCk7XG4gICAgICB9LFxuICAgIH0pIGFzIENvbWljVmluZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZXNvdXJjZVByb3BlcnR5KHByb3A6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGlmIHRoaXMgcHJvcGVydHkgY29ycmVzcG9uZHMgdG8gYSBrbm93biByZXNvdXJjZVxuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHByb3AuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwcm9wLnNsaWNlKDEpO1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlTmFtZXMuaW5jbHVkZXMoY2xhc3NOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVzb3VyY2UocHJvcGVydHlOYW1lOiBzdHJpbmcpOiBSZXNvdXJjZUluc3RhbmNlIHtcbiAgICAvLyBMYXp5IGxvYWRpbmc6IGNyZWF0ZSByZXNvdXJjZSBvbmx5IHdoZW4gZmlyc3QgYWNjZXNzZWRcbiAgICBpZiAoIXRoaXMucmVzb3VyY2VDYWNoZS5oYXMocHJvcGVydHlOYW1lKSkge1xuICAgICAgY29uc3QgY2xhc3NOYW1lID1cbiAgICAgICAgcHJvcGVydHlOYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcHJvcGVydHlOYW1lLnNsaWNlKDEpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzb3VyY2UgPSB0aGlzLnJlc291cmNlRmFjdG9yeS5jcmVhdGUoXG4gICAgICAgICAgY2xhc3NOYW1lIGFzIGtleW9mIHR5cGVvZiByZXNvdXJjZXMsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzb3VyY2VDYWNoZS5zZXQocHJvcGVydHlOYW1lLCByZXNvdXJjZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgcmVzb3VyY2UgJyR7Y2xhc3NOYW1lfSc6ICR7ZXJyb3J9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlc291cmNlQ2FjaGUuZ2V0KHByb3BlcnR5TmFtZSkhO1xuICB9XG5cbiAgZ2V0QXZhaWxhYmxlUmVzb3VyY2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZU5hbWVzLm1hcCgobmFtZSkgPT4gY2xhc3NOYW1lVG9Qcm9wZXJ0eU5hbWUobmFtZSkpO1xuICB9XG5cbiAgaGFzUmVzb3VyY2UocmVzb3VyY2VOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1Jlc291cmNlUHJvcGVydHkocmVzb3VyY2VOYW1lKTtcbiAgfVxuXG4gIGdldFJlc291cmNlQnlOYW1lKHJlc291cmNlTmFtZTogc3RyaW5nKTogUmVzb3VyY2VJbnN0YW5jZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmlzUmVzb3VyY2VQcm9wZXJ0eShyZXNvdXJjZU5hbWUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZShyZXNvdXJjZU5hbWUpO1xuICB9XG5cbiAgaXNSZXNvdXJjZUxvYWRlZChyZXNvdXJjZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlQ2FjaGUuaGFzKHJlc291cmNlTmFtZSk7XG4gIH1cblxuICBnZXRDYWNoZVN0YXRzKCk6IHtcbiAgICB0b3RhbDogbnVtYmVyO1xuICAgIGxvYWRlZDogbnVtYmVyO1xuICAgIGxvYWRlZFJlc291cmNlczogc3RyaW5nW107XG4gIH0ge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5yZXNvdXJjZU5hbWVzLmxlbmd0aDtcbiAgICBjb25zdCBsb2FkZWQgPSB0aGlzLnJlc291cmNlQ2FjaGUuc2l6ZTtcbiAgICBjb25zdCBsb2FkZWRSZXNvdXJjZXMgPSBBcnJheS5mcm9tKHRoaXMucmVzb3VyY2VDYWNoZS5rZXlzKCkpO1xuICAgIHJldHVybiB7IHRvdGFsLCBsb2FkZWQsIGxvYWRlZFJlc291cmNlcyB9O1xuICB9XG59XG4iXX0=
@@ -1,42 +1,44 @@
1
1
  import { userOptions } from './options/index.js';
2
- export declare class ComicVine {
3
- private _character;
4
- private _concept;
5
- private _episode;
6
- private _issue;
7
- private _location;
8
- private _movie;
9
- private _origin;
10
- private _person;
11
- private _power;
12
- private _promo;
13
- private _publisher;
14
- private _series;
15
- private _storyArc;
16
- private _team;
17
- private _thing;
18
- private _video;
19
- private _videoCategory;
20
- private _videoType;
21
- private _volume;
2
+ import { ResourceFactory } from './resources/index.js';
3
+ import * as resources from './resources/resource-list.js';
4
+ type ResourceInstance = ReturnType<ResourceFactory['create']>;
5
+ type ResourcePropertyMap = {
6
+ [K in keyof typeof resources as Uncapitalize<K>]: InstanceType<(typeof resources)[K]>;
7
+ };
8
+ export declare class ComicVine implements ResourcePropertyMap {
9
+ private resourceFactory;
10
+ private resourceCache;
11
+ private resourceNames;
12
+ readonly character: ResourcePropertyMap['character'];
13
+ readonly concept: ResourcePropertyMap['concept'];
14
+ readonly episode: ResourcePropertyMap['episode'];
15
+ readonly issue: ResourcePropertyMap['issue'];
16
+ readonly location: ResourcePropertyMap['location'];
17
+ readonly movie: ResourcePropertyMap['movie'];
18
+ readonly origin: ResourcePropertyMap['origin'];
19
+ readonly person: ResourcePropertyMap['person'];
20
+ readonly power: ResourcePropertyMap['power'];
21
+ readonly promo: ResourcePropertyMap['promo'];
22
+ readonly publisher: ResourcePropertyMap['publisher'];
23
+ readonly series: ResourcePropertyMap['series'];
24
+ readonly storyArc: ResourcePropertyMap['storyArc'];
25
+ readonly team: ResourcePropertyMap['team'];
26
+ readonly thing: ResourcePropertyMap['thing'];
27
+ readonly video: ResourcePropertyMap['video'];
28
+ readonly videoCategory: ResourcePropertyMap['videoCategory'];
29
+ readonly videoType: ResourcePropertyMap['videoType'];
30
+ readonly volume: ResourcePropertyMap['volume'];
22
31
  constructor(key: string, options?: userOptions);
23
- get character(): import("./resources/resource-list.js").Character;
24
- get concept(): import("./resources/resource-list.js").Concept;
25
- get episode(): import("./resources/resource-list.js").Episode;
26
- get issue(): import("./resources/resource-list.js").Issue;
27
- get location(): import("./resources/resource-list.js").Location;
28
- get movie(): import("./resources/resource-list.js").Movie;
29
- get origin(): import("./resources/resource-list.js").Origin;
30
- get person(): import("./resources/resource-list.js").Person;
31
- get power(): import("./resources/resource-list.js").Power;
32
- get promo(): import("./resources/resource-list.js").Promo;
33
- get publisher(): import("./resources/resource-list.js").Publisher;
34
- get series(): import("./resources/resource-list.js").Series;
35
- get storyArc(): import("./resources/resource-list.js").StoryArc;
36
- get team(): import("./resources/resource-list.js").Team;
37
- get thing(): import("./resources/resource-list.js").Thing;
38
- get video(): import("./resources/resource-list.js").Video;
39
- get videoCategory(): import("./resources/resource-list.js").VideoCategory;
40
- get videoType(): import("./resources/resource-list.js").VideoType;
41
- get volume(): import("./resources/resource-list.js").Volume;
32
+ private isResourceProperty;
33
+ private getResource;
34
+ getAvailableResources(): string[];
35
+ hasResource(resourceName: string): boolean;
36
+ getResourceByName(resourceName: string): ResourceInstance | undefined;
37
+ isResourceLoaded(resourceName: string): boolean;
38
+ getCacheStats(): {
39
+ total: number;
40
+ loaded: number;
41
+ loadedResources: string[];
42
+ };
42
43
  }
44
+ export {};
@@ -1,88 +1,68 @@
1
1
  import { HttpClientFactory } from './http-client/index.js';
2
2
  import { loadOptions } from './options/index.js';
3
3
  import { ResourceFactory } from './resources/index.js';
4
+ import * as resources from './resources/resource-list.js';
5
+ function classNameToPropertyName(className) {
6
+ return className.charAt(0).toLowerCase() + className.slice(1);
7
+ }
4
8
  export class ComicVine {
5
9
  constructor(key, options) {
10
+ this.resourceCache = new Map();
6
11
  const _options = loadOptions(options);
7
12
  const httpClient = HttpClientFactory.createClient();
8
13
  const urlBuilder = HttpClientFactory.createUrlBuilder(key, _options.baseUrl);
9
- const resourceFactory = new ResourceFactory(httpClient, urlBuilder);
10
- this._character = resourceFactory.create('Character');
11
- this._concept = resourceFactory.create('Concept');
12
- this._episode = resourceFactory.create('Episode');
13
- this._issue = resourceFactory.create('Issue');
14
- this._location = resourceFactory.create('Location');
15
- this._movie = resourceFactory.create('Movie');
16
- this._origin = resourceFactory.create('Origin');
17
- this._person = resourceFactory.create('Person');
18
- this._power = resourceFactory.create('Power');
19
- this._promo = resourceFactory.create('Promo');
20
- this._publisher = resourceFactory.create('Publisher');
21
- this._series = resourceFactory.create('Series');
22
- this._storyArc = resourceFactory.create('StoryArc');
23
- this._team = resourceFactory.create('Team');
24
- this._thing = resourceFactory.create('Thing');
25
- this._video = resourceFactory.create('Video');
26
- this._videoCategory = resourceFactory.create('VideoCategory');
27
- this._videoType = resourceFactory.create('VideoType');
28
- this._volume = resourceFactory.create('Volume');
29
- }
30
- get character() {
31
- return this._character;
32
- }
33
- get concept() {
34
- return this._concept;
35
- }
36
- get episode() {
37
- return this._episode;
38
- }
39
- get issue() {
40
- return this._issue;
41
- }
42
- get location() {
43
- return this._location;
44
- }
45
- get movie() {
46
- return this._movie;
47
- }
48
- get origin() {
49
- return this._origin;
50
- }
51
- get person() {
52
- return this._person;
53
- }
54
- get power() {
55
- return this._power;
56
- }
57
- get promo() {
58
- return this._promo;
59
- }
60
- get publisher() {
61
- return this._publisher;
62
- }
63
- get series() {
64
- return this._series;
65
- }
66
- get storyArc() {
67
- return this._storyArc;
68
- }
69
- get team() {
70
- return this._team;
71
- }
72
- get thing() {
73
- return this._thing;
74
- }
75
- get video() {
76
- return this._video;
77
- }
78
- get videoCategory() {
79
- return this._videoCategory;
80
- }
81
- get videoType() {
82
- return this._videoType;
83
- }
84
- get volume() {
85
- return this._volume;
14
+ this.resourceFactory = new ResourceFactory(httpClient, urlBuilder);
15
+ // Discover available resources dynamically
16
+ this.resourceNames = Object.keys(resources);
17
+ // Return a proxy that provides lazy loading with full type safety
18
+ return new Proxy(this, {
19
+ get(target, prop) {
20
+ if (typeof prop === 'string' && target.isResourceProperty(prop)) {
21
+ return target.getResource(prop);
22
+ }
23
+ return Reflect.get(target, prop);
24
+ },
25
+ });
26
+ }
27
+ isResourceProperty(prop) {
28
+ // Check if this property corresponds to a known resource
29
+ const className = prop.charAt(0).toUpperCase() + prop.slice(1);
30
+ return this.resourceNames.includes(className);
31
+ }
32
+ getResource(propertyName) {
33
+ // Lazy loading: create resource only when first accessed
34
+ if (!this.resourceCache.has(propertyName)) {
35
+ const className = propertyName.charAt(0).toUpperCase() + propertyName.slice(1);
36
+ try {
37
+ const resource = this.resourceFactory.create(className);
38
+ this.resourceCache.set(propertyName, resource);
39
+ }
40
+ catch (error) {
41
+ throw new Error(`Failed to create resource '${className}': ${error}`);
42
+ }
43
+ }
44
+ return this.resourceCache.get(propertyName);
45
+ }
46
+ getAvailableResources() {
47
+ return this.resourceNames.map((name) => classNameToPropertyName(name));
48
+ }
49
+ hasResource(resourceName) {
50
+ return this.isResourceProperty(resourceName);
51
+ }
52
+ getResourceByName(resourceName) {
53
+ if (!this.isResourceProperty(resourceName)) {
54
+ return undefined;
55
+ }
56
+ return this.getResource(resourceName);
57
+ }
58
+ isResourceLoaded(resourceName) {
59
+ return this.resourceCache.has(resourceName);
60
+ }
61
+ getCacheStats() {
62
+ const total = this.resourceNames.length;
63
+ const loaded = this.resourceCache.size;
64
+ const loadedResources = Array.from(this.resourceCache.keys());
65
+ return { total, loaded, loadedResources };
86
66
  }
87
67
  }
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29taWMtdmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21pYy12aW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdkQsTUFBTSxPQUFPLFNBQVM7SUFxQnBCLFlBQVksR0FBVyxFQUFFLE9BQXFCO1FBQzVDLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwRCxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FDbkQsR0FBRyxFQUNILFFBQVEsQ0FBQyxPQUFPLENBQ2pCLENBQUM7UUFDRixNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMs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LENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudEZhY3RvcnkgfSBmcm9tICcuL2h0dHAtY2xpZW50L2luZGV4LmpzJztcbmltcG9ydCB7IHVzZXJPcHRpb25zLCBsb2FkT3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucy9pbmRleC5qcyc7XG5pbXBvcnQgeyBSZXNvdXJjZUZhY3RvcnkgfSBmcm9tICcuL3Jlc291cmNlcy9pbmRleC5qcyc7XG5cbmV4cG9ydCBjbGFzcyBDb21pY1ZpbmUge1xuICBwcml2YXRlIF9jaGFyYWN0ZXI7XG4gIHByaXZhdGUgX2NvbmNlcHQ7XG4gIHByaXZhdGUgX2VwaXNvZGU7XG4gIHByaXZhdGUgX2lzc3VlO1xuICBwcml2YXRlIF9sb2NhdGlvbjtcbiAgcHJpdmF0ZSBfbW92aWU7XG4gIHByaXZhdGUgX29yaWdpbjtcbiAgcHJpdmF0ZSBfcGVyc29uO1xuICBwcml2YXRlIF9wb3dlcjtcbiAgcHJpdmF0ZSBfcHJvbW87XG4gIHByaXZhdGUgX3B1Ymxpc2hlcjtcbiAgcHJpdmF0ZSBfc2VyaWVzO1xuICBwcml2YXRlIF9zdG9yeUFyYztcbiAgcHJpdmF0ZSBfdGVhbTtcbiAgcHJpdmF0ZSBfdGhpbmc7XG4gIHByaXZhdGUgX3ZpZGVvO1xuICBwcml2YXRlIF92aWRlb0NhdGVnb3J5O1xuICBwcml2YXRlIF92aWRlb1R5cGU7XG4gIHByaXZhdGUgX3ZvbHVtZTtcblxuICBjb25zdHJ1Y3RvcihrZXk6IHN0cmluZywgb3B0aW9ucz86IHVzZXJPcHRpb25zKSB7XG4gICAgY29uc3QgX29wdGlvbnMgPSBsb2FkT3B0aW9ucyhvcHRpb25zKTtcbiAgICBjb25zdCBodHRwQ2xpZW50ID0gSHR0cENsaWVudEZhY3RvcnkuY3JlYXRlQ2xpZW50KCk7XG4gICAgY29uc3QgdXJsQnVpbGRlciA9IEh0dHBDbGllbnRGYWN0b3J5LmNyZWF0ZVVybEJ1aWxkZXIoXG4gICAgICBrZXksXG4gICAgICBfb3B0aW9ucy5iYXNlVXJsLFxuICAgICk7XG4gICAgY29uc3QgcmVzb3VyY2VGYWN0b3J5ID0gbmV3IFJlc291cmNlRmFjdG9yeShodHRwQ2xpZW50LCB1cmxCdWlsZGVyKTtcblxuICAgIHRoaXMuX2NoYXJhY3RlciA9IHJlc291cmNlRmFjdG9yeS5jcmVhdGUoJ0NoYXJhY3RlcicpO1xuICAgIHRoaXMuX2NvbmNlcHQgPSByZXNvdXJjZUZhY3RvcnkuY3JlYXRlKCdDb25jZXB0Jyk7XG4gICAgdGhpcy5fZXBpc29kZSA9IHJlc291cmNlRmFjdG9yeS5jcmVhdGUoJ0VwaXNvZGUnKTtcbiAgICB0aGlzLl9pc3N1ZSA9IHJlc291cmNlRmFjdG9yeS5jcmVhdGUoJ0lzc3VlJyk7XG4gICAgdGhpcy5fbG9jYXRpb24gPSByZXNvdXJjZUZhY3RvcnkuY3JlYXRlKCdMb2NhdGlvbicpO1xuICAgIHRoaXMuX21vdmllID0gcmVzb3VyY2VGYWN0b3J5LmNyZWF0ZSgnTW92aWUnKTtcbiAgICB0aGlzLl9vcmlnaW4gPSByZXNvdXJjZUZhY3RvcnkuY3JlYXRlKCdPcmlnaW4nKTtcbiAgICB0aGlzLl9wZXJzb24gPSByZXNvdXJjZUZhY3RvcnkuY3JlYXRlKCdQZXJzb24nKTtcbiAgICB0aGlzLl9wb3dlciA9IHJlc291cmNlRmFjdG9yeS5jcmVhdGUoJ1Bvd2VyJyk7XG4gICAgdGhpcy5fcHJvbW8gPSByZXNvdXJjZUZhY3RvcnkuY3JlYXRlKCdQcm9tbycpO1xuICAgIHRoaXMuX3B1Ymxpc2hlciA9IHJlc291cmNlRmFjdG9yeS5jcmVhdGUoJ1B1Ymxpc2hlcicpO1xuICAgIHRoaXMuX3NlcmllcyA9IHJlc291cmNlRmFjdG9yeS5jcmVhdGUoJ1NlcmllcycpO1xuICAgIHRoaXMuX3N0b3J5QXJjID0gcmVzb3VyY2VGYWN0b3J5LmNyZWF0ZSgnU3RvcnlBcmMnKTtcbiAgICB0aGlzLl90ZWFtID0gcmVzb3VyY2VGYWN0b3J5LmNyZWF0ZSgnVGVhbScpO1xuICAgIHRoaXMuX3RoaW5nID0gcmVzb3VyY2VGYWN0b3J5LmNyZWF0ZSgnVGhpbmcnKTtcbiAgICB0aGlzLl92aWRlbyA9IHJlc291cmNlRmFjdG9yeS5jcmVhdGUoJ1ZpZGVvJyk7XG4gICAgdGhpcy5fdmlkZW9DYXRlZ29yeSA9IHJlc291cmNlRmFjdG9yeS5jcmVhdGUoJ1ZpZGVvQ2F0ZWdvcnknKTtcbiAgICB0aGlzLl92aWRlb1R5cGUgPSByZXNvdXJjZUZhY3RvcnkuY3JlYXRlKCdWaWRlb1R5cGUnKTtcbiAgICB0aGlzLl92b2x1bWUgPSByZXNvdXJjZUZhY3RvcnkuY3JlYXRlKCdWb2x1bWUnKTtcbiAgfVxuXG4gIGdldCBjaGFyYWN0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYXJhY3RlcjtcbiAgfVxuXG4gIGdldCBjb25jZXB0KCkge1xuICAgIHJldHVybiB0aGlzLl9jb25jZXB0O1xuICB9XG5cbiAgZ2V0IGVwaXNvZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VwaXNvZGU7XG4gIH1cblxuICBnZXQgaXNzdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzc3VlO1xuICB9XG5cbiAgZ2V0IGxvY2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2NhdGlvbjtcbiAgfVxuXG4gIGdldCBtb3ZpZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbW92aWU7XG4gIH1cblxuICBnZXQgb3JpZ2luKCkge1xuICAgIHJldHVybiB0aGlzLl9vcmlnaW47XG4gIH1cblxuICBnZXQgcGVyc29uKCkge1xuICAgIHJldHVybiB0aGlzLl9wZXJzb247XG4gIH1cblxuICBnZXQgcG93ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Bvd2VyO1xuICB9XG5cbiAgZ2V0IHByb21vKCkge1xuICAgIHJldHVybiB0aGlzLl9wcm9tbztcbiAgfVxuXG4gIGdldCBwdWJsaXNoZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3B1Ymxpc2hlcjtcbiAgfVxuXG4gIGdldCBzZXJpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcmllcztcbiAgfVxuXG4gIGdldCBzdG9yeUFyYygpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RvcnlBcmM7XG4gIH1cblxuICBnZXQgdGVhbSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdGVhbTtcbiAgfVxuXG4gIGdldCB0aGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5fdGhpbmc7XG4gIH1cblxuICBnZXQgdmlkZW8oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZGVvO1xuICB9XG5cbiAgZ2V0IHZpZGVvQ2F0ZWdvcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZGVvQ2F0ZWdvcnk7XG4gIH1cblxuICBnZXQgdmlkZW9UeXBlKCkge1xuICAgIHJldHVybiB0aGlzLl92aWRlb1R5cGU7XG4gIH1cblxuICBnZXQgdm9sdW1lKCkge1xuICAgIHJldHVybiB0aGlzLl92b2x1bWU7XG4gIH1cbn1cbiJdfQ==
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29taWMtdmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21pYy12aW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxLQUFLLFNBQVMsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRCxTQUFTLHVCQUF1QixDQUFDLFNBQWlCO0lBQ2hELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFXRCxNQUFNLE9BQU8sU0FBUztJQTBCcEIsWUFBWSxHQUFXLEVBQUUsT0FBcUI7UUF4QnRDLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7UUF5QjFELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwRCxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FDbkQsR0FBRyxFQUNILFFBQVEsQ0FBQyxPQUFPLENBQ2pCLENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVuRSwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTVDLGtFQUFrRTtRQUNsRSxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtZQUNyQixHQUFHLENBQUMsTUFBTSxFQUFFLElBQXFCO2dCQUMvQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDaEUsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO2dCQUNELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkMsQ0FBQztTQUNGLENBQWMsQ0FBQztJQUNsQixDQUFDO0lBRU8sa0JBQWtCLENBQUMsSUFBWTtRQUNyQyx5REFBeUQ7UUFDekQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLFdBQVcsQ0FBQyxZQUFvQjtRQUN0Qyx5REFBeUQ7UUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDMUMsTUFBTSxTQUFTLEdBQ2IsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQztnQkFDSCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDMUMsU0FBbUMsQ0FDcEMsQ0FBQztnQkFDRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakQsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsU0FBUyxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDeEUsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsV0FBVyxDQUFDLFlBQW9CO1FBQzlCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxZQUFvQjtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDM0MsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsWUFBb0I7UUFDbkMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsYUFBYTtRQUtYLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBQ3hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBQ3ZDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxDQUFDO0lBQzVDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnRGYWN0b3J5IH0gZnJvbSAnLi9odHRwLWNsaWVudC9pbmRleC5qcyc7XG5pbXBvcnQgeyB1c2VyT3B0aW9ucywgbG9hZE9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMvaW5kZXguanMnO1xuaW1wb3J0IHsgUmVzb3VyY2VGYWN0b3J5IH0gZnJvbSAnLi9yZXNvdXJjZXMvaW5kZXguanMnO1xuaW1wb3J0ICogYXMgcmVzb3VyY2VzIGZyb20gJy4vcmVzb3VyY2VzL3Jlc291cmNlLWxpc3QuanMnO1xuXG5mdW5jdGlvbiBjbGFzc05hbWVUb1Byb3BlcnR5TmFtZShjbGFzc05hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjbGFzc05hbWUuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBjbGFzc05hbWUuc2xpY2UoMSk7XG59XG5cbnR5cGUgUmVzb3VyY2VJbnN0YW5jZSA9IFJldHVyblR5cGU8UmVzb3VyY2VGYWN0b3J5WydjcmVhdGUnXT47XG5cbi8vIENyZWF0ZSByZXNvdXJjZSBwcm9wZXJ0eSB0eXBlIG1hcHBpbmcgZHluYW1pY2FsbHlcbnR5cGUgUmVzb3VyY2VQcm9wZXJ0eU1hcCA9IHtcbiAgW0sgaW4ga2V5b2YgdHlwZW9mIHJlc291cmNlcyBhcyBVbmNhcGl0YWxpemU8Sz5dOiBJbnN0YW5jZVR5cGU8XG4gICAgKHR5cGVvZiByZXNvdXJjZXMpW0tdXG4gID47XG59O1xuXG5leHBvcnQgY2xhc3MgQ29taWNWaW5lIGltcGxlbWVudHMgUmVzb3VyY2VQcm9wZXJ0eU1hcCB7XG4gIHByaXZhdGUgcmVzb3VyY2VGYWN0b3J5OiBSZXNvdXJjZUZhY3Rvcnk7XG4gIHByaXZhdGUgcmVzb3VyY2VDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBSZXNvdXJjZUluc3RhbmNlPigpO1xuICBwcml2YXRlIHJlc291cmNlTmFtZXM6IHN0cmluZ1tdO1xuXG4gIC8vIFR5cGVTY3JpcHQgcHJvcGVydHkgZGVjbGFyYXRpb25zIGZvciBzdGF0aWMgdHlwaW5nICh3aWxsIGJlIHByb3ZpZGVkIGJ5IFByb3h5KVxuICBkZWNsYXJlIHJlYWRvbmx5IGNoYXJhY3RlcjogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnY2hhcmFjdGVyJ107XG4gIGRlY2xhcmUgcmVhZG9ubHkgY29uY2VwdDogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnY29uY2VwdCddO1xuICBkZWNsYXJlIHJlYWRvbmx5IGVwaXNvZGU6IFJlc291cmNlUHJvcGVydHlNYXBbJ2VwaXNvZGUnXTtcbiAgZGVjbGFyZSByZWFkb25seSBpc3N1ZTogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnaXNzdWUnXTtcbiAgZGVjbGFyZSByZWFkb25seSBsb2NhdGlvbjogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnbG9jYXRpb24nXTtcbiAgZGVjbGFyZSByZWFkb25seSBtb3ZpZTogUmVzb3VyY2VQcm9wZXJ0eU1hcFsnbW92aWUnXTtcbiAgZGVjbGFyZSByZWFkb25seSBvcmlnaW46IFJlc291cmNlUHJvcGVydHlNYXBbJ29yaWdpbiddO1xuICBkZWNsYXJlIHJlYWRvbmx5IHBlcnNvbjogUmVzb3VyY2VQcm9wZXJ0eU1hcFsncGVyc29uJ107XG4gIGRlY2xhcmUgcmVhZG9ubHkgcG93ZXI6IFJlc291cmNlUHJvcGVydHlNYXBbJ3Bvd2VyJ107XG4gIGRlY2xhcmUgcmVhZG9ubHkgcHJvbW86IFJlc291cmNlUHJvcGVydHlNYXBbJ3Byb21vJ107XG4gIGRlY2xhcmUgcmVhZG9ubHkgcHVibGlzaGVyOiBSZXNvdXJjZVByb3BlcnR5TWFwWydwdWJsaXNoZXInXTtcbiAgZGVjbGFyZSByZWFkb25seSBzZXJpZXM6IFJlc291cmNlUHJvcGVydHlNYXBbJ3NlcmllcyddO1xuICBkZWNsYXJlIHJlYWRvbmx5IHN0b3J5QXJjOiBSZXNvdXJjZVByb3BlcnR5TWFwWydzdG9yeUFyYyddO1xuICBkZWNsYXJlIHJlYWRvbmx5IHRlYW06IFJlc291cmNlUHJvcGVydHlNYXBbJ3RlYW0nXTtcbiAgZGVjbGFyZSByZWFkb25seSB0aGluZzogUmVzb3VyY2VQcm9wZXJ0eU1hcFsndGhpbmcnXTtcbiAgZGVjbGFyZSByZWFkb25seSB2aWRlbzogUmVzb3VyY2VQcm9wZXJ0eU1hcFsndmlkZW8nXTtcbiAgZGVjbGFyZSByZWFkb25seSB2aWRlb0NhdGVnb3J5OiBSZXNvdXJjZVByb3BlcnR5TWFwWyd2aWRlb0NhdGVnb3J5J107XG4gIGRlY2xhcmUgcmVhZG9ubHkgdmlkZW9UeXBlOiBSZXNvdXJjZVByb3BlcnR5TWFwWyd2aWRlb1R5cGUnXTtcbiAgZGVjbGFyZSByZWFkb25seSB2b2x1bWU6IFJlc291cmNlUHJvcGVydHlNYXBbJ3ZvbHVtZSddO1xuXG4gIGNvbnN0cnVjdG9yKGtleTogc3RyaW5nLCBvcHRpb25zPzogdXNlck9wdGlvbnMpIHtcbiAgICBjb25zdCBfb3B0aW9ucyA9IGxvYWRPcHRpb25zKG9wdGlvbnMpO1xuICAgIGNvbnN0IGh0dHBDbGllbnQgPSBIdHRwQ2xpZW50RmFjdG9yeS5jcmVhdGVDbGllbnQoKTtcbiAgICBjb25zdCB1cmxCdWlsZGVyID0gSHR0cENsaWVudEZhY3RvcnkuY3JlYXRlVXJsQnVpbGRlcihcbiAgICAgIGtleSxcbiAgICAgIF9vcHRpb25zLmJhc2VVcmwsXG4gICAgKTtcbiAgICB0aGlzLnJlc291cmNlRmFjdG9yeSA9IG5ldyBSZXNvdXJjZUZhY3RvcnkoaHR0cENsaWVudCwgdXJsQnVpbGRlcik7XG5cbiAgICAvLyBEaXNjb3ZlciBhdmFpbGFibGUgcmVzb3VyY2VzIGR5bmFtaWNhbGx5XG4gICAgdGhpcy5yZXNvdXJjZU5hbWVzID0gT2JqZWN0LmtleXMocmVzb3VyY2VzKTtcblxuICAgIC8vIFJldHVybiBhIHByb3h5IHRoYXQgcHJvdmlkZXMgbGF6eSBsb2FkaW5nIHdpdGggZnVsbCB0eXBlIHNhZmV0eVxuICAgIHJldHVybiBuZXcgUHJveHkodGhpcywge1xuICAgICAgZ2V0KHRhcmdldCwgcHJvcDogc3RyaW5nIHwgc3ltYm9sKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycgJiYgdGFyZ2V0LmlzUmVzb3VyY2VQcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICAgIHJldHVybiB0YXJnZXQuZ2V0UmVzb3VyY2UocHJvcCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCk7XG4gICAgICB9LFxuICAgIH0pIGFzIENvbWljVmluZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZXNvdXJjZVByb3BlcnR5KHByb3A6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGlmIHRoaXMgcHJvcGVydHkgY29ycmVzcG9uZHMgdG8gYSBrbm93biByZXNvdXJjZVxuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHByb3AuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwcm9wLnNsaWNlKDEpO1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlTmFtZXMuaW5jbHVkZXMoY2xhc3NOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVzb3VyY2UocHJvcGVydHlOYW1lOiBzdHJpbmcpOiBSZXNvdXJjZUluc3RhbmNlIHtcbiAgICAvLyBMYXp5IGxvYWRpbmc6IGNyZWF0ZSByZXNvdXJjZSBvbmx5IHdoZW4gZmlyc3QgYWNjZXNzZWRcbiAgICBpZiAoIXRoaXMucmVzb3VyY2VDYWNoZS5oYXMocHJvcGVydHlOYW1lKSkge1xuICAgICAgY29uc3QgY2xhc3NOYW1lID1cbiAgICAgICAgcHJvcGVydHlOYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcHJvcGVydHlOYW1lLnNsaWNlKDEpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzb3VyY2UgPSB0aGlzLnJlc291cmNlRmFjdG9yeS5jcmVhdGUoXG4gICAgICAgICAgY2xhc3NOYW1lIGFzIGtleW9mIHR5cGVvZiByZXNvdXJjZXMsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzb3VyY2VDYWNoZS5zZXQocHJvcGVydHlOYW1lLCByZXNvdXJjZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgcmVzb3VyY2UgJyR7Y2xhc3NOYW1lfSc6ICR7ZXJyb3J9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlc291cmNlQ2FjaGUuZ2V0KHByb3BlcnR5TmFtZSkhO1xuICB9XG5cbiAgZ2V0QXZhaWxhYmxlUmVzb3VyY2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZU5hbWVzLm1hcCgobmFtZSkgPT4gY2xhc3NOYW1lVG9Qcm9wZXJ0eU5hbWUobmFtZSkpO1xuICB9XG5cbiAgaGFzUmVzb3VyY2UocmVzb3VyY2VOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1Jlc291cmNlUHJvcGVydHkocmVzb3VyY2VOYW1lKTtcbiAgfVxuXG4gIGdldFJlc291cmNlQnlOYW1lKHJlc291cmNlTmFtZTogc3RyaW5nKTogUmVzb3VyY2VJbnN0YW5jZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmlzUmVzb3VyY2VQcm9wZXJ0eShyZXNvdXJjZU5hbWUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZShyZXNvdXJjZU5hbWUpO1xuICB9XG5cbiAgaXNSZXNvdXJjZUxvYWRlZChyZXNvdXJjZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlQ2FjaGUuaGFzKHJlc291cmNlTmFtZSk7XG4gIH1cblxuICBnZXRDYWNoZVN0YXRzKCk6IHtcbiAgICB0b3RhbDogbnVtYmVyO1xuICAgIGxvYWRlZDogbnVtYmVyO1xuICAgIGxvYWRlZFJlc291cmNlczogc3RyaW5nW107XG4gIH0ge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5yZXNvdXJjZU5hbWVzLmxlbmd0aDtcbiAgICBjb25zdCBsb2FkZWQgPSB0aGlzLnJlc291cmNlQ2FjaGUuc2l6ZTtcbiAgICBjb25zdCBsb2FkZWRSZXNvdXJjZXMgPSBBcnJheS5mcm9tKHRoaXMucmVzb3VyY2VDYWNoZS5rZXlzKCkpO1xuICAgIHJldHVybiB7IHRvdGFsLCBsb2FkZWQsIGxvYWRlZFJlc291cmNlcyB9O1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -71,7 +71,7 @@
71
71
  "main": "lib/cjs/index.js",
72
72
  "license": "MIT",
73
73
  "homepage": "https://github.com/AllyMurray/comic-vine#readme",
74
- "version": "1.3.1",
74
+ "version": "1.3.2",
75
75
  "bugs": {
76
76
  "url": "https://github.com/AllyMurray/comic-vine/issues"
77
77
  },