Browse Source

Initial commit

jherve 5 năm trước cách đây
commit
c13a8baeb4
12 tập tin đã thay đổi với 10879 bổ sung0 xóa
  1. 19 0
      .gitignore
  2. 7 0
      README.md
  3. 22 0
      extension/manifest.json
  4. 10615 0
      package-lock.json
  5. 28 0
      package.json
  6. 127 0
      packages.dhall
  7. 14 0
      spago.dhall
  8. 11 0
      src/Background.purs
  9. 11 0
      src/Content.purs
  10. 7 0
      src/background.js
  11. 7 0
      src/content.js
  12. 11 0
      test/Main.purs

+ 19 - 0
.gitignore

@@ -0,0 +1,19 @@
+/bower_components/
+/node_modules/
+/.pulp-cache/
+/output/
+/generated-docs/
+/.psc-package/
+/.psc*
+/.purs*
+/.psa*
+/.spago
+/.cache
+/.parcel-cache
+/dist
+/tags
+/extension/background.js
+/extension/background.js.map
+/extension/content.js
+/extension/content.js.map
+/pure_tabs.xpi

+ 7 - 0
README.md

@@ -0,0 +1,7 @@
+# Exemple of Firefox extension with PureScript
+
+Basically just a stripped out version of : https://github.com/Kazy/PureTabs
+
+Tests can be run with `spago test` [TODO : for some reason setting npm "test" script to this value won't work]
+
+Javascript source maps won't work out-of-the-box if JS source files are in e.g. `extension/src` instead of `extension`. This can surely be solved using this issue : https://github.com/parcel-bundler/parcel/issues/3750

+ 22 - 0
extension/manifest.json

@@ -0,0 +1,22 @@
+{
+  "manifest_version": 2,
+  "name": "Firefox extension example",
+  "description": " extension written in PureScript",
+  "version": "0.1.0",
+  "browser_specific_settings": {
+    "gecko": {
+      "id": "new_ext@mozilla.org"
+    }
+  },
+  "content_scripts": [
+    {
+      "matches": ["*://*/*"],
+      "js": ["content.js"]
+    }
+  ],
+  "background": {
+    "scripts": ["background.js"],
+    "persistent": true
+  },
+  "permissions": ["tabs", "storage"]
+}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 10615 - 0
package-lock.json


+ 28 - 0
package.json

@@ -0,0 +1,28 @@
+{
+  "name": "web-extension-ps-example",
+  "version": "0.1.0",
+  "description": "Firefox extension written in PureScript",
+  "directories": {
+    "test": "test"
+  },
+  "scripts": {
+    "parcel": "parcel",
+    "dev": "concurrently --kill-others \"spago build --watch\" \"parcel watch src/background.js src/content.js --dist-dir extension/\"",
+    "build": "spago build && parcel build src/background.js src/content.js -d extension/",
+    "test": "echo \"Error: no test specified\" && exit 1",
+    "clean": "rm -rf .cache .psci_modules modules dist extension/background.js extension/background.js.map extension/content.js extension/content.js.map",
+    "start:firefox": "web-ext run --source-dir ./extension",
+    "sign": "web-ext sign --source-dir ./extension"
+  },
+  "author": "",
+  "license": "ISC",
+  "devDependencies": {
+    "concurrently": "^5.2.0",
+    "parcel": "^2.11.0",
+    "spago": "^0.21.0",
+    "web-ext": "^7.10.0"
+  },
+  "resolutions": {
+    "@babel/preset-env": "7.13.8"
+  }
+}

+ 127 - 0
packages.dhall

@@ -0,0 +1,127 @@
+{-
+Welcome to your new Dhall package-set!
+
+Below are instructions for how to edit this file for most use
+cases, so that you don't need to know Dhall to use it.
+
+## Warning: Don't Move This Top-Level Comment!
+
+Due to how `dhall format` currently works, this comment's
+instructions cannot appear near corresponding sections below
+because `dhall format` will delete the comment. However,
+it will not delete a top-level comment like this one.
+
+## Use Cases
+
+Most will want to do one or both of these options:
+1. Override/Patch a package's dependency
+2. Add a package not already in the default package set
+
+This file will continue to work whether you use one or both options.
+Instructions for each option are explained below.
+
+### Overriding/Patching a package
+
+Purpose:
+- Change a package's dependency to a newer/older release than the
+    default package set's release
+- Use your own modified version of some dependency that may
+    include new API, changed API, removed API by
+    using your custom git repo of the library rather than
+    the package set's repo
+
+Syntax:
+Replace the overrides' "{=}" (an empty record) with the following idea
+The "//" or "⫽" means "merge these two records and
+  when they have the same value, use the one on the right:"
+-------------------------------
+let overrides =
+  { packageName =
+      upstream.packageName // { updateEntity1 = "new value", updateEntity2 = "new value" }
+  , packageName =
+      upstream.packageName // { version = "v4.0.0" }
+  , packageName =
+      upstream.packageName // { repo = "https://www.example.com/path/to/new/repo.git" }
+  }
+-------------------------------
+
+Example:
+-------------------------------
+let overrides =
+  { halogen =
+      upstream.halogen // { version = "master" }
+  , halogen-vdom =
+      upstream.halogen-vdom // { version = "v4.0.0" }
+  }
+-------------------------------
+
+### Additions
+
+Purpose:
+- Add packages that aren't already included in the default package set
+
+Syntax:
+Replace the additions' "{=}" (an empty record) with the following idea:
+-------------------------------
+let additions =
+  { package-name =
+       { dependencies =
+           [ "dependency1"
+           , "dependency2"
+           ]
+       , repo =
+           "https://example.com/path/to/git/repo.git"
+       , version =
+           "tag ('v4.0.0') or branch ('master')"
+       }
+  , package-name =
+       { dependencies =
+           [ "dependency1"
+           , "dependency2"
+           ]
+       , repo =
+           "https://example.com/path/to/git/repo.git"
+       , version =
+           "tag ('v4.0.0') or branch ('master')"
+       }
+  , etc.
+  }
+-------------------------------
+
+Example:
+-------------------------------
+let additions =
+  { benchotron =
+      { dependencies =
+          [ "arrays"
+          , "exists"
+          , "profunctor"
+          , "strings"
+          , "quickcheck"
+          , "lcg"
+          , "transformers"
+          , "foldable-traversable"
+          , "exceptions"
+          , "node-fs"
+          , "node-buffer"
+          , "node-readline"
+          , "datetime"
+          , "now"
+          ]
+      , repo =
+          "https://github.com/hdgarrood/purescript-benchotron.git"
+      , version =
+          "v7.0.0"
+      }
+  }
+-------------------------------
+-}
+let upstream =
+      https://github.com/purescript/package-sets/releases/download/psc-0.15.13-20231228/packages.dhall
+        sha256:f61b8e3181e85976f495fd7c023506551914bc733f0b26cb209bc67e3c4f4024
+
+let overrides = {=}
+
+let additions = {=}
+
+in  upstream // overrides // additions

+ 14 - 0
spago.dhall

@@ -0,0 +1,14 @@
+{-
+Welcome to a Spago project!
+You can edit this file as you like.
+-}
+{ name = "web-extension"
+, dependencies =
+  [ "prelude"
+  , "console"
+  , "control"  
+  , "effect"
+  ]
+, packages = ./packages.dhall
+, sources = [ "src/**/*.purs", "test/**/*.purs" ]
+}

+ 11 - 0
src/Background.purs

@@ -0,0 +1,11 @@
+module ExampleWebExt.Background where
+
+import Prelude
+
+import Effect.Console (log)
+import Effect (Effect)
+
+main :: Effect Unit
+main = do
+  log "[bg] starting up"
+  

+ 11 - 0
src/Content.purs

@@ -0,0 +1,11 @@
+module ExampleWebExt.Content where
+
+import Prelude
+
+import Effect.Console (log)
+import Effect (Effect)
+
+main :: Effect Unit
+main = do
+  log "[content] starting up"
+  

+ 7 - 0
src/background.js

@@ -0,0 +1,7 @@
+var Background = require("../output/ExampleWebExt.Background");
+
+function main() {
+  Background.main();
+}
+
+main();

+ 7 - 0
src/content.js

@@ -0,0 +1,7 @@
+var Content = require("../output/ExampleWebExt.Content");
+
+function main() {
+    Content.main();
+}
+
+main();

+ 11 - 0
test/Main.purs

@@ -0,0 +1,11 @@
+module Test.Main where
+
+import Prelude
+
+import Effect (Effect)
+import Effect.Class.Console (log)
+
+main :: Effect Unit
+main = do
+  log "🍝"
+  log "You should add some tests."