summaryrefslogtreecommitdiff
path: root/dev-wallet-wx.rst
diff options
context:
space:
mode:
authorMarcello Stanisci <marcello.stanisci@inria.fr>2016-12-26 18:42:18 +0100
committerMarcello Stanisci <marcello.stanisci@inria.fr>2017-01-27 10:42:46 +0100
commit735fb8a89f51875196783b167e8ae622368808fc (patch)
tree39db1fdaa9fc253abcbdddc641ce6aee598f545b /dev-wallet-wx.rst
parentf248c701bbb16af1a540d56895a772c6748b80a9 (diff)
downloaddocs-735fb8a89f51875196783b167e8ae622368808fc.tar.gz
docs-735fb8a89f51875196783b167e8ae622368808fc.tar.bz2
docs-735fb8a89f51875196783b167e8ae622368808fc.zip
Still on splitting
Diffstat (limited to 'dev-wallet-wx.rst')
-rw-r--r--dev-wallet-wx.rst212
1 files changed, 0 insertions, 212 deletions
diff --git a/dev-wallet-wx.rst b/dev-wallet-wx.rst
deleted file mode 100644
index 8ba29975..00000000
--- a/dev-wallet-wx.rst
+++ /dev/null
@@ -1,212 +0,0 @@
-..
- This file is part of GNU TALER.
- Copyright (C) 2014, 2015, 2016 INRIA
- TALER is free software; you can redistribute it and/or modify it under the
- terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2.1, or (at your option) any later version.
- TALER is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- You should have received a copy of the GNU Lesser General Public License along with
- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
-
- @author Florian Dold
-
-=====================
-WebExtensions Wallet
-=====================
-
-------------
-Introduction
-------------
-
-The WebExtensions Wallet (*wxwallet*) can be used to pay with GNU Taler on web
-sites from within modern web browsers. The `WebExtensions
-<https://wiki.mozilla.org/WebExtensions>`_ API enables the development of
-cross-browser extensions. Google Chrome / Chromium, Mozilla Firefox, Opera and
-Microsoft Edge will all offer support for WebExtensions and thus be able to support Taler.
-
-Currently Chrome hast the best support for WebExtensions (since the API is a
-superset of Chrome's extension API).
-
------------------------
-Development Environment
------------------------
-
-The *wxwallet* mainly written in the `TypeScript
-<http://www.typescriptlang.org/>`_ language, which is a statically typed
-superset of JavaScript.
-
-While the *wxwallet* is mainly intended to be run from inside a browser, the
-logic is implemented in browser-independent modules that can also be called
-from other environments such as `nodejs <https://nodejs.org>`_. This is
-especially useful for automatically running unit tests.
-
-
------------------
-Project Structure
------------------
-
-.. parsed-literal::
-
- **manifest.json** extension configuration
- **package.json** node.js package configuration
- **tsconfig.json** TypeScript compiler configuration
- **gulpfile.js** Build tasks script
- **lib/**
- **vendor/** 3rd party libraries
- **wallet/** actual application logic
- **emscripten/** emscripten object file and glue
- **test/**
- **run_tests.js** nodejs entry point for tests
- **tests/** test cases
- **content_scripts/notify.ts** wallet<->website signaling
- **backgrond/main.ts** backend entry point
- **img/** static image resources
- **style/** CSS stylesheets
- **pages/** pages shown in browser tabs
- **popup/** pages shown the extension popup
-
-
--------------------
-Building the Wallet
--------------------
-
-To build the extension for use during development, simply run the TypeScript compiler
-from the extension directory:
-
-.. code-block:: sh
-
- $ cd wallet.git/wallet_webextension/extension/
- $ tsc
-
-This will use the ``tsconfig.json`` with development options such as `source map`_ support.
-
-.. _`source map`: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit
-
-When TypeScript source files are added or deleted to the project, make sure that the
-globs in ``gulpfile.js`` match them so that they will be compiled. The ``tsconfig.json``
-is generated by running:
-
-
-.. code-block:: sh
-
- $ gulp tsconfig
-
-.. caution::
-
- Do not edit the ``tsconfig.json`` manually. The source files should be defined in
- one place, and that is ``gulpfile.js``.
-
-To pack the extension in a format that can be uploaded to the Google Webstore, run:
-
-.. code-block:: sh
-
- $ gulp package
-
-This will build the wallet without source maps, copy resource files (which also need to be
-specified in ``gulpfile.js``) and create an archive.
-
-
-----------
-Emscripten
-----------
-
-`Emscripten <https://kripken.github.io/emscripten-site/index.html>`_ is C/C++
-to JavaScript compiler. Emscripten is used in the *wxwallet* to access
-low-level cryptography from *libgcrypt*, and miscellaneous functionality from
-*libgnunetutil* and *libtalerwallet*.
-
-TODO: say things about wrappers
-
-
---------------------------------------
-Target Environments and Modularization
---------------------------------------
-
-Modules in the wallet are declared in TypeScript with
-the ES6 module syntax. These modules are then compiled
-to `SystemJS <https://github.com/systemjs/systemjs>`_ `register` modules.
-
-SystemJS modules can be loaded from the browser as well as from nodejs.
-However they require special entry points that configure the module system,
-load modules and execute code. Examples are `backgrond/main.ts` for the
-browser and `test/run_tests.js` for nodejs.
-
-Note that special care has to be taken when loading the Emscript code,
-as it is not compatible with the SystemJS module, even in the `globals`
-compatibility mode.
-
-The TypeScript sources in the *wxwallet* are compiled down to ES5, both to
-enable running in node.js without transpilers and to avoid a `bug
-<https://github.com/Microsoft/TypeScript/issues/6426>`_ in the TypeScript
-compiler.
-
-----------------------------
-IndexedDB Query Abstractions
-----------------------------
-
-The *wxwallet* uses a fluent-style API for queries on IndexedDB.
-
-TODO: say more about this
-
-
--------
-Testing
--------
-
-Test cases for the wallet are written in TypeScript and
-run with `mochajs <http://mochajs.org/>`_ and the `better-assert <https://github.com/tj/better-assert>`_ assertion
-library.
-
-Run the default test suite with ``npm run test``, which will
-call `mocha` with the right parameters.
-
-
---------------------
-Internationalisation
---------------------
-
-Strings in the JavaScript code are internationalised using the following functions:
-
-- *i18n*: translate string with arbitrary arguments, the result is returned as string.
-
-.. code-block:: js
-
- i18n`You have ${n} coins.`
-
-- *i18n.parts*: Interpolate i18nized values with arbitrary objects.
- Useful for example to include HTML elements.
-
-.. code-block:: js
-
- i18n.parts`Visit ${link} to get more coins.`
-
-- *i18n.pluralize*: translate with plural form.
- The i18n.number() function returns a ``PluralNumber`` object
- that specifies the argument that determines the plural form,
- if not present the first numeric argument is used.
-
-.. code-block:: js
-
- i18n.pluralize(
- i18n`${i}: you have ${i18n.number(n)} coin.`,
- `${i}: you have ${i18n.number(n)} coins.`);
-
-These functions are defined in ``lib/i18n.ts``.
-Include ``lib/vendor/jed.js``, ``lib/i18n.js``, ``lib/i18n-strings.js`` to use them.
-
-To extract strings from sources and update the .po files, run:
-
-.. code-block:: sh
-
- $ make i18n
-
-In static HTML files the ``lang`` attribute is used for language-specific strings:
-
-.. code-block:: html
-
- <p lang="en">Hello World!</p>
- <p lang="de">Hallo Welt!</p>
-
-``lib/i18n.js`` and ``style/lang.css`` needs to be included for this to work.