diff --git a/src/ddo/Authentication.ts b/src/ddo/Authentication.ts index b5e1869..b5c387c 100644 --- a/src/ddo/Authentication.ts +++ b/src/ddo/Authentication.ts @@ -1,4 +1,4 @@ export interface Authentication { - public type: string - public publicKey: string + type: string + publicKey: string } diff --git a/src/ddo/Contract.ts b/src/ddo/Contract.ts index 208f79e..a4b939a 100644 --- a/src/ddo/Contract.ts +++ b/src/ddo/Contract.ts @@ -1,4 +1,4 @@ -import Event from "./Event" +import { Event } from "./Event" export interface Contract { contractName: string diff --git a/src/ddo/DDO.ts b/src/ddo/DDO.ts index bf04f9b..07f0130 100644 --- a/src/ddo/DDO.ts +++ b/src/ddo/DDO.ts @@ -1,9 +1,9 @@ +import Web3Provider from "../keeper/Web3Provider" +import * as signatureHelpers from "../utils/SignatureHelpers" import { Authentication } from "./Authentication" +import { Proof } from "./Proof" import { PublicKey } from "./PublicKey" import { Service } from "./Service" -import { Proof } from "./Proof" -import Web3Provider from '../keeper/Web3Provider' -import * as signatureHelpers from "../utils/SignatureHelpers" /** * DID Descriptor Object. @@ -86,20 +86,20 @@ export class DDO { */ public getChecksum(): string { const web3 = Web3Provider.getWeb3() - const {metadata} = this.findServiceByType('Metadata') + const {metadata} = this.findServiceByType("Metadata") const {files, name, author, license} = metadata.base const values = [ ...(files || []) .map(({checksum}) => checksum) - .filter(_ => !!_), + .filter((_) => !!_), name, author, license, this.id, ] - return web3.utils.sha3(values.join('')) + return web3.utils.sha3(values.join("")) } /** @@ -109,7 +109,7 @@ export class DDO { * @return {Promise} Proof object. */ public async generateProof(publicKey: string, password?: string): Promise { - const checksum = this.getChecksum(); + const checksum = this.getChecksum() const signature = await signatureHelpers.signText(checksum, publicKey, password) @@ -125,9 +125,9 @@ export class DDO { * Generated and adds the checksum. */ public addChecksum(): void { - const metadataService = this.findServiceByType('Metadata') + const metadataService = this.findServiceByType("Metadata") if (metadataService.metadata.base.checksum) { - throw new Error('Checksum already exists') + throw new Error("Checksum already exists") } metadataService.metadata.base.checksum = this.getChecksum() } @@ -140,7 +140,7 @@ export class DDO { */ public async addProof(publicKey: string, password?: string): Promise { if (this.proof) { - throw new Error('Proof already exists') + throw new Error("Proof already exists") } this.proof = await this.generateProof(publicKey, password) } diff --git a/src/ddo/MetaData.ts b/src/ddo/MetaData.ts index 4d2a299..a3adf2e 100644 --- a/src/ddo/MetaData.ts +++ b/src/ddo/MetaData.ts @@ -17,7 +17,7 @@ export class MetaDataBase { * @type {string} * @example "UK Weather information 2011" */ - name: string + public name: string /** * Type of the Asset. Helps to filter by the type of asset, @@ -25,7 +25,7 @@ export class MetaDataBase { * @type {string} * @example "dataset" */ - type: "dataset" | "algorithm" | "container" | "workflow" | "other" + public type: "dataset" | "algorithm" | "container" | "workflow" | "other" /** * Details of what the resource is. For a dataset, this attribute @@ -33,28 +33,28 @@ export class MetaDataBase { * @type {string} * @example "Weather information of UK including temperature and humidity" */ - description?: string + public description?: string /** * The date on which the asset was created or was added. * @type {string} * @example "2012-10-10T17:00:000Z" */ - dateCreated: string + public dateCreated: string /** * Size of the asset (e.g. 18MB). In the absence of a unit (MB, kB etc.), kB will be assumed. * @type {string} * @example "3.1gb" */ - size: string + public size: string /** * Name of the entity generating this data (e.g. Tfl, Disney Corp, etc.). * @type {string} * @example "Met Office" */ - author: string + public author: string /** * Short name referencing the license of the asset (e.g. Public Domain, CC-0, CC-BY, No License Specified, etc. ). @@ -62,35 +62,35 @@ export class MetaDataBase { * @type {string} * @example "CC-BY" */ - license: string + public license: string /** * The party holding the legal copyright. Empty by default. * @type {string} * @example "Met Office" */ - copyrightHolder?: string + public copyrightHolder?: string /** * File encoding. * @type {string} * @example "UTF-8" */ - encoding?: string + public encoding?: string /** * File compression (e.g. no, gzip, bzip2, etc). * @type {string} * @example "zip" */ - compression?: string + public compression?: string /** * File format, if applicable. * @type {string} * @example "text/csv" */ - contentType: string + public contentType: string /** * Example of the concept of this asset. This example is part @@ -98,14 +98,14 @@ export class MetaDataBase { * @type {string} * @example "423432fsd,51.509865,-0.118092,2011-01-01T10:55:11+00:00,7.2,68" */ - workExample?: string + public workExample?: string /** * List of content URLs resolving the Asset files. * @type {string | string[]} * @example "https://testocnfiles.blob.core.windows.net/testfiles/testzkp.zip" */ - contentUrls: string | string[] + public contentUrls: string | string[] /** * Mapping of links for data samples, or links to find out more information. @@ -124,7 +124,7 @@ export class MetaDataBase { * }, * ] */ - links?: {[name: string]: string}[] + public links?: Array<{[name: string]: string}> /** * The language of the content. Please use one of the language @@ -132,7 +132,7 @@ export class MetaDataBase { * @type {String} * @example "en" */ - inLanguage?: string + public inLanguage?: string /** * Keywords or tags used to describe this content. Multiple entries in a keyword @@ -140,28 +140,28 @@ export class MetaDataBase { * @type {String} * @example "weather, uk, 2011, temperature, humidity" */ - tags?: string + public tags?: string /** * Price of the asset. * @type {String} * @example 10 */ - price: number + public price: number /** * Array of File objects including the encrypted file urls and some additional information. * @type {File[]} */ - files: File[] + public files: File[] /** * SHA3 hash of concatenated values: [list of all file checksums] + name + author + license + did * @type {string} */ - checksum: string + public checksum: string - encryptedFiles?: any + public encryptedFiles?: any } /** @@ -210,10 +210,10 @@ export interface AdditionalInformation { * describing the dataset. * @type {StructuredMarkup[]} */ - structuredMarkup: { + structuredMarkup: Array<{ uri: string - mediaType: string - }[] + mediaType: string, + }> /** * Checksum of attributes to be able to compare if there are changes in diff --git a/src/ddo/PublicKey.ts b/src/ddo/PublicKey.ts index 08d111c..d459490 100644 --- a/src/ddo/PublicKey.ts +++ b/src/ddo/PublicKey.ts @@ -13,7 +13,7 @@ export interface PublicKey { * Type of key. * @type {string} */ - type: 'Ed25519VerificationKey2018' | 'RsaVerificationKey2018' | 'EdDsaSAPublicKeySecp256k1' + type: "Ed25519VerificationKey2018" | "RsaVerificationKey2018" | "EdDsaSAPublicKeySecp256k1" /** * Key owner. diff --git a/src/examples/BuyAsset.ts b/src/examples/BuyAsset.ts index 841b274..976760d 100644 --- a/src/examples/BuyAsset.ts +++ b/src/examples/BuyAsset.ts @@ -10,10 +10,10 @@ async function exec() { const ocean: Ocean = await Ocean.getInstance(config) const publisher: Account = (await ocean.getAccounts())[0] - publisher.setPassword('node0') + publisher.setPassword("node0") const consumer: Account = (await ocean.getAccounts())[1] - const metaData: Partial = { + const metaData: Partial = { base: { name: "Office Humidity", type: "dataset", @@ -43,7 +43,7 @@ async function exec() { }, } - const ddo: DDO = await ocean.registerAsset(metaData, publisher) + const ddo: DDO = await ocean.registerAsset(metaData as any, publisher) Logger.log("did", ddo.id) const did: DID = DID.parse(ddo.id) diff --git a/src/examples/ExecuteAgreement.ts b/src/examples/ExecuteAgreement.ts index 783f882..326a3eb 100644 --- a/src/examples/ExecuteAgreement.ts +++ b/src/examples/ExecuteAgreement.ts @@ -9,10 +9,10 @@ async function exec() { const ocean: Ocean = await Ocean.getInstance(config) const publisher: Account = (await ocean.getAccounts())[0] - publisher.setPassword('node0') + publisher.setPassword("node0") const consumer: Account = (await ocean.getAccounts())[1] - const metaData: Partial = { + const metaData: Partial = { base: { name: "Office Humidity", type: "dataset", @@ -42,7 +42,7 @@ async function exec() { }, } - const ddo: DDO = await ocean.registerAsset(metaData, publisher) + const ddo: DDO = await ocean.registerAsset(metaData as any, publisher) Logger.log("did", ddo.id) const accessService = ddo.findServiceByType("Access") diff --git a/src/examples/GrantAccess.ts b/src/examples/GrantAccess.ts index aef460b..4d23e6b 100644 --- a/src/examples/GrantAccess.ts +++ b/src/examples/GrantAccess.ts @@ -10,10 +10,10 @@ async function exec() { const ocean: Ocean = await Ocean.getInstance(config) const publisher: Account = (await ocean.getAccounts())[0] - publisher.setPassword('node0') + publisher.setPassword("node0") const consumer: Account = (await ocean.getAccounts())[1] - const metaData: Partial = { + const metaData: Partial = { base: { name: "Office Humidity", type: "dataset", @@ -43,7 +43,7 @@ async function exec() { }, } - const ddo: DDO = await ocean.registerAsset(metaData, publisher) + const ddo: DDO = await ocean.registerAsset(metaData as any, publisher) Logger.log("did", ddo.id) const did: DID = DID.parse(ddo.id) @@ -70,7 +70,7 @@ async function exec() { const paid = await serviceAgreement.payAsset(did.getId(), metaData.base.price, consumer) Logger.log(`Asset paid: ${paid}`) - const accessGranted = await serviceAgreement.grantAccess(did.getId(), did.getId(), publisher) + const accessGranted = await serviceAgreement.grantAccess(did.getId(), publisher) Logger.log(`Asset access granted: ${accessGranted}`) } diff --git a/src/examples/InitializeAgreement.ts b/src/examples/InitializeAgreement.ts index c055e41..ed32c84 100644 --- a/src/examples/InitializeAgreement.ts +++ b/src/examples/InitializeAgreement.ts @@ -11,7 +11,7 @@ async function exec() { const publisher: Account = (await ocean.getAccounts())[1] const consumer: Account = (await ocean.getAccounts())[1] - const metaData: Partial = { + const metaData: Partial = { base: { name: "Office Humidity", type: "dataset", @@ -40,7 +40,7 @@ async function exec() { }, } - const ddo: DDO = await ocean.registerAsset(metaData, publisher) + const ddo: DDO = await ocean.registerAsset(metaData as any, publisher) Logger.log("Registered asset with did:", ddo.id) const accessService = ddo.findServiceByType("Access") diff --git a/src/examples/RegisterAsset.ts b/src/examples/RegisterAsset.ts index 6d858d5..36ae44f 100644 --- a/src/examples/RegisterAsset.ts +++ b/src/examples/RegisterAsset.ts @@ -8,9 +8,9 @@ async function exec() { const ocean: Ocean = await Ocean.getInstance(config) const publisher: Account = (await ocean.getAccounts())[0] - publisher.setPassword('node0') + publisher.setPassword("node0") - const metaData: Partial = { + const metaData: Partial = { base: { name: "Office Humidity", type: "dataset", @@ -40,7 +40,7 @@ async function exec() { }, } - const ddo: DDO = await ocean.registerAsset(metaData, publisher) + const ddo: DDO = await ocean.registerAsset(metaData as any, publisher) Logger.log(ddo.id) } diff --git a/src/examples/SignAgreement.ts b/src/examples/SignAgreement.ts index ebc78ca..037db76 100644 --- a/src/examples/SignAgreement.ts +++ b/src/examples/SignAgreement.ts @@ -26,7 +26,7 @@ async function exec() { updateFrecuency: "yearly", checksum: "efdd14d39feb726e321931f408b3454d26f1a4899bcc608a68b5397f23203174", }, - base: { + base: { name: "Office Humidity", type: "dataset", description: "Weather information of UK including temperature and humidity", diff --git a/src/examples/config/config.json b/src/examples/config/config.json index 8b787aa..34f5721 100644 --- a/src/examples/config/config.json +++ b/src/examples/config/config.json @@ -1,6 +1,6 @@ { "nodeUri": "http://localhost:8545", - "aquariusUri": "http://localhost:5000", + "aquariusUri": "https://nginx-aquarius.dev-ocean.com", "brizoUri": "http://localhost:8030", "parityUri": "http://localhost:9545", "secretStoreUri": "http://localhost:12001", diff --git a/src/ocean/Account.ts b/src/ocean/Account.ts index e4dc19d..cfe7260 100644 --- a/src/ocean/Account.ts +++ b/src/ocean/Account.ts @@ -18,7 +18,7 @@ export default class Account extends OceanBase { * Set account password. * @param {string} password Password for account. */ - setPassword(password: string): void { + public setPassword(password: string): void { this.password = password } @@ -26,7 +26,7 @@ export default class Account extends OceanBase { * Returns account password. * @return {string} Account password. */ - getPassword(): string { + public getPassword(): string { return this.password } diff --git a/src/ocean/OceanAssets.ts b/src/ocean/OceanAssets.ts index 36b4d3c..3f7333f 100644 --- a/src/ocean/OceanAssets.ts +++ b/src/ocean/OceanAssets.ts @@ -69,7 +69,7 @@ export default class OceanAssets { metadata.base.encryptedFiles = [ await SecretStoreProvider.getSecretStore() - .encryptDocument(did.getId(), metadata.base.contentUrls) + .encryptDocument(did.getId(), metadata.base.contentUrls), ] const template = new Access() diff --git a/src/ocean/ServiceAgreements/ServiceAgreement.ts b/src/ocean/ServiceAgreements/ServiceAgreement.ts index ba2497a..d47a472 100644 --- a/src/ocean/ServiceAgreements/ServiceAgreement.ts +++ b/src/ocean/ServiceAgreements/ServiceAgreement.ts @@ -48,7 +48,6 @@ export default class ServiceAgreement extends OceanBase { Logger.log("Executing SA with serviceAgreementId", serviceAgreementId) } - const service: Service = ddo.findServiceById(serviceDefinitionId) const values: ValuePair[][] = ServiceAgreement.getValuesFromService(service, serviceAgreementId) const valueHashes: string[] = ServiceAgreement.createValueHashes(values) @@ -64,10 +63,10 @@ export default class ServiceAgreement extends OceanBase { private static async createSAHashSignature( service: Service, - serviceAgreementId: string, - valueHashes: string[], - timeoutValues: number[], - consumer: Account, + serviceAgreementId: string, + valueHashes: string[], + timeoutValues: number[], + consumer: Account, ): Promise { if (!service.templateId) { diff --git a/src/utils/SignatureHelpers.ts b/src/utils/SignatureHelpers.ts index 7812032..f372b3b 100644 --- a/src/utils/SignatureHelpers.ts +++ b/src/utils/SignatureHelpers.ts @@ -1,4 +1,4 @@ -import Web3Provider from '../keeper/Web3Provider' +import Web3Provider from "../keeper/Web3Provider" import Logger from "./Logger" export async function signText(text: string, publicKey: string, password?: string): Promise { @@ -8,7 +8,7 @@ export async function signText(text: string, publicKey: string, password?: strin return await web3.eth.personal.sign(text, publicKey, password) } catch (e) { Logger.error(e.message) - throw new Error('Error execution personal sign') + throw new Error("Error execution personal sign") } } diff --git a/test/aquarius/Aquarius.test.ts b/test/aquarius/Aquarius.test.ts index 08e11f9..981fb54 100644 --- a/test/aquarius/Aquarius.test.ts +++ b/test/aquarius/Aquarius.test.ts @@ -41,7 +41,7 @@ describe("Aquarius", () => { WebServiceConnectorProvider.setConnector(new WebServiceConnectorMock([new DDO()])) const result: DDO[] = await aquarius.queryMetadata(query) - console.log(result) + assert(result) assert(result[0].findServiceById) }) diff --git a/test/ddo/DDO.test.ts b/test/ddo/DDO.test.ts index b3f294b..6c0ca17 100644 --- a/test/ddo/DDO.test.ts +++ b/test/ddo/DDO.test.ts @@ -1,15 +1,15 @@ -import { assert, expect, use, spy } from "chai" +import { assert, expect, spy, use } from "chai" import * as spies from "chai-spies" +import ConfigProvider from "../../src/ConfigProvider" import { DDO } from "../../src/ddo/DDO" import { Service } from "../../src/ddo/Service" -import ConfigProvider from "../../src/ConfigProvider" -import config from "../config" import * as signatureHelpers from "../../src/utils/SignatureHelpers" +import config from "../config" import * as jsonDDO from "../testdata/ddo.json" -use(spies); +use(spies) describe("DDO", () => { @@ -60,7 +60,7 @@ describe("DDO", () => { type: "MessagingService", serviceEndpoint: "https://example.com/messages/8377464", }, - { + { type: "SocialWebInboxService", serviceEndpoint: "https://social.example.com/83hfh37dj", description: "My public social inbox", @@ -68,7 +68,7 @@ describe("DDO", () => { amount: "0.50", currency: "USD", }, - }, + } as any, { id: "did:op:123456789abcdefghi;bops", type: "BopsService", @@ -126,18 +126,18 @@ describe("DDO", () => { url: "234ab87234acbd09543085340abffh21983ddhiiee982143827423421", checksum: "efb2c764274b745f5fc37f97c6b0e761", contentLength: "4535431", - resourceId: "access-log2018-02-13-15-17-29-18386C502CAEA932" + resourceId: "access-log2018-02-13-15-17-29-18386C502CAEA932", }, { url: "234ab87234acbd6894237582309543085340abffh21983ddhiiee982143827423421", checksum: "085340abffh21495345af97c6b0e761", - contentLength: "12324" + contentLength: "12324", }, { - url: "80684089027358963495379879a543085340abffh21983ddhiiee982143827abcc2" - } + url: "80684089027358963495379879a543085340abffh21983ddhiiee982143827abcc2", + }, ], - checksum: "" + checksum: "", }, curation: { rating: 0.93, @@ -200,7 +200,7 @@ describe("DDO", () => { } const ddo = new DDO({ - service: [service], + service: [service as any], }) assert(ddo) @@ -217,7 +217,7 @@ describe("DDO", () => { it("should properly deserialize from serialized object", async () => { const ddoString = DDO.serialize(testDDO) - assert.typeOf(ddoString, 'string') + assert.typeOf(ddoString, "string") const ddo: DDO = DDO.deserialize(ddoString) assert.instanceOf(ddo, DDO) @@ -247,18 +247,18 @@ describe("DDO", () => { describe("#generateProof()", () => { - const publicKey = `0x${'a'.repeat(40)}` - const signature = `0x${'a'.repeat(130)}` + const publicKey = `0x${"a".repeat(40)}` + const signature = `0x${"a".repeat(130)}` it("should properly generate the proof", async () => { - const signTextSpy = spy.on(signatureHelpers, 'signText', () => signature) + const signTextSpy = spy.on(signatureHelpers, "signText", () => signature) const ddo = new DDO(testDDO) const checksum = ddo.getChecksum() const proof = await ddo.generateProof(publicKey) - assert.include(proof, { + assert.include(proof as any, { creator: publicKey, - type: 'DDOIntegritySignature', + type: "DDOIntegritySignature", signatureValue: signature, }) expect(signTextSpy).to.have.been.called.with(checksum, publicKey) @@ -267,17 +267,17 @@ describe("DDO", () => { describe("#addProof()", () => { - const publicKey = `0x${'a'.repeat(40)}` + const publicKey = `0x${"a".repeat(40)}` it("should properly add the proof on the DDO", async () => { - const fakeProof = { + const fakeProof = { creation: Date.now(), - creator: 'test', - type: 'test', - signaturValue: 'test' - } + creator: "test", + type: "test", + signaturValue: "test", + } as any const ddo = new DDO(testDDO) - const generateProofSpy = spy.on(ddo, 'generateProof', () => fakeProof) + const generateProofSpy = spy.on(ddo, "generateProof", () => fakeProof) await ddo.addProof(publicKey) assert.equal(ddo.proof, fakeProof) diff --git a/test/ocean/ServiceAgreement.test.ts b/test/ocean/ServiceAgreement.test.ts index 37d716a..c990027 100644 --- a/test/ocean/ServiceAgreement.test.ts +++ b/test/ocean/ServiceAgreement.test.ts @@ -16,7 +16,6 @@ import TestContractHandler from "../keeper/TestContractHandler" import WebServiceConnectorMock from "../mocks/WebServiceConnector.mock" import { metadataMock } from "../testdata/MetaData" - let ocean: Ocean let accounts: Account[] let publisherAccount: Account diff --git a/test/ocean/ServiceAgreementTemplate.test.ts b/test/ocean/ServiceAgreementTemplate.test.ts index 0c30b51..0186812 100644 --- a/test/ocean/ServiceAgreementTemplate.test.ts +++ b/test/ocean/ServiceAgreementTemplate.test.ts @@ -7,9 +7,8 @@ import Access from "../../src/ocean/ServiceAgreements/Templates/Access" import TemplateBase from "../../src/ocean/ServiceAgreements/Templates/TemplateBase" import config from "../config" import TestContractHandler from "../keeper/TestContractHandler" -import TestIdGenerator from "../TestIdGenerator" import { metadataMock } from "../testdata/MetaData" - +import TestIdGenerator from "../TestIdGenerator" let ocean: Ocean let accounts: Account[] diff --git a/test/testdata/MetaData.ts b/test/testdata/MetaData.ts index f153257..be14ef6 100644 --- a/test/testdata/MetaData.ts +++ b/test/testdata/MetaData.ts @@ -35,7 +35,7 @@ export const metadataMock: MetaData = { tags: "weather, uk, 2011, temperature, humidity", price: 10, files: [], - checksum: "" + checksum: "", }, curation: { rating: 0.93, @@ -54,5 +54,6 @@ export const metadataMock: MetaData = { mediaType: "text/turtle", }, ], + checksum: "", }, } diff --git a/test/utils/SignatureHelpers.test.ts b/test/utils/SignatureHelpers.test.ts index 2b4dcd9..bf865d9 100644 --- a/test/utils/SignatureHelpers.test.ts +++ b/test/utils/SignatureHelpers.test.ts @@ -1,18 +1,18 @@ -import { assert, expect, use, spy } from "chai" +import { assert, expect, spy, use } from "chai" import * as spies from "chai-spies" -import { signText, verifyText } from "../../src/utils/SignatureHelpers" -import Web3Provider from '../../src/keeper/Web3Provider' import ConfigProvider from "../../src/ConfigProvider" +import Web3Provider from "../../src/keeper/Web3Provider" +import { signText, verifyText } from "../../src/utils/SignatureHelpers" import config from "../config" -use(spies); +use(spies) describe("SignatureHelpers", () => { - const publicKey = `0x${'a'.repeat(40)}` + const publicKey = `0x${"a".repeat(40)}` const text = "0123456789abcde" - const signature = `0x${'a'.repeat(130)}` + const signature = `0x${"a".repeat(130)}` before(async () => { ConfigProvider.setConfig(config) @@ -26,7 +26,7 @@ describe("SignatureHelpers", () => { beforeEach(() => { const web3 = Web3Provider.getWeb3() - personalSignSpy = spy.on(web3.eth.personal, 'sign', () => signature) + personalSignSpy = spy.on(web3.eth.personal, "sign", () => signature) }) it("should sign a text as expected", async () => { @@ -37,17 +37,17 @@ describe("SignatureHelpers", () => { }) it("should sign a text as expected using password", async () => { - const signed = await signText(text, publicKey, 'test') + const signed = await signText(text, publicKey, "test") assert.equal(signed, signature) - expect(personalSignSpy).to.have.been.called.with(text, publicKey, 'test') + expect(personalSignSpy).to.have.been.called.with(text, publicKey, "test") }) }) describe("#verifyText", () => { it("should recover the privateKey of a signed message", async () => { const web3 = Web3Provider.getWeb3() - const personalRecoverSpy = spy.on(web3.eth.personal, 'ecRecover', () => publicKey) + const personalRecoverSpy = spy.on(web3.eth.personal, "ecRecover", () => publicKey) const verifiedPublicKey = await verifyText(text, signature) diff --git a/tslint.json b/tslint.json index 415768f..bf5d0d2 100644 --- a/tslint.json +++ b/tslint.json @@ -6,10 +6,12 @@ "jsRules": {}, "rules": { "object-literal-sort-keys": false, + "interface-name": [true, "never-prefix"], + "max-line-length": [true, 140], "semicolon": [ true, "never" ] }, "rulesDirectory": [] -} \ No newline at end of file +}