Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .deepsource.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
version = 1

[[analyzers]]
name = "javascript"

[analyzers.meta]
environment = ["browser", "es2020"]

# JS-0002: console usage is intentional in browser extension background/content
# scripts where logging is the only debug channel available.
# JS-0125: `browser` is the WebExtension runtime global injected by the host
# browser (Safari/Firefox/Chrome) — it is not a project-level variable.
# Both are false positives for this codebase and are suppressed via .eslintrc.json
# (env.webextensions = true covers `browser`; no-console = off covers console calls).
14 changes: 14 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"env": {
"browser": true,
"webextensions": true,
"es2020": true
},
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module"
},
"rules": {
"no-console": "off"
}
}
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,7 @@ Carthage/Build/
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots/**/*.png
fastlane/test_output
# Node / ESLint dev deps (only needed for local linting)
node_modules/
package-lock.json

21 changes: 21 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// eslint.config.js — ESLint v9+ flat config
// Mirrors .eslintrc.json for local development; DeepSource still reads .eslintrc.json.
import globals from 'globals'

export default [
{
files: ['**/*.js'],
languageOptions: {
ecmaVersion: 2020,
sourceType: 'module',
globals: {
...globals.browser,
...globals.webextensions,
browser: 'readonly'
}
},
rules: {
'no-console': 'off'
}
}
]
32 changes: 16 additions & 16 deletions ios/Flean.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_ASSET_PATHS = extention;
DEVELOPMENT_TEAM = PWL627GZ4Y;
GENERATE_INFOPLIST_FILE = YES;
Expand All @@ -393,7 +393,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 2.1.3;
OTHER_LDFLAGS = (
"-framework",
SafariServices,
Expand All @@ -416,7 +416,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_ASSET_PATHS = extention;
DEVELOPMENT_TEAM = PWL627GZ4Y;
GENERATE_INFOPLIST_FILE = YES;
Expand All @@ -429,7 +429,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 2.1.3;
OTHER_LDFLAGS = (
"-framework",
SafariServices,
Expand Down Expand Up @@ -577,7 +577,7 @@
CODE_SIGN_ENTITLEMENTS = Flean/Flean.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = PWL627GZ4Y;
ENABLE_HARDENED_RUNTIME = YES;
GENERATE_INFOPLIST_FILE = YES;
Expand All @@ -590,7 +590,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.14;
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 2.1.3;
OTHER_LDFLAGS = (
"-framework",
SafariServices,
Expand All @@ -616,7 +616,7 @@
CODE_SIGN_ENTITLEMENTS = Flean/Flean.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = PWL627GZ4Y;
ENABLE_HARDENED_RUNTIME = YES;
GENERATE_INFOPLIST_FILE = YES;
Expand All @@ -629,7 +629,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.14;
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 2.1.3;
OTHER_LDFLAGS = (
"-framework",
SafariServices,
Expand All @@ -652,11 +652,11 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = PWL627GZ4Y;
GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.14;
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 2.1.3;
PRODUCT_BUNDLE_IDENTIFIER = slf.FleanTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
Expand All @@ -670,11 +670,11 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = PWL627GZ4Y;
GENERATE_INFOPLIST_FILE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.14;
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 2.1.3;
PRODUCT_BUNDLE_IDENTIFIER = slf.FleanTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
Expand All @@ -687,10 +687,10 @@
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = PWL627GZ4Y;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 2.1.3;
PRODUCT_BUNDLE_IDENTIFIER = slf.FleanUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
Expand All @@ -703,10 +703,10 @@
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = PWL627GZ4Y;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 2.1.3;
PRODUCT_BUNDLE_IDENTIFIER = slf.FleanUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
Expand Down
46 changes: 42 additions & 4 deletions ios/extention/Resources/background.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,44 @@
import { getWikiData, fetchWikiData, findMatchingWiki, invalidateIndex } from './scripts/wiki-data-manager.js'

// Initialise wiki data on extension startup (loads from cache or fetches fresh)
async function initWikiData () {
try {
await getWikiData()
console.log('Flean: wiki data ready')
} catch (e) {
console.warn('Flean: wiki data init failed, heuristics will be used', e)
}
}

// Schedule a weekly background refresh using browser.alarms (if supported)
function setupRefreshAlarm () {
if (typeof browser === 'undefined' || !browser.alarms) return
try {
browser.alarms.create('wikiDataRefresh', { periodInMinutes: 7 * 24 * 60 })
browser.alarms.onAlarm.addListener(async (alarm) => {
if (alarm.name !== 'wikiDataRefresh') return
try {
await fetchWikiData()
invalidateIndex()
console.log('Flean: wiki data refreshed')
} catch (e) {
console.warn('Flean: scheduled wiki data refresh failed', e)
}
})
} catch (e) {
console.warn('Flean: could not set up refresh alarm', e)
}
}

browser.runtime.onMessage.addListener((request, sender, sendResponse) => {
console.log("Received request: ", request);
if (request.greeting === 'hello') {
return Promise.resolve({ farewell: 'goodbye' })
}

if (request.action === 'findWiki') {
return findMatchingWiki(request.url).catch(() => null)
}
})

if (request.greeting === "hello")
return Promise.resolve({ farewell: "goodbye" });
});
initWikiData()
setupRefreshAlarm()
Loading