From 18c941d5c0066c54a8b9ccc96ae9a7e482a21c5e Mon Sep 17 00:00:00 2001 From: Jeff Date: Wed, 14 Jul 2021 17:25:13 -0400 Subject: [PATCH 1/3] content parser version from extension to common --- build/targets/extension.js | 2 +- package.json | 6 ++---- src/common/PackageVersionInfo.ts | 9 +++++---- src/extension/event-page/ServerApi.ts | 2 +- src/extension/event-page/main.ts | 4 ++-- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/build/targets/extension.js b/build/targets/extension.js index 4ac52b70..6cf29fbe 100644 --- a/build/targets/extension.js +++ b/build/targets/extension.js @@ -34,7 +34,7 @@ const .toString() ), webUrlPattern = config.webServer.protocol + '://' + config.webServer.host + '/*'; - manifest.version = package['it.reallyread'].version.extension.package.toString().padEnd(4, '0'); + manifest.version = package['it.reallyread'].version.extension; manifest.content_scripts[0].matches.push(webUrlPattern); manifest.permissions.push(webUrlPattern); fs.writeFileSync( diff --git a/package.json b/package.json index ce7b72a6..edc59979 100644 --- a/package.json +++ b/package.json @@ -7,14 +7,12 @@ "app": "1.42.1", "appPublic": "1.36.0", "common": { + "contentParser": "2.0.0", "metadataParser": "1.0.1" }, "embed": "1.0.1", "embedIframe": "1.0.0", - "extension": { - "package": "5.0.0", - "contentParser": "1.1.2" - }, + "extension": "5.0.0", "nativeClient": { "reader": "12.1.1", "shareExtension": "4.0.3" diff --git a/src/common/PackageVersionInfo.ts b/src/common/PackageVersionInfo.ts index 32bf134b..a2662125 100644 --- a/src/common/PackageVersionInfo.ts +++ b/src/common/PackageVersionInfo.ts @@ -1,12 +1,13 @@ export default interface PackageVersionInfo { app: string, appPublic: string, + common: { + contentParser: string, + metadataParser: string + }, embed: string, embedIframe: string, - extension: { - package: string, - contentParser: string - }, + extension: string, nativeClient: { reader: string, shareExtension: string diff --git a/src/extension/event-page/ServerApi.ts b/src/extension/event-page/ServerApi.ts index 6d2defdb..b0ce0b93 100644 --- a/src/extension/event-page/ServerApi.ts +++ b/src/extension/event-page/ServerApi.ts @@ -28,7 +28,7 @@ import InstallationResponse from '../../common/models/extension/InstallationResp import CommentCreationResponse from '../../common/models/social/CommentCreationResponse'; function addCustomHeaders(req: XMLHttpRequest, params: Request) { - req.setRequestHeader('X-Readup-Client', `web/extension@${window.reallyreadit.extension.config.version.extension.package}`); + req.setRequestHeader('X-Readup-Client', `web/extension@${window.reallyreadit.extension.config.version.extension}`); } export default class ServerApi { public static alarms = { diff --git a/src/extension/event-page/main.ts b/src/extension/event-page/main.ts index 7966cd5c..5bdbae77 100644 --- a/src/extension/event-page/main.ts +++ b/src/extension/event-page/main.ts @@ -102,7 +102,7 @@ const readerContentScriptApi = new ReaderContentScriptApi({ try { if ( new SemanticVersion(localStorage.getItem('contentParserVersion')) - .compareTo(new SemanticVersion(window.reallyreadit.extension.config.version.extension.contentParser)) > 0 + .compareTo(new SemanticVersion(window.reallyreadit.extension.config.version.common.contentParser)) > 0 ) { console.log(`contentScriptApi.onLoadContentParser (loading content parser from localStorage, tabId: ${tabId})`); chrome.tabs.executeScript(tabId, { code: localStorage.getItem('contentParserScript') }); @@ -475,7 +475,7 @@ chrome.alarms.onAlarm.addListener( if (alarm.name === 'updateContentParser') { const currentVersion = SemanticVersion.greatest( ...[ - window.reallyreadit.extension.config.version.extension.contentParser, + window.reallyreadit.extension.config.version.common.contentParser, localStorage.getItem('contentParserVersion') ] .filter(string => !!string) From ce17acd4089e4d7275fab50dda50902de4222da4 Mon Sep 17 00:00:00 2001 From: Jeff Date: Wed, 14 Jul 2021 17:26:16 -0400 Subject: [PATCH 2/3] added ParserParams to parseDocumentContent --- src/common/contentParsing/parseDocumentContent.ts | 12 +++++++++--- src/embed/main.ts | 4 +++- .../reader/ReaderContentScriptWindow.ts | 3 ++- .../content-scripts/reader/content-parser/main.ts | 6 +++--- src/extension/content-scripts/reader/main.ts | 4 +++- src/native-client/reader/main.ts | 4 +++- src/native-client/share-extension/main.ts | 4 +++- 7 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/common/contentParsing/parseDocumentContent.ts b/src/common/contentParsing/parseDocumentContent.ts index b0293769..d19494c6 100644 --- a/src/common/contentParsing/parseDocumentContent.ts +++ b/src/common/contentParsing/parseDocumentContent.ts @@ -209,7 +209,7 @@ function findTraversalPaths(group: TextContainerDepthGroup) { }) ]; for (let i = 1; i <= group.depth && peers.length; i++) { - const + const containerLineageIndex = group.depth - i, foundPeers = peers.filter(peer => peer.containerLineage[containerLineageIndex] === member.containerLineage[containerLineageIndex]); if (foundPeers.length) { @@ -483,8 +483,14 @@ function findChildren(parent: Node, depth: number, edge: GraphEdge, searchArea: ); } -export default function parseDocumentContent(): ParseResult { - const publisherConfig = findPublisherConfig(configs.publishers, window.location.hostname); +export interface ParserParams { + url: { + hostname: string + } +} + +export default function parseDocumentContent(params: ParserParams): ParseResult { + const publisherConfig = findPublisherConfig(configs.publishers, params.url.hostname); let contentSearchRootElement: Element; if (publisherConfig && publisherConfig.contentSearchRootElementSelector) { diff --git a/src/embed/main.ts b/src/embed/main.ts index ab1e8532..3fe6daeb 100644 --- a/src/embed/main.ts +++ b/src/embed/main.ts @@ -52,7 +52,9 @@ const apiServer = new ApiServer({ function activate(initializationResponse: InitializationActivationResponse) { // set up the reader const page = new Page( - parseDocumentContent() + parseDocumentContent({ + url: window.location + }) .primaryTextContainers ); page.setReadState(initializationResponse.userArticle.readState); diff --git a/src/extension/content-scripts/reader/ReaderContentScriptWindow.ts b/src/extension/content-scripts/reader/ReaderContentScriptWindow.ts index bf94f141..5c25056e 100644 --- a/src/extension/content-scripts/reader/ReaderContentScriptWindow.ts +++ b/src/extension/content-scripts/reader/ReaderContentScriptWindow.ts @@ -1,10 +1,11 @@ import LazyScript from './LazyScript'; import ParseResult from '../../../common/contentParsing/ParseResult'; +import { ParserParams } from '../../../common/contentParsing/parseDocumentContent'; declare global { interface ReaderContentScriptWindow { contentParser: LazyScript<{ - parse: () => ParseResult, + parse: (params: ParserParams) => ParseResult, prune: (parseResult: ParseResult) => { contentRoot: HTMLElement, scrollRoot: HTMLElement diff --git a/src/extension/content-scripts/reader/content-parser/main.ts b/src/extension/content-scripts/reader/content-parser/main.ts index 898a0e9f..c03c4841 100644 --- a/src/extension/content-scripts/reader/content-parser/main.ts +++ b/src/extension/content-scripts/reader/content-parser/main.ts @@ -1,10 +1,10 @@ -import parseDocumentContent from "../../../../common/contentParsing/parseDocumentContent"; +import parseDocumentContent, { ParserParams } from "../../../../common/contentParsing/parseDocumentContent"; import pruneDocument from "../../../../common/contentParsing/pruneDocument"; import ParseResult from "../../../../common/contentParsing/ParseResult"; window.reallyreadit.readerContentScript.contentParser.set({ - parse: () => { - return parseDocumentContent(); + parse: (params: ParserParams) => { + return parseDocumentContent(params); }, prune: (parseResult: ParseResult) => { return pruneDocument(parseResult); diff --git a/src/extension/content-scripts/reader/main.ts b/src/extension/content-scripts/reader/main.ts index 2ece0603..4b917896 100644 --- a/src/extension/content-scripts/reader/main.ts +++ b/src/extension/content-scripts/reader/main.ts @@ -489,7 +489,9 @@ eventPageApi .get() .then( contentParser => { - const contentParseResult = contentParser.parse(); + const contentParseResult = contentParser.parse({ + url: window.location + }); return { contentParser, contentParseResult, diff --git a/src/native-client/reader/main.ts b/src/native-client/reader/main.ts index a0932b3c..155ebcb0 100644 --- a/src/native-client/reader/main.ts +++ b/src/native-client/reader/main.ts @@ -87,7 +87,9 @@ function updateDisplayPreference(preference: DisplayPreference | null) { const metadataParseResult = parseDocumentMetadata(), - contentParseResult = parseDocumentContent(); + contentParseResult = parseDocumentContent({ + url: window.location + }); const { contentRoot, scrollRoot } = pruneDocument(contentParseResult); diff --git a/src/native-client/share-extension/main.ts b/src/native-client/share-extension/main.ts index 0d8aef14..a8afe4b3 100644 --- a/src/native-client/share-extension/main.ts +++ b/src/native-client/share-extension/main.ts @@ -7,6 +7,8 @@ new WebViewMessagingContext().sendMessage({ type: 'parseResult', data: createPageParseResult( parseDocumentMetadata(), - parseDocumentContent() + parseDocumentContent({ + url: window.location + }) ) }); \ No newline at end of file From ada8b05620e01b51020651cbb4d886b27e260467 Mon Sep 17 00:00:00 2001 From: Jeff Date: Wed, 14 Jul 2021 17:26:31 -0400 Subject: [PATCH 3/3] added contentParser build target --- build/targets/contentParser.js | 26 ++++++++++++++++++++++++++ gulpfile.js | 16 +++++++++++++++- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 build/targets/contentParser.js diff --git a/build/targets/contentParser.js b/build/targets/contentParser.js new file mode 100644 index 00000000..54458f54 --- /dev/null +++ b/build/targets/contentParser.js @@ -0,0 +1,26 @@ +const + fs = require('fs'), + path = require('path'); + +const + project = require('../project'), + createBuild = require('../createBuild'); + +const package = JSON.parse( + fs + .readFileSync('./package.json') + .toString() +); + +const build = createBuild({ + path: 'common/contentParsing', + webpack: { + entry: path.posix.join(project.srcDir, 'common/contentParsing/parseDocumentContent.ts'), + fileName: `content-parser-${package['it.reallyread'].version.common.contentParser}.js`, + sourceMaps: false, + minify: false, + outputLibrary: 'contentParser' + } +}); + +module.exports = build; \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index 0e6c2437..8cf14ceb 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -7,7 +7,8 @@ const extension = require('./build/targets/extension'), nativeClientReader = require('./build/targets/nativeClient/reader'), nativeClientShareExtension = require('./build/targets/nativeClient/shareExtension'), - metadataParser = require('./build/targets/metadataParser'); + metadataParser = require('./build/targets/metadataParser'), + contentParser = require('./build/targets/contentParser'); /** * app @@ -55,6 +56,16 @@ function buildProdBrowser() { return client.build(project.env.prod); } +/** + * contentParser + */ +function cleanDevContentParser() { + return contentParser.clean(project.env.dev); +} +function buildDevContentParser() { + return contentParser.build(project.env.dev); +} + /** * embed */ @@ -178,6 +189,9 @@ module.exports = { 'build:stage:browser': buildStageBrowser, 'clean:prod:browser': cleanProdBrowser, 'build:prod:browser': buildProdBrowser, + 'clean:dev:content-parser': cleanDevContentParser, + 'build:dev:content-parser': buildDevContentParser, + 'watch:dev:content-parser': contentParser.watch, 'clean:dev:embed': cleanDevEmbed, 'build:dev:embed': buildDevEmbed, 'watch:dev:embed': embed.watch,