@open-charging-cloud/chargy-core 0.9.1 → 0.10.0

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
@@ -158,7 +158,7 @@ npx playwright install chromium
158
158
  ## Publishing
159
159
 
160
160
  ```bash
161
- npm version 0.9.1 --no-git-tag-version
161
+ npm version 0.10.0 --no-git-tag-version
162
162
  npm run verify
163
163
  npm pack --dry-run
164
164
  npm pack
@@ -1,6 +1,7 @@
1
1
  import Decimal from 'decimal.js';
2
2
  import moment from 'moment';
3
3
  import { fileTypeFromBuffer } from 'file-type';
4
+ import isURL from 'is-url-superb';
4
5
  import jsQR from 'jsqr';
5
6
  import seekBzip from 'seek-bzip';
6
7
 
@@ -19391,6 +19392,26 @@ function isTOTPConfig(data) {
19391
19392
  return isObject(data) && typeof data["initialSharedSecret"] === "string" && typeof data["timeStep"] === "number";
19392
19393
  }
19393
19394
 
19395
+ // src/interfaces/IURL.ts
19396
+ var IURL_exports = {};
19397
+ __export(IURL_exports, {
19398
+ IsAURL: () => IsAURL,
19399
+ IsValidURL: () => IsValidURL,
19400
+ URLContext: () => URLContext
19401
+ });
19402
+ var URLContext = "https://open.charging.cloud/contexts/URL";
19403
+ function IsValidURL(value) {
19404
+ if (!isURL(value))
19405
+ return false;
19406
+ const protocol = new URL(value).protocol;
19407
+ return protocol === "http:" || protocol === "https:";
19408
+ }
19409
+ function IsAURL(data) {
19410
+ if (!isMandatoryJSONObject(data))
19411
+ return false;
19412
+ return data["@context"] === URLContext && typeof data["url"] === "string" && IsValidURL(data["url"]) && (data["method"] === void 0 || typeof data["method"] === "string") && (data["acceptType"] === void 0 || typeof data["acceptType"] === "string") && (data["actions"] === void 0 || Array.isArray(data["actions"]) && data["actions"].every((action) => typeof action === "string")) && (data["serviceTypes"] === void 0 || Array.isArray(data["serviceTypes"]) && data["serviceTypes"].every((serviceType) => typeof serviceType === "string")) && (data["serviceData"] === void 0 || isMandatoryJSONObject(data["serviceData"]));
19413
+ }
19414
+
19394
19415
  // src/qrCodeReader.ts
19395
19416
  var import_buffer = __toESM(require_buffer2());
19396
19417
  function isRecord(value) {
@@ -19624,6 +19645,8 @@ var Chargy = class {
19624
19645
  base32Decode;
19625
19646
  showPKIDetails;
19626
19647
  validationRules;
19648
+ resolveURLs;
19649
+ urlResolver;
19627
19650
  chargingStationOperators = new Array();
19628
19651
  chargingPools = new Array();
19629
19652
  chargingStations = new Array();
@@ -19633,7 +19656,7 @@ var Chargy = class {
19633
19656
  currentCTR = {};
19634
19657
  internalCTR = {};
19635
19658
  //#endregion
19636
- constructor(i18n, UILanguages, elliptic, moment2, asn1, base32Decode, ShowPKIDetails, validationRules = validationRules_default) {
19659
+ constructor(i18n, UILanguages, elliptic, moment2, asn1, base32Decode, ShowPKIDetails, validationRules = validationRules_default, resolveURLs = false, urlResolver) {
19637
19660
  this.i18n = i18n;
19638
19661
  this.uiLanguages = this.NormalizeUILanguages(UILanguages);
19639
19662
  this.elliptic = elliptic;
@@ -19642,6 +19665,38 @@ var Chargy = class {
19642
19665
  this.base32Decode = base32Decode;
19643
19666
  this.showPKIDetails = ShowPKIDetails;
19644
19667
  this.validationRules = validationRules;
19668
+ this.resolveURLs = resolveURLs;
19669
+ this.urlResolver = urlResolver;
19670
+ }
19671
+ async resolveURL(url) {
19672
+ if (!this.resolveURLs)
19673
+ return url;
19674
+ try {
19675
+ if (this.urlResolver != null)
19676
+ return await this.urlResolver(url);
19677
+ const response = await fetch(url.url, {
19678
+ method: "GET",
19679
+ headers: {
19680
+ "Accept": "application/chargy"
19681
+ }
19682
+ });
19683
+ if (!response.ok)
19684
+ return url;
19685
+ const resolvedURL = { ...url };
19686
+ const contentType = response.headers.get("Content-Type")?.split(";")[0]?.trim().toLowerCase();
19687
+ if (contentType === "application/chargy")
19688
+ resolvedURL.serviceTypes = ["chargy"];
19689
+ const responseBody = await response.text();
19690
+ try {
19691
+ const serviceData = JSON.parse(responseBody);
19692
+ if (isMandatoryJSONObject(serviceData))
19693
+ resolvedURL.serviceData = serviceData;
19694
+ } catch {
19695
+ }
19696
+ return resolvedURL;
19697
+ } catch {
19698
+ return url;
19699
+ }
19645
19700
  }
19646
19701
  fileNameWithoutExtension(fileName) {
19647
19702
  const lastSeparator = Math.max(fileName.lastIndexOf("/"), fileName.lastIndexOf("\\"));
@@ -20508,7 +20563,13 @@ var Chargy = class {
20508
20563
  certainty: 0
20509
20564
  };
20510
20565
  }
20511
- }
20566
+ } else if (IsValidURL(textContent))
20567
+ processedFile.result = await this.resolveURL(
20568
+ {
20569
+ "@context": URLContext,
20570
+ "url": textContent
20571
+ }
20572
+ );
20512
20573
  processedFiles.push(processedFile);
20513
20574
  }
20514
20575
  const publicKeyLookup = this.TryToCreatePublicKeyLookup(processedFiles);
@@ -20520,6 +20581,8 @@ var Chargy = class {
20520
20581
  return this.processChargeTransparencyRecord(processedFile.result);
20521
20582
  if (IsAChargeTransparencyLiveLink(processedFile.result))
20522
20583
  return processedFile.result;
20584
+ if (IsAURL(processedFile.result))
20585
+ return processedFile.result;
20523
20586
  return processedFile.result;
20524
20587
  } else if (processedFiles.length > 1) {
20525
20588
  const mergedCTR = {
@@ -20941,6 +21004,6 @@ buffer/index.js:
20941
21004
  *)
20942
21005
  */
20943
21006
 
20944
- export { ACrypt, Alfen, AlfenCrypt01, BSMCrypt01, CanonicalJSONError, ChargeIT, ChargePoint, ChargePointCrypt01, IChargeTransparencyLiveLink_exports as ChargeTransparencyLiveLink, ChargeTransparencyLiveLinkContext, IChargeTransparencyRecord_exports as ChargeTransparencyRecord, Chargy, chargyInterfaces_exports as ChargyInterfaces, Clone, CloneCTR, ConcatenateBuffers, CreateDiv, CreateDiv2, CreateError, CreateWarning, CryptoAlgorithms, CryptoHashAlgorithms, DayOfWeek, DisplayPrefixes, EDL40, EDL40Crypt01, EDL40ValidationError, EDL40_OBIS, EDL40_SESSION_CONTEXT, EDL40_SIGNATURE_CONTEXT, EMHCrypt01, ErrorLevel, GDFCrypt01, IECCurves, IEncoding, InformationRelevance, InformationRelevanceToString, IsAChargeTransparencyLiveLink, IsAChargeTransparencyRecord, IsAPublicKey, IsAPublicKeyLookup, IsAPublicKeySignature, IsAPublicKeyXY, IsASessionCryptoResult, IsNullOrEmpty, JSONSignatureVerificationStatus, MENNEKES_EDL40_OBIS, MENNEKES_EDL40_XMLNS, Mennekes, MennekesCrypt01, OBIS2Hex, OBIS2MeasurementName, OBIS_RegExpr, OCMF, OCMFBonnTariffParseError, OCMFTransactionTypes, OCMFv1_x, OCPI, OIDInfo, PCDF, PCDFCrypt01, PCDFParseError, PCDFValidationError, PCDF_FIELD_ORDER, PCDF_PREFIX, PTB, ParseJSON_LD, PublicKeyFormats, IPublicKeyInfo_exports as PublicKeyInfo, SAFEXML, SessionVerificationResult, SetHex, SetInt8, SetText, SetText_withLength, SetTimestamp, SetTimestamp32, SetUInt32, SetUInt32_withCode, SetUInt64, SetUInt64D, SignMessage, SignatureFormats, TimeStatusTypes, UTC2human, VerificationResult, VerifyJSONMessageSignatures, WarningLevel, WhenNullOrEmpty, XMLContainer, asJSONArray, asJSONObject, asNumber, asString, base64ToBytes, buf2hex, buildEDL40Signature, buildIsaSignature, buildMennekesSignatureData, bytesToBase64, bytesToHex, canParseEDL40, canonicalJSONBytes, canonicalJSONStringify, cleanHex, closeFullscreen, createHexString, dateToMennekesLocalEpochSeconds, decodeSmlMessages, extractMennekesChargingProcesses, findEntryByObis, findGetListRes, firstKey, firstValue, getArrayElement, getArrayLikeElement, getDirectChildByLocalName, getDirectChildrenByLocalName, getElementsByLocalName, getFirstArrayElement, getInt16Bytes, getInt32Bytes, getInt64Bytes, getInt8Bytes, getLastArrayElement, getTrimmedTextContent, hashFile, hex2bin, hex32, hexToArrayBuffer, hexToBytes, intFromBytes, isEncodedValue, isGeoLocation, isI18NString, isICryptoResult, isIFileInfo, isISessionCryptoResult1, isISessionCryptoResult2, isJSONLDObject, isMandatoryArrayOfStrings, isMandatoryBoolean, isMandatoryDecimal, isMandatoryJSONArray, isMandatoryJSONObject, isMandatoryNumber, isMandatoryString, isMandatoryURL, isOIDInfo, isObject, isOptionalArrayOfStrings, isOptionalDecimal, isOptionalJSONArray, isOptionalJSONArrayError, isOptionalJSONArrayOk, isOptionalJSONObject, isOptionalNumber, isOptionalString, isOptionalStringArray, isOptionalStringOrOIDInfo, isOptionalURL, isPCDFText, isPublicKeySubject, isString, isStringArray, isStringOrOIDInfo, isStringOrStringArray, isaListNameContext, jsonPrettyPrinter, measurementName2human, normalizePCDFPublicKeyHex, normalizeXMLText, ocmfBonnTariffToChargingTariff, openFullscreen, pad, parseAndVerifyJSONSignatures, parseDescription, parseEDL40, parseHexString, parseMennekesXMLDocument, parseNumber, parseOBIS, parseOCMFBonnTariffText, parsePCDFDocument, parsePCDFPublicKey, parsePCDFSignature, parseSmlTime, parseUTC, readQRCodeTextFromImage, readQRCodeTextFromImageData, readTLV, secp224k1, setUILocale, sha256, sha256____, sha384, sha384____, sha512, sha512____, signJSONMessage, signMessage, stripPCDFControlCharacters, stripTransport, time2human, toArrayBuffer, toSessionVerificationResults, toUint8Array, transformEDL40Status, tryParseOCMFBonnTariffText, unquotePCDFText, validatePCDFFields, verifyEDL40Document, verifyJSONMessageSignatureResults, verifyJSONMessageSignatures, verifyJSONSignature, verifyJSONSignatureResult, verifyPCDFDocument };
21007
+ export { ACrypt, Alfen, AlfenCrypt01, BSMCrypt01, CanonicalJSONError, ChargeIT, ChargePoint, ChargePointCrypt01, IChargeTransparencyLiveLink_exports as ChargeTransparencyLiveLink, ChargeTransparencyLiveLinkContext, IChargeTransparencyRecord_exports as ChargeTransparencyRecord, Chargy, chargyInterfaces_exports as ChargyInterfaces, Clone, CloneCTR, ConcatenateBuffers, CreateDiv, CreateDiv2, CreateError, CreateWarning, CryptoAlgorithms, CryptoHashAlgorithms, DayOfWeek, DisplayPrefixes, EDL40, EDL40Crypt01, EDL40ValidationError, EDL40_OBIS, EDL40_SESSION_CONTEXT, EDL40_SIGNATURE_CONTEXT, EMHCrypt01, ErrorLevel, GDFCrypt01, IECCurves, IEncoding, InformationRelevance, InformationRelevanceToString, IsAChargeTransparencyLiveLink, IsAChargeTransparencyRecord, IsAPublicKey, IsAPublicKeyLookup, IsAPublicKeySignature, IsAPublicKeyXY, IsASessionCryptoResult, IsAURL, IsNullOrEmpty, IsValidURL, JSONSignatureVerificationStatus, MENNEKES_EDL40_OBIS, MENNEKES_EDL40_XMLNS, Mennekes, MennekesCrypt01, OBIS2Hex, OBIS2MeasurementName, OBIS_RegExpr, OCMF, OCMFBonnTariffParseError, OCMFTransactionTypes, OCMFv1_x, OCPI, OIDInfo, PCDF, PCDFCrypt01, PCDFParseError, PCDFValidationError, PCDF_FIELD_ORDER, PCDF_PREFIX, PTB, ParseJSON_LD, PublicKeyFormats, IPublicKeyInfo_exports as PublicKeyInfo, SAFEXML, SessionVerificationResult, SetHex, SetInt8, SetText, SetText_withLength, SetTimestamp, SetTimestamp32, SetUInt32, SetUInt32_withCode, SetUInt64, SetUInt64D, SignMessage, SignatureFormats, IURL_exports as SimpleURL, TimeStatusTypes, URLContext, UTC2human, VerificationResult, VerifyJSONMessageSignatures, WarningLevel, WhenNullOrEmpty, XMLContainer, asJSONArray, asJSONObject, asNumber, asString, base64ToBytes, buf2hex, buildEDL40Signature, buildIsaSignature, buildMennekesSignatureData, bytesToBase64, bytesToHex, canParseEDL40, canonicalJSONBytes, canonicalJSONStringify, cleanHex, closeFullscreen, createHexString, dateToMennekesLocalEpochSeconds, decodeSmlMessages, extractMennekesChargingProcesses, findEntryByObis, findGetListRes, firstKey, firstValue, getArrayElement, getArrayLikeElement, getDirectChildByLocalName, getDirectChildrenByLocalName, getElementsByLocalName, getFirstArrayElement, getInt16Bytes, getInt32Bytes, getInt64Bytes, getInt8Bytes, getLastArrayElement, getTrimmedTextContent, hashFile, hex2bin, hex32, hexToArrayBuffer, hexToBytes, intFromBytes, isEncodedValue, isGeoLocation, isI18NString, isICryptoResult, isIFileInfo, isISessionCryptoResult1, isISessionCryptoResult2, isJSONLDObject, isMandatoryArrayOfStrings, isMandatoryBoolean, isMandatoryDecimal, isMandatoryJSONArray, isMandatoryJSONObject, isMandatoryNumber, isMandatoryString, isMandatoryURL, isOIDInfo, isObject, isOptionalArrayOfStrings, isOptionalDecimal, isOptionalJSONArray, isOptionalJSONArrayError, isOptionalJSONArrayOk, isOptionalJSONObject, isOptionalNumber, isOptionalString, isOptionalStringArray, isOptionalStringOrOIDInfo, isOptionalURL, isPCDFText, isPublicKeySubject, isString, isStringArray, isStringOrOIDInfo, isStringOrStringArray, isaListNameContext, jsonPrettyPrinter, measurementName2human, normalizePCDFPublicKeyHex, normalizeXMLText, ocmfBonnTariffToChargingTariff, openFullscreen, pad, parseAndVerifyJSONSignatures, parseDescription, parseEDL40, parseHexString, parseMennekesXMLDocument, parseNumber, parseOBIS, parseOCMFBonnTariffText, parsePCDFDocument, parsePCDFPublicKey, parsePCDFSignature, parseSmlTime, parseUTC, readQRCodeTextFromImage, readQRCodeTextFromImageData, readTLV, secp224k1, setUILocale, sha256, sha256____, sha384, sha384____, sha512, sha512____, signJSONMessage, signMessage, stripPCDFControlCharacters, stripTransport, time2human, toArrayBuffer, toSessionVerificationResults, toUint8Array, transformEDL40Status, tryParseOCMFBonnTariffText, unquotePCDFText, validatePCDFFields, verifyEDL40Document, verifyJSONMessageSignatureResults, verifyJSONMessageSignatures, verifyJSONSignature, verifyJSONSignatureResult, verifyPCDFDocument };
20945
21008
  //# sourceMappingURL=index.js.map
20946
21009
  //# sourceMappingURL=index.js.map