@licensespring/node-sdk 1.0.7 → 1.0.9

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/README.md CHANGED
@@ -798,6 +798,35 @@ const licenseAPI = new LicenseAPI({
798
798
  });
799
799
  ```
800
800
 
801
+ ## Proxy
802
+
803
+ All calls to the server can be proxied by providing a proxy definition in either of the following two ways:
804
+
805
+ A. By providing a proxy definition in the initialization config argument for `LicenseAPI`, `LicenseManager` and `FloatingAPI`, e.g.:
806
+
807
+ ```javascript
808
+ const licenseAPI = new LicenseAPI({
809
+ apiKey: '12345678-4bfe-4e3a-8737-757004d6294c',
810
+ sharedKey: 'eYuHrlajvIVTiSFIXpxpKhw78f4Ewy-00-12345678',
811
+ appName: 'js-sdk-test-1',
812
+ appVersion: '0.0.1',
813
+ proxy: {
814
+ host: '127.0.0.1',
815
+ port: 9000,
816
+ },
817
+ });
818
+ ```
819
+
820
+ B. or by calling the `setProxy` method on an initialized `LicenseAPI`, `LicenseManager` or `FloatingAPI` object, e.g.:
821
+
822
+ ```javascript
823
+ licenseAPI.setProxy({
824
+ host: '127.0.0.1',
825
+ port: 9000,
826
+ });
827
+ ```
828
+
829
+ For the type declaration of the proxy definition object, see `AxiosProxyConfig` in the following Types section.
801
830
 
802
831
  ## Types
803
832
 
@@ -844,8 +873,19 @@ export type LicensespringConfig = {
844
873
  isGuardFileEnabled: boolean,
845
874
  hardwareIDMethod: number,
846
875
  sdkVersion: string,
876
+ proxy?: AxiosProxyConfig,
847
877
  };
848
878
 
879
+ interface AxiosProxyConfig {
880
+ host: string,
881
+ port: number,
882
+ protocol?: string,
883
+ auth?: {
884
+ username: string,
885
+ password: string,
886
+ }
887
+ }
888
+
849
889
  export type LicensespringAPIConfig = Omit<LicensespringConfig, 'productCode'>;
850
890
 
851
891
  export type LicensespringConfigDef = Omit<LicensespringConfig, 'apiPath'|'publicKey'|'filename'|'filePath'|'gracePeriod'|'fileKey'|'isGuardFileEnabled'|'hardwareIDMethod'|'sdkVersion'> & {
@@ -857,6 +897,7 @@ export type LicensespringConfigDef = Omit<LicensespringConfig, 'apiPath'|'public
857
897
  fileKey?: string,
858
898
  isGuardFileEnabled?: boolean,
859
899
  hardwareIDMethod?: number,
900
+ proxy?: AxiosProxyConfig,
860
901
  };
861
902
 
862
903
  export type LicensespringAPIConfigDef = Omit<LicensespringAPIConfig, 'apiPath'|'publicKey'|'filename'|'filePath'|'gracePeriod'|'fileKey'|'isGuardFileEnabled'|'hardwareIDMethod'|'sdkVersion'> & {
@@ -868,6 +909,7 @@ export type LicensespringAPIConfigDef = Omit<LicensespringAPIConfig, 'apiPath'|'
868
909
  fileKey?: string,
869
910
  isGuardFileEnabled?: boolean,
870
911
  hardwareIDMethod?: number,
912
+ proxy?: AxiosProxyConfig,
871
913
  };
872
914
 
873
915
  export type LicensespringFloatingConfig = {
@@ -875,6 +917,7 @@ export type LicensespringFloatingConfig = {
875
917
  appVersion: string,
876
918
  hardwareIDMethod: number,
877
919
  sdkVersion: string,
920
+ proxy?: AxiosProxyConfig,
878
921
  };
879
922
 
880
923
  export type LicensespringFloatingConfigDef = Omit<LicensespringFloatingConfig, 'hardwareIDMethod'|'sdkVersion'> & {
@@ -1356,11 +1399,20 @@ export type LicenseConsumptionsResponse = {
1356
1399
  };
1357
1400
 
1358
1401
  export type LicenseFeatureConsumptionResponse = {
1359
- total_consumptions: number,
1360
- is_floating: boolean,
1402
+ allow_negative_consumptions: boolean,
1403
+ allow_overages: boolean,
1404
+ allow_unlimited_consumptions: boolean,
1405
+ consumption_period: 'daily' | 'weekly' | 'monthly' | 'annually' | null,
1361
1406
  is_floating_cloud: boolean,
1362
- floating_timeout: number,
1363
- floating_users: number,
1407
+ is_floating: boolean,
1408
+ max_consumptions: number,
1409
+ max_overages: number,
1410
+ reset_consumption: boolean,
1411
+ total_consumptions: number,
1412
+
1413
+ // the following properties are only present on floating and floating cloud features:
1414
+ floating_timeout?: number | null,
1415
+ floating_users?: number,
1364
1416
  };
1365
1417
 
1366
1418
  export type ProductDetailsResponse = ProductDetails & {
@@ -4,6 +4,7 @@ import LicenseFile from './license-file';
4
4
  import License from './license';
5
5
  import FloatingAPI from './floating';
6
6
  import { Watchdog } from './watchdog';
7
+ import { AxiosProxyConfig } from 'axios';
7
8
  export default class AbstractManager {
8
9
  protected config: LicensespringConfigDef;
9
10
  protected hardwareIDMethod: number;
@@ -12,6 +13,7 @@ export default class AbstractManager {
12
13
  protected licenseFile: LicenseFile;
13
14
  watchdog: Watchdog;
14
15
  constructor(config: LicensespringConfigDef, hardwareIDMethod?: number);
16
+ setProxy(proxy: AxiosProxyConfig | null): void;
15
17
  getHardwareID(algorithm?: HardwareIdAlgorithm): string;
16
18
  loadLicense(): License;
17
19
  isLicenseFileCorrupted(): boolean;
@@ -45,8 +45,8 @@ class AbstractManager {
45
45
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
46
46
  this.config = config;
47
47
  this.hardwareIDMethod = hardwareIDMethod;
48
- const _config = Object.assign(Object.assign({}, config), { apiPath: (_a = config.apiPath) !== null && _a !== void 0 ? _a : process.env.API_PATH, publicKey: (_b = config.publicKey) !== null && _b !== void 0 ? _b : process.env.PUBLIC_KEY, filename: (_c = config.filename) !== null && _c !== void 0 ? _c : process.env.FILENAME, filePath: (_d = config.filePath) !== null && _d !== void 0 ? _d : process.env.FILE_PATH, gracePeriod: (_e = config.gracePeriod) !== null && _e !== void 0 ? _e : 24, fileKey: (_f = config.fileKey) !== null && _f !== void 0 ? _f : process.env.LICENSE_FILE_KEY, isGuardFileEnabled: (_h = (_g = config.isGuardFileEnabled) !== null && _g !== void 0 ? _g : !!process.env.GUARD_FILE_ENABLED) !== null && _h !== void 0 ? _h : false, hardwareIDMethod: (_j = hardwareIDMethod !== null && hardwareIDMethod !== void 0 ? hardwareIDMethod : config.hardwareIDMethod) !== null && _j !== void 0 ? _j : 0, sdkVersion: version_1.default });
49
- (() => { const $guard = typia_1.default.assert.guard; const $io0 = input => "string" === typeof input.apiKey && "string" === typeof input.sharedKey && "string" === typeof input.apiPath && "string" === typeof input.publicKey && "string" === typeof input.productCode && "string" === typeof input.appName && "string" === typeof input.appVersion && "string" === typeof input.filePath && "string" === typeof input.filename && "number" === typeof input.gracePeriod && "string" === typeof input.fileKey && (undefined === input.airGapKey || "string" === typeof input.airGapKey) && "boolean" === typeof input.isGuardFileEnabled && "number" === typeof input.hardwareIDMethod && "string" === typeof input.sdkVersion; const $ao0 = (input, _path, _exceptionable = true) => ("string" === typeof input.apiKey || $guard(_exceptionable, {
48
+ const _config = Object.assign(Object.assign({}, config), { apiPath: (_a = config.apiPath) !== null && _a !== void 0 ? _a : process.env.API_PATH, publicKey: (_b = config.publicKey) !== null && _b !== void 0 ? _b : process.env.PUBLIC_KEY, filename: (_c = config.filename) !== null && _c !== void 0 ? _c : process.env.FILENAME, filePath: (_d = config.filePath) !== null && _d !== void 0 ? _d : process.env.FILE_PATH, gracePeriod: (_e = config.gracePeriod) !== null && _e !== void 0 ? _e : 24, fileKey: (_f = config.fileKey) !== null && _f !== void 0 ? _f : process.env.LICENSE_FILE_KEY, isGuardFileEnabled: (_h = (_g = config.isGuardFileEnabled) !== null && _g !== void 0 ? _g : !!process.env.GUARD_FILE_ENABLED) !== null && _h !== void 0 ? _h : false, hardwareIDMethod: (_j = hardwareIDMethod !== null && hardwareIDMethod !== void 0 ? hardwareIDMethod : config.hardwareIDMethod) !== null && _j !== void 0 ? _j : 0, sdkVersion: version_1.default, proxy: config.proxy });
49
+ (() => { const $guard = typia_1.default.assert.guard; const $io0 = input => "string" === typeof input.apiKey && "string" === typeof input.sharedKey && "string" === typeof input.apiPath && "string" === typeof input.publicKey && "string" === typeof input.productCode && "string" === typeof input.appName && "string" === typeof input.appVersion && "string" === typeof input.filePath && "string" === typeof input.filename && "number" === typeof input.gracePeriod && "string" === typeof input.fileKey && (undefined === input.airGapKey || "string" === typeof input.airGapKey) && "boolean" === typeof input.isGuardFileEnabled && "number" === typeof input.hardwareIDMethod && "string" === typeof input.sdkVersion && (undefined === input.proxy || "object" === typeof input.proxy && null !== input.proxy && $io1(input.proxy)); const $io1 = input => "string" === typeof input.host && "number" === typeof input.port && (undefined === input.auth || "object" === typeof input.auth && null !== input.auth && $io2(input.auth)) && (undefined === input.protocol || "string" === typeof input.protocol); const $io2 = input => "string" === typeof input.username && "string" === typeof input.password; const $ao0 = (input, _path, _exceptionable = true) => ("string" === typeof input.apiKey || $guard(_exceptionable, {
50
50
  path: _path + ".apiKey",
51
51
  expected: "string",
52
52
  value: input.apiKey
@@ -106,6 +106,42 @@ class AbstractManager {
106
106
  path: _path + ".sdkVersion",
107
107
  expected: "string",
108
108
  value: input.sdkVersion
109
+ }, _errorFactory)) && (undefined === input.proxy || ("object" === typeof input.proxy && null !== input.proxy || $guard(_exceptionable, {
110
+ path: _path + ".proxy",
111
+ expected: "(AxiosProxyConfig | undefined)",
112
+ value: input.proxy
113
+ }, _errorFactory)) && $ao1(input.proxy, _path + ".proxy", true && _exceptionable) || $guard(_exceptionable, {
114
+ path: _path + ".proxy",
115
+ expected: "(AxiosProxyConfig | undefined)",
116
+ value: input.proxy
117
+ }, _errorFactory)); const $ao1 = (input, _path, _exceptionable = true) => ("string" === typeof input.host || $guard(_exceptionable, {
118
+ path: _path + ".host",
119
+ expected: "string",
120
+ value: input.host
121
+ }, _errorFactory)) && ("number" === typeof input.port || $guard(_exceptionable, {
122
+ path: _path + ".port",
123
+ expected: "number",
124
+ value: input.port
125
+ }, _errorFactory)) && (undefined === input.auth || ("object" === typeof input.auth && null !== input.auth || $guard(_exceptionable, {
126
+ path: _path + ".auth",
127
+ expected: "(AxiosBasicCredentials | undefined)",
128
+ value: input.auth
129
+ }, _errorFactory)) && $ao2(input.auth, _path + ".auth", true && _exceptionable) || $guard(_exceptionable, {
130
+ path: _path + ".auth",
131
+ expected: "(AxiosBasicCredentials | undefined)",
132
+ value: input.auth
133
+ }, _errorFactory)) && (undefined === input.protocol || "string" === typeof input.protocol || $guard(_exceptionable, {
134
+ path: _path + ".protocol",
135
+ expected: "(string | undefined)",
136
+ value: input.protocol
137
+ }, _errorFactory)); const $ao2 = (input, _path, _exceptionable = true) => ("string" === typeof input.username || $guard(_exceptionable, {
138
+ path: _path + ".username",
139
+ expected: "string",
140
+ value: input.username
141
+ }, _errorFactory)) && ("string" === typeof input.password || $guard(_exceptionable, {
142
+ path: _path + ".password",
143
+ expected: "string",
144
+ value: input.password
109
145
  }, _errorFactory)); const __is = input => "object" === typeof input && null !== input && $io0(input); let _errorFactory; return (input, errorFactory) => {
110
146
  if (false === __is(input)) {
111
147
  _errorFactory = errorFactory;
@@ -138,6 +174,11 @@ class AbstractManager {
138
174
  this.watchdog = new watchdog_1.Watchdog(new license_1.default(this.config.productCode, this.licenseAPI, this.licenseFile, this.floatingAPI));
139
175
  this.config = _config;
140
176
  }
177
+ setProxy(proxy) {
178
+ this.config.proxy = proxy !== null && proxy !== void 0 ? proxy : undefined;
179
+ this.licenseAPI.setProxy(proxy);
180
+ this.floatingAPI.setProxy(proxy);
181
+ }
141
182
  getHardwareID(algorithm) {
142
183
  var _a;
143
184
  if (algorithm === void 0) { algorithm = (_a = this.config.hardwareIDMethod) !== null && _a !== void 0 ? _a : 0; }
@@ -1 +1 @@
1
- {"version":3,"file":"abstract-manager.js","sourceRoot":"","sources":["../../src/abstract-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstract-manager.js","sourceRoot":"","sources":["../../src/abstract-manager.ts"],"names":[],"mappings":"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"}