composer updates

This commit is contained in:
nobody 2022-01-05 08:39:42 +11:00
parent 193a5403a7
commit cd11406555
262 changed files with 18389 additions and 10277 deletions

View file

@ -8,17 +8,20 @@
"permission",
"SSO",
"ZOT",
"ZOT6"
"ZOT6",
"Nomad",
"Fediverse",
"activitypub"
],
"homepage" : "http://codeberg.org/zot/zap/",
"license" : "MIT",
"license" : "Unlicense",
"authors" : [{
"name" : "Mike Macgirvin",
"role" : "founder"
}
],
"support" : {
"issues" : "https://codeberg.org/zot/zap/issues",
"issues" : "https://z.macgirvin.com/channel/zap",
"source" : "https://codeberg.org/zot/zap/"
},
"require" : {
@ -45,7 +48,8 @@
"forkawesome/fork-awesome": "^1.1",
"p3k/emoji-detector": "^0.2.1",
"phpseclib/phpseclib": "^2.0",
"ext-json": "*"
"ext-json": "*",
"symfony/yaml": "^6.0"
},
"require-dev" : {
"phpunit/phpunit" : "@stable",

1862
composer.lock generated

File diff suppressed because it is too large Load diff

1
vendor/bin/yaml-lint vendored Symbolic link
View file

@ -0,0 +1 @@
../symfony/yaml/Resources/bin/yaml-lint

View file

@ -5,20 +5,16 @@ on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14, 16]
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v1
- uses: actions/setup-node@v2
with:
node-version: 12.x
- name: npm install
run: npm install
env:
CI: true
- name: lint
run: npm run lint
env:
CI: true
node-version: ${{ matrix.node-version }}
- run: npm install
- run: npm run lint
mocha:
runs-on: ubuntu-latest
@ -55,7 +51,7 @@ jobs:
run: docker-compose down -v
- name: Upload reports
if: always()
uses: actions/upload-artifact@master
uses: actions/upload-artifact@v2
with:
name: reports
path: wdio/reports
@ -78,7 +74,7 @@ jobs:
run: docker-compose down -v
- name: Upload reports
if: always()
uses: actions/upload-artifact@master
uses: actions/upload-artifact@v2
with:
name: reports
path: wdio/reports

View file

@ -4,7 +4,6 @@ services:
build: server/php
ports:
- 127.0.0.1:80:80
- ${SERVER_HOST:-127.0.0.1}:${SERVER_PORT-}:80
volumes:
- .:/var/www/html
mocha:
@ -16,7 +15,6 @@ services:
- example
chromedriver:
image: blueimp/chromedriver
init: true
tmpfs: /tmp
environment:
- DISABLE_X11=false
@ -28,7 +26,6 @@ services:
- 127.0.0.1:5900:5900
geckodriver:
image: blueimp/geckodriver
init: true
tmpfs: /tmp
shm_size: 2g
environment:
@ -41,18 +38,17 @@ services:
- 127.0.0.1:5901:5900
wdio:
image: blueimp/wdio
init: true
read_only: true
tmpfs:
- /tmp
environment:
- WAIT_FOR_HOSTS= chromedriver:4444 geckodriver:4444 example:80
- WAIT_FOR_HOSTS=chromedriver:4444 geckodriver:4444 example:80
- WINDOWS_HOST
- MACOS_ASSETS_DIR=$PWD/wdio/assets/
- WINDOWS_ASSETS_DIR
volumes:
- ./wdio:/opt:ro
- ./wdio/reports:/opt/reports
- ./wdio:/app:ro
- ./wdio/reports:/app/reports
depends_on:
- chromedriver
- geckodriver

View file

@ -81,7 +81,8 @@
crop: '@',
orientation: '@',
forceResize: '@',
disabled: '@disableImageResize'
disabled: '@disableImageResize',
imageSmoothingQuality: '@imageSmoothingQuality'
},
{
action: 'saveImage',

View file

@ -120,7 +120,7 @@
options.processQueue = processQueue;
},
// Returns the number of files currently in the processsing queue:
// Returns the number of files currently in the processing queue:
processing: function () {
return this._processing;
},

View file

@ -57,7 +57,7 @@
*/
// Function returning the current number of files,
// has to be overriden for maxNumberOfFiles validation:
// has to be overridden for maxNumberOfFiles validation:
getNumberOfFiles: $.noop,
// Error and info messages:

View file

@ -455,7 +455,7 @@
_initProgressListener: function (options) {
var that = this,
xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr();
// Accesss to the native XHR object is required to add event listeners
// Access to the native XHR object is required to add event listeners
// for the upload progress event:
if (xhr.upload) {
$(xhr.upload).on('progress', function (e) {
@ -489,15 +489,14 @@
name = String(name);
if (map[name]) {
// eslint-disable-next-line no-param-reassign
name = name.replace(/(?: \(([\d]+)\))?(\.[^.]+)?$/, function (
_,
p1,
p2
) {
name = name.replace(
/(?: \(([\d]+)\))?(\.[^.]+)?$/,
function (_, p1, p2) {
var index = p1 ? Number(p1) + 1 : 1;
var ext = p2 || '';
return ' (' + index + ')' + ext;
});
}
);
return this._getUniqueFilename(name, map);
}
map[name] = true;
@ -1172,7 +1171,7 @@
data.fileInputClone = inputClone;
$('<form></form>').append(inputClone)[0].reset();
// Detaching allows to insert the fileInput on another form
// without loosing the file input value:
// without losing the file input value:
input.after(inputClone).detach();
// If the fileInput had focus before it was detached,
// restore focus to the inputClone.
@ -1298,8 +1297,7 @@
_getSingleFileInputFiles: function (fileInput) {
// eslint-disable-next-line no-param-reassign
fileInput = $(fileInput);
var entries =
fileInput.prop('webkitEntries') || fileInput.prop('entries'),
var entries = fileInput.prop('entries'),
files,
value;
if (entries && entries.length) {

View file

@ -660,9 +660,8 @@
) {
return;
}
return (typeof handler === 'string'
? instance[handler]
: handler
return (
typeof handler === 'string' ? instance[handler] : handler
).apply(instance, arguments);
}
@ -699,9 +698,8 @@
_delay: function (handler, delay) {
var instance = this;
function handlerProxy() {
return (typeof handler === 'string'
? instance[handler]
: handler
return (
typeof handler === 'string' ? instance[handler] : handler
).apply(instance, arguments);
}
return setTimeout(handlerProxy, delay || 0);
@ -737,9 +735,8 @@
data = data || {};
event = $.Event(event);
event.type = (type === this.widgetEventPrefix
? type
: this.widgetEventPrefix + type
event.type = (
type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type
).toLowerCase();
// The original event may come from any element

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
{
"name": "blueimp-file-upload",
"version": "10.31.0",
"version": "10.32.0",
"title": "jQuery File Upload",
"description": "File Upload widget with multiple file selection, drag&drop support, progress bar, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (Google App Engine, PHP, Python, Ruby on Rails, Java, etc.) that supports standard HTML form file uploads.",
"keywords": [
@ -45,13 +45,13 @@
"devDependencies": {
"eslint": "7",
"eslint-config-blueimp": "2",
"eslint-config-prettier": "6",
"eslint-plugin-jsdoc": "29",
"eslint-plugin-prettier": "3",
"eslint-config-prettier": "8",
"eslint-plugin-jsdoc": "36",
"eslint-plugin-prettier": "4",
"prettier": "2",
"stylelint": "13",
"stylelint-config-prettier": "8",
"stylelint-config-recommended": "3"
"stylelint-config-recommended": "5"
},
"stylelint": {
"extends": [

View file

@ -1,10 +0,0 @@
runtime: go
api_version: go1
handlers:
- url: /(favicon\.ico|robots\.txt)
static_files: static/\1
upload: static/(.*)
expiration: '1d'
- url: /.*
script: _go_app

View file

@ -1,361 +0,0 @@
/*
* jQuery File Upload Plugin GAE Go Example
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2011, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* https://opensource.org/licenses/MIT
*/
package app
import (
"bufio"
"bytes"
"encoding/json"
"fmt"
"github.com/disintegration/gift"
"golang.org/x/net/context"
"google.golang.org/appengine"
"google.golang.org/appengine/memcache"
"hash/crc32"
"image"
"image/gif"
"image/jpeg"
"image/png"
"io"
"log"
"mime/multipart"
"net/http"
"net/url"
"path/filepath"
"regexp"
"strings"
)
const (
WEBSITE = "https://blueimp.github.io/jQuery-File-Upload/"
MIN_FILE_SIZE = 1 // bytes
// Max file size is memcache limit (1MB) minus key size minus overhead:
MAX_FILE_SIZE = 999000 // bytes
IMAGE_TYPES = "image/(gif|p?jpeg|(x-)?png)"
ACCEPT_FILE_TYPES = IMAGE_TYPES
THUMB_MAX_WIDTH = 80
THUMB_MAX_HEIGHT = 80
EXPIRATION_TIME = 300 // seconds
// If empty, only allow redirects to the referer protocol+host.
// Set to a regexp string for custom pattern matching:
REDIRECT_ALLOW_TARGET = ""
)
var (
imageTypes = regexp.MustCompile(IMAGE_TYPES)
acceptFileTypes = regexp.MustCompile(ACCEPT_FILE_TYPES)
thumbSuffix = "." + fmt.Sprint(THUMB_MAX_WIDTH) + "x" +
fmt.Sprint(THUMB_MAX_HEIGHT)
)
func escape(s string) string {
return strings.Replace(url.QueryEscape(s), "+", "%20", -1)
}
func extractKey(r *http.Request) string {
// Use RequestURI instead of r.URL.Path, as we need the encoded form:
path := strings.Split(r.RequestURI, "?")[0]
// Also adjust double encoded slashes:
return strings.Replace(path[1:], "%252F", "%2F", -1)
}
func check(err error) {
if err != nil {
panic(err)
}
}
type FileInfo struct {
Key string `json:"-"`
ThumbnailKey string `json:"-"`
Url string `json:"url,omitempty"`
ThumbnailUrl string `json:"thumbnailUrl,omitempty"`
Name string `json:"name"`
Type string `json:"type"`
Size int64 `json:"size"`
Error string `json:"error,omitempty"`
DeleteUrl string `json:"deleteUrl,omitempty"`
DeleteType string `json:"deleteType,omitempty"`
}
func (fi *FileInfo) ValidateType() (valid bool) {
if acceptFileTypes.MatchString(fi.Type) {
return true
}
fi.Error = "Filetype not allowed"
return false
}
func (fi *FileInfo) ValidateSize() (valid bool) {
if fi.Size < MIN_FILE_SIZE {
fi.Error = "File is too small"
} else if fi.Size > MAX_FILE_SIZE {
fi.Error = "File is too big"
} else {
return true
}
return false
}
func (fi *FileInfo) CreateUrls(r *http.Request, c context.Context) {
u := &url.URL{
Scheme: r.URL.Scheme,
Host: appengine.DefaultVersionHostname(c),
Path: "/",
}
uString := u.String()
fi.Url = uString + fi.Key
fi.DeleteUrl = fi.Url
fi.DeleteType = "DELETE"
if fi.ThumbnailKey != "" {
fi.ThumbnailUrl = uString + fi.ThumbnailKey
}
}
func (fi *FileInfo) SetKey(checksum uint32) {
fi.Key = escape(string(fi.Type)) + "/" +
escape(fmt.Sprint(checksum)) + "/" +
escape(string(fi.Name))
}
func (fi *FileInfo) createThumb(buffer *bytes.Buffer, c context.Context) {
if imageTypes.MatchString(fi.Type) {
src, _, err := image.Decode(bytes.NewReader(buffer.Bytes()))
check(err)
filter := gift.New(gift.ResizeToFit(
THUMB_MAX_WIDTH,
THUMB_MAX_HEIGHT,
gift.LanczosResampling,
))
dst := image.NewNRGBA(filter.Bounds(src.Bounds()))
filter.Draw(dst, src)
buffer.Reset()
bWriter := bufio.NewWriter(buffer)
switch fi.Type {
case "image/jpeg", "image/pjpeg":
err = jpeg.Encode(bWriter, dst, nil)
case "image/gif":
err = gif.Encode(bWriter, dst, nil)
default:
err = png.Encode(bWriter, dst)
}
check(err)
bWriter.Flush()
thumbnailKey := fi.Key + thumbSuffix + filepath.Ext(fi.Name)
item := &memcache.Item{
Key: thumbnailKey,
Value: buffer.Bytes(),
}
err = memcache.Set(c, item)
check(err)
fi.ThumbnailKey = thumbnailKey
}
}
func handleUpload(r *http.Request, p *multipart.Part) (fi *FileInfo) {
fi = &FileInfo{
Name: p.FileName(),
Type: p.Header.Get("Content-Type"),
}
if !fi.ValidateType() {
return
}
defer func() {
if rec := recover(); rec != nil {
log.Println(rec)
fi.Error = rec.(error).Error()
}
}()
var buffer bytes.Buffer
hash := crc32.NewIEEE()
mw := io.MultiWriter(&buffer, hash)
lr := &io.LimitedReader{R: p, N: MAX_FILE_SIZE + 1}
_, err := io.Copy(mw, lr)
check(err)
fi.Size = MAX_FILE_SIZE + 1 - lr.N
if !fi.ValidateSize() {
return
}
fi.SetKey(hash.Sum32())
item := &memcache.Item{
Key: fi.Key,
Value: buffer.Bytes(),
}
context := appengine.NewContext(r)
err = memcache.Set(context, item)
check(err)
fi.createThumb(&buffer, context)
fi.CreateUrls(r, context)
return
}
func getFormValue(p *multipart.Part) string {
var b bytes.Buffer
io.CopyN(&b, p, int64(1<<20)) // Copy max: 1 MiB
return b.String()
}
func handleUploads(r *http.Request) (fileInfos []*FileInfo) {
fileInfos = make([]*FileInfo, 0)
mr, err := r.MultipartReader()
check(err)
r.Form, err = url.ParseQuery(r.URL.RawQuery)
check(err)
part, err := mr.NextPart()
for err == nil {
if name := part.FormName(); name != "" {
if part.FileName() != "" {
fileInfos = append(fileInfos, handleUpload(r, part))
} else {
r.Form[name] = append(r.Form[name], getFormValue(part))
}
}
part, err = mr.NextPart()
}
return
}
func validateRedirect(r *http.Request, redirect string) bool {
if redirect != "" {
var redirectAllowTarget *regexp.Regexp
if REDIRECT_ALLOW_TARGET != "" {
redirectAllowTarget = regexp.MustCompile(REDIRECT_ALLOW_TARGET)
} else {
referer := r.Referer()
if referer == "" {
return false
}
refererUrl, err := url.Parse(referer)
if err != nil {
return false
}
redirectAllowTarget = regexp.MustCompile("^" + regexp.QuoteMeta(
refererUrl.Scheme+"://"+refererUrl.Host+"/",
))
}
return redirectAllowTarget.MatchString(redirect)
}
return false
}
func get(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/" {
http.Redirect(w, r, WEBSITE, http.StatusFound)
return
}
// Use RequestURI instead of r.URL.Path, as we need the encoded form:
key := extractKey(r)
parts := strings.Split(key, "/")
if len(parts) == 3 {
context := appengine.NewContext(r)
item, err := memcache.Get(context, key)
if err == nil {
w.Header().Add("X-Content-Type-Options", "nosniff")
contentType, _ := url.QueryUnescape(parts[0])
if !imageTypes.MatchString(contentType) {
contentType = "application/octet-stream"
}
w.Header().Add("Content-Type", contentType)
w.Header().Add(
"Cache-Control",
fmt.Sprintf("public,max-age=%d", EXPIRATION_TIME),
)
w.Write(item.Value)
return
}
}
http.Error(w, "404 Not Found", http.StatusNotFound)
}
func post(w http.ResponseWriter, r *http.Request) {
result := make(map[string][]*FileInfo, 1)
result["files"] = handleUploads(r)
b, err := json.Marshal(result)
check(err)
if redirect := r.FormValue("redirect"); validateRedirect(r, redirect) {
if strings.Contains(redirect, "%s") {
redirect = fmt.Sprintf(
redirect,
escape(string(b)),
)
}
http.Redirect(w, r, redirect, http.StatusFound)
return
}
w.Header().Set("Cache-Control", "no-cache")
jsonType := "application/json"
if strings.Index(r.Header.Get("Accept"), jsonType) != -1 {
w.Header().Set("Content-Type", jsonType)
}
fmt.Fprintln(w, string(b))
}
func delete(w http.ResponseWriter, r *http.Request) {
key := extractKey(r)
parts := strings.Split(key, "/")
if len(parts) == 3 {
result := make(map[string]bool, 1)
context := appengine.NewContext(r)
err := memcache.Delete(context, key)
if err == nil {
result[key] = true
contentType, _ := url.QueryUnescape(parts[0])
if imageTypes.MatchString(contentType) {
thumbnailKey := key + thumbSuffix + filepath.Ext(parts[2])
err := memcache.Delete(context, thumbnailKey)
if err == nil {
result[thumbnailKey] = true
}
}
}
w.Header().Set("Content-Type", "application/json")
b, err := json.Marshal(result)
check(err)
fmt.Fprintln(w, string(b))
} else {
http.Error(w, "405 Method not allowed", http.StatusMethodNotAllowed)
}
}
func handle(w http.ResponseWriter, r *http.Request) {
params, err := url.ParseQuery(r.URL.RawQuery)
check(err)
w.Header().Add("Access-Control-Allow-Origin", "*")
w.Header().Add(
"Access-Control-Allow-Methods",
"OPTIONS, HEAD, GET, POST, DELETE",
)
w.Header().Add(
"Access-Control-Allow-Headers",
"Content-Type, Content-Range, Content-Disposition",
)
switch r.Method {
case "OPTIONS", "HEAD":
return
case "GET":
get(w, r)
case "POST":
if len(params["_method"]) > 0 && params["_method"][0] == "DELETE" {
delete(w, r)
} else {
post(w, r)
}
case "DELETE":
delete(w, r)
default:
http.Error(w, "501 Not Implemented", http.StatusNotImplemented)
}
}
func init() {
http.HandleFunc("/", handle)
}

View file

@ -1,2 +0,0 @@
User-agent: *
Disallow:

View file

@ -3,13 +3,16 @@ api_version: 1
threadsafe: true
libraries:
- name: PIL
- name: PIL
version: latest
handlers:
- url: /(favicon\.ico|robots\.txt)
- url: /(favicon\.ico|robots\.txt)
static_files: static/\1
upload: static/(.*)
expiration: '1d'
- url: /.*
- url: /.*
script: main.app
automatic_scaling:
max_instances: 1

View file

@ -1,4 +1,4 @@
FROM php:7.4-apache
FROM php:8.0.11-apache
# Enable the Apache Headers module:
RUN ln -s /etc/apache2/mods-available/headers.load \

View file

@ -305,7 +305,7 @@ module.exports = {
*
* Set it to zero if you want to disable truncating altogether.
*
* This is especially userful when doing assertions on arrays: having this
* This is especially useful when doing assertions on arrays: having this
* set to a reasonable large value makes the failure messages readily
* inspectable.
*

View file

@ -1980,7 +1980,7 @@ Mocha.prototype.global = function(global) {
});
return this;
};
// for backwards compability, 'globals' is an alias of 'global'
// for backwards compatibility, 'globals' is an alias of 'global'
Mocha.prototype.globals = Mocha.prototype.global;
/**
@ -2170,7 +2170,7 @@ Mocha.prototype.enableTimeouts = function(enableTimeouts) {
*
* @public
* @see [CLI option](../#-async-only-a)
* @param {boolean} [asyncOnly=true] - Wether to force `done` callback or promise.
* @param {boolean} [asyncOnly=true] - Whether to force `done` callback or promise.
* @return {Mocha} this
* @chainable
*/
@ -8144,7 +8144,7 @@ exports.isPromise = function isPromise(value) {
* Clamps a numeric value to an inclusive range.
*
* @param {number} value - Value to be clamped.
* @param {numer[]} range - Two element array specifying [min, max] range.
* @param {number[]} range - Two element array specifying [min, max] range.
* @returns {number} clamped value
*/
exports.clamp = function clamp(value, range) {
@ -8677,7 +8677,7 @@ function alloc (size, fill, encoding) {
if (fill !== undefined) {
// Only pay attention to encoding if it's a string. This
// prevents accidentally sending in a number that would
// be interpretted as a start offset.
// be interpreted as a start offset.
return typeof encoding === 'string'
? createBuffer(size).fill(fill, encoding)
: createBuffer(size).fill(fill)
@ -8969,7 +8969,7 @@ function slowToString (encoding, start, end) {
return ''
}
// Force coersion to uint32. This will also coerce falsey/NaN values to 0.
// Force coercion to uint32. This will also coerce falsey/NaN values to 0.
end >>>= 0
start >>>= 0
@ -14499,7 +14499,7 @@ function defaultClearTimeout () {
} ())
function runTimeout(fun) {
if (cachedSetTimeout === setTimeout) {
//normal enviroments in sane situations
//normal environments in sane situations
return setTimeout(fun, 0);
}
// if setTimeout wasn't available but was latter defined
@ -14508,14 +14508,14 @@ function runTimeout(fun) {
return setTimeout(fun, 0);
}
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
// when when somebody has screwed with setTimeout but no I.E. madness
return cachedSetTimeout(fun, 0);
} catch(e){
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedSetTimeout.call(null, fun, 0);
} catch(e){
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
// same as above but when it's a version of I.E. that must have the global object for 'this', hopefully our context correct otherwise it will throw a global error
return cachedSetTimeout.call(this, fun, 0);
}
}
@ -14524,7 +14524,7 @@ function runTimeout(fun) {
}
function runClearTimeout(marker) {
if (cachedClearTimeout === clearTimeout) {
//normal enviroments in sane situations
//normal environments in sane situations
return clearTimeout(marker);
}
// if clearTimeout wasn't available but was latter defined
@ -14533,14 +14533,14 @@ function runClearTimeout(marker) {
return clearTimeout(marker);
}
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
// when when somebody has screwed with setTimeout but no I.E. madness
return cachedClearTimeout(marker);
} catch (e){
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedClearTimeout.call(null, marker);
} catch (e){
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
// same as above but when it's a version of I.E. that must have the global object for 'this', hopefully our context correct otherwise it will throw a global error.
// Some versions of I.E. have different rules for clearTimeout vs setTimeout
return cachedClearTimeout.call(this, marker);
}
@ -14606,7 +14606,7 @@ process.nextTick = function (fun) {
}
};
// v8 likes predictible objects
// v8 likes predictable objects
function Item(fun, array) {
this.fun = fun;
this.array = array;
@ -17697,7 +17697,7 @@ exports.debuglog = function(set) {
/**
* Echos the value of a value. Trys to print the value out
* Echos the value of a value. Tries to print the value out
* in the best way possible given the different types.
*
* @param {Object} obj The object to print out.

View file

@ -1,85 +0,0 @@
#!/bin/sh
#
# Adds TCP/UDP port forwarding rules to the pf firewall (MacOS/BSD).
#
# Adds rules for both TCP and UDP in addition to those from /etc/pf.conf.
# Requires an existing rdr-anchor entry in /etc/pf.conf.
# Only adds rules temporarily, without changing any files.
#
# Usage: ./forward-ports.sh [[nic:]port=[ip:]port [...]]
#
# If no network interface is given, forwards from all interfaces.
# If no IP is given, forwards to 127.0.0.1.
# If no port forwarding rule is given, resets to the rules from /etc/pf.conf.
#
# e.g. forwarding ports 80 and 443 on network interface en0 to ports 8080 and
# 8443 on localhost respectively:
# ./forward-ports.sh en0:80=8080 en0:443=8443
#
# Copyright 2019, Sebastian Tschan
# https://blueimp.net
#
# Licensed under the MIT license:
# https://opensource.org/licenses/MIT
#
set -e
RULES=
NEWLINE='
'
print_usage_exit() {
if [ -n "$RULES" ]; then
printf '\nError in custom rules:\n%s\n' "$RULES" >&2
fi
echo "Usage: $0 [[nic:]port=[ip:]port [...]]" >&2
exit 1
}
print_nat_rules() {
echo
echo 'Loaded NAT rules:'
sudo pfctl -s nat 2>/dev/null
echo
}
# Print usage and exit if option arguments like "-h" are used:
if [ "${1#-}" != "$1" ]; then print_usage_exit; fi
while test $# -gt 0; do
# Separate the from=to parts:
from=${1%=*}
to=${1#*=}
# If from part has a nic defined, extract it, else forward from all:
case "$from" in
*:*) nic="on ${from%:*}";;
*) nic=;;
esac
# Extract the port to forward from:
from_port=${from##*:}
# If to part has an IP defined, extract it, else forward to 127.0.0.1:
case "$to" in
*:*) to_ip=${to%:*};;
*) to_ip=127.0.0.1;;
esac
# Extract the port to forward to:
to_port=${to##*:}
# Create the packet filter (pf) forwarding rule for both TCP and UDP:
rule=$(
printf \
'rdr pass %s inet proto %s from any to any port %s -> %s port %s' \
"$nic" '{tcp udp}' "$from_port" "$to_ip" "$to_port"
)
# Add it to the list of rules:
RULES="$RULES$rule$NEWLINE"
shift
done
# Add the rules after the line matching "rdr-anchor" in /etc/pf.conf, print the
# combined rules to STDOUT and load the rules into pf from STDIN.
# Finally, display the loaded NAT rules or print the script usage on failure:
# shellcheck disable=SC2015
printf %s "$RULES" | sed -e '/rdr-anchor/r /dev/stdin' /etc/pf.conf |
sudo pfctl -Ef - 2>/dev/null && print_nat_rules || print_usage_exit

View file

@ -1,43 +0,0 @@
#!/bin/sh
if [ "$1" = -t ]; then
BIN='/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver'
shift
else
BIN=safaridriver
fi
SCREEN='Capture screen'
if [ -z "$1" ]; then
OUTPUT=$(ffmpeg -f avfoundation -list_devices true -i - 2>&1 | grep "$SCREEN")
if [ "$(echo "$OUTPUT" | grep -c ^)" -gt 1 ]; then
echo 'Please select the input device by entering its [index] number:' >&2
echo "$OUTPUT" >&2
read -r INDEX
fi
else
INDEX=$1
fi
echo 'Starting safaridriver on 127.0.0.1:4444 ...' >&2
"$BIN" -p 4444 & pid=$!
# shellcheck disable=SC2064
trap "kill $pid; exit" INT TERM
echo 'Starting mjpeg-server on 127.0.0.1:9000 ...' >&2
mjpeg-server -a 127.0.0.1:9000 -- ffmpeg \
-loglevel error \
-probesize 32 \
-fpsprobesize 0 \
-analyzeduration 0 \
-fflags nobuffer \
-f avfoundation \
-capture_cursor 1 \
-r "${FPS:-15}" \
-pixel_format yuyv422 \
-i "${INDEX:-$SCREEN}" \
-f mpjpeg \
-q "${QUALITY:-2}" \
-

View file

@ -1,23 +0,0 @@
'use strict'
/* eslint-disable jsdoc/valid-types */
/** @type WebdriverIO.Config */
const config = {
hostname: process.env.WINDOWS_HOST || 'host.docker.internal',
capabilities: [
{
// Set maxInstances to 1 if screen recordings are enabled:
// maxInstances: 1,
browserName: 'MicrosoftEdge'
}
],
videos: {
enabled: false,
inputFormat: 'mjpeg',
startDelay: 500,
stopDelay: 500
},
assetsDir: process.env.WINDOWS_ASSETS_DIR || process.env.MACOS_ASSETS_DIR
}
exports.config = Object.assign({}, require('./chrome').config, config)

View file

@ -1,24 +0,0 @@
'use strict'
/* eslint-disable jsdoc/valid-types */
/** @type WebdriverIO.Config */
const config = {
hostname: process.env.WINDOWS_HOST || 'host.docker.internal',
port: 4445,
capabilities: [
{
// IEDriverServer supports no parallel sessions:
maxInstances: 1,
browserName: 'internet explorer'
}
],
videos: {
enabled: true,
inputFormat: 'mjpeg',
startDelay: 500,
stopDelay: 500
},
assetsDir: process.env.WINDOWS_ASSETS_DIR
}
exports.config = Object.assign({}, require('./chrome').config, config)

View file

@ -1,24 +0,0 @@
'use strict'
/* eslint-disable jsdoc/valid-types */
/** @type WebdriverIO.Config */
const config = {
// Docker for Mac host address:
hostname: 'host.docker.internal',
capabilities: [
{
// safaridriver supports no parallel sessions:
maxInstances: 1,
browserName: 'safari'
}
],
videos: {
enabled: true,
inputFormat: 'mjpeg',
startDelay: 500,
stopDelay: 500
},
assetsDir: process.env.MACOS_ASSETS_DIR
}
exports.config = Object.assign({}, require('./chrome').config, config)

View file

@ -5,11 +5,21 @@
const cmds = require('wdio-screen-commands')
/* eslint-disable jsdoc/valid-types */
/** @type WebdriverIO.HookFunctions */
/** @type WebdriverIO.HookFunctionExtension */
const config = {
before: async () => {
// Add browser commands:
browser.addCommand('saveScreenshotByName', cmds.saveScreenshotByName)
browser.addCommand('saveAndDiffScreenshot', cmds.saveAndDiffScreenshot)
// Add element commands:
browser.addCommand('saveScreenshotByName', cmds.saveScreenshotByName, true)
browser.addCommand(
'saveAndDiffScreenshot',
cmds.saveAndDiffScreenshot,
true
)
if (browser.config.appium)
await browser.updateSettings(browser.config.appium)
if (browser.config.maximizeWindow) await browser.maximizeWindow()
},
beforeTest: async test => {

View file

@ -32,42 +32,47 @@ class FileUpload {
* Opens the file upload form.
*
* @param {number} [timeout] Wait timeout
* @returns {FileUpload} FileUpload object
*/
open(timeout) {
browser.url('/')
this.fileinput.waitForExist({ timeout })
return this
async open(timeout) {
await browser.url('/')
await this.fileinput.waitForExist({ timeout })
}
/**
* Uploads files.
*
* @param {Array<string>} files Files to upload
* @param {number} [timeout] Wait timeout
* @returns {FileUpload} FileUpload object
*/
upload(files, timeout) {
this.fileinput.addValue(files.join('\n'))
browser.waitUntil(() => !this.processing.length, { timeout })
this.start.click()
browser.waitUntil(() => !!this.downloads.length, { timeout })
browser.waitUntil(() => !this.uploads.length, { timeout })
return this
async upload(files, timeout) {
await this.fileinput.addValue(files.join('\n'))
await browser.waitUntil(async () => !(await this.processing.length), {
timeout
})
await this.start.click()
await browser.waitUntil(async () => !!(await this.downloads.length), {
timeout
})
await browser.waitUntil(async () => !(await this.uploads.length), {
timeout
})
}
/**
* Deletes uploaded files.
*
* @param {number} [timeout] Wait timeout
* @returns {FileUpload} FileUpload object
*/
delete(timeout) {
this.toggle.click()
browser.waitUntil(() => this.downloads.length === this.checked.length, {
async delete(timeout) {
await this.toggle.click()
await browser.waitUntil(
async () => (await this.downloads.length) === (await this.checked.length),
{
timeout
}
)
await this.remove.click()
await browser.waitUntil(async () => !(await this.downloads.length), {
timeout
})
this.remove.click()
browser.waitUntil(() => !this.downloads.length, { timeout })
return this
}
}

View file

@ -8,16 +8,18 @@ const assetsDir = browser.config.assetsDir
describe('File Upload', () => {
if (!assetsDir) return
it('uploads files', () => {
FileUpload.open().upload([
it('uploads files', async () => {
await FileUpload.open()
await FileUpload.upload([
assetsDir + 'black+white-60x40.gif',
assetsDir + 'black+white-3x2.jpg'
])
browser.saveAndDiffScreenshot('Files uploaded')
await browser.saveAndDiffScreenshot('Files uploaded')
})
it('deletes files', () => {
FileUpload.open().delete()
browser.saveAndDiffScreenshot('Files deleted')
it('deletes files', async () => {
await FileUpload.open()
await FileUpload.delete()
await browser.saveAndDiffScreenshot('Files deleted')
})
})

View file

@ -25,24 +25,24 @@ class InstalledVersions
private static $installed = array (
'root' =>
array (
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'pretty_version' => 'dev-dev',
'version' => 'dev-dev',
'aliases' =>
array (
),
'reference' => '441261e2d8ac174792bcb1f37f44e74d1d5c0213',
'reference' => '193a5403a7eb3ce1dae2fe2cb8e655fa0abbc57d',
'name' => 'zot/zap',
),
'versions' =>
array (
'blueimp/jquery-file-upload' =>
array (
'pretty_version' => 'v10.31.0',
'version' => '10.31.0.0',
'pretty_version' => 'v10.32.0',
'version' => '10.32.0.0',
'aliases' =>
array (
),
'reference' => '0740f81829698b84efe17e72501e0f420ea0d611',
'reference' => '20f6c4a07a6fbff22d79228c893eb1746d2d8962',
),
'bshaffer/oauth2-server-php' =>
array (
@ -64,30 +64,30 @@ class InstalledVersions
),
'doctrine/collections' =>
array (
'pretty_version' => '1.6.7',
'version' => '1.6.7.0',
'pretty_version' => '1.6.8',
'version' => '1.6.8.0',
'aliases' =>
array (
),
'reference' => '55f8b799269a1a472457bd1a41b4f379d4cfba4a',
'reference' => '1958a744696c6bb3bb0d28db2611dc11610e78af',
),
'ezyang/htmlpurifier' =>
array (
'pretty_version' => 'v4.13.0',
'version' => '4.13.0.0',
'pretty_version' => 'v4.14.0',
'version' => '4.14.0.0',
'aliases' =>
array (
),
'reference' => '08e27c97e4c6ed02f37c5b2b20488046c8d90d75',
'reference' => '12ab42bd6e742c70c0a52f7b82477fcd44e64b75',
),
'forkawesome/fork-awesome' =>
array (
'pretty_version' => '1.1.7',
'version' => '1.1.7.0',
'pretty_version' => '1.2',
'version' => '1.2.0.0',
'aliases' =>
array (
),
'reference' => '326af9c8bee0c80ff4c00cb2fadd4f1edd2a08c3',
'reference' => '1e3849530d0266ece3a883649e1398414b92241d',
),
'jbroadway/urlify' =>
array (
@ -118,21 +118,21 @@ class InstalledVersions
),
'masterminds/html5' =>
array (
'pretty_version' => '2.7.4',
'version' => '2.7.4.0',
'pretty_version' => '2.7.5',
'version' => '2.7.5.0',
'aliases' =>
array (
),
'reference' => '9227822783c75406cfe400984b2f095cdf03d417',
'reference' => 'f640ac1bdddff06ea333a920c95bbad8872429ab',
),
'michelf/php-markdown' =>
array (
'pretty_version' => '1.9.0',
'version' => '1.9.0.0',
'pretty_version' => '1.9.1',
'version' => '1.9.1.0',
'aliases' =>
array (
),
'reference' => 'c83178d49e372ca967d1a8c77ae4e051b3a3c75c',
'reference' => '5024d623c1a057dcd2d076d25b7d270a1d0d55f3',
),
'p3k/emoji-detector' =>
array (
@ -145,21 +145,21 @@ class InstalledVersions
),
'paragonie/random_compat' =>
array (
'pretty_version' => 'v9.99.99',
'version' => '9.99.99.0',
'pretty_version' => 'v9.99.100',
'version' => '9.99.100.0',
'aliases' =>
array (
),
'reference' => '84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95',
'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
),
'phpseclib/phpseclib' =>
array (
'pretty_version' => '2.0.32',
'version' => '2.0.32.0',
'pretty_version' => '2.0.35',
'version' => '2.0.35.0',
'aliases' =>
array (
),
'reference' => 'f5c4c19880d45d0be3e7d24ae8ac434844a898cd',
'reference' => '4e16cf3f5f927a7d3f5317820af795c0366c0420',
),
'psr/log' =>
array (
@ -172,18 +172,18 @@ class InstalledVersions
),
'ramsey/uuid' =>
array (
'pretty_version' => '3.9.3',
'version' => '3.9.3.0',
'pretty_version' => '3.9.6',
'version' => '3.9.6.0',
'aliases' =>
array (
),
'reference' => '7e1633a6964b48589b142d60542f9ed31bd37a92',
'reference' => 'ffa80ab953edd85d5b6c004f96181a538aad35a3',
),
'rhumsaa/uuid' =>
array (
'replaced' =>
array (
0 => '3.9.3',
0 => '3.9.6',
),
),
'sabre/dav' =>
@ -251,30 +251,30 @@ class InstalledVersions
),
'smarty/smarty' =>
array (
'pretty_version' => 'v3.1.39',
'version' => '3.1.39.0',
'pretty_version' => 'v3.1.40',
'version' => '3.1.40.0',
'aliases' =>
array (
),
'reference' => 'e27da524f7bcd7361e3ea5cdfa99c4378a7b5419',
'reference' => '9d4f8309ed49702e0d7152f9983c3a9c4b98eb9d',
),
'symfony/deprecation-contracts' =>
array (
'pretty_version' => 'v2.4.0',
'version' => '2.4.0.0',
'pretty_version' => 'v3.0.0',
'version' => '3.0.0.0',
'aliases' =>
array (
),
'reference' => '5f38c8804a9e97d23e0c8d63341088cd8a22d627',
'reference' => 'c726b64c1ccfe2896cb7df2e1331c357ad1c8ced',
),
'symfony/options-resolver' =>
array (
'pretty_version' => 'v5.3.0',
'version' => '5.3.0.0',
'pretty_version' => 'v6.0.0',
'version' => '6.0.0.0',
'aliases' =>
array (
),
'reference' => '162e886ca035869866d233a2bfef70cc28f9bbe5',
'reference' => 'be0facf48a42a232d6c0daadd76e4eb5657a4798',
),
'symfony/polyfill-ctype' =>
array (
@ -285,32 +285,23 @@ class InstalledVersions
),
'reference' => '46cd95797e9df938fdd2b03693b5fca5e64b01ce',
),
'symfony/polyfill-php73' =>
array (
'pretty_version' => 'v1.23.0',
'version' => '1.23.0.0',
'aliases' =>
array (
),
'reference' => 'fba8933c384d6476ab14fb7b8526e5287ca7e010',
),
'symfony/polyfill-php80' =>
array (
'pretty_version' => 'v1.23.0',
'version' => '1.23.0.0',
'aliases' =>
array (
),
'reference' => 'eca0bf41ed421bed1b57c4958bab16aa86b757d0',
),
'symfony/process' =>
array (
'pretty_version' => 'v5.3.0',
'version' => '5.3.0.0',
'pretty_version' => 'v6.0.2',
'version' => '6.0.2.0',
'aliases' =>
array (
),
'reference' => '53e36cb1c160505cdaf1ef201501669c4c317191',
'reference' => '71da2b7f3fdba460fcf61a97c8d3d14bbf3391ad',
),
'symfony/yaml' =>
array (
'pretty_version' => 'v6.0.2',
'version' => '6.0.2.0',
'aliases' =>
array (
),
'reference' => 'ed602f38b8636a2ea21af760d2578f3d2f92fc60',
),
'twbs/bootstrap' =>
array (
@ -348,12 +339,12 @@ class InstalledVersions
),
'zot/zap' =>
array (
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'pretty_version' => 'dev-dev',
'version' => 'dev-dev',
'aliases' =>
array (
),
'reference' => '441261e2d8ac174792bcb1f37f44e74d1d5c0213',
'reference' => '193a5403a7eb3ce1dae2fe2cb8e655fa0abbc57d',
),
),
);

View file

@ -6,7 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
'CommerceGuys\\Intl\\Calculator' => $vendorDir . '/commerceguys/intl/src/Calculator.php',
'CommerceGuys\\Intl\\Country\\Country' => $vendorDir . '/commerceguys/intl/src/Country/Country.php',
'CommerceGuys\\Intl\\Country\\CountryEntityInterface' => $vendorDir . '/commerceguys/intl/src/Country/CountryEntityInterface.php',
@ -280,7 +279,6 @@ return array(
'HTMLPurifier_VarParser_Flexible' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/VarParser/Flexible.php',
'HTMLPurifier_VarParser_Native' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/VarParser/Native.php',
'HTMLPurifier_Zipper' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Zipper.php',
'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
'League\\HTMLToMarkdown\\Configuration' => $vendorDir . '/league/html-to-markdown/src/Configuration.php',
'League\\HTMLToMarkdown\\ConfigurationAwareInterface' => $vendorDir . '/league/html-to-markdown/src/ConfigurationAwareInterface.php',
'League\\HTMLToMarkdown\\Converter\\BlockquoteConverter' => $vendorDir . '/league/html-to-markdown/src/Converter/BlockquoteConverter.php',
@ -435,6 +433,9 @@ return array(
'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerInterface.php',
'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerTrait.php',
'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/Psr/Log/NullLogger.php',
'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/DummyTest.php',
'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php',
'Ramsey\\Uuid\\BinaryUtils' => $vendorDir . '/ramsey/uuid/src/BinaryUtils.php',
'Ramsey\\Uuid\\Builder\\DefaultUuidBuilder' => $vendorDir . '/ramsey/uuid/src/Builder/DefaultUuidBuilder.php',
'Ramsey\\Uuid\\Builder\\DegradedUuidBuilder' => $vendorDir . '/ramsey/uuid/src/Builder/DegradedUuidBuilder.php',
@ -1017,7 +1018,6 @@ return array(
'Smarty_Template_Source' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_template_source.php',
'Smarty_Undefined_Variable' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php',
'Smarty_Variable' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_variable.php',
'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => $vendorDir . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php',
'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => $vendorDir . '/symfony/options-resolver/Exception/AccessException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/options-resolver/Exception/ExceptionInterface.php',
@ -1048,15 +1048,23 @@ return array(
'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => $vendorDir . '/symfony/process/Pipes/WindowsPipes.php',
'Symfony\\Component\\Process\\Process' => $vendorDir . '/symfony/process/Process.php',
'Symfony\\Component\\Process\\ProcessUtils' => $vendorDir . '/symfony/process/ProcessUtils.php',
'Symfony\\Component\\Yaml\\Command\\LintCommand' => $vendorDir . '/symfony/yaml/Command/LintCommand.php',
'Symfony\\Component\\Yaml\\Dumper' => $vendorDir . '/symfony/yaml/Dumper.php',
'Symfony\\Component\\Yaml\\Escaper' => $vendorDir . '/symfony/yaml/Escaper.php',
'Symfony\\Component\\Yaml\\Exception\\DumpException' => $vendorDir . '/symfony/yaml/Exception/DumpException.php',
'Symfony\\Component\\Yaml\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/yaml/Exception/ExceptionInterface.php',
'Symfony\\Component\\Yaml\\Exception\\ParseException' => $vendorDir . '/symfony/yaml/Exception/ParseException.php',
'Symfony\\Component\\Yaml\\Exception\\RuntimeException' => $vendorDir . '/symfony/yaml/Exception/RuntimeException.php',
'Symfony\\Component\\Yaml\\Inline' => $vendorDir . '/symfony/yaml/Inline.php',
'Symfony\\Component\\Yaml\\Parser' => $vendorDir . '/symfony/yaml/Parser.php',
'Symfony\\Component\\Yaml\\Tag\\TaggedValue' => $vendorDir . '/symfony/yaml/Tag/TaggedValue.php',
'Symfony\\Component\\Yaml\\Unescaper' => $vendorDir . '/symfony/yaml/Unescaper.php',
'Symfony\\Component\\Yaml\\Yaml' => $vendorDir . '/symfony/yaml/Yaml.php',
'Symfony\\Polyfill\\Ctype\\Ctype' => $vendorDir . '/symfony/polyfill-ctype/Ctype.php',
'Symfony\\Polyfill\\Php73\\Php73' => $vendorDir . '/symfony/polyfill-php73/Php73.php',
'Symfony\\Polyfill\\Php80\\Php80' => $vendorDir . '/symfony/polyfill-php80/Php80.php',
'TPC_yyStackEntry' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php',
'TP_yyStackEntry' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php',
'URLify' => $vendorDir . '/jbroadway/urlify/URLify.php',
'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
'UploadHandler' => $vendorDir . '/blueimp/jquery-file-upload/server/php/UploadHandler.php',
'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
'Zotlabs\\Access\\AccessControl' => $baseDir . '/Zotlabs/Access/AccessControl.php',
'Zotlabs\\Access\\PermissionLimits' => $baseDir . '/Zotlabs/Access/PermissionLimits.php',
'Zotlabs\\Access\\PermissionRoles' => $baseDir . '/Zotlabs/Access/PermissionRoles.php',
@ -1157,7 +1165,6 @@ return array(
'Zotlabs\\Module\\Admin\\Channels' => $baseDir . '/Zotlabs/Module/Admin/Channels.php',
'Zotlabs\\Module\\Admin\\Cover_photo' => $baseDir . '/Zotlabs/Module/Admin/Cover_photo.php',
'Zotlabs\\Module\\Admin\\Dbsync' => $baseDir . '/Zotlabs/Module/Admin/Dbsync.php',
'Zotlabs\\Module\\Admin\\Features' => $baseDir . '/Zotlabs/Module/Admin/Features.php',
'Zotlabs\\Module\\Admin\\Logs' => $baseDir . '/Zotlabs/Module/Admin/Logs.php',
'Zotlabs\\Module\\Admin\\Profile_photo' => $baseDir . '/Zotlabs/Module/Admin/Profile_photo.php',
'Zotlabs\\Module\\Admin\\Profs' => $baseDir . '/Zotlabs/Module/Admin/Profs.php',
@ -1194,6 +1201,7 @@ return array(
'Zotlabs\\Module\\Cloud_tiles' => $baseDir . '/Zotlabs/Module/Cloud_tiles.php',
'Zotlabs\\Module\\Comment_control' => $baseDir . '/Zotlabs/Module/Comment_control.php',
'Zotlabs\\Module\\Common' => $baseDir . '/Zotlabs/Module/Common.php',
'Zotlabs\\Module\\Connac' => $baseDir . '/Zotlabs/Module/Connac.php',
'Zotlabs\\Module\\Connect' => $baseDir . '/Zotlabs/Module/Connect.php',
'Zotlabs\\Module\\Connections' => $baseDir . '/Zotlabs/Module/Connections.php',
'Zotlabs\\Module\\Connedit' => $baseDir . '/Zotlabs/Module/Connedit.php',
@ -1220,7 +1228,9 @@ return array(
'Zotlabs\\Module\\Event' => $baseDir . '/Zotlabs/Module/Event.php',
'Zotlabs\\Module\\Events' => $baseDir . '/Zotlabs/Module/Events.php',
'Zotlabs\\Module\\Expire' => $baseDir . '/Zotlabs/Module/Expire.php',
'Zotlabs\\Module\\Fastping' => $baseDir . '/Zotlabs/Module/Fastping.php',
'Zotlabs\\Module\\Fbrowser' => $baseDir . '/Zotlabs/Module/Fbrowser.php',
'Zotlabs\\Module\\Fedi_id' => $baseDir . '/Zotlabs/Module/Fedi_id.php',
'Zotlabs\\Module\\Feed' => $baseDir . '/Zotlabs/Module/Feed.php',
'Zotlabs\\Module\\File_upload' => $baseDir . '/Zotlabs/Module/File_upload.php',
'Zotlabs\\Module\\Filer' => $baseDir . '/Zotlabs/Module/Filer.php',
@ -1259,6 +1269,7 @@ return array(
'Zotlabs\\Module\\Lostpass' => $baseDir . '/Zotlabs/Module/Lostpass.php',
'Zotlabs\\Module\\Magic' => $baseDir . '/Zotlabs/Module/Magic.php',
'Zotlabs\\Module\\Manage' => $baseDir . '/Zotlabs/Module/Manage.php',
'Zotlabs\\Module\\Manifest' => $baseDir . '/Zotlabs/Module/Manifest.php',
'Zotlabs\\Module\\Markup' => $baseDir . '/Zotlabs/Module/Markup.php',
'Zotlabs\\Module\\Menu' => $baseDir . '/Zotlabs/Module/Menu.php',
'Zotlabs\\Module\\Mitem' => $baseDir . '/Zotlabs/Module/Mitem.php',
@ -1285,6 +1296,7 @@ return array(
'Zotlabs\\Module\\Photos' => $baseDir . '/Zotlabs/Module/Photos.php',
'Zotlabs\\Module\\Pin' => $baseDir . '/Zotlabs/Module/Pin.php',
'Zotlabs\\Module\\Ping' => $baseDir . '/Zotlabs/Module/Ping.php',
'Zotlabs\\Module\\Plike' => $baseDir . '/Zotlabs/Module/Plike.php',
'Zotlabs\\Module\\Poco' => $baseDir . '/Zotlabs/Module/Poco.php',
'Zotlabs\\Module\\Poke' => $baseDir . '/Zotlabs/Module/Poke.php',
'Zotlabs\\Module\\Poster' => $baseDir . '/Zotlabs/Module/Poster.php',
@ -1324,7 +1336,6 @@ return array(
'Zotlabs\\Module\\Share' => $baseDir . '/Zotlabs/Module/Share.php',
'Zotlabs\\Module\\Sharedwithme' => $baseDir . '/Zotlabs/Module/Sharedwithme.php',
'Zotlabs\\Module\\Siteinfo' => $baseDir . '/Zotlabs/Module/Siteinfo.php',
'Zotlabs\\Module\\Sitelist' => $baseDir . '/Zotlabs/Module/Sitelist.php',
'Zotlabs\\Module\\Sites' => $baseDir . '/Zotlabs/Module/Sites.php',
'Zotlabs\\Module\\Smilies' => $baseDir . '/Zotlabs/Module/Smilies.php',
'Zotlabs\\Module\\Sources' => $baseDir . '/Zotlabs/Module/Sources.php',
@ -1632,6 +1643,12 @@ return array(
'Zotlabs\\Update\\_1246' => $baseDir . '/Zotlabs/Update/_1246.php',
'Zotlabs\\Update\\_1247' => $baseDir . '/Zotlabs/Update/_1247.php',
'Zotlabs\\Update\\_1248' => $baseDir . '/Zotlabs/Update/_1248.php',
'Zotlabs\\Update\\_1249' => $baseDir . '/Zotlabs/Update/_1249.php',
'Zotlabs\\Update\\_1250' => $baseDir . '/Zotlabs/Update/_1250.php',
'Zotlabs\\Update\\_1251' => $baseDir . '/Zotlabs/Update/_1251.php',
'Zotlabs\\Update\\_1252' => $baseDir . '/Zotlabs/Update/_1252.php',
'Zotlabs\\Update\\_1253' => $baseDir . '/Zotlabs/Update/_1253.php',
'Zotlabs\\Update\\_1254' => $baseDir . '/Zotlabs/Update/_1254.php',
'Zotlabs\\Web\\Controller' => $baseDir . '/Zotlabs/Web/Controller.php',
'Zotlabs\\Web\\HTTPHeaders' => $baseDir . '/Zotlabs/Web/HTTPHeaders.php',
'Zotlabs\\Web\\HTTPSig' => $baseDir . '/Zotlabs/Web/HTTPSig.php',

View file

@ -7,16 +7,14 @@ $baseDir = dirname($vendorDir);
return array(
'383eaff206634a77a1be54e64e6459c7' => $vendorDir . '/sabre/uri/lib/functions.php',
'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
'2b9d0f43f9552984cfa82fee95491826' => $vendorDir . '/sabre/event/lib/coroutine.php',
'd81bab31d3feb45bfe2f283ea3c8fdf7' => $vendorDir . '/sabre/event/lib/Loop/functions.php',
'a1cce3d26cc15c00fcd0b3354bd72c88' => $vendorDir . '/sabre/event/lib/Promise/functions.php',
'3569eecfeed3bcf0bad3c998a494ecb8' => $vendorDir . '/sabre/xml/lib/Deserializer/functions.php',
'93aa591bc4ca510c520999e34229ee79' => $vendorDir . '/sabre/xml/lib/Serializer/functions.php',
'6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
'0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => $vendorDir . '/sabre/http/lib/functions.php',
'320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => $vendorDir . '/sabre/http/lib/functions.php',
'2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
'd08bec471a180204a14ef3c91e951f99' => $vendorDir . '/p3k/emoji-detector/src/Emoji.php',
'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',

View file

@ -9,9 +9,8 @@ return array(
'voku\\' => array($vendorDir . '/voku/portable-ascii/src/voku', $vendorDir . '/voku/stop-words/src/voku'),
'phpseclib\\' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'),
'Zotlabs\\' => array($baseDir . '/Zotlabs'),
'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'),
'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'),
'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'),
'Symfony\\Component\\OptionsResolver\\' => array($vendorDir . '/symfony/options-resolver'),
'Sabre\\Xml\\' => array($vendorDir . '/sabre/xml/lib'),

View file

@ -8,16 +8,14 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
{
public static $files = array (
'383eaff206634a77a1be54e64e6459c7' => __DIR__ . '/..' . '/sabre/uri/lib/functions.php',
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
'2b9d0f43f9552984cfa82fee95491826' => __DIR__ . '/..' . '/sabre/event/lib/coroutine.php',
'd81bab31d3feb45bfe2f283ea3c8fdf7' => __DIR__ . '/..' . '/sabre/event/lib/Loop/functions.php',
'a1cce3d26cc15c00fcd0b3354bd72c88' => __DIR__ . '/..' . '/sabre/event/lib/Promise/functions.php',
'3569eecfeed3bcf0bad3c998a494ecb8' => __DIR__ . '/..' . '/sabre/xml/lib/Deserializer/functions.php',
'93aa591bc4ca510c520999e34229ee79' => __DIR__ . '/..' . '/sabre/xml/lib/Serializer/functions.php',
'6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
'0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => __DIR__ . '/..' . '/sabre/http/lib/functions.php',
'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => __DIR__ . '/..' . '/sabre/http/lib/functions.php',
'2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
'd08bec471a180204a14ef3c91e951f99' => __DIR__ . '/..' . '/p3k/emoji-detector/src/Emoji.php',
'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
@ -39,9 +37,8 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
),
'S' =>
array (
'Symfony\\Polyfill\\Php80\\' => 23,
'Symfony\\Polyfill\\Php73\\' => 23,
'Symfony\\Polyfill\\Ctype\\' => 23,
'Symfony\\Component\\Yaml\\' => 23,
'Symfony\\Component\\Process\\' => 26,
'Symfony\\Component\\OptionsResolver\\' => 34,
'Sabre\\Xml\\' => 10,
@ -100,18 +97,14 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
array (
0 => __DIR__ . '/../..' . '/Zotlabs',
),
'Symfony\\Polyfill\\Php80\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
),
'Symfony\\Polyfill\\Php73\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-php73',
),
'Symfony\\Polyfill\\Ctype\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
),
'Symfony\\Component\\Yaml\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/yaml',
),
'Symfony\\Component\\Process\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/process',
@ -223,7 +216,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
);
public static $classMap = array (
'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
'CommerceGuys\\Intl\\Calculator' => __DIR__ . '/..' . '/commerceguys/intl/src/Calculator.php',
'CommerceGuys\\Intl\\Country\\Country' => __DIR__ . '/..' . '/commerceguys/intl/src/Country/Country.php',
'CommerceGuys\\Intl\\Country\\CountryEntityInterface' => __DIR__ . '/..' . '/commerceguys/intl/src/Country/CountryEntityInterface.php',
@ -497,7 +489,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'HTMLPurifier_VarParser_Flexible' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/VarParser/Flexible.php',
'HTMLPurifier_VarParser_Native' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/VarParser/Native.php',
'HTMLPurifier_Zipper' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Zipper.php',
'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
'League\\HTMLToMarkdown\\Configuration' => __DIR__ . '/..' . '/league/html-to-markdown/src/Configuration.php',
'League\\HTMLToMarkdown\\ConfigurationAwareInterface' => __DIR__ . '/..' . '/league/html-to-markdown/src/ConfigurationAwareInterface.php',
'League\\HTMLToMarkdown\\Converter\\BlockquoteConverter' => __DIR__ . '/..' . '/league/html-to-markdown/src/Converter/BlockquoteConverter.php',
@ -652,6 +643,9 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerInterface.php',
'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerTrait.php',
'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/NullLogger.php',
'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/DummyTest.php',
'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php',
'Ramsey\\Uuid\\BinaryUtils' => __DIR__ . '/..' . '/ramsey/uuid/src/BinaryUtils.php',
'Ramsey\\Uuid\\Builder\\DefaultUuidBuilder' => __DIR__ . '/..' . '/ramsey/uuid/src/Builder/DefaultUuidBuilder.php',
'Ramsey\\Uuid\\Builder\\DegradedUuidBuilder' => __DIR__ . '/..' . '/ramsey/uuid/src/Builder/DegradedUuidBuilder.php',
@ -1234,7 +1228,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Smarty_Template_Source' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_template_source.php',
'Smarty_Undefined_Variable' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php',
'Smarty_Variable' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_variable.php',
'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => __DIR__ . '/..' . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php',
'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/AccessException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/ExceptionInterface.php',
@ -1265,15 +1258,23 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/WindowsPipes.php',
'Symfony\\Component\\Process\\Process' => __DIR__ . '/..' . '/symfony/process/Process.php',
'Symfony\\Component\\Process\\ProcessUtils' => __DIR__ . '/..' . '/symfony/process/ProcessUtils.php',
'Symfony\\Component\\Yaml\\Command\\LintCommand' => __DIR__ . '/..' . '/symfony/yaml/Command/LintCommand.php',
'Symfony\\Component\\Yaml\\Dumper' => __DIR__ . '/..' . '/symfony/yaml/Dumper.php',
'Symfony\\Component\\Yaml\\Escaper' => __DIR__ . '/..' . '/symfony/yaml/Escaper.php',
'Symfony\\Component\\Yaml\\Exception\\DumpException' => __DIR__ . '/..' . '/symfony/yaml/Exception/DumpException.php',
'Symfony\\Component\\Yaml\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/yaml/Exception/ExceptionInterface.php',
'Symfony\\Component\\Yaml\\Exception\\ParseException' => __DIR__ . '/..' . '/symfony/yaml/Exception/ParseException.php',
'Symfony\\Component\\Yaml\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/yaml/Exception/RuntimeException.php',
'Symfony\\Component\\Yaml\\Inline' => __DIR__ . '/..' . '/symfony/yaml/Inline.php',
'Symfony\\Component\\Yaml\\Parser' => __DIR__ . '/..' . '/symfony/yaml/Parser.php',
'Symfony\\Component\\Yaml\\Tag\\TaggedValue' => __DIR__ . '/..' . '/symfony/yaml/Tag/TaggedValue.php',
'Symfony\\Component\\Yaml\\Unescaper' => __DIR__ . '/..' . '/symfony/yaml/Unescaper.php',
'Symfony\\Component\\Yaml\\Yaml' => __DIR__ . '/..' . '/symfony/yaml/Yaml.php',
'Symfony\\Polyfill\\Ctype\\Ctype' => __DIR__ . '/..' . '/symfony/polyfill-ctype/Ctype.php',
'Symfony\\Polyfill\\Php73\\Php73' => __DIR__ . '/..' . '/symfony/polyfill-php73/Php73.php',
'Symfony\\Polyfill\\Php80\\Php80' => __DIR__ . '/..' . '/symfony/polyfill-php80/Php80.php',
'TPC_yyStackEntry' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php',
'TP_yyStackEntry' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php',
'URLify' => __DIR__ . '/..' . '/jbroadway/urlify/URLify.php',
'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
'UploadHandler' => __DIR__ . '/..' . '/blueimp/jquery-file-upload/server/php/UploadHandler.php',
'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
'Zotlabs\\Access\\AccessControl' => __DIR__ . '/../..' . '/Zotlabs/Access/AccessControl.php',
'Zotlabs\\Access\\PermissionLimits' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionLimits.php',
'Zotlabs\\Access\\PermissionRoles' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionRoles.php',
@ -1374,7 +1375,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Admin\\Channels' => __DIR__ . '/../..' . '/Zotlabs/Module/Admin/Channels.php',
'Zotlabs\\Module\\Admin\\Cover_photo' => __DIR__ . '/../..' . '/Zotlabs/Module/Admin/Cover_photo.php',
'Zotlabs\\Module\\Admin\\Dbsync' => __DIR__ . '/../..' . '/Zotlabs/Module/Admin/Dbsync.php',
'Zotlabs\\Module\\Admin\\Features' => __DIR__ . '/../..' . '/Zotlabs/Module/Admin/Features.php',
'Zotlabs\\Module\\Admin\\Logs' => __DIR__ . '/../..' . '/Zotlabs/Module/Admin/Logs.php',
'Zotlabs\\Module\\Admin\\Profile_photo' => __DIR__ . '/../..' . '/Zotlabs/Module/Admin/Profile_photo.php',
'Zotlabs\\Module\\Admin\\Profs' => __DIR__ . '/../..' . '/Zotlabs/Module/Admin/Profs.php',
@ -1411,6 +1411,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Cloud_tiles' => __DIR__ . '/../..' . '/Zotlabs/Module/Cloud_tiles.php',
'Zotlabs\\Module\\Comment_control' => __DIR__ . '/../..' . '/Zotlabs/Module/Comment_control.php',
'Zotlabs\\Module\\Common' => __DIR__ . '/../..' . '/Zotlabs/Module/Common.php',
'Zotlabs\\Module\\Connac' => __DIR__ . '/../..' . '/Zotlabs/Module/Connac.php',
'Zotlabs\\Module\\Connect' => __DIR__ . '/../..' . '/Zotlabs/Module/Connect.php',
'Zotlabs\\Module\\Connections' => __DIR__ . '/../..' . '/Zotlabs/Module/Connections.php',
'Zotlabs\\Module\\Connedit' => __DIR__ . '/../..' . '/Zotlabs/Module/Connedit.php',
@ -1437,7 +1438,9 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Event' => __DIR__ . '/../..' . '/Zotlabs/Module/Event.php',
'Zotlabs\\Module\\Events' => __DIR__ . '/../..' . '/Zotlabs/Module/Events.php',
'Zotlabs\\Module\\Expire' => __DIR__ . '/../..' . '/Zotlabs/Module/Expire.php',
'Zotlabs\\Module\\Fastping' => __DIR__ . '/../..' . '/Zotlabs/Module/Fastping.php',
'Zotlabs\\Module\\Fbrowser' => __DIR__ . '/../..' . '/Zotlabs/Module/Fbrowser.php',
'Zotlabs\\Module\\Fedi_id' => __DIR__ . '/../..' . '/Zotlabs/Module/Fedi_id.php',
'Zotlabs\\Module\\Feed' => __DIR__ . '/../..' . '/Zotlabs/Module/Feed.php',
'Zotlabs\\Module\\File_upload' => __DIR__ . '/../..' . '/Zotlabs/Module/File_upload.php',
'Zotlabs\\Module\\Filer' => __DIR__ . '/../..' . '/Zotlabs/Module/Filer.php',
@ -1476,6 +1479,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Lostpass' => __DIR__ . '/../..' . '/Zotlabs/Module/Lostpass.php',
'Zotlabs\\Module\\Magic' => __DIR__ . '/../..' . '/Zotlabs/Module/Magic.php',
'Zotlabs\\Module\\Manage' => __DIR__ . '/../..' . '/Zotlabs/Module/Manage.php',
'Zotlabs\\Module\\Manifest' => __DIR__ . '/../..' . '/Zotlabs/Module/Manifest.php',
'Zotlabs\\Module\\Markup' => __DIR__ . '/../..' . '/Zotlabs/Module/Markup.php',
'Zotlabs\\Module\\Menu' => __DIR__ . '/../..' . '/Zotlabs/Module/Menu.php',
'Zotlabs\\Module\\Mitem' => __DIR__ . '/../..' . '/Zotlabs/Module/Mitem.php',
@ -1502,6 +1506,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Photos' => __DIR__ . '/../..' . '/Zotlabs/Module/Photos.php',
'Zotlabs\\Module\\Pin' => __DIR__ . '/../..' . '/Zotlabs/Module/Pin.php',
'Zotlabs\\Module\\Ping' => __DIR__ . '/../..' . '/Zotlabs/Module/Ping.php',
'Zotlabs\\Module\\Plike' => __DIR__ . '/../..' . '/Zotlabs/Module/Plike.php',
'Zotlabs\\Module\\Poco' => __DIR__ . '/../..' . '/Zotlabs/Module/Poco.php',
'Zotlabs\\Module\\Poke' => __DIR__ . '/../..' . '/Zotlabs/Module/Poke.php',
'Zotlabs\\Module\\Poster' => __DIR__ . '/../..' . '/Zotlabs/Module/Poster.php',
@ -1541,7 +1546,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Share' => __DIR__ . '/../..' . '/Zotlabs/Module/Share.php',
'Zotlabs\\Module\\Sharedwithme' => __DIR__ . '/../..' . '/Zotlabs/Module/Sharedwithme.php',
'Zotlabs\\Module\\Siteinfo' => __DIR__ . '/../..' . '/Zotlabs/Module/Siteinfo.php',
'Zotlabs\\Module\\Sitelist' => __DIR__ . '/../..' . '/Zotlabs/Module/Sitelist.php',
'Zotlabs\\Module\\Sites' => __DIR__ . '/../..' . '/Zotlabs/Module/Sites.php',
'Zotlabs\\Module\\Smilies' => __DIR__ . '/../..' . '/Zotlabs/Module/Smilies.php',
'Zotlabs\\Module\\Sources' => __DIR__ . '/../..' . '/Zotlabs/Module/Sources.php',
@ -1849,6 +1853,12 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Update\\_1246' => __DIR__ . '/../..' . '/Zotlabs/Update/_1246.php',
'Zotlabs\\Update\\_1247' => __DIR__ . '/../..' . '/Zotlabs/Update/_1247.php',
'Zotlabs\\Update\\_1248' => __DIR__ . '/../..' . '/Zotlabs/Update/_1248.php',
'Zotlabs\\Update\\_1249' => __DIR__ . '/../..' . '/Zotlabs/Update/_1249.php',
'Zotlabs\\Update\\_1250' => __DIR__ . '/../..' . '/Zotlabs/Update/_1250.php',
'Zotlabs\\Update\\_1251' => __DIR__ . '/../..' . '/Zotlabs/Update/_1251.php',
'Zotlabs\\Update\\_1252' => __DIR__ . '/../..' . '/Zotlabs/Update/_1252.php',
'Zotlabs\\Update\\_1253' => __DIR__ . '/../..' . '/Zotlabs/Update/_1253.php',
'Zotlabs\\Update\\_1254' => __DIR__ . '/../..' . '/Zotlabs/Update/_1254.php',
'Zotlabs\\Web\\Controller' => __DIR__ . '/../..' . '/Zotlabs/Web/Controller.php',
'Zotlabs\\Web\\HTTPHeaders' => __DIR__ . '/../..' . '/Zotlabs/Web/HTTPHeaders.php',
'Zotlabs\\Web\\HTTPSig' => __DIR__ . '/../..' . '/Zotlabs/Web/HTTPSig.php',

View file

@ -2,20 +2,20 @@
"packages": [
{
"name": "blueimp/jquery-file-upload",
"version": "v10.31.0",
"version_normalized": "10.31.0.0",
"version": "v10.32.0",
"version_normalized": "10.32.0.0",
"source": {
"type": "git",
"url": "https://github.com/vkhramtsov/jQuery-File-Upload.git",
"reference": "0740f81829698b84efe17e72501e0f420ea0d611"
"reference": "20f6c4a07a6fbff22d79228c893eb1746d2d8962"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vkhramtsov/jQuery-File-Upload/zipball/0740f81829698b84efe17e72501e0f420ea0d611",
"reference": "0740f81829698b84efe17e72501e0f420ea0d611",
"url": "https://api.github.com/repos/vkhramtsov/jQuery-File-Upload/zipball/20f6c4a07a6fbff22d79228c893eb1746d2d8962",
"reference": "20f6c4a07a6fbff22d79228c893eb1746d2d8962",
"shasum": ""
},
"time": "2020-07-13T05:42:06+00:00",
"time": "2021-09-25T16:27:13+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@ -56,6 +56,10 @@
"upload",
"widget"
],
"support": {
"forum": "https://stackoverflow.com/questions/tagged/blueimp+jquery+file-upload",
"source": "https://github.com/vkhramtsov/jQuery-File-Upload/tree/v10.32.0"
},
"funding": [
{
"url": "https://github.com/blueimp",
@ -174,29 +178,29 @@
},
{
"name": "doctrine/collections",
"version": "1.6.7",
"version_normalized": "1.6.7.0",
"version": "1.6.8",
"version_normalized": "1.6.8.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/collections.git",
"reference": "55f8b799269a1a472457bd1a41b4f379d4cfba4a"
"reference": "1958a744696c6bb3bb0d28db2611dc11610e78af"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/collections/zipball/55f8b799269a1a472457bd1a41b4f379d4cfba4a",
"reference": "55f8b799269a1a472457bd1a41b4f379d4cfba4a",
"url": "https://api.github.com/repos/doctrine/collections/zipball/1958a744696c6bb3bb0d28db2611dc11610e78af",
"reference": "1958a744696c6bb3bb0d28db2611dc11610e78af",
"shasum": ""
},
"require": {
"php": "^7.1.3 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"phpstan/phpstan-shim": "^0.9.2",
"phpunit/phpunit": "^7.0",
"vimeo/psalm": "^3.8.1"
"doctrine/coding-standard": "^9.0",
"phpstan/phpstan": "^0.12",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5",
"vimeo/psalm": "^4.2.1"
},
"time": "2020-07-27T17:53:49+00:00",
"time": "2021-08-10T18:51:53+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@ -238,30 +242,31 @@
"iterators",
"php"
],
"support": {
"issues": "https://github.com/doctrine/collections/issues",
"source": "https://github.com/doctrine/collections/tree/1.6.8"
},
"install-path": "../doctrine/collections"
},
{
"name": "ezyang/htmlpurifier",
"version": "v4.13.0",
"version_normalized": "4.13.0.0",
"version": "v4.14.0",
"version_normalized": "4.14.0.0",
"source": {
"type": "git",
"url": "https://github.com/ezyang/htmlpurifier.git",
"reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75"
"reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/08e27c97e4c6ed02f37c5b2b20488046c8d90d75",
"reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75",
"url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/12ab42bd6e742c70c0a52f7b82477fcd44e64b75",
"reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75",
"shasum": ""
},
"require": {
"php": ">=5.2"
},
"require-dev": {
"simpletest/simpletest": "dev-master#72de02a7b80c6bb8864ef9bf66d41d2f58f826bd"
},
"time": "2020-06-29T00:56:53+00:00",
"time": "2021-12-25T01:21:49+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@ -291,34 +296,29 @@
"keywords": [
"html"
],
"support": {
"issues": "https://github.com/ezyang/htmlpurifier/issues",
"source": "https://github.com/ezyang/htmlpurifier/tree/v4.14.0"
},
"install-path": "../ezyang/htmlpurifier"
},
{
"name": "forkawesome/fork-awesome",
"version": "1.1.7",
"version_normalized": "1.1.7.0",
"version": "1.2",
"version_normalized": "1.2.0.0",
"source": {
"type": "git",
"url": "https://github.com/ForkAwesome/Fork-Awesome.git",
"reference": "326af9c8bee0c80ff4c00cb2fadd4f1edd2a08c3"
"reference": "1e3849530d0266ece3a883649e1398414b92241d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ForkAwesome/Fork-Awesome/zipball/326af9c8bee0c80ff4c00cb2fadd4f1edd2a08c3",
"reference": "326af9c8bee0c80ff4c00cb2fadd4f1edd2a08c3",
"url": "https://api.github.com/repos/ForkAwesome/Fork-Awesome/zipball/1e3849530d0266ece3a883649e1398414b92241d",
"reference": "1e3849530d0266ece3a883649e1398414b92241d",
"shasum": ""
},
"require-dev": {
"jekyll": "1.0.2",
"lessc": "1.4.2"
},
"time": "2019-02-28T15:21:34+00:00",
"time": "2021-08-26T18:46:39+00:00",
"type": "component",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"installation-source": "dist",
"notification-url": "https://packagist.org/downloads/",
"license": [
@ -328,11 +328,11 @@
"authors": [
{
"name": "Fork Awesome Community",
"homepage": "https://forkawesome.github.io"
"homepage": "https://forkaweso.me"
}
],
"description": "A fork of the iconic font and CSS framework",
"homepage": "http://forkawesome.github.io/Fork-Awesome/",
"homepage": "https://forkaweso.me",
"keywords": [
"FontAwesome",
"awesome",
@ -341,6 +341,10 @@
"forkawesome",
"icon"
],
"support": {
"issues": "https://github.com/ForkAwesome/Fork-Awesome/issues",
"source": "https://github.com/ForkAwesome/Fork-Awesome/tree/1.2"
},
"install-path": "../forkawesome/fork-awesome"
},
{
@ -541,17 +545,17 @@
},
{
"name": "masterminds/html5",
"version": "2.7.4",
"version_normalized": "2.7.4.0",
"version": "2.7.5",
"version_normalized": "2.7.5.0",
"source": {
"type": "git",
"url": "https://github.com/Masterminds/html5-php.git",
"reference": "9227822783c75406cfe400984b2f095cdf03d417"
"reference": "f640ac1bdddff06ea333a920c95bbad8872429ab"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Masterminds/html5-php/zipball/9227822783c75406cfe400984b2f095cdf03d417",
"reference": "9227822783c75406cfe400984b2f095cdf03d417",
"url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f640ac1bdddff06ea333a920c95bbad8872429ab",
"reference": "f640ac1bdddff06ea333a920c95bbad8872429ab",
"shasum": ""
},
"require": {
@ -561,9 +565,9 @@
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35"
"phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7"
},
"time": "2020-10-01T13:52:52+00:00",
"time": "2021-07-01T14:25:37+00:00",
"type": "library",
"extra": {
"branch-alias": {
@ -605,21 +609,25 @@
"serializer",
"xml"
],
"support": {
"issues": "https://github.com/Masterminds/html5-php/issues",
"source": "https://github.com/Masterminds/html5-php/tree/2.7.5"
},
"install-path": "../masterminds/html5"
},
{
"name": "michelf/php-markdown",
"version": "1.9.0",
"version_normalized": "1.9.0.0",
"version": "1.9.1",
"version_normalized": "1.9.1.0",
"source": {
"type": "git",
"url": "https://github.com/michelf/php-markdown.git",
"reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c"
"reference": "5024d623c1a057dcd2d076d25b7d270a1d0d55f3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/c83178d49e372ca967d1a8c77ae4e051b3a3c75c",
"reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c",
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/5024d623c1a057dcd2d076d25b7d270a1d0d55f3",
"reference": "5024d623c1a057dcd2d076d25b7d270a1d0d55f3",
"shasum": ""
},
"require": {
@ -628,7 +636,7 @@
"require-dev": {
"phpunit/phpunit": ">=4.3 <5.8"
},
"time": "2019-12-02T02:32:27+00:00",
"time": "2021-11-24T02:52:38+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@ -657,6 +665,10 @@
"keywords": [
"markdown"
],
"support": {
"issues": "https://github.com/michelf/php-markdown/issues",
"source": "https://github.com/michelf/php-markdown/tree/1.9.1"
},
"install-path": "../michelf/php-markdown"
},
{
@ -705,21 +717,21 @@
},
{
"name": "paragonie/random_compat",
"version": "v9.99.99",
"version_normalized": "9.99.99.0",
"version": "v9.99.100",
"version_normalized": "9.99.100.0",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
"reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
"reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
"reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
"reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
"shasum": ""
},
"require": {
"php": "^7"
"php": ">= 7"
},
"require-dev": {
"phpunit/phpunit": "4.*|5.*",
@ -728,7 +740,7 @@
"suggest": {
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
},
"time": "2018-07-02T15:55:56+00:00",
"time": "2020-10-15T08:29:30+00:00",
"type": "library",
"installation-source": "dist",
"notification-url": "https://packagist.org/downloads/",
@ -749,21 +761,26 @@
"pseudorandom",
"random"
],
"support": {
"email": "info@paragonie.com",
"issues": "https://github.com/paragonie/random_compat/issues",
"source": "https://github.com/paragonie/random_compat"
},
"install-path": "../paragonie/random_compat"
},
{
"name": "phpseclib/phpseclib",
"version": "2.0.32",
"version_normalized": "2.0.32.0",
"version": "2.0.35",
"version_normalized": "2.0.35.0",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
"reference": "f5c4c19880d45d0be3e7d24ae8ac434844a898cd"
"reference": "4e16cf3f5f927a7d3f5317820af795c0366c0420"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/f5c4c19880d45d0be3e7d24ae8ac434844a898cd",
"reference": "f5c4c19880d45d0be3e7d24ae8ac434844a898cd",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4e16cf3f5f927a7d3f5317820af795c0366c0420",
"reference": "4e16cf3f5f927a7d3f5317820af795c0366c0420",
"shasum": ""
},
"require": {
@ -780,7 +797,7 @@
"ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
"ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
},
"time": "2021-06-12T12:12:59+00:00",
"time": "2021-11-28T23:30:39+00:00",
"type": "library",
"installation-source": "source",
"autoload": {
@ -845,7 +862,7 @@
],
"support": {
"issues": "https://github.com/phpseclib/phpseclib/issues",
"source": "https://github.com/phpseclib/phpseclib/tree/2.0.32"
"source": "https://github.com/phpseclib/phpseclib/tree/2.0.35"
},
"funding": [
{
@ -918,23 +935,23 @@
},
{
"name": "ramsey/uuid",
"version": "3.9.3",
"version_normalized": "3.9.3.0",
"version": "3.9.6",
"version_normalized": "3.9.6.0",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
"reference": "7e1633a6964b48589b142d60542f9ed31bd37a92"
"reference": "ffa80ab953edd85d5b6c004f96181a538aad35a3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ramsey/uuid/zipball/7e1633a6964b48589b142d60542f9ed31bd37a92",
"reference": "7e1633a6964b48589b142d60542f9ed31bd37a92",
"url": "https://api.github.com/repos/ramsey/uuid/zipball/ffa80ab953edd85d5b6c004f96181a538aad35a3",
"reference": "ffa80ab953edd85d5b6c004f96181a538aad35a3",
"shasum": ""
},
"require": {
"ext-json": "*",
"paragonie/random_compat": "^1 | ^2 | 9.99.99",
"php": "^5.4 | ^7 | ^8",
"paragonie/random_compat": "^1 | ^2 | ^9.99.99",
"php": "^5.4 | ^7.0 | ^8.0",
"symfony/polyfill-ctype": "^1.8"
},
"replace": {
@ -943,14 +960,16 @@
"require-dev": {
"codeception/aspect-mock": "^1 | ^2",
"doctrine/annotations": "^1.2",
"goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1",
"jakub-onderka/php-parallel-lint": "^1",
"goaop/framework": "1.0.0-alpha.2 | ^1 | >=2.1.0 <=2.3.2",
"mockery/mockery": "^0.9.11 | ^1",
"moontoast/math": "^1.1",
"nikic/php-parser": "<=4.5.0",
"paragonie/random-lib": "^2",
"php-mock/php-mock-phpunit": "^0.3 | ^1.1",
"phpunit/phpunit": "^4.8 | ^5.4 | ^6.5",
"squizlabs/php_codesniffer": "^3.5"
"php-mock/php-mock-phpunit": "^0.3 | ^1.1 | ^2.6",
"php-parallel-lint/php-parallel-lint": "^1.3",
"phpunit/phpunit": ">=4.8.36 <9.0.0 | >=9.3.0",
"squizlabs/php_codesniffer": "^3.5",
"yoast/phpunit-polyfills": "^1.0"
},
"suggest": {
"ext-ctype": "Provides support for PHP Ctype functions",
@ -962,7 +981,7 @@
"ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid",
"ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
},
"time": "2020-02-21T04:36:14+00:00",
"time": "2021-09-25T23:07:42+00:00",
"type": "library",
"extra": {
"branch-alias": {
@ -1004,6 +1023,22 @@
"identifier",
"uuid"
],
"support": {
"issues": "https://github.com/ramsey/uuid/issues",
"rss": "https://github.com/ramsey/uuid/releases.atom",
"source": "https://github.com/ramsey/uuid",
"wiki": "https://github.com/ramsey/uuid/wiki"
},
"funding": [
{
"url": "https://github.com/ramsey",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/ramsey/uuid",
"type": "tidelift"
}
],
"install-path": "../ramsey/uuid"
},
{
@ -1489,17 +1524,17 @@
},
{
"name": "smarty/smarty",
"version": "v3.1.39",
"version_normalized": "3.1.39.0",
"version": "v3.1.40",
"version_normalized": "3.1.40.0",
"source": {
"type": "git",
"url": "https://github.com/smarty-php/smarty.git",
"reference": "e27da524f7bcd7361e3ea5cdfa99c4378a7b5419"
"reference": "9d4f8309ed49702e0d7152f9983c3a9c4b98eb9d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/smarty-php/smarty/zipball/e27da524f7bcd7361e3ea5cdfa99c4378a7b5419",
"reference": "e27da524f7bcd7361e3ea5cdfa99c4378a7b5419",
"url": "https://api.github.com/repos/smarty-php/smarty/zipball/9d4f8309ed49702e0d7152f9983c3a9c4b98eb9d",
"reference": "9d4f8309ed49702e0d7152f9983c3a9c4b98eb9d",
"shasum": ""
},
"require": {
@ -1509,7 +1544,7 @@
"phpunit/phpunit": "^7.5 || ^6.5 || ^5.7 || ^4.8",
"smarty/smarty-lexer": "^3.1"
},
"time": "2021-02-17T21:57:51+00:00",
"time": "2021-10-13T10:04:31+00:00",
"type": "library",
"extra": {
"branch-alias": {
@ -1545,31 +1580,37 @@
"keywords": [
"templating"
],
"support": {
"forum": "http://www.smarty.net/forums/",
"irc": "irc://irc.freenode.org/smarty",
"issues": "https://github.com/smarty-php/smarty/issues",
"source": "https://github.com/smarty-php/smarty/tree/v3.1.40"
},
"install-path": "../smarty/smarty"
},
{
"name": "symfony/deprecation-contracts",
"version": "v2.4.0",
"version_normalized": "2.4.0.0",
"version": "v3.0.0",
"version_normalized": "3.0.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
"reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627"
"reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627",
"reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced",
"reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced",
"shasum": ""
},
"require": {
"php": ">=7.1"
"php": ">=8.0.2"
},
"time": "2021-03-23T23:28:01+00:00",
"time": "2021-11-01T23:48:49+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "2.4-dev"
"dev-main": "3.0-dev"
},
"thanks": {
"name": "symfony/contracts",
@ -1599,7 +1640,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0"
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.0"
},
"funding": [
{
@ -1619,26 +1660,24 @@
},
{
"name": "symfony/options-resolver",
"version": "v5.3.0",
"version_normalized": "5.3.0.0",
"version": "v6.0.0",
"version_normalized": "6.0.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
"reference": "162e886ca035869866d233a2bfef70cc28f9bbe5"
"reference": "be0facf48a42a232d6c0daadd76e4eb5657a4798"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/162e886ca035869866d233a2bfef70cc28f9bbe5",
"reference": "162e886ca035869866d233a2bfef70cc28f9bbe5",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/be0facf48a42a232d6c0daadd76e4eb5657a4798",
"reference": "be0facf48a42a232d6c0daadd76e4eb5657a4798",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1",
"symfony/polyfill-php73": "~1.0",
"symfony/polyfill-php80": "^1.15"
"php": ">=8.0.2",
"symfony/deprecation-contracts": "^2.1|^3"
},
"time": "2021-05-26T17:43:10+00:00",
"time": "2021-11-23T19:05:29+00:00",
"type": "library",
"installation-source": "source",
"autoload": {
@ -1671,7 +1710,7 @@
"options"
],
"support": {
"source": "https://github.com/symfony/options-resolver/tree/v5.3.0"
"source": "https://github.com/symfony/options-resolver/tree/v6.0.0"
},
"funding": [
{
@ -1771,194 +1810,25 @@
],
"install-path": "../symfony/polyfill-ctype"
},
{
"name": "symfony/polyfill-php73",
"version": "v1.23.0",
"version_normalized": "1.23.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
"reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010",
"reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"time": "2021-02-19T12:13:01+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"installation-source": "source",
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php73\\": ""
},
"files": [
"bootstrap.php"
],
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"install-path": "../symfony/polyfill-php73"
},
{
"name": "symfony/polyfill-php80",
"version": "v1.23.0",
"version_normalized": "1.23.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0",
"reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"time": "2021-02-19T12:13:01+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"installation-source": "source",
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php80\\": ""
},
"files": [
"bootstrap.php"
],
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ion Bazan",
"email": "ion.bazan@gmail.com"
},
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"install-path": "../symfony/polyfill-php80"
},
{
"name": "symfony/process",
"version": "v5.3.0",
"version_normalized": "5.3.0.0",
"version": "v6.0.2",
"version_normalized": "6.0.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "53e36cb1c160505cdaf1ef201501669c4c317191"
"reference": "71da2b7f3fdba460fcf61a97c8d3d14bbf3391ad"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/53e36cb1c160505cdaf1ef201501669c4c317191",
"reference": "53e36cb1c160505cdaf1ef201501669c4c317191",
"url": "https://api.github.com/repos/symfony/process/zipball/71da2b7f3fdba460fcf61a97c8d3d14bbf3391ad",
"reference": "71da2b7f3fdba460fcf61a97c8d3d14bbf3391ad",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/polyfill-php80": "^1.15"
"php": ">=8.0.2"
},
"time": "2021-05-26T12:52:38+00:00",
"time": "2021-12-27T21:05:08+00:00",
"type": "library",
"installation-source": "source",
"autoload": {
@ -1986,7 +1856,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/process/tree/v5.3.0"
"source": "https://github.com/symfony/process/tree/v6.0.2"
},
"funding": [
{
@ -2004,6 +1874,83 @@
],
"install-path": "../symfony/process"
},
{
"name": "symfony/yaml",
"version": "v6.0.2",
"version_normalized": "6.0.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "ed602f38b8636a2ea21af760d2578f3d2f92fc60"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/ed602f38b8636a2ea21af760d2578f3d2f92fc60",
"reference": "ed602f38b8636a2ea21af760d2578f3d2f92fc60",
"shasum": ""
},
"require": {
"php": ">=8.0.2",
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
"symfony/console": "<5.4"
},
"require-dev": {
"symfony/console": "^5.4|^6.0"
},
"suggest": {
"symfony/console": "For validating YAML files using the lint command"
},
"time": "2021-12-16T22:13:01+00:00",
"bin": [
"Resources/bin/yaml-lint"
],
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"Symfony\\Component\\Yaml\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/yaml/tree/v6.0.2"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"install-path": "../symfony/yaml"
},
{
"name": "twbs/bootstrap",
"version": "v4.1.3",

View file

@ -1,24 +1,24 @@
<?php return array (
'root' =>
array (
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'pretty_version' => 'dev-dev',
'version' => 'dev-dev',
'aliases' =>
array (
),
'reference' => '441261e2d8ac174792bcb1f37f44e74d1d5c0213',
'reference' => '193a5403a7eb3ce1dae2fe2cb8e655fa0abbc57d',
'name' => 'zot/zap',
),
'versions' =>
array (
'blueimp/jquery-file-upload' =>
array (
'pretty_version' => 'v10.31.0',
'version' => '10.31.0.0',
'pretty_version' => 'v10.32.0',
'version' => '10.32.0.0',
'aliases' =>
array (
),
'reference' => '0740f81829698b84efe17e72501e0f420ea0d611',
'reference' => '20f6c4a07a6fbff22d79228c893eb1746d2d8962',
),
'bshaffer/oauth2-server-php' =>
array (
@ -40,30 +40,30 @@
),
'doctrine/collections' =>
array (
'pretty_version' => '1.6.7',
'version' => '1.6.7.0',
'pretty_version' => '1.6.8',
'version' => '1.6.8.0',
'aliases' =>
array (
),
'reference' => '55f8b799269a1a472457bd1a41b4f379d4cfba4a',
'reference' => '1958a744696c6bb3bb0d28db2611dc11610e78af',
),
'ezyang/htmlpurifier' =>
array (
'pretty_version' => 'v4.13.0',
'version' => '4.13.0.0',
'pretty_version' => 'v4.14.0',
'version' => '4.14.0.0',
'aliases' =>
array (
),
'reference' => '08e27c97e4c6ed02f37c5b2b20488046c8d90d75',
'reference' => '12ab42bd6e742c70c0a52f7b82477fcd44e64b75',
),
'forkawesome/fork-awesome' =>
array (
'pretty_version' => '1.1.7',
'version' => '1.1.7.0',
'pretty_version' => '1.2',
'version' => '1.2.0.0',
'aliases' =>
array (
),
'reference' => '326af9c8bee0c80ff4c00cb2fadd4f1edd2a08c3',
'reference' => '1e3849530d0266ece3a883649e1398414b92241d',
),
'jbroadway/urlify' =>
array (
@ -94,21 +94,21 @@
),
'masterminds/html5' =>
array (
'pretty_version' => '2.7.4',
'version' => '2.7.4.0',
'pretty_version' => '2.7.5',
'version' => '2.7.5.0',
'aliases' =>
array (
),
'reference' => '9227822783c75406cfe400984b2f095cdf03d417',
'reference' => 'f640ac1bdddff06ea333a920c95bbad8872429ab',
),
'michelf/php-markdown' =>
array (
'pretty_version' => '1.9.0',
'version' => '1.9.0.0',
'pretty_version' => '1.9.1',
'version' => '1.9.1.0',
'aliases' =>
array (
),
'reference' => 'c83178d49e372ca967d1a8c77ae4e051b3a3c75c',
'reference' => '5024d623c1a057dcd2d076d25b7d270a1d0d55f3',
),
'p3k/emoji-detector' =>
array (
@ -121,21 +121,21 @@
),
'paragonie/random_compat' =>
array (
'pretty_version' => 'v9.99.99',
'version' => '9.99.99.0',
'pretty_version' => 'v9.99.100',
'version' => '9.99.100.0',
'aliases' =>
array (
),
'reference' => '84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95',
'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
),
'phpseclib/phpseclib' =>
array (
'pretty_version' => '2.0.32',
'version' => '2.0.32.0',
'pretty_version' => '2.0.35',
'version' => '2.0.35.0',
'aliases' =>
array (
),
'reference' => 'f5c4c19880d45d0be3e7d24ae8ac434844a898cd',
'reference' => '4e16cf3f5f927a7d3f5317820af795c0366c0420',
),
'psr/log' =>
array (
@ -148,18 +148,18 @@
),
'ramsey/uuid' =>
array (
'pretty_version' => '3.9.3',
'version' => '3.9.3.0',
'pretty_version' => '3.9.6',
'version' => '3.9.6.0',
'aliases' =>
array (
),
'reference' => '7e1633a6964b48589b142d60542f9ed31bd37a92',
'reference' => 'ffa80ab953edd85d5b6c004f96181a538aad35a3',
),
'rhumsaa/uuid' =>
array (
'replaced' =>
array (
0 => '3.9.3',
0 => '3.9.6',
),
),
'sabre/dav' =>
@ -227,30 +227,30 @@
),
'smarty/smarty' =>
array (
'pretty_version' => 'v3.1.39',
'version' => '3.1.39.0',
'pretty_version' => 'v3.1.40',
'version' => '3.1.40.0',
'aliases' =>
array (
),
'reference' => 'e27da524f7bcd7361e3ea5cdfa99c4378a7b5419',
'reference' => '9d4f8309ed49702e0d7152f9983c3a9c4b98eb9d',
),
'symfony/deprecation-contracts' =>
array (
'pretty_version' => 'v2.4.0',
'version' => '2.4.0.0',
'pretty_version' => 'v3.0.0',
'version' => '3.0.0.0',
'aliases' =>
array (
),
'reference' => '5f38c8804a9e97d23e0c8d63341088cd8a22d627',
'reference' => 'c726b64c1ccfe2896cb7df2e1331c357ad1c8ced',
),
'symfony/options-resolver' =>
array (
'pretty_version' => 'v5.3.0',
'version' => '5.3.0.0',
'pretty_version' => 'v6.0.0',
'version' => '6.0.0.0',
'aliases' =>
array (
),
'reference' => '162e886ca035869866d233a2bfef70cc28f9bbe5',
'reference' => 'be0facf48a42a232d6c0daadd76e4eb5657a4798',
),
'symfony/polyfill-ctype' =>
array (
@ -261,32 +261,23 @@
),
'reference' => '46cd95797e9df938fdd2b03693b5fca5e64b01ce',
),
'symfony/polyfill-php73' =>
array (
'pretty_version' => 'v1.23.0',
'version' => '1.23.0.0',
'aliases' =>
array (
),
'reference' => 'fba8933c384d6476ab14fb7b8526e5287ca7e010',
),
'symfony/polyfill-php80' =>
array (
'pretty_version' => 'v1.23.0',
'version' => '1.23.0.0',
'aliases' =>
array (
),
'reference' => 'eca0bf41ed421bed1b57c4958bab16aa86b757d0',
),
'symfony/process' =>
array (
'pretty_version' => 'v5.3.0',
'version' => '5.3.0.0',
'pretty_version' => 'v6.0.2',
'version' => '6.0.2.0',
'aliases' =>
array (
),
'reference' => '53e36cb1c160505cdaf1ef201501669c4c317191',
'reference' => '71da2b7f3fdba460fcf61a97c8d3d14bbf3391ad',
),
'symfony/yaml' =>
array (
'pretty_version' => 'v6.0.2',
'version' => '6.0.2.0',
'aliases' =>
array (
),
'reference' => 'ed602f38b8636a2ea21af760d2578f3d2f92fc60',
),
'twbs/bootstrap' =>
array (
@ -324,12 +315,12 @@
),
'zot/zap' =>
array (
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'pretty_version' => 'dev-dev',
'version' => 'dev-dev',
'aliases' =>
array (
),
'reference' => '441261e2d8ac174792bcb1f37f44e74d1d5c0213',
'reference' => '193a5403a7eb3ce1dae2fe2cb8e655fa0abbc57d',
),
),
);

View file

@ -4,8 +4,8 @@
$issues = array();
if (!(PHP_VERSION_ID >= 70205)) {
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.5". You are running ' . PHP_VERSION . '.';
if (!(PHP_VERSION_ID >= 80002)) {
$issues[] = 'Your Composer dependencies require a PHP version ">= 8.0.2". You are running ' . PHP_VERSION . '.';
}
if ($issues) {

View file

@ -5,13 +5,22 @@
"docsSlug": "doctrine-collections",
"versions": [
{
"name": "master",
"branchName": "master",
"name": "2.0",
"branchName": "2.0.x",
"slug": "latest",
"aliases": [
"current",
"stable"
]
"upcoming": true
},
{
"name": "1.7",
"branchName": "1.7.x",
"slug": "1.7",
"upcoming": true
},
{
"name": "1.6",
"branchName": "1.6.x",
"slug": "1.6",
"current": true
}
]
}

View file

@ -40,11 +40,11 @@ curl -sS https://getcomposer.org/installer | php --
./composer.phar install
```
## Travis
## Github Actions
We automatically run your pull request through [Travis CI](https://www.travis-ci.org)
against supported PHP versions. If you break the tests, we cannot merge your code,
so please make sure that your code is working before opening up a Pull-Request.
We automatically run your pull request through Github Actions against supported
PHP versions. If you break the tests, we cannot merge your code, so please make
sure that your code is working before opening up a Pull-Request.
## Getting merged

View file

@ -1,6 +1,6 @@
# Doctrine Collections
[![Build Status](https://travis-ci.org/doctrine/collections.svg?branch=master)](https://travis-ci.org/doctrine/collections)
[![Build Status](https://github.com/doctrine/collections/workflows/Continuous%20Integration/badge.svg)](https://github.com/doctrine/collections/actions)
[![Code Coverage](https://codecov.io/gh/doctrine/collections/branch/master/graph/badge.svg)](https://codecov.io/gh/doctrine/collections/branch/master)
Collections Abstraction library

View file

@ -21,10 +21,10 @@
"php": "^7.1.3 || ^8.0"
},
"require-dev": {
"phpunit/phpunit": "^7.0",
"doctrine/coding-standard": "^6.0",
"phpstan/phpstan-shim": "^0.9.2",
"vimeo/psalm": "^3.8.1"
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5",
"doctrine/coding-standard": "^9.0",
"phpstan/phpstan": "^0.12",
"vimeo/psalm": "^4.2.1"
},
"autoload": {
"psr-4": { "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" }

View file

@ -12,8 +12,8 @@ arrays of data. Here is an example using the simple
$collection = new ArrayCollection([1, 2, 3]);
$filteredCollection = $collection->filter(function($count) {
return $count > 1;
$filteredCollection = $collection->filter(function($element) {
return $element > 1;
}); // [2, 3]
Collection Methods
@ -151,13 +151,14 @@ Tests for the existence of an element that satisfies the given predicate.
filter
------
Returns all the elements of this collection that satisfy the predicate. The order of the elements is preserved.
Returns all the elements of this collection for which your callback function returns `true`.
The order and keys of the elements are preserved.
.. code-block:: php
$collection = new ArrayCollection([1, 2, 3]);
$filteredCollection = $collection->filter(function($count) {
return $count > 1;
$filteredCollection = $collection->filter(function($element) {
return $element > 1;
}); // [2, 3]
forAll

View file

@ -3,11 +3,12 @@
namespace Doctrine\Common\Collections;
use Closure;
use ReturnTypeWillChange;
use Traversable;
/**
* Lazy collection that is backed by a concrete collection
*
* @phpstan-template TKey
* @psalm-template TKey of array-key
* @psalm-template T
* @template-implements Collection<TKey,T>
@ -18,7 +19,7 @@ abstract class AbstractLazyCollection implements Collection
* The backed collection to use
*
* @psalm-var Collection<TKey,T>
* @var Collection
* @var Collection<mixed>
*/
protected $collection;
@ -27,7 +28,10 @@ abstract class AbstractLazyCollection implements Collection
/**
* {@inheritDoc}
*
* @return int
*/
#[ReturnTypeWillChange]
public function count()
{
$this->initialize();
@ -275,7 +279,11 @@ abstract class AbstractLazyCollection implements Collection
/**
* {@inheritDoc}
*
* @return Traversable<int|string, mixed>
* @psalm-return Traversable<TKey,T>
*/
#[ReturnTypeWillChange]
public function getIterator()
{
$this->initialize();
@ -287,7 +295,10 @@ abstract class AbstractLazyCollection implements Collection
* {@inheritDoc}
*
* @psalm-param TKey $offset
*
* @return bool
*/
#[ReturnTypeWillChange]
public function offsetExists($offset)
{
$this->initialize();
@ -299,11 +310,11 @@ abstract class AbstractLazyCollection implements Collection
* {@inheritDoc}
*
* @param int|string $offset
* @psalm-param TKey $offset
*
* @return mixed
*
* @psalm-param TKey $offset
*/
#[ReturnTypeWillChange]
public function offsetGet($offset)
{
$this->initialize();
@ -315,9 +326,11 @@ abstract class AbstractLazyCollection implements Collection
* {@inheritDoc}
*
* @param mixed $value
*
* @psalm-param TKey $offset
*
* @return void
*/
#[ReturnTypeWillChange]
public function offsetSet($offset, $value)
{
$this->initialize();
@ -328,7 +341,10 @@ abstract class AbstractLazyCollection implements Collection
* {@inheritDoc}
*
* @psalm-param TKey $offset
*
* @return void
*/
#[ReturnTypeWillChange]
public function offsetUnset($offset)
{
$this->initialize();

View file

@ -5,7 +5,9 @@ namespace Doctrine\Common\Collections;
use ArrayIterator;
use Closure;
use Doctrine\Common\Collections\Expr\ClosureExpressionVisitor;
use const ARRAY_FILTER_USE_BOTH;
use ReturnTypeWillChange;
use Traversable;
use function array_filter;
use function array_key_exists;
use function array_keys;
@ -24,6 +26,8 @@ use function reset;
use function spl_object_hash;
use function uasort;
use const ARRAY_FILTER_USE_BOTH;
/**
* An ArrayCollection is a Collection implementation that wraps a regular PHP array.
*
@ -32,11 +36,11 @@ use function uasort;
* serialize a collection use {@link toArray()} and reconstruct the collection
* manually.
*
* @phpstan-template TKey
* @psalm-template TKey of array-key
* @psalm-template T
* @template-implements Collection<TKey,T>
* @template-implements Selectable<TKey,T>
* @psalm-consistent-constructor
*/
class ArrayCollection implements Collection, Selectable
{
@ -44,7 +48,7 @@ class ArrayCollection implements Collection, Selectable
* An array containing the entries of this collection.
*
* @psalm-var array<TKey,T>
* @var array
* @var mixed[]
*/
private $elements;
@ -52,7 +56,6 @@ class ArrayCollection implements Collection, Selectable
* Initializes a new ArrayCollection.
*
* @param array $elements
*
* @psalm-param array<TKey,T> $elements
*/
public function __construct(array $elements = [])
@ -83,11 +86,13 @@ class ArrayCollection implements Collection, Selectable
* instance should be created when constructor semantics have changed.
*
* @param array $elements Elements.
* @psalm-param array<K,V> $elements
*
* @return static
* @psalm-return static<K,V>
*
* @psalm-param array<TKey,T> $elements
* @psalm-return static<TKey,T>
* @psalm-template K of array-key
* @psalm-template V
*/
protected function createFrom(array $elements)
{
@ -163,7 +168,10 @@ class ArrayCollection implements Collection, Selectable
* {@inheritDoc}
*
* @psalm-param TKey $offset
*
* @return bool
*/
#[ReturnTypeWillChange]
public function offsetExists($offset)
{
return $this->containsKey($offset);
@ -175,7 +183,10 @@ class ArrayCollection implements Collection, Selectable
* {@inheritDoc}
*
* @psalm-param TKey $offset
*
* @return mixed
*/
#[ReturnTypeWillChange]
public function offsetGet($offset)
{
return $this->get($offset);
@ -185,7 +196,10 @@ class ArrayCollection implements Collection, Selectable
* Required by interface ArrayAccess.
*
* {@inheritDoc}
*
* @return void
*/
#[ReturnTypeWillChange]
public function offsetSet($offset, $value)
{
if (! isset($offset)) {
@ -203,7 +217,10 @@ class ArrayCollection implements Collection, Selectable
* {@inheritDoc}
*
* @psalm-param TKey $offset
*
* @return void
*/
#[ReturnTypeWillChange]
public function offsetUnset($offset)
{
$this->remove($offset);
@ -273,7 +290,10 @@ class ArrayCollection implements Collection, Selectable
/**
* {@inheritDoc}
*
* @return int
*/
#[ReturnTypeWillChange]
public function count()
{
return count($this->elements);
@ -311,10 +331,12 @@ class ArrayCollection implements Collection, Selectable
}
/**
* Required by interface IteratorAggregate.
*
* {@inheritDoc}
*
* @return Traversable<int|string, mixed>
* @psalm-return Traversable<TKey,T>
*/
#[ReturnTypeWillChange]
public function getIterator()
{
return new ArrayIterator($this->elements);
@ -323,11 +345,12 @@ class ArrayCollection implements Collection, Selectable
/**
* {@inheritDoc}
*
* @psalm-param Closure(T=):U $func
*
* @return static
* @psalm-return static<TKey, U>
*
* @psalm-template U
* @psalm-param Closure(T=):U $func
* @psalm-return static<TKey, U>
*/
public function map(Closure $func)
{
@ -338,7 +361,6 @@ class ArrayCollection implements Collection, Selectable
* {@inheritDoc}
*
* @return static
*
* @psalm-return static<TKey,T>
*/
public function filter(Closure $p)

View file

@ -24,7 +24,6 @@ use IteratorAggregate;
* position unless you explicitly positioned it before. Prefer iteration with
* external iterators.
*
* @phpstan-template TKey
* @psalm-template TKey of array-key
* @psalm-template T
* @template-extends IteratorAggregate<TKey, T>
@ -36,10 +35,9 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* Adds an element at the end of the collection.
*
* @param mixed $element The element to add.
* @psalm-param T $element
*
* @return true Always TRUE.
*
* @psalm-param T $element
*/
public function add($element);
@ -55,10 +53,9 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* This is an O(n) operation, where n is the size of the collection.
*
* @param mixed $element The element to search for.
* @psalm-param T $element
*
* @return bool TRUE if the collection contains the element, FALSE otherwise.
*
* @psalm-param T $element
*/
public function contains($element);
@ -73,10 +70,9 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* Removes the element at the specified index from the collection.
*
* @param string|int $key The key/index of the element to remove.
* @psalm-param TKey $key
*
* @return mixed The removed element or NULL, if the collection did not contain the element.
*
* @psalm-param TKey $key
* @psalm-return T|null
*/
public function remove($key);
@ -85,10 +81,9 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* Removes the specified element from the collection, if it is found.
*
* @param mixed $element The element to remove.
* @psalm-param T $element
*
* @return bool TRUE if this collection contained the specified element, FALSE otherwise.
*
* @psalm-param T $element
*/
public function removeElement($element);
@ -96,11 +91,10 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* Checks whether the collection contains an element with the specified key/index.
*
* @param string|int $key The key/index to check for.
* @psalm-param TKey $key
*
* @return bool TRUE if the collection contains an element with the specified key/index,
* FALSE otherwise.
*
* @psalm-param TKey $key
*/
public function containsKey($key);
@ -108,10 +102,9 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* Gets the element at the specified key/index.
*
* @param string|int $key The key/index of the element to retrieve.
* @psalm-param TKey $key
*
* @return mixed
*
* @psalm-param TKey $key
* @psalm-return T|null
*/
public function get($key);
@ -121,7 +114,6 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
*
* @return int[]|string[] The keys/indices of the collection, in the order of the corresponding
* elements in the collection.
*
* @psalm-return TKey[]
*/
public function getKeys();
@ -129,9 +121,8 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
/**
* Gets all values of the collection.
*
* @return array The values of all elements in the collection, in the order they
* appear in the collection.
*
* @return mixed[] The values of all elements in the collection, in the
* order they appear in the collection.
* @psalm-return T[]
*/
public function getValues();
@ -141,19 +132,17 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
*
* @param string|int $key The key/index of the element to set.
* @param mixed $value The element to set.
*
* @return void
*
* @psalm-param TKey $key
* @psalm-param T $value
*
* @return void
*/
public function set($key, $value);
/**
* Gets a native PHP array representation of the collection.
*
* @return array
*
* @return mixed[]
* @psalm-return array<TKey,T>
*/
public function toArray();
@ -162,7 +151,6 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* Sets the internal iterator to the first element in the collection and returns this element.
*
* @return mixed
*
* @psalm-return T|false
*/
public function first();
@ -171,7 +159,6 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* Sets the internal iterator to the last element in the collection and returns this element.
*
* @return mixed
*
* @psalm-return T|false
*/
public function last();
@ -180,7 +167,6 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* Gets the key/index of the element at the current iterator position.
*
* @return int|string|null
*
* @psalm-return TKey|null
*/
public function key();
@ -189,7 +175,6 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* Gets the element of the collection at the current iterator position.
*
* @return mixed
*
* @psalm-return T|false
*/
public function current();
@ -198,7 +183,6 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* Moves the internal iterator position to the next element and returns this element.
*
* @return mixed
*
* @psalm-return T|false
*/
public function next();
@ -207,10 +191,9 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* Tests for the existence of an element that satisfies the given predicate.
*
* @param Closure $p The predicate.
* @psalm-param Closure(TKey=, T=):bool $p
*
* @return bool TRUE if the predicate is TRUE for at least one element, FALSE otherwise.
*
* @psalm-param Closure(TKey=, T=):bool $p
*/
public function exists(Closure $p);
@ -219,10 +202,9 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* The order of the elements is preserved.
*
* @param Closure $p The predicate used for filtering.
*
* @return Collection A collection with the results of the filter operation.
*
* @psalm-param Closure(T=):bool $p
*
* @return Collection<mixed> A collection with the results of the filter operation.
* @psalm-return Collection<TKey, T>
*/
public function filter(Closure $p);
@ -231,10 +213,9 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* Tests whether the given predicate p holds for all elements of this collection.
*
* @param Closure $p The predicate.
* @psalm-param Closure(TKey=, T=):bool $p
*
* @return bool TRUE, if the predicate yields TRUE for all elements, FALSE otherwise.
*
* @psalm-param Closure(TKey=, T=):bool $p
*/
public function forAll(Closure $p);
@ -242,11 +223,12 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* Applies the given function to each element in the collection and returns
* a new collection with the elements returned by the function.
*
* @return Collection
* @psalm-param Closure(T=):U $func
*
* @return Collection<mixed>
* @psalm-return Collection<TKey, U>
*
* @psalm-template U
* @psalm-param Closure(T=):U $func
* @psalm-return Collection<TKey, U>
*/
public function map(Closure $func);
@ -255,12 +237,11 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* Keys are preserved in the resulting collections.
*
* @param Closure $p The predicate on which to partition.
* @psalm-param Closure(TKey=, T=):bool $p
*
* @return Collection[] An array with two elements. The first element contains the collection
* @return Collection<mixed> An array with two elements. The first element contains the collection
* of elements where the predicate returned TRUE, the second element
* contains the collection of elements where the predicate returned FALSE.
*
* @psalm-param Closure(TKey=, T=):bool $p
* @psalm-return array{0: Collection<TKey, T>, 1: Collection<TKey, T>}
*/
public function partition(Closure $p);
@ -271,10 +252,9 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* For objects this means reference equality.
*
* @param mixed $element The element to search for.
* @psalm-param T $element
*
* @return int|string|bool The key/index of the element or FALSE if the element was not found.
*
* @psalm-param T $element
* @psalm-return TKey|false
*/
public function indexOf($element);
@ -289,8 +269,7 @@ interface Collection extends Countable, IteratorAggregate, ArrayAccess
* @param int $offset The offset to start from.
* @param int|null $length The maximum number of elements to return, or null for no limit.
*
* @return array
*
* @return mixed[]
* @psalm-return array<TKey,T>
*/
public function slice($offset, $length = null);

View file

@ -4,11 +4,14 @@ namespace Doctrine\Common\Collections;
use Doctrine\Common\Collections\Expr\CompositeExpression;
use Doctrine\Common\Collections\Expr\Expression;
use function array_map;
use function strtoupper;
/**
* Criteria for filtering Selectable collections.
*
* @psalm-consistent-constructor
*/
class Criteria
{
@ -163,7 +166,7 @@ class Criteria
public function orderBy(array $orderings)
{
$this->orderings = array_map(
static function (string $ordering) : string {
static function (string $ordering): string {
return strtoupper($ordering) === Criteria::ASC ? Criteria::ASC : Criteria::DESC;
},
$orderings
@ -191,7 +194,7 @@ class Criteria
*/
public function setFirstResult($firstResult)
{
$this->firstResult = $firstResult === null ? null : (int) $firstResult;
$this->firstResult = $firstResult;
return $this;
}
@ -215,7 +218,7 @@ class Criteria
*/
public function setMaxResults($maxResults)
{
$this->maxResults = $maxResults === null ? null : (int) $maxResults;
$this->maxResults = $maxResults;
return $this;
}

View file

@ -5,6 +5,7 @@ namespace Doctrine\Common\Collections\Expr;
use ArrayAccess;
use Closure;
use RuntimeException;
use function in_array;
use function is_array;
use function is_scalar;
@ -30,7 +31,7 @@ class ClosureExpressionVisitor extends ExpressionVisitor
* directly or indirectly (through an accessor get*, is*, or a magic
* method, __get, __call).
*
* @param object|array $object
* @param object|mixed[] $object
* @param string $field
*
* @return mixed
@ -97,12 +98,12 @@ class ClosureExpressionVisitor extends ExpressionVisitor
public static function sortByField($name, $orientation = 1, ?Closure $next = null)
{
if (! $next) {
$next = static function () : int {
$next = static function (): int {
return 0;
};
}
return static function ($a, $b) use ($name, $next, $orientation) : int {
return static function ($a, $b) use ($name, $next, $orientation): int {
$aValue = ClosureExpressionVisitor::getObjectFieldValue($a, $name);
$bValue = ClosureExpressionVisitor::getObjectFieldValue($b, $name);
@ -125,44 +126,44 @@ class ClosureExpressionVisitor extends ExpressionVisitor
switch ($comparison->getOperator()) {
case Comparison::EQ:
return static function ($object) use ($field, $value) : bool {
return static function ($object) use ($field, $value): bool {
return ClosureExpressionVisitor::getObjectFieldValue($object, $field) === $value;
};
case Comparison::NEQ:
return static function ($object) use ($field, $value) : bool {
return static function ($object) use ($field, $value): bool {
return ClosureExpressionVisitor::getObjectFieldValue($object, $field) !== $value;
};
case Comparison::LT:
return static function ($object) use ($field, $value) : bool {
return static function ($object) use ($field, $value): bool {
return ClosureExpressionVisitor::getObjectFieldValue($object, $field) < $value;
};
case Comparison::LTE:
return static function ($object) use ($field, $value) : bool {
return static function ($object) use ($field, $value): bool {
return ClosureExpressionVisitor::getObjectFieldValue($object, $field) <= $value;
};
case Comparison::GT:
return static function ($object) use ($field, $value) : bool {
return static function ($object) use ($field, $value): bool {
return ClosureExpressionVisitor::getObjectFieldValue($object, $field) > $value;
};
case Comparison::GTE:
return static function ($object) use ($field, $value) : bool {
return static function ($object) use ($field, $value): bool {
return ClosureExpressionVisitor::getObjectFieldValue($object, $field) >= $value;
};
case Comparison::IN:
return static function ($object) use ($field, $value) : bool {
return static function ($object) use ($field, $value): bool {
$fieldValue = ClosureExpressionVisitor::getObjectFieldValue($object, $field);
return in_array($fieldValue, $value, is_scalar($fieldValue));
};
case Comparison::NIN:
return static function ($object) use ($field, $value) : bool {
return static function ($object) use ($field, $value): bool {
$fieldValue = ClosureExpressionVisitor::getObjectFieldValue($object, $field);
return ! in_array($fieldValue, $value, is_scalar($fieldValue));
@ -174,7 +175,7 @@ class ClosureExpressionVisitor extends ExpressionVisitor
};
case Comparison::MEMBER_OF:
return static function ($object) use ($field, $value) : bool {
return static function ($object) use ($field, $value): bool {
$fieldValues = ClosureExpressionVisitor::getObjectFieldValue($object, $field);
if (! is_array($fieldValues)) {
@ -185,12 +186,12 @@ class ClosureExpressionVisitor extends ExpressionVisitor
};
case Comparison::STARTS_WITH:
return static function ($object) use ($field, $value) : bool {
return static function ($object) use ($field, $value): bool {
return strpos(ClosureExpressionVisitor::getObjectFieldValue($object, $field), $value) === 0;
};
case Comparison::ENDS_WITH:
return static function ($object) use ($field, $value) : bool {
return static function ($object) use ($field, $value): bool {
return $value === substr(ClosureExpressionVisitor::getObjectFieldValue($object, $field), -strlen($value));
};
@ -221,19 +222,21 @@ class ClosureExpressionVisitor extends ExpressionVisitor
switch ($expr->getType()) {
case CompositeExpression::TYPE_AND:
return $this->andExpressions($expressionList);
case CompositeExpression::TYPE_OR:
return $this->orExpressions($expressionList);
default:
throw new RuntimeException('Unknown composite ' . $expr->getType());
}
}
/**
* @param array $expressions
* @param callable[] $expressions
*/
private function andExpressions(array $expressions) : callable
private function andExpressions(array $expressions): callable
{
return static function ($object) use ($expressions) : bool {
return static function ($object) use ($expressions): bool {
foreach ($expressions as $expression) {
if (! $expression($object)) {
return false;
@ -245,11 +248,11 @@ class ClosureExpressionVisitor extends ExpressionVisitor
}
/**
* @param array $expressions
* @param callable[] $expressions
*/
private function orExpressions(array $expressions) : callable
private function orExpressions(array $expressions): callable
{
return static function ($object) use ($expressions) : bool {
return static function ($object) use ($expressions): bool {
foreach ($expressions as $expression) {
if ($expression($object)) {
return true;

View file

@ -20,7 +20,7 @@ class CompositeExpression implements Expression
/**
* @param string $type
* @param array $expressions
* @param mixed[] $expressions
*
* @throws RuntimeException
*/
@ -32,6 +32,7 @@ class CompositeExpression implements Expression
if ($expr instanceof Value) {
throw new RuntimeException('Values are not supported expressions as children of and/or expressions.');
}
if (! ($expr instanceof Expression)) {
throw new RuntimeException('No expression given to CompositeExpression.');
}

View file

@ -3,6 +3,7 @@
namespace Doctrine\Common\Collections\Expr;
use RuntimeException;
use function get_class;
/**
@ -44,10 +45,13 @@ abstract class ExpressionVisitor
switch (true) {
case $expr instanceof Comparison:
return $this->walkComparison($expr);
case $expr instanceof Value:
return $this->walkValue($expr);
case $expr instanceof CompositeExpression:
return $this->walkCompositeExpression($expr);
default:
throw new RuntimeException('Unknown Expression ' . get_class($expr));
}

View file

@ -5,6 +5,7 @@ namespace Doctrine\Common\Collections;
use Doctrine\Common\Collections\Expr\Comparison;
use Doctrine\Common\Collections\Expr\CompositeExpression;
use Doctrine\Common\Collections\Expr\Value;
use function func_get_args;
/**
@ -114,7 +115,7 @@ class ExpressionBuilder
/**
* @param string $field
* @param array $values
* @param mixed[] $values
*
* @return Comparison
*/
@ -125,7 +126,7 @@ class ExpressionBuilder
/**
* @param string $field
* @param array $values
* @param mixed[] $values
*
* @return Comparison
*/

View file

@ -14,7 +14,6 @@ namespace Doctrine\Common\Collections;
* this API can implement efficient database access without having to ask the
* EntityManager or Repositories.
*
* @phpstan-template TKey
* @psalm-template TKey as array-key
* @psalm-template T
*/
@ -24,8 +23,7 @@ interface Selectable
* Selects all elements from a selectable that match the expression and
* returns a new collection containing these elements.
*
* @return Collection
*
* @return Collection<mixed>
* @psalm-return Collection<TKey,T>
*/
public function matching(Criteria $criteria);

View file

@ -0,0 +1,17 @@
parameters:
level: 3
paths:
- lib
ignoreErrors:
# Making classes final as suggested would be a BC-break
-
message: '~Unsafe usage of new static\(\)\.~'
paths:
- 'lib/Doctrine/Common/Collections/ArrayCollection.php'
- 'lib/Doctrine/Common/Collections/Criteria.php'
-
message: '~Array \(array\<TKey of \(int\|string\), T\>\) does not accept key int\.~'
path: 'lib/Doctrine/Common/Collections/ArrayCollection.php'
# This class is new in PHP 8.1 and PHPStan does not know it yet.
- '/Attribute class ReturnTypeWillChange does not exist./'

View file

@ -33,7 +33,6 @@
<MissingReturnType errorLevel="info" />
<MissingPropertyType errorLevel="info" />
<InvalidDocblock errorLevel="info" />
<MisplacedRequiredParam errorLevel="info" />
<PropertyNotSetInConstructor errorLevel="info" />
<MissingConstructor errorLevel="info" />
@ -50,5 +49,17 @@
<RawObjectIteration errorLevel="info" />
<InvalidStringClass errorLevel="info" />
<UnsafeGenericInstantiation>
<errorLevel type="suppress">
<file name="lib/Doctrine/Common/Collections/ArrayCollection.php"/>
</errorLevel>
</UnsafeGenericInstantiation>
<UndefinedAttributeClass>
<errorLevel type="suppress">
<!-- This class is new in PHP 8.1 and Psalm does not know it yet. -->
<referencedClass name="ReturnTypeWillChange"/>
</errorLevel>
</UndefinedAttributeClass>
</issueHandlers>
</psalm>

View file

@ -1,4 +1,4 @@
HTML Purifier [![Build Status](https://secure.travis-ci.org/ezyang/htmlpurifier.svg?branch=master)](http://travis-ci.org/ezyang/htmlpurifier)
HTML Purifier [![Build Status](https://github.com/ezyang/htmlpurifier/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/ezyang/htmlpurifier/actions/workflows/ci.yml)
=============
HTML Purifier is an HTML filtering solution that uses a unique combination

View file

@ -1 +1 @@
4.13.0
4.14.0

View file

@ -15,9 +15,6 @@
"require": {
"php": ">=5.2"
},
"require-dev": {
"simpletest/simpletest": "dev-master#72de02a7b80c6bb8864ef9bf66d41d2f58f826bd"
},
"autoload": {
"psr-0": { "HTMLPurifier": "library/" },
"files": ["library/HTMLPurifier.composer.php"],

View file

@ -4,12 +4,11 @@
* @file
* Legacy autoloader for systems lacking spl_autoload_register
*
* Must be separate to prevent deprecation warning on PHP 7.2
*/
function __autoload($class)
spl_autoload_register(function($class)
{
return HTMLPurifier_Bootstrap::autoload($class);
}
});
// vim: et sw=4 sts=4

View file

@ -17,6 +17,7 @@ if (function_exists('spl_autoload_register') && function_exists('spl_autoload_un
require dirname(__FILE__) . '/HTMLPurifier.autoload-legacy.php';
}
// phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.zend_ze1_compatibility_modeRemoved
if (ini_get('zend.ze1_compatibility_mode')) {
trigger_error("HTML Purifier is not compatible with zend.ze1_compatibility_mode; please turn it off", E_USER_ERROR);
}

View file

@ -7,7 +7,7 @@
* primary concern and you are using an opcode cache. PLEASE DO NOT EDIT THIS
* FILE, changes will be overwritten the next time the script is run.
*
* @version 4.13.0
* @version 4.14.0
*
* @warning
* You must *not* include any other HTML Purifier files before this file,

View file

@ -19,7 +19,7 @@
*/
/*
HTML Purifier 4.13.0 - Standards Compliant HTML Filtering
HTML Purifier 4.14.0 - Standards Compliant HTML Filtering
Copyright (C) 2006-2008 Edward Z. Yang
This library is free software; you can redistribute it and/or
@ -58,12 +58,12 @@ class HTMLPurifier
* Version of HTML Purifier.
* @type string
*/
public $version = '4.13.0';
public $version = '4.14.0';
/**
* Constant with version of HTML Purifier.
*/
const VERSION = '4.13.0';
const VERSION = '4.14.0';
/**
* Global configuration object.

View file

@ -25,6 +25,7 @@ class HTMLPurifier_AttrDef_CSS_Background extends HTMLPurifier_AttrDef
$this->info['background-repeat'] = $def->info['background-repeat'];
$this->info['background-attachment'] = $def->info['background-attachment'];
$this->info['background-position'] = $def->info['background-position'];
$this->info['background-size'] = $def->info['background-size'];
}
/**
@ -53,6 +54,7 @@ class HTMLPurifier_AttrDef_CSS_Background extends HTMLPurifier_AttrDef
$caught['repeat'] = false;
$caught['attachment'] = false;
$caught['position'] = false;
$caught['size'] = false;
$i = 0; // number of catches

View file

@ -109,6 +109,22 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
);
$this->info['background-position'] = new HTMLPurifier_AttrDef_CSS_BackgroundPosition();
$this->info['background-size'] = new HTMLPurifier_AttrDef_CSS_Composite(
array(
new HTMLPurifier_AttrDef_Enum(
array(
'auto',
'cover',
'contain',
'initial',
'inherit',
)
),
new HTMLPurifier_AttrDef_CSS_Percentage(),
new HTMLPurifier_AttrDef_CSS_Length()
)
);
$border_color =
$this->info['border-top-color'] =
$this->info['border-bottom-color'] =

View file

@ -164,7 +164,7 @@ class HTMLPurifier_ChildDef_Table extends HTMLPurifier_ChildDef
}
}
if (empty($content)) {
if (empty($content) && $thead === false && $tfoot === false) {
return false;
}

View file

@ -21,7 +21,7 @@ class HTMLPurifier_Config
* HTML Purifier's version
* @type string
*/
public $version = '4.13.0';
public $version = '4.14.0';
/**
* Whether or not to automatically finalize
@ -803,7 +803,7 @@ class HTMLPurifier_Config
if ($index !== false) {
$array = (isset($array[$index]) && is_array($array[$index])) ? $array[$index] : array();
}
$mq = $mq_fix && function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc();
$mq = $mq_fix && version_compare(PHP_VERSION, '7.4.0', '<') && function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc();
$allowed = HTMLPurifier_Config::getAllowedDirectivesForForm($allowed, $schema);
$ret = array();

View file

@ -257,8 +257,9 @@ class HTMLPurifier_HTMLModule
*/
public function makeLookup($list)
{
$args = func_get_args();
if (is_string($list)) {
$list = func_get_args();
$list = $args;
}
$ret = array();
foreach ($list as $value) {

View file

@ -146,10 +146,7 @@ class HTMLPurifier_HTMLModule_Tidy extends HTMLPurifier_HTMLModule
$type = "info_$type";
$e = $this;
}
// PHP does some weird parsing when I do
// $e->$type[$attr], so I have to assign a ref.
$f =& $e->$type;
$f[$attr] = $fix;
$e->{$type}[$attr] = $fix;
break;
case 'tag_transform':
$this->info_tag_transform[$params['element']] = $fix;

View file

@ -168,9 +168,11 @@ class HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4 extends HTMLPurifier_HTMLModule
// @vspace for img ------------------------------------------------
$r['img@vspace'] = new HTMLPurifier_AttrTransform_ImgSpace('vspace');
// @width for hr, td, th ------------------------------------------
// @width for table, hr, td, th, col ------------------------------------------
$r['table@width'] =
$r['td@width'] =
$r['th@width'] =
$r['col@width'] =
$r['hr@width'] = new HTMLPurifier_AttrTransform_Length('width');
return $r;

View file

@ -40,6 +40,9 @@ class HTMLPurifier_Injector_Linkify extends HTMLPurifier_Injector
'/\\b((?:[a-z][\\w\\-]+:(?:\\/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]|\\((?:[^\\s()<>]|(?:\\([^\\s()<>]+\\)))*\\))+(?:\\((?:[^\\s()<>]|(?:\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'".,<>?\x{00ab}\x{00bb}\x{201c}\x{201d}\x{2018}\x{2019}]))/iu',
$token->data, -1, PREG_SPLIT_DELIM_CAPTURE);
if ($bits === false) {
return;
}
$token = array();

View file

@ -1063,7 +1063,128 @@
"bug",
"code"
]
},
{
"login": "lucaspetter",
"name": "lucaspetter",
"avatar_url": "https://avatars0.githubusercontent.com/u/13027535?v=4",
"profile": "https://www.lucaspetter.com",
"contributions": [
"code",
"design"
]
},
{
"login": "dyamon",
"name": "Federico Igne",
"avatar_url": "https://avatars0.githubusercontent.com/u/6771224?v=4",
"profile": "https://github.com/dyamon",
"contributions": [
"design"
]
},
{
"login": "qwazix",
"name": "qwazix",
"avatar_url": "https://avatars0.githubusercontent.com/u/1202892?v=4",
"profile": "https://github.com/qwazix",
"contributions": [
"design"
]
},
{
"login": "Bertbk",
"name": "Bertrand Thierry",
"avatar_url": "https://avatars0.githubusercontent.com/u/5602767?v=4",
"profile": "http://bthierry.pages.math.cnrs.fr/",
"contributions": [
"design"
]
},
{
"login": "xxsimoxx",
"name": "SIMONE FIORAVANTI",
"avatar_url": "https://avatars0.githubusercontent.com/u/29772709?v=4",
"profile": "https://github.com/xxsimoxx",
"contributions": [
"design"
]
},
{
"login": "SamuelRiversMoore",
"name": "Samuel Rivers-Moore",
"avatar_url": "https://avatars0.githubusercontent.com/u/2640748?v=4",
"profile": "http://samuelriversmoore.net",
"contributions": [
"ideas"
]
},
{
"login": "pattishih",
"name": "Patti",
"avatar_url": "https://avatars1.githubusercontent.com/u/16858138?v=4",
"profile": "https://github.com/pattishih",
"contributions": [
"code"
]
},
{
"login": "feld",
"name": "Mark Felder",
"avatar_url": "https://avatars1.githubusercontent.com/u/40271278?v=4",
"profile": "https://blog.feld.me",
"contributions": [
"ideas"
]
},
{
"login": "Calinou",
"name": "Hugo Locurcio",
"avatar_url": "https://avatars3.githubusercontent.com/u/180032?v=4",
"profile": "https://hugo.pro",
"contributions": [
"code"
]
},
{
"login": "tintincastro",
"name": "tintincastro",
"avatar_url": "https://avatars0.githubusercontent.com/u/25725603?v=4",
"profile": "https://github.com/tintincastro",
"contributions": [
"code",
"doc"
]
},
{
"login": "diondresschers",
"name": "diondresschers",
"avatar_url": "https://avatars0.githubusercontent.com/u/3883936?v=4",
"profile": "https://github.com/diondresschers",
"contributions": [
"design"
]
},
{
"login": "panigrc",
"name": "Nikos Papagiannopoulos",
"avatar_url": "https://avatars.githubusercontent.com/u/645895?v=4",
"profile": "https://nikospapagiannopoulos.com",
"contributions": [
"review"
]
},
{
"login": "thomasbnt",
"name": "Thomasbnt.dev",
"avatar_url": "https://avatars.githubusercontent.com/u/14293805?v=4",
"profile": "https://thomasbnt.dev",
"contributions": [
"design"
]
}
],
"contributorsPerLine": 7
"contributorsPerLine": 7,
"commitConvention": "none",
"skipCi": true
}

View file

@ -1,6 +1,13 @@
# Changelog
## Changelog of Fork awesome
- v1.2
- Added icons: Wire, Tor project, volume mute, ringing bell & outlined ringing bell, HAL, Jupytr, Julia, research gate, Open Collective, ClassicPress, ORCID, funkwhale and 38 more. 🎉
- Updated Joplin icon.
- Added fa-content() function to fix issue with css displaying glyphs when converted to unicode values by sass.
- Updated npm packages for security reasons, and added a new option to fix odd behavior that came with svgo update (the icons chaging shape).
- Added docker container and instructions in readme.
- Build process now 'works without errors' 😅
- v1.1.6
- Added icons: file-epub, python, archlinux, pleroma, unsplash, hackster, spell-check, moon, sun, f-droid, and biometric
- Some documentation correction and augmentation, mostly in the README

View file

@ -28,6 +28,13 @@ Adding a new icon is a couple steps process that will require your attention and
5. Once you are satisfied with your design and the preview of it. Add the icon name, unicode point and icon information at the bottom of the `src/icons/icons.yml` file. Look at other entries to see how it's done and to give it a proper classification.
6. Once all this is done, commit your changes and make a pull request.
Note : Please be considerate about maintainers' time and please
[link your pull requests] to the icon request issue if it exists. You
could use it within your commit message as well. This saves the
maintainers extra effort in having to keep track of and close completed
issues.
[link your pull requests]: https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue
## Suggesting icon keyword addition/removal

View file

@ -7,25 +7,180 @@ This is a list of people who made this project possible, whether they contribute
Thanks goes to these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore -->
| [<img src="https://avatars0.githubusercontent.com/u/1076721?v=4" width="50px;" alt="Dave Gandy"/><br /><sub><b>Dave Gandy</b></sub>](https://github.com/davegandy)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=davegandy "Code") [🎨](#design-davegandy "Design") [📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=davegandy "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/163763?v=4" width="50px;" alt="Brian Talbot"/><br /><sub><b>Brian Talbot</b></sub>](http://www.talbs.me)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=talbs "Code") | [<img src="https://avatars1.githubusercontent.com/u/249366?v=4" width="50px;" alt="Travis Chase"/><br /><sub><b>Travis Chase</b></sub>](https://github.com/supercodepoet)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=supercodepoet "Code") | [<img src="https://avatars2.githubusercontent.com/u/132895?v=4" width="50px;" alt="Rob Madole"/><br /><sub><b>Rob Madole</b></sub>](http://robmadole.com)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=robmadole "Code") | [<img src="https://avatars2.githubusercontent.com/u/556268?v=4" width="50px;" alt="Geremia Taglialatela"/><br /><sub><b>Geremia Taglialatela</b></sub>](https://github.com/tagliala)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=tagliala "Documentation") [💬](#question-tagliala "Answering Questions") | [<img src="https://avatars1.githubusercontent.com/u/81942?v=4" width="50px;" alt="Mathias Bynens"/><br /><sub><b>Mathias Bynens</b></sub>](https://mathiasbynens.be/)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=mathiasbynens "Code") | [<img src="https://avatars0.githubusercontent.com/u/6705160?v=4" width="50px;" alt="William Boman"/><br /><sub><b>William Boman</b></sub>](https://redwill.se/)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=williamboman "Code") |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| [<img src="https://avatars1.githubusercontent.com/u/90316?v=4" width="50px;" alt="Matthias Kretschmann"/><br /><sub><b>Matthias Kretschmann</b></sub>](https://kretschmann.io)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=kremalicious "Code") | [<img src="https://avatars3.githubusercontent.com/u/1321596?v=4" width="50px;" alt="Maxime Fabre"/><br /><sub><b>Maxime Fabre</b></sub>](https://about.me/anahkiasen)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=Anahkiasen "Code") | [<img src="https://avatars1.githubusercontent.com/u/895831?v=4" width="50px;" alt="Patrick H. Lauke"/><br /><sub><b>Patrick H. Lauke</b></sub>](http://www.splintered.co.uk)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=patrickhlauke "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/1438457?v=4" width="50px;" alt="Dan Stroot"/><br /><sub><b>Dan Stroot</b></sub>](https://danstroot.com)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=dstroot "Code") | [<img src="https://avatars0.githubusercontent.com/u/29971?v=4" width="50px;" alt="Jason Porter"/><br /><sub><b>Jason Porter</b></sub>](http://lightguard-jp.blogspot.com)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=LightGuard "Code") | [<img src="https://avatars2.githubusercontent.com/u/1308419?v=4" width="50px;" alt="Tom Byrer"/><br /><sub><b>Tom Byrer</b></sub>](https://github.com/tomByrer)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=tomByrer "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/381393?v=4" width="50px;" alt="Gregory Koberger"/><br /><sub><b>Gregory Koberger</b></sub>](http://readme.io)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=gkoberger "Code") |
| [<img src="https://avatars1.githubusercontent.com/u/947110?v=4" width="50px;" alt="Kevin Kirsche"/><br /><sub><b>Kevin Kirsche</b></sub>](https://kevinkirsche.com)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=kkirsche "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/81561?v=4" width="50px;" alt="Marcus Bointon"/><br /><sub><b>Marcus Bointon</b></sub>](http://marcus.bointon.com/)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=Synchro "Code") | [<img src="https://avatars2.githubusercontent.com/u/2371386?v=4" width="50px;" alt="njb_said"/><br /><sub><b>njb_said</b></sub>](https://github.com/njb-said)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=njb-said "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/953092?v=4" width="50px;" alt="AJ Acevedo"/><br /><sub><b>AJ Acevedo</b></sub>](http://ajacevedo.com)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=AJ-Acevedo "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/58669?v=4" width="50px;" alt="Aarni Koskela"/><br /><sub><b>Aarni Koskela</b></sub>](https://akx.github.io/)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=akx "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/3806?v=4" width="50px;" alt="scudco"/><br /><sub><b>scudco</b></sub>](https://github.com/scudco)<br />[🔧](#tool-scudco "Tools") | [<img src="https://avatars1.githubusercontent.com/u/621062?v=4" width="50px;" alt="Alfio Emanuele"/><br /><sub><b>Alfio Emanuele</b></sub>](https://alfioemanuele.io)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=AlfioEmanueleFresta "Documentation") |
| [<img src="https://avatars3.githubusercontent.com/u/357623?v=4" width="50px;" alt="Andy Carter"/><br /><sub><b>Andy Carter</b></sub>](http://andy-carter.com)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=drmonkeyninja "Code") | [<img src="https://avatars2.githubusercontent.com/u/237005?v=4" width="50px;" alt="Andy Freeland"/><br /><sub><b>Andy Freeland</b></sub>](https://andyfreeland.net)<br />[🐛](https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3Arouge8 "Bug reports") [💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=rouge8 "Code") | [<img src="https://avatars1.githubusercontent.com/u/1490347?v=4" width="50px;" alt="Antério Vieira"/><br /><sub><b>Antério Vieira</b></sub>](http://owen.com.br)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=anteriovieira "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/8832594?v=4" width="50px;" alt="Ararat"/><br /><sub><b>Ararat</b></sub>](https://github.com/araratm)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=araratm "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/1879785?v=4" width="50px;" alt="Ben Gadbois"/><br /><sub><b>Ben Gadbois</b></sub>](https://github.com/bengadbois)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=bengadbois "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/216878?v=4" width="50px;" alt="Ben Thomas"/><br /><sub><b>Ben Thomas</b></sub>](https://github.com/wazoo)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=wazoo "Code") | [<img src="https://avatars0.githubusercontent.com/u/1615761?v=4" width="50px;" alt="Brad Buchanan"/><br /><sub><b>Brad Buchanan</b></sub>](http://bradleycbuchanan.com)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=islemaster "Documentation") |
| [<img src="https://avatars0.githubusercontent.com/u/3743423?v=4" width="50px;" alt="Brandon Sarà"/><br /><sub><b>Brandon Sarà</b></sub>](http://bsara.pro)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=bsara "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/4213522?v=4" width="50px;" alt="Bryan Channon"/><br /><sub><b>Bryan Channon</b></sub>](http://vuii.co.uk)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=Vusys "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/496987?v=4" width="50px;" alt="Cauê Thenório"/><br /><sub><b>Cauê Thenório</b></sub>](https://github.com/cauethenorio)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=cauethenorio "Code") | [<img src="https://avatars1.githubusercontent.com/u/5069304?v=4" width="50px;" alt="Chip Thien"/><br /><sub><b>Chip Thien</b></sub>](https://github.com/MacroChip)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=MacroChip "Code") | [<img src="https://avatars0.githubusercontent.com/u/610237?v=4" width="50px;" alt="Dane Hurtubise"/><br /><sub><b>Dane Hurtubise</b></sub>](http://hurtubise.me)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=hurtubise "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/59074?v=4" width="50px;" alt="Dannii Willis"/><br /><sub><b>Dannii Willis</b></sub>](https://curiousdannii.github.io/)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=curiousdannii "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/32717?v=4" width="50px;" alt="Darío Hereñú"/><br /><sub><b>Darío Hereñú</b></sub>](https://github.com/kant)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=kant "Documentation") |
| [<img src="https://avatars3.githubusercontent.com/u/36873?v=4" width="50px;" alt="David Celis"/><br /><sub><b>David Celis</b></sub>](https://davidcel.is/)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=davidcelis "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/207171?v=4" width="50px;" alt="Derek Myers"/><br /><sub><b>Derek Myers</b></sub>](http://derekmyers.com)<br />[🐛](https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3Admyers "Bug reports") [📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=dmyers "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/53707?v=4" width="50px;" alt="Doug Bell"/><br /><sub><b>Doug Bell</b></sub>](http://preaction.me)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=preaction "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/461752?v=4" width="50px;" alt="Eelke Blok"/><br /><sub><b>Eelke Blok</b></sub>](http://www.blokspeed.net)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=eelkeblok "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/199095?v=4" width="50px;" alt="Elan Ruusamäe"/><br /><sub><b>Elan Ruusamäe</b></sub>](https://github.com/glensc)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=glensc "Code") | [<img src="https://avatars3.githubusercontent.com/u/634191?v=4" width="50px;" alt="Eric Bailey"/><br /><sub><b>Eric Bailey</b></sub>](https://ericwbailey.design/)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=ericwbailey "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/13179128?v=4" width="50px;" alt="Ferhat Elmasgüneş"/><br /><sub><b>Ferhat Elmasgüneş</b></sub>](http://ferhat.elmasgunes.net)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=ferhate "Documentation") |
| [<img src="https://avatars0.githubusercontent.com/u/100959?v=4" width="50px;" alt="Frédéric Junod"/><br /><sub><b>Frédéric Junod</b></sub>](https://github.com/fredj)<br />[🐛](https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3Afredj "Bug reports") [📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=fredj "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/2829600?v=4" width="50px;" alt="Graham Campbell"/><br /><sub><b>Graham Campbell</b></sub>](https://gjcampbell.co.uk/)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=GrahamCampbell "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/1072751?v=4" width="50px;" alt="Graham Walters"/><br /><sub><b>Graham Walters</b></sub>](https://grahamwalters.me)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=GrahamWalters "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/816859?v=4" width="50px;" alt="Hendrik Kleinwaechter"/><br /><sub><b>Hendrik Kleinwaechter</b></sub>](http://www.tripl.de)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=hendricius "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/9744226?v=4" width="50px;" alt="IKOURFALN Slimane"/><br /><sub><b>IKOURFALN Slimane</b></sub>](https://github.com/ikourfaln)<br />[🐛](https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3Aikourfaln "Bug reports") [💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=ikourfaln "Code") | [<img src="https://avatars2.githubusercontent.com/u/141546?v=4" width="50px;" alt="Jakub Wilk"/><br /><sub><b>Jakub Wilk</b></sub>](https://github.com/jwilk)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=jwilk "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/242337?v=4" width="50px;" alt="James Harrison"/><br /><sub><b>James Harrison</b></sub>](https://github.com/jjlharrison)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=jjlharrison "Documentation") |
| [<img src="https://avatars3.githubusercontent.com/u/22308682?v=4" width="50px;" alt="James Johnston"/><br /><sub><b>James Johnston</b></sub>](https://github.com/james-johnston-thumbtack)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=james-johnston-thumbtack "Code") | [<img src="https://avatars2.githubusercontent.com/u/3666887?v=4" width="50px;" alt="Jan Hořava"/><br /><sub><b>Jan Hořava</b></sub>](http://honzi.cz)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=honzi "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/112170?v=4" width="50px;" alt="Jared Forsyth"/><br /><sub><b>Jared Forsyth</b></sub>](http://jaredforsyth.com)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=jaredly "Code") [📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=jaredly "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/8212?v=4" width="50px;" alt="Jerod Santo"/><br /><sub><b>Jerod Santo</b></sub>](https://jerodsanto.net)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=jerodsanto "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/53273?v=4" width="50px;" alt="Jina Anne"/><br /><sub><b>Jina Anne</b></sub>](http://jina.me)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=jina "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/429633?v=4" width="50px;" alt="JocelynDelalande"/><br /><sub><b>JocelynDelalande</b></sub>](http://jocelyn.delalande.fr)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=JocelynDelalande "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/39089?v=4" width="50px;" alt="John Hope"/><br /><sub><b>John Hope</b></sub>](http://jhope.ie)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=JonMidhir "Documentation") |
| [<img src="https://avatars1.githubusercontent.com/u/13952477?v=4" width="50px;" alt="Josh Dean"/><br /><sub><b>Josh Dean</b></sub>](https://github.com/josdea)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=josdea "Code") | [<img src="https://avatars1.githubusercontent.com/u/1188186?v=4" width="50px;" alt="Julian Krispel-Samsel"/><br /><sub><b>Julian Krispel-Samsel</b></sub>](http://reactrocket.com)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=juliankrispel "Code") | [<img src="https://avatars3.githubusercontent.com/u/591833?v=4" width="50px;" alt="Lee Leathers"/><br /><sub><b>Lee Leathers</b></sub>](http://about.me/leeleathers)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=theoreticaLee "Code") | [<img src="https://avatars2.githubusercontent.com/u/764854?v=4" width="50px;" alt="Leniel Macaferi"/><br /><sub><b>Leniel Macaferi</b></sub>](http://leniel.net)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=leniel "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/572289?v=4" width="50px;" alt="Mladen Đurić"/><br /><sub><b>Mladen Đurić</b></sub>](http://macmladen.com)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=macmladen "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/1043838?v=4" width="50px;" alt="Martin Seeler"/><br /><sub><b>Martin Seeler</b></sub>](http://www.martinseeler.com)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=MartinSeeler "Code") | [<img src="https://avatars2.githubusercontent.com/u/321881?v=4" width="50px;" alt="Mateusz Jagiełło"/><br /><sub><b>Mateusz Jagiełło</b></sub>](http://sigo.pl/)<br />[🐛](https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3Asigo "Bug reports") |
| [<img src="https://avatars3.githubusercontent.com/u/736870?v=4" width="50px;" alt="Matt Smith"/><br /><sub><b>Matt Smith</b></sub>](http://www.softwarebymatt.com)<br />[🐛](https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3Amtscout6 "Bug reports") | [<img src="https://avatars2.githubusercontent.com/u/495549?v=4" width="50px;" alt="Matus Gura"/><br /><sub><b>Matus Gura</b></sub>](https://github.com/gurisko)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=gurisko "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/117222?v=4" width="50px;" alt="Michael Angeles"/><br /><sub><b>Michael Angeles</b></sub>](https://github.com/jibbajabba)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=jibbajabba "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/1246672?v=4" width="50px;" alt="Nielsen Ramon"/><br /><sub><b>Nielsen Ramon</b></sub>](http://nielsenramon.com/)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=nielsenramon "Code") | [<img src="https://avatars1.githubusercontent.com/u/1944410?v=4" width="50px;" alt="Noah Doersing"/><br /><sub><b>Noah Doersing</b></sub>](https://hejnoah.com)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=doersino "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/769142?v=4" width="50px;" alt="Paul Korzhyk"/><br /><sub><b>Paul Korzhyk</b></sub>](https://github.com/paulftw)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=paulftw "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/3691490?v=4" width="50px;" alt="Peter Dave Hello"/><br /><sub><b>Peter Dave Hello</b></sub>](https://www.peterdavehello.org/)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=PeterDaveHello "Documentation") [📦](#platform-PeterDaveHello "Packaging/porting to new platform") |
| [<img src="https://avatars2.githubusercontent.com/u/557895?v=4" width="50px;" alt="Peter deHaan"/><br /><sub><b>Peter deHaan</b></sub>](http://about.me/peterdehaan)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=pdehaan "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/829526?v=4" width="50px;" alt="Prayag Verma "/><br /><sub><b>Prayag Verma </b></sub>](https://www.StylifyYourBlog.com/)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=pra85 "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/15367484?v=4" width="50px;" alt="ReadmeCritic"/><br /><sub><b>ReadmeCritic</b></sub>](https://twitter.com/ReadmeCritic)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=ReadmeCritic "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/1263856?v=4" width="50px;" alt="Ricardo Polo"/><br /><sub><b>Ricardo Polo</b></sub>](https://ricardopolo.co/)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=ricardopolo "Code") | [<img src="https://avatars0.githubusercontent.com/u/740?v=4" width="50px;" alt="Ryan McGeary"/><br /><sub><b>Ryan McGeary</b></sub>](http://ryan.mcgeary.org)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=rmm5t "Code") | [<img src="https://avatars1.githubusercontent.com/u/125998?v=4" width="50px;" alt="Ryan Riggin"/><br /><sub><b>Ryan Riggin</b></sub>](https://github.com/rriggin)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=rriggin "Code") | [<img src="https://avatars2.githubusercontent.com/u/881590?v=4" width="50px;" alt="Ryan Senkbeil"/><br /><sub><b>Ryan Senkbeil</b></sub>](http://ryansenkbeil.com)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=rsenk330 "Code") |
| [<img src="https://avatars1.githubusercontent.com/u/1961007?v=4" width="50px;" alt="Sarang Joshi"/><br /><sub><b>Sarang Joshi</b></sub>](http://sarangjo.github.io)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=sarangjo "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/1044670?v=4" width="50px;" alt="Scott Cranfill"/><br /><sub><b>Scott Cranfill</b></sub>](https://twitter.com/scott_ish)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=Scotchester "Code") | [<img src="https://avatars1.githubusercontent.com/u/4629794?v=4" width="50px;" alt="The Jared Wilcurt"/><br /><sub><b>The Jared Wilcurt</b></sub>](http://TheJaredWilcurt.com)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=TheJaredWilcurt "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/308290?v=4" width="50px;" alt="Tim Guibord"/><br /><sub><b>Tim Guibord</b></sub>](https://github.com/tagCincy)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=tagCincy "Code") | [<img src="https://avatars1.githubusercontent.com/u/1152567?v=4" width="50px;" alt="Vadim Mazur"/><br /><sub><b>Vadim Mazur</b></sub>](https://github.com/mazurva)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=mazurva "Code") | [<img src="https://avatars2.githubusercontent.com/u/382608?v=4" width="50px;" alt="Vinson Chuong"/><br /><sub><b>Vinson Chuong</b></sub>](https://vinsonchuong.net)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=vinsonchuong "Code") | [<img src="https://avatars3.githubusercontent.com/u/34144858?v=4" width="50px;" alt="grvrg"/><br /><sub><b>grvrg</b></sub>](https://github.com/grvrg)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=grvrg "Documentation") |
| [<img src="https://avatars0.githubusercontent.com/u/77144?v=4" width="50px;" alt="Luca Trevisani"/><br /><sub><b>Luca Trevisani</b></sub>](https://github.com/luke83)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=luke83 "Code") | [<img src="https://avatars3.githubusercontent.com/u/1706326?v=4" width="50px;" alt="Álvaro"/><br /><sub><b>Álvaro</b></sub>](http://alvarotrigo.com)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=alvarotrigo "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/192539?v=4" width="50px;" alt="Julien Deswaef"/><br /><sub><b>Julien Deswaef</b></sub>](http://xuv.be)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=xuv "Code") [🎨](#design-xuv "Design") [📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=xuv "Documentation") [💬](#question-xuv "Answering Questions") | [<img src="https://avatars0.githubusercontent.com/u/2192132?v=4" width="50px;" alt="n8willis"/><br /><sub><b>n8willis</b></sub>](https://github.com/n8willis)<br />[🤔](#ideas-n8willis "Ideas, Planning, & Feedback") | [<img src="https://avatars0.githubusercontent.com/u/1779453?v=4" width="50px;" alt="B. Howell"/><br /><sub><b>B. Howell</b></sub>](http://wintermute.org/brendan)<br />[🤔](#ideas-brendanhowell "Ideas, Planning, & Feedback") | [<img src="https://avatars2.githubusercontent.com/u/1197187?v=4" width="50px;" alt="Algot Runeman"/><br /><sub><b>Algot Runeman</b></sub>](http://runeman.org)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=algotruneman "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/10608836?v=4" width="50px;" alt="Micah Ilbery"/><br /><sub><b>Micah Ilbery</b></sub>](https://micahilbery.com/)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=micahilbery "Documentation") [🎨](#design-micahilbery "Design") |
| [<img src="https://avatars3.githubusercontent.com/u/223439?v=4" width="50px;" alt="Helmut K. C. Tessarek"/><br /><sub><b>Helmut K. C. Tessarek</b></sub>](https://evermeet.cx)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=tessus "Documentation") [💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=tessus "Code") [🎨](#design-tessus "Design") | [<img src="https://avatars0.githubusercontent.com/u/3597194?v=4" width="50px;" alt="jeromelebleu"/><br /><sub><b>jeromelebleu</b></sub>](https://github.com/jeromelebleu)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=jeromelebleu "Code") | [<img src="https://avatars3.githubusercontent.com/u/630909?v=4" width="50px;" alt="Kimberly Zick"/><br /><sub><b>Kimberly Zick</b></sub>](https://zick.kim/)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=rummik "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/13441278?v=4" width="50px;" alt="nIQnutn"/><br /><sub><b>nIQnutn</b></sub>](http://blog.niqnutn.com/)<br />[📝](#blog-nIQnutn "Blogposts") [🔌](#plugin-nIQnutn "Plugin/utility libraries") | [<img src="https://avatars1.githubusercontent.com/u/4307697?v=4" width="50px;" alt="Jaime Leonardo Suncin Cruz"/><br /><sub><b>Jaime Leonardo Suncin Cruz</b></sub>](https://github.com/leosuncin)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=leosuncin "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/1770233?v=4" width="50px;" alt="Juliette Foucaut"/><br /><sub><b>Juliette Foucaut</b></sub>](https://www.enkisoftware.com)<br />[🔌](#plugin-juliettef "Plugin/utility libraries") | [<img src="https://avatars1.githubusercontent.com/u/6379091?v=4" width="50px;" alt="Dominik V. Salonen"/><br /><sub><b>Dominik V. Salonen</b></sub>](http://quad.moe/)<br />[📝](#blog-QuadPiece "Blogposts") |
| [<img src="https://avatars2.githubusercontent.com/u/2706882?v=4" width="50px;" alt="Alexandre Viau"/><br /><sub><b>Alexandre Viau</b></sub>](https://alexandreviau.net)<br />[🤔](#ideas-aviau "Ideas, Planning, & Feedback") [📦](#platform-aviau "Packaging/porting to new platform") | [<img src="https://avatars3.githubusercontent.com/u/7915413?v=4" width="50px;" alt="Xesau"/><br /><sub><b>Xesau</b></sub>](http://xesau.eu/)<br />[🐛](https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3AXesau "Bug reports") | [<img src="https://avatars0.githubusercontent.com/u/649895?v=4" width="50px;" alt="Jan Hohner"/><br /><sub><b>Jan Hohner</b></sub>](https://janhohner.de)<br />[🐛](https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3Ajanhohner "Bug reports") | [<img src="https://avatars0.githubusercontent.com/u/261579?v=4" width="50px;" alt="Dave Crossland"/><br /><sub><b>Dave Crossland</b></sub>](http://fonts.google.com)<br />[👀](#review-davelab6 "Reviewed Pull Requests") | [<img src="https://avatars0.githubusercontent.com/u/8260834?v=4" width="50px;" alt="Maximilian Berkmann"/><br /><sub><b>Maximilian Berkmann</b></sub>](http://maxcubing.wordpress.com)<br />[🤔](#ideas-Berkmann18 "Ideas, Planning, & Feedback") | [<img src="https://avatars2.githubusercontent.com/u/616813?v=4" width="50px;" alt="Moritz Heiber"/><br /><sub><b>Moritz Heiber</b></sub>](https://heiber.im)<br />[🚇](#infra-moritzheiber "Infrastructure (Hosting, Build-Tools, etc)") | [<img src="https://avatars1.githubusercontent.com/u/21787?v=4" width="50px;" alt="Wesley Moore"/><br /><sub><b>Wesley Moore</b></sub>](http://www.wezm.net/)<br />[📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=wezm "Documentation") |
| [<img src="https://avatars0.githubusercontent.com/u/377632?v=4" width="50px;" alt="John Kristensen"/><br /><sub><b>John Kristensen</b></sub>](http://www.jerrykan.com/)<br />[🎨](#design-jerrykan "Design") | [<img src="https://avatars3.githubusercontent.com/u/130971?v=4" width="50px;" alt="Marco"/><br /><sub><b>Marco</b></sub>](https://amusewiki.org)<br />[🎨](#design-melmothx "Design") | [<img src="https://avatars1.githubusercontent.com/u/658496?v=4" width="50px;" alt="Jared White"/><br /><sub><b>Jared White</b></sub>](https://whitefusion.io)<br />[🖋](#content-jaredcwhite "Content") | [<img src="https://avatars2.githubusercontent.com/u/478237?v=4" width="50px;" alt="Waldir Pimenta"/><br /><sub><b>Waldir Pimenta</b></sub>](http://waldyrious.github.io)<br />[🖋](#content-waldyrious "Content") | [<img src="https://avatars3.githubusercontent.com/u/1898673?v=4" width="50px;" alt="Vladimir Anokhin"/><br /><sub><b>Vladimir Anokhin</b></sub>](https://vanokhin.com/)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=vanokhin "Code") | [<img src="https://avatars2.githubusercontent.com/u/1596934?v=4" width="50px;" alt="Maxime Lathuilière"/><br /><sub><b>Maxime Lathuilière</b></sub>](http://maxlath.eu)<br />[💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=maxlath "Code") | [<img src="https://avatars1.githubusercontent.com/u/8832594?v=4" width="50px;" alt="Ararat"/><br /><sub><b>Ararat</b></sub>](https://github.com/araratthehero)<br />[🖋](#content-araratthehero "Content") |
| [<img src="https://avatars2.githubusercontent.com/u/7890201?v=4" width="50px;" alt="Liaizon Wakest"/><br /><sub><b>Liaizon Wakest</b></sub>](http://wake.st)<br />[🤔](#ideas-wakest "Ideas, Planning, & Feedback") | [<img src="https://avatars2.githubusercontent.com/u/1108409?v=4" width="50px;" alt="Ben Fedidat"/><br /><sub><b>Ben Fedidat</b></sub>](http://fedidat.com/)<br />[📝](#blog-fedidat "Blogposts") | [<img src="https://avatars0.githubusercontent.com/u/954092?v=4" width="50px;" alt="Todd Eidson"/><br /><sub><b>Todd Eidson</b></sub>](https://www.eidson.info)<br />[🤔](#ideas-eidsonator "Ideas, Planning, & Feedback") [📖](https://github.com/ForkAwesome/Fork-Awesome/commits?author=eidsonator "Documentation") [🐛](https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3Aeidsonator "Bug reports") [💻](https://github.com/ForkAwesome/Fork-Awesome/commits?author=eidsonator "Code") |
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="https://github.com/davegandy"><img src="https://avatars0.githubusercontent.com/u/1076721?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Dave Gandy</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=davegandy" title="Code">💻</a> <a href="#design-davegandy" title="Design">🎨</a> <a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=davegandy" title="Documentation">📖</a></td>
<td align="center"><a href="http://www.talbs.me"><img src="https://avatars3.githubusercontent.com/u/163763?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Brian Talbot</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=talbs" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/supercodepoet"><img src="https://avatars1.githubusercontent.com/u/249366?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Travis Chase</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=supercodepoet" title="Code">💻</a></td>
<td align="center"><a href="http://robmadole.com"><img src="https://avatars2.githubusercontent.com/u/132895?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Rob Madole</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=robmadole" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/tagliala"><img src="https://avatars2.githubusercontent.com/u/556268?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Geremia Taglialatela</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=tagliala" title="Documentation">📖</a> <a href="#question-tagliala" title="Answering Questions">💬</a></td>
<td align="center"><a href="https://mathiasbynens.be/"><img src="https://avatars1.githubusercontent.com/u/81942?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Mathias Bynens</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=mathiasbynens" title="Code">💻</a></td>
<td align="center"><a href="https://redwill.se/"><img src="https://avatars0.githubusercontent.com/u/6705160?v=4?s=50" width="50px;" alt=""/><br /><sub><b>William Boman</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=williamboman" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://kretschmann.io"><img src="https://avatars1.githubusercontent.com/u/90316?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Matthias Kretschmann</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=kremalicious" title="Code">💻</a></td>
<td align="center"><a href="https://about.me/anahkiasen"><img src="https://avatars3.githubusercontent.com/u/1321596?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Maxime Fabre</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=Anahkiasen" title="Code">💻</a></td>
<td align="center"><a href="http://www.splintered.co.uk"><img src="https://avatars1.githubusercontent.com/u/895831?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Patrick H. Lauke</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=patrickhlauke" title="Documentation">📖</a></td>
<td align="center"><a href="https://danstroot.com"><img src="https://avatars1.githubusercontent.com/u/1438457?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Dan Stroot</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=dstroot" title="Code">💻</a></td>
<td align="center"><a href="http://lightguard-jp.blogspot.com"><img src="https://avatars0.githubusercontent.com/u/29971?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Jason Porter</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=LightGuard" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/tomByrer"><img src="https://avatars2.githubusercontent.com/u/1308419?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Tom Byrer</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=tomByrer" title="Documentation">📖</a></td>
<td align="center"><a href="http://readme.io"><img src="https://avatars3.githubusercontent.com/u/381393?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Gregory Koberger</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=gkoberger" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://kevinkirsche.com"><img src="https://avatars1.githubusercontent.com/u/947110?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Kevin Kirsche</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=kkirsche" title="Documentation">📖</a></td>
<td align="center"><a href="http://marcus.bointon.com/"><img src="https://avatars2.githubusercontent.com/u/81561?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Marcus Bointon</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=Synchro" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/njb-said"><img src="https://avatars2.githubusercontent.com/u/2371386?v=4?s=50" width="50px;" alt=""/><br /><sub><b>njb_said</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=njb-said" title="Documentation">📖</a></td>
<td align="center"><a href="http://ajacevedo.com"><img src="https://avatars1.githubusercontent.com/u/953092?v=4?s=50" width="50px;" alt=""/><br /><sub><b>AJ Acevedo</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=AJ-Acevedo" title="Documentation">📖</a></td>
<td align="center"><a href="https://akx.github.io/"><img src="https://avatars2.githubusercontent.com/u/58669?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Aarni Koskela</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=akx" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/scudco"><img src="https://avatars1.githubusercontent.com/u/3806?v=4?s=50" width="50px;" alt=""/><br /><sub><b>scudco</b></sub></a><br /><a href="#tool-scudco" title="Tools">🔧</a></td>
<td align="center"><a href="https://alfioemanuele.io"><img src="https://avatars1.githubusercontent.com/u/621062?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Alfio Emanuele</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=AlfioEmanueleFresta" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="http://andy-carter.com"><img src="https://avatars3.githubusercontent.com/u/357623?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Andy Carter</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=drmonkeyninja" title="Code">💻</a></td>
<td align="center"><a href="https://andyfreeland.net"><img src="https://avatars2.githubusercontent.com/u/237005?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Andy Freeland</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3Arouge8" title="Bug reports">🐛</a> <a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=rouge8" title="Code">💻</a></td>
<td align="center"><a href="http://owen.com.br"><img src="https://avatars1.githubusercontent.com/u/1490347?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Antério Vieira</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=anteriovieira" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/araratm"><img src="https://avatars1.githubusercontent.com/u/8832594?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Ararat</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=araratm" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/bengadbois"><img src="https://avatars2.githubusercontent.com/u/1879785?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Ben Gadbois</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=bengadbois" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/wazoo"><img src="https://avatars0.githubusercontent.com/u/216878?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Ben Thomas</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=wazoo" title="Code">💻</a></td>
<td align="center"><a href="http://bradleycbuchanan.com"><img src="https://avatars0.githubusercontent.com/u/1615761?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Brad Buchanan</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=islemaster" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="http://bsara.pro"><img src="https://avatars0.githubusercontent.com/u/3743423?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Brandon Sarà</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=bsara" title="Documentation">📖</a></td>
<td align="center"><a href="http://vuii.co.uk"><img src="https://avatars0.githubusercontent.com/u/4213522?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Bryan Channon</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=Vusys" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/cauethenorio"><img src="https://avatars3.githubusercontent.com/u/496987?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Cauê Thenório</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=cauethenorio" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/MacroChip"><img src="https://avatars1.githubusercontent.com/u/5069304?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Chip Thien</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=MacroChip" title="Code">💻</a></td>
<td align="center"><a href="http://hurtubise.me"><img src="https://avatars0.githubusercontent.com/u/610237?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Dane Hurtubise</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=hurtubise" title="Documentation">📖</a></td>
<td align="center"><a href="https://curiousdannii.github.io/"><img src="https://avatars2.githubusercontent.com/u/59074?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Dannii Willis</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=curiousdannii" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/kant"><img src="https://avatars1.githubusercontent.com/u/32717?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Darío Hereñú</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=kant" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://davidcel.is/"><img src="https://avatars3.githubusercontent.com/u/36873?v=4?s=50" width="50px;" alt=""/><br /><sub><b>David Celis</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=davidcelis" title="Documentation">📖</a></td>
<td align="center"><a href="http://derekmyers.com"><img src="https://avatars3.githubusercontent.com/u/207171?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Derek Myers</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3Admyers" title="Bug reports">🐛</a> <a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=dmyers" title="Documentation">📖</a></td>
<td align="center"><a href="http://preaction.me"><img src="https://avatars0.githubusercontent.com/u/53707?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Doug Bell</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=preaction" title="Documentation">📖</a></td>
<td align="center"><a href="http://www.blokspeed.net"><img src="https://avatars0.githubusercontent.com/u/461752?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Eelke Blok</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=eelkeblok" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/glensc"><img src="https://avatars1.githubusercontent.com/u/199095?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Elan Ruusamäe</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=glensc" title="Code">💻</a></td>
<td align="center"><a href="https://ericwbailey.design/"><img src="https://avatars3.githubusercontent.com/u/634191?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Eric Bailey</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=ericwbailey" title="Documentation">📖</a></td>
<td align="center"><a href="http://ferhat.elmasgunes.net"><img src="https://avatars0.githubusercontent.com/u/13179128?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Ferhat Elmasgüneş</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=ferhate" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/fredj"><img src="https://avatars0.githubusercontent.com/u/100959?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Frédéric Junod</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3Afredj" title="Bug reports">🐛</a> <a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=fredj" title="Documentation">📖</a></td>
<td align="center"><a href="https://gjcampbell.co.uk/"><img src="https://avatars1.githubusercontent.com/u/2829600?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Graham Campbell</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=GrahamCampbell" title="Documentation">📖</a></td>
<td align="center"><a href="https://grahamwalters.me"><img src="https://avatars2.githubusercontent.com/u/1072751?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Graham Walters</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=GrahamWalters" title="Documentation">📖</a></td>
<td align="center"><a href="http://www.tripl.de"><img src="https://avatars2.githubusercontent.com/u/816859?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Hendrik Kleinwaechter</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=hendricius" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/ikourfaln"><img src="https://avatars3.githubusercontent.com/u/9744226?v=4?s=50" width="50px;" alt=""/><br /><sub><b>IKOURFALN Slimane</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3Aikourfaln" title="Bug reports">🐛</a> <a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=ikourfaln" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/jwilk"><img src="https://avatars2.githubusercontent.com/u/141546?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Jakub Wilk</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=jwilk" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/jjlharrison"><img src="https://avatars0.githubusercontent.com/u/242337?v=4?s=50" width="50px;" alt=""/><br /><sub><b>James Harrison</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=jjlharrison" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/james-johnston-thumbtack"><img src="https://avatars3.githubusercontent.com/u/22308682?v=4?s=50" width="50px;" alt=""/><br /><sub><b>James Johnston</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=james-johnston-thumbtack" title="Code">💻</a></td>
<td align="center"><a href="http://honzi.cz"><img src="https://avatars2.githubusercontent.com/u/3666887?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Jan Hořava</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=honzi" title="Documentation">📖</a></td>
<td align="center"><a href="http://jaredforsyth.com"><img src="https://avatars3.githubusercontent.com/u/112170?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Jared Forsyth</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=jaredly" title="Code">💻</a> <a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=jaredly" title="Documentation">📖</a></td>
<td align="center"><a href="https://jerodsanto.net"><img src="https://avatars0.githubusercontent.com/u/8212?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Jerod Santo</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=jerodsanto" title="Documentation">📖</a></td>
<td align="center"><a href="http://jina.me"><img src="https://avatars3.githubusercontent.com/u/53273?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Jina Anne</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=jina" title="Documentation">📖</a></td>
<td align="center"><a href="http://jocelyn.delalande.fr"><img src="https://avatars0.githubusercontent.com/u/429633?v=4?s=50" width="50px;" alt=""/><br /><sub><b>JocelynDelalande</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=JocelynDelalande" title="Documentation">📖</a></td>
<td align="center"><a href="http://jhope.ie"><img src="https://avatars0.githubusercontent.com/u/39089?v=4?s=50" width="50px;" alt=""/><br /><sub><b>John Hope</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=JonMidhir" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/josdea"><img src="https://avatars1.githubusercontent.com/u/13952477?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Josh Dean</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=josdea" title="Code">💻</a></td>
<td align="center"><a href="http://reactrocket.com"><img src="https://avatars1.githubusercontent.com/u/1188186?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Julian Krispel-Samsel</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=juliankrispel" title="Code">💻</a></td>
<td align="center"><a href="http://about.me/leeleathers"><img src="https://avatars3.githubusercontent.com/u/591833?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Lee Leathers</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=theoreticaLee" title="Code">💻</a></td>
<td align="center"><a href="http://leniel.net"><img src="https://avatars2.githubusercontent.com/u/764854?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Leniel Macaferi</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=leniel" title="Documentation">📖</a></td>
<td align="center"><a href="http://macmladen.com"><img src="https://avatars2.githubusercontent.com/u/572289?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Mladen Đurić</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=macmladen" title="Documentation">📖</a></td>
<td align="center"><a href="http://www.martinseeler.com"><img src="https://avatars0.githubusercontent.com/u/1043838?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Martin Seeler</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=MartinSeeler" title="Code">💻</a></td>
<td align="center"><a href="http://sigo.pl/"><img src="https://avatars2.githubusercontent.com/u/321881?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Mateusz Jagiełło</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3Asigo" title="Bug reports">🐛</a></td>
</tr>
<tr>
<td align="center"><a href="http://www.softwarebymatt.com"><img src="https://avatars3.githubusercontent.com/u/736870?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Matt Smith</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3Amtscout6" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://github.com/gurisko"><img src="https://avatars2.githubusercontent.com/u/495549?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Matus Gura</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=gurisko" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/jibbajabba"><img src="https://avatars1.githubusercontent.com/u/117222?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Michael Angeles</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=jibbajabba" title="Documentation">📖</a></td>
<td align="center"><a href="http://nielsenramon.com/"><img src="https://avatars3.githubusercontent.com/u/1246672?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Nielsen Ramon</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=nielsenramon" title="Code">💻</a></td>
<td align="center"><a href="https://hejnoah.com"><img src="https://avatars1.githubusercontent.com/u/1944410?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Noah Doersing</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=doersino" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/paulftw"><img src="https://avatars1.githubusercontent.com/u/769142?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Paul Korzhyk</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=paulftw" title="Documentation">📖</a></td>
<td align="center"><a href="https://www.peterdavehello.org/"><img src="https://avatars3.githubusercontent.com/u/3691490?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Peter Dave Hello</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=PeterDaveHello" title="Documentation">📖</a> <a href="#platform-PeterDaveHello" title="Packaging/porting to new platform">📦</a></td>
</tr>
<tr>
<td align="center"><a href="http://about.me/peterdehaan"><img src="https://avatars2.githubusercontent.com/u/557895?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Peter deHaan</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=pdehaan" title="Documentation">📖</a></td>
<td align="center"><a href="https://www.StylifyYourBlog.com/"><img src="https://avatars2.githubusercontent.com/u/829526?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Prayag Verma </b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=pra85" title="Documentation">📖</a></td>
<td align="center"><a href="https://twitter.com/ReadmeCritic"><img src="https://avatars3.githubusercontent.com/u/15367484?v=4?s=50" width="50px;" alt=""/><br /><sub><b>ReadmeCritic</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=ReadmeCritic" title="Documentation">📖</a></td>
<td align="center"><a href="https://ricardopolo.co/"><img src="https://avatars3.githubusercontent.com/u/1263856?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Ricardo Polo</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=ricardopolo" title="Code">💻</a></td>
<td align="center"><a href="http://ryan.mcgeary.org"><img src="https://avatars0.githubusercontent.com/u/740?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Ryan McGeary</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=rmm5t" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/rriggin"><img src="https://avatars1.githubusercontent.com/u/125998?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Ryan Riggin</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=rriggin" title="Code">💻</a></td>
<td align="center"><a href="http://ryansenkbeil.com"><img src="https://avatars2.githubusercontent.com/u/881590?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Ryan Senkbeil</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=rsenk330" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="http://sarangjo.github.io"><img src="https://avatars1.githubusercontent.com/u/1961007?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Sarang Joshi</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=sarangjo" title="Documentation">📖</a></td>
<td align="center"><a href="https://twitter.com/scott_ish"><img src="https://avatars3.githubusercontent.com/u/1044670?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Scott Cranfill</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=Scotchester" title="Code">💻</a></td>
<td align="center"><a href="http://TheJaredWilcurt.com"><img src="https://avatars1.githubusercontent.com/u/4629794?v=4?s=50" width="50px;" alt=""/><br /><sub><b>The Jared Wilcurt</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=TheJaredWilcurt" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/tagCincy"><img src="https://avatars0.githubusercontent.com/u/308290?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Tim Guibord</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=tagCincy" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/mazurva"><img src="https://avatars1.githubusercontent.com/u/1152567?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Vadim Mazur</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=mazurva" title="Code">💻</a></td>
<td align="center"><a href="https://vinsonchuong.net"><img src="https://avatars2.githubusercontent.com/u/382608?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Vinson Chuong</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=vinsonchuong" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/grvrg"><img src="https://avatars3.githubusercontent.com/u/34144858?v=4?s=50" width="50px;" alt=""/><br /><sub><b>grvrg</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=grvrg" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/luke83"><img src="https://avatars0.githubusercontent.com/u/77144?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Luca Trevisani</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=luke83" title="Code">💻</a></td>
<td align="center"><a href="http://alvarotrigo.com"><img src="https://avatars3.githubusercontent.com/u/1706326?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Álvaro</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=alvarotrigo" title="Documentation">📖</a></td>
<td align="center"><a href="http://xuv.be"><img src="https://avatars3.githubusercontent.com/u/192539?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Julien Deswaef</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=xuv" title="Code">💻</a> <a href="#design-xuv" title="Design">🎨</a> <a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=xuv" title="Documentation">📖</a> <a href="#question-xuv" title="Answering Questions">💬</a></td>
<td align="center"><a href="https://github.com/n8willis"><img src="https://avatars0.githubusercontent.com/u/2192132?v=4?s=50" width="50px;" alt=""/><br /><sub><b>n8willis</b></sub></a><br /><a href="#ideas-n8willis" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center"><a href="http://wintermute.org/brendan"><img src="https://avatars0.githubusercontent.com/u/1779453?v=4?s=50" width="50px;" alt=""/><br /><sub><b>B. Howell</b></sub></a><br /><a href="#ideas-brendanhowell" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center"><a href="http://runeman.org"><img src="https://avatars2.githubusercontent.com/u/1197187?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Algot Runeman</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=algotruneman" title="Documentation">📖</a></td>
<td align="center"><a href="https://micahilbery.com/"><img src="https://avatars0.githubusercontent.com/u/10608836?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Micah Ilbery</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=micahilbery" title="Documentation">📖</a> <a href="#design-micahilbery" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://evermeet.cx"><img src="https://avatars3.githubusercontent.com/u/223439?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Helmut K. C. Tessarek</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=tessus" title="Documentation">📖</a> <a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=tessus" title="Code">💻</a> <a href="#design-tessus" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/jeromelebleu"><img src="https://avatars0.githubusercontent.com/u/3597194?v=4?s=50" width="50px;" alt=""/><br /><sub><b>jeromelebleu</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=jeromelebleu" title="Code">💻</a></td>
<td align="center"><a href="https://zick.kim/"><img src="https://avatars3.githubusercontent.com/u/630909?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Kimberly Zick</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=rummik" title="Documentation">📖</a></td>
<td align="center"><a href="http://blog.niqnutn.com/"><img src="https://avatars2.githubusercontent.com/u/13441278?v=4?s=50" width="50px;" alt=""/><br /><sub><b>nIQnutn</b></sub></a><br /><a href="#blog-nIQnutn" title="Blogposts">📝</a> <a href="#plugin-nIQnutn" title="Plugin/utility libraries">🔌</a></td>
<td align="center"><a href="https://github.com/leosuncin"><img src="https://avatars1.githubusercontent.com/u/4307697?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Jaime Leonardo Suncin Cruz</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=leosuncin" title="Documentation">📖</a></td>
<td align="center"><a href="https://www.enkisoftware.com"><img src="https://avatars0.githubusercontent.com/u/1770233?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Juliette Foucaut</b></sub></a><br /><a href="#plugin-juliettef" title="Plugin/utility libraries">🔌</a></td>
<td align="center"><a href="http://quad.moe/"><img src="https://avatars1.githubusercontent.com/u/6379091?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Dominik V. Salonen</b></sub></a><br /><a href="#blog-QuadPiece" title="Blogposts">📝</a></td>
</tr>
<tr>
<td align="center"><a href="https://alexandreviau.net"><img src="https://avatars2.githubusercontent.com/u/2706882?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Alexandre Viau</b></sub></a><br /><a href="#ideas-aviau" title="Ideas, Planning, & Feedback">🤔</a> <a href="#platform-aviau" title="Packaging/porting to new platform">📦</a></td>
<td align="center"><a href="http://xesau.eu/"><img src="https://avatars3.githubusercontent.com/u/7915413?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Xesau</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3AXesau" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://janhohner.de"><img src="https://avatars0.githubusercontent.com/u/649895?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Jan Hohner</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3Ajanhohner" title="Bug reports">🐛</a></td>
<td align="center"><a href="http://fonts.google.com"><img src="https://avatars0.githubusercontent.com/u/261579?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Dave Crossland</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/pulls?q=is%3Apr+reviewed-by%3Adavelab6" title="Reviewed Pull Requests">👀</a></td>
<td align="center"><a href="http://maxcubing.wordpress.com"><img src="https://avatars0.githubusercontent.com/u/8260834?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Maximilian Berkmann</b></sub></a><br /><a href="#ideas-Berkmann18" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center"><a href="https://heiber.im"><img src="https://avatars2.githubusercontent.com/u/616813?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Moritz Heiber</b></sub></a><br /><a href="#infra-moritzheiber" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
<td align="center"><a href="http://www.wezm.net/"><img src="https://avatars1.githubusercontent.com/u/21787?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Wesley Moore</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=wezm" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="http://www.jerrykan.com/"><img src="https://avatars0.githubusercontent.com/u/377632?v=4?s=50" width="50px;" alt=""/><br /><sub><b>John Kristensen</b></sub></a><br /><a href="#design-jerrykan" title="Design">🎨</a></td>
<td align="center"><a href="https://amusewiki.org"><img src="https://avatars3.githubusercontent.com/u/130971?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Marco</b></sub></a><br /><a href="#design-melmothx" title="Design">🎨</a></td>
<td align="center"><a href="https://whitefusion.io"><img src="https://avatars1.githubusercontent.com/u/658496?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Jared White</b></sub></a><br /><a href="#content-jaredcwhite" title="Content">🖋</a></td>
<td align="center"><a href="http://waldyrious.github.io"><img src="https://avatars2.githubusercontent.com/u/478237?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Waldir Pimenta</b></sub></a><br /><a href="#content-waldyrious" title="Content">🖋</a></td>
<td align="center"><a href="https://vanokhin.com/"><img src="https://avatars3.githubusercontent.com/u/1898673?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Vladimir Anokhin</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=vanokhin" title="Code">💻</a></td>
<td align="center"><a href="http://maxlath.eu"><img src="https://avatars2.githubusercontent.com/u/1596934?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Maxime Lathuilière</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=maxlath" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/araratthehero"><img src="https://avatars1.githubusercontent.com/u/8832594?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Ararat</b></sub></a><br /><a href="#content-araratthehero" title="Content">🖋</a></td>
</tr>
<tr>
<td align="center"><a href="http://wake.st"><img src="https://avatars2.githubusercontent.com/u/7890201?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Liaizon Wakest</b></sub></a><br /><a href="#ideas-wakest" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center"><a href="http://fedidat.com/"><img src="https://avatars2.githubusercontent.com/u/1108409?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Ben Fedidat</b></sub></a><br /><a href="#blog-fedidat" title="Blogposts">📝</a></td>
<td align="center"><a href="https://www.eidson.info"><img src="https://avatars0.githubusercontent.com/u/954092?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Todd Eidson</b></sub></a><br /><a href="#ideas-eidsonator" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=eidsonator" title="Documentation">📖</a> <a href="https://github.com/ForkAwesome/Fork-Awesome/issues?q=author%3Aeidsonator" title="Bug reports">🐛</a> <a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=eidsonator" title="Code">💻</a></td>
<td align="center"><a href="https://www.lucaspetter.com"><img src="https://avatars0.githubusercontent.com/u/13027535?v=4?s=50" width="50px;" alt=""/><br /><sub><b>lucaspetter</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=lucaspetter" title="Code">💻</a> <a href="#design-lucaspetter" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/dyamon"><img src="https://avatars0.githubusercontent.com/u/6771224?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Federico Igne</b></sub></a><br /><a href="#design-dyamon" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/qwazix"><img src="https://avatars0.githubusercontent.com/u/1202892?v=4?s=50" width="50px;" alt=""/><br /><sub><b>qwazix</b></sub></a><br /><a href="#design-qwazix" title="Design">🎨</a></td>
<td align="center"><a href="http://bthierry.pages.math.cnrs.fr/"><img src="https://avatars0.githubusercontent.com/u/5602767?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Bertrand Thierry</b></sub></a><br /><a href="#design-Bertbk" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/xxsimoxx"><img src="https://avatars0.githubusercontent.com/u/29772709?v=4?s=50" width="50px;" alt=""/><br /><sub><b>SIMONE FIORAVANTI</b></sub></a><br /><a href="#design-xxsimoxx" title="Design">🎨</a></td>
<td align="center"><a href="http://samuelriversmoore.net"><img src="https://avatars0.githubusercontent.com/u/2640748?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Samuel Rivers-Moore</b></sub></a><br /><a href="#ideas-SamuelRiversMoore" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center"><a href="https://github.com/pattishih"><img src="https://avatars1.githubusercontent.com/u/16858138?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Patti</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=pattishih" title="Code">💻</a></td>
<td align="center"><a href="https://blog.feld.me"><img src="https://avatars1.githubusercontent.com/u/40271278?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Mark Felder</b></sub></a><br /><a href="#ideas-feld" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center"><a href="https://hugo.pro"><img src="https://avatars3.githubusercontent.com/u/180032?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Hugo Locurcio</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=Calinou" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/tintincastro"><img src="https://avatars0.githubusercontent.com/u/25725603?v=4?s=50" width="50px;" alt=""/><br /><sub><b>tintincastro</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=tintincastro" title="Code">💻</a> <a href="https://github.com/ForkAwesome/Fork-Awesome/commits?author=tintincastro" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/diondresschers"><img src="https://avatars0.githubusercontent.com/u/3883936?v=4?s=50" width="50px;" alt=""/><br /><sub><b>diondresschers</b></sub></a><br /><a href="#design-diondresschers" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://nikospapagiannopoulos.com"><img src="https://avatars.githubusercontent.com/u/645895?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Nikos Papagiannopoulos</b></sub></a><br /><a href="https://github.com/ForkAwesome/Fork-Awesome/pulls?q=is%3Apr+reviewed-by%3Apanigrc" title="Reviewed Pull Requests">👀</a></td>
<td align="center"><a href="https://thomasbnt.dev"><img src="https://avatars.githubusercontent.com/u/14293805?v=4?s=50" width="50px;" alt=""/><br /><sub><b>Thomasbnt.dev</b></sub></a><br /><a href="#design-thomasbnt" title="Design">🎨</a></td>
</tr>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!

View file

@ -0,0 +1,13 @@
FROM node:buster
RUN apt-get update -y \
&& apt-get install -y --no-install-recommends \
bundler \
ruby \
ruby-dev \
\
fontforge \
woff-tools \
woff2
CMD bash

View file

@ -1,21 +1,15 @@
# Fork Awesome
### A fork of the iconic font and CSS toolkit
[![npm](https://img.shields.io/npm/v/fork-awesome.svg?style=flat&colorB=CB3837)](https://www.npmjs.com/package/fork-awesome)
[![All Contributors](https://img.shields.io/badge/all_contributors-115-orange.svg?style=flat-square)](CONTRIBUTORS.md)
[![JSDeliver](https://data.jsdelivr.com/v1/package/npm/fork-awesome/badge)](https://www.jsdelivr.com/package/npm/fork-awesome)
[![CDNJS](https://img.shields.io/cdnjs/v/fork-awesome.svg?style=flat-square)](https://cdnjs.com/libraries/fork-awesome)
[![Build Status](https://travis-ci.org/ForkAwesome/Fork-Awesome.svg?branch=master)](https://travis-ci.org/ForkAwesome/Fork-Awesome)
[![npm-badge]][npm-link] [![all-contrib]](CONTRIBUTORS.md) [![jsdeliver-badge]][jsdeliver-link] [![cdnjs-badge]][cdnjs-link] [![build-status-badge]][build-status-link] [![matrix-badge]][matrix-link]
Fork Awesome is a full suite of 744 pictographic icons for easy scalable vector graphics on websites, originally created by [Dave Gandy](https://twitter.com/davegandy) and now maintained by a community.
**Fork Awesome is a suite of 796 pictographic and brand icons for easy, scalable vector graphics on websites and beyond.**
Following concerns regarding [the development of Font Awesome](https://github.com/FortAwesome/Font-Awesome/issues/12199#issuecomment-362919956), the PR Freeze since Oct 2016 and the direction [Fort Awesome](https://fortawesome.com/) is taking with the version 5.0 of their project, we are forking Font Awesome (4.7), in order to build on this amazing tool Dave Gandy has given us, while at the same time allowing this project to be run by a distributed community of contributors.
This project, as the name suggests, began as a fork of [Font Awesome](https://fontawesome.com). Font Awesome was originally created by [Dave Gandy](https://twitter.com/davegandy) and ran as a community project. However, as Font Awesome developed, pull requests from the community stopped being accepted (October 2016) and as of version 5.0 [the build system became private](https://github.com/FortAwesome/Font-Awesome/issues/12199#issuecomment-362919956) (February 2018).
A tremendous gratitude is given to the whole team behind [Font Awesome](https://fontawesome.com), and you are encouraged to support them and buy Font Awesome Pro for your project.
With gratitude to Dave Gandy and the Font Awesome team, [Julien](https://github.com/xuv) [Deswaef](https://merveilles.town/@xuv) forked Font Awesome 4.7 into [Fork Awesome 1.0](https://github.com/ForkAwesome/Fork-Awesome/releases/tag/1.0.0) in February 2018, to continue building the amazing resource in a fully free, libre and open-source fashion, with and for the wider community. After a period of extended inactivity (i.e. no release since February 2019), several Fork Awesome users [got](https://github.com/ForkAwesome/Fork-Awesome/issues/292) [together](https://github.com/ForkAwesome/Fork-Awesome/issues/235) to try and revive the project 🌱
Though If you believe in distributed open source design and wish to be part of this new adventure, please start submitting patches and suggestions of improvement.
Also, if you care about owning the build process of your icon font, this project will give you that. The whole pipeline is shared and free to use for any purpose. You could be spinning your own icon font with your clever name by just forking this project and changing a few settings.
We are now catching up with backlogged issues and pull requests, updating technology and documentation — even reevaluating the project aims, as icon fonts gradually [become](https://www.irigoyen.dev/blog/2021/02/17/stop-using-icon-fonts/) [deprecated](https://cloudfour.com/thinks/seriously-dont-use-icon-fonts/). Come say hi in the [#forkawesome:matrix.org](https://matrix.to/#/#forkawesome:matrix.org) matrix room 🙂
## How to use
There is a full page in our documentation website that explains [how to use Fork Awesome in your web project](https://forkaweso.me/Fork-Awesome/get-started/). It ranges from just pointing to a CSS file on a CDN, hosting it on your own server or even adapting the LESS and SCSS files to your own liking.
@ -74,6 +68,8 @@ to the `dependencies` in your `component.json`.
- **macOS:** no extra step required
- [Bundler](http://bundler.io/) (Run `gem install bundler` to install).
- [Node Package Manager (aka. `npm`)](https://docs.npmjs.com/getting-started/installing-node)
- Tools required to build the font:
- **Ubuntu:** `sudo apt-get install fontforge woff-tools woff2`
From the root of the repository, install the tools used to develop.
@ -82,7 +78,7 @@ From the root of the repository, install the tools used to develop.
Build the font:
$:/src/icons make
$ make -C src/icons
Build the web documentation:
@ -91,3 +87,38 @@ Build the web documentation:
Or serve it on a local server on http://localhost:7998:
$ npm run dev
### Build the font in a Docker container
Another possibility is to build the font using the Dockerfile provided.
First, build the Docker image:
$ docker build -t fa-builder .
Then, run the Docker container:
$ docker run --rm -it \
-u $(id -u):$(id -g) \
-v $(pwd):$(pwd) \
-w $(pwd) \
fa-builder
Within the container, build the font:
$ bundle install --path vendor/bundle
$ npm ci
$ make -C src/icons
<!--- reference links for badges -->
[all-contrib]: https://img.shields.io/badge/all_contributors-128-orange.svg "All Contributors badge"
[build-status-badge]: https://travis-ci.org/ForkAwesome/Fork-Awesome.svg?branch=master "Build status badge"
[build-status-link]: https://travis-ci.org/ForkAwesome/Fork-Awesome
[cdnjs-badge]: https://img.shields.io/cdnjs/v/fork-awesome.svg "CDNJS badge"
[cdnjs-link]: https://cdnjs.com/libraries/fork-awesome
[jsdeliver-badge]: https://img.shields.io/jsdelivr/npm/hm/fork-awesome "JSDeliver badge"
[jsdeliver-link]: https://www.jsdelivr.com/package/npm/fork-awesome
[npm-badge]: https://img.shields.io/npm/v/fork-awesome.svg?colorB=CB3837 "NPM badge"
[npm-link]: https://www.npmjs.com/package/fork-awesome
[matrix-badge]: https://img.shields.io/matrix/forkawesome:matrix.org?label=%23forkawesome%3Amatrix.org "chat (matrix) badge"
[matrix-link]: https://matrix.to/#/#forkawesome:matrix.org

View file

@ -19,8 +19,8 @@ icon_destination: icon # Relative to destination
forkawesome:
name: Fork Awesome
tagline: A fork of the iconic font and CSS toolkit
version: 1.1.7
minor_version: 1.1
version: 1.2.0
minor_version: 1.2
major_version: 1
doc_blob: v1.1.7
url: https://forkaweso.me/Fork-Awesome/

View file

@ -2,7 +2,7 @@
"name": "fork-awesome",
"repo": "ForkAwesome/Fork-Awesome",
"description": "Fork Awesome",
"version": "1.1.7",
"version": "1.2.0",
"keywords": [],
"dependencies": {},
"development": {},

View file

@ -2,28 +2,19 @@
"name": "forkawesome/fork-awesome",
"description": "A fork of the iconic font and CSS framework",
"keywords": ["font", "awesome", "fontawesome", "forkawesome", "icon", "bootstrap"],
"homepage": "http://forkawesome.github.io/Fork-Awesome/",
"homepage": "https://forkaweso.me",
"type": "component",
"authors": [
{
"name": "Fork Awesome Community",
"homepage": "https://forkawesome.github.io"
"homepage": "https://forkaweso.me"
}
],
"support": {
"issues": "https://github.com/ForkAwesome/Fork-Awesome/issues"
},
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"license": [
"OFL-1.1",
"MIT"
],
"require-dev": {
"jekyll": "1.0.2",
"lessc": "1.4.2"
}
]
}

View file

@ -1,5 +1,5 @@
/*!
Fork Awesome 1.1.7
Fork Awesome 1.2.0
License - https://forkaweso.me/Fork-Awesome/license
Copyright 2018 Dave Gandy & Fork Awesome
@ -14,10 +14,11 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
* -------------------------- */
@font-face {
font-family: 'ForkAwesome';
src: url('../fonts/forkawesome-webfont.eot?v=1.1.7');
src: url('../fonts/forkawesome-webfont.eot?#iefix&v=1.1.7') format('embedded-opentype'), url('../fonts/forkawesome-webfont.woff2?v=1.1.7') format('woff2'), url('../fonts/forkawesome-webfont.woff?v=1.1.7') format('woff'), url('../fonts/forkawesome-webfont.ttf?v=1.1.7') format('truetype'), url('../fonts/forkawesome-webfont.svg?v=1.1.7#forkawesomeregular') format('svg');
src: url('../fonts/forkawesome-webfont.eot?v=1.2.0');
src: url('../fonts/forkawesome-webfont.eot?#iefix&v=1.2.0') format('embedded-opentype'), url('../fonts/forkawesome-webfont.woff2?v=1.2.0') format('woff2'), url('../fonts/forkawesome-webfont.woff?v=1.2.0') format('woff'), url('../fonts/forkawesome-webfont.ttf?v=1.2.0') format('truetype'), url('../fonts/forkawesome-webfont.svg?v=1.2.0#forkawesomeregular') format('svg');
font-weight: normal;
font-style: normal;
font-display: block;
}
.fa {
display: inline-block;
@ -2552,6 +2553,165 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
.fa-biometric:before {
content: "\f32b";
}
.fa-wire:before {
content: "\f32c";
}
.fa-tor-onion:before {
content: "\f32e";
}
.fa-volume-mute:before {
content: "\f32f";
}
.fa-bell-ringing:before {
content: "\f32d";
}
.fa-bell-ringing-o:before {
content: "\f330";
}
.fa-hal:before {
content: "\f333";
}
.fa-jupyter:before {
content: "\f335";
}
.fa-julia:before {
content: "\f334";
}
.fa-classicpress:before {
content: "\f331";
}
.fa-classicpress-circle:before {
content: "\f332";
}
.fa-open-collective:before {
content: "\f336";
}
.fa-orcid:before {
content: "\f337";
}
.fa-researchgate:before {
content: "\f338";
}
.fa-funkwhale:before {
content: "\f339";
}
.fa-askfm:before {
content: "\f33a";
}
.fa-blockstack:before {
content: "\f33b";
}
.fa-boardgamegeek:before {
content: "\f33c";
}
.fa-bunny:before {
content: "\f35f";
}
.fa-buymeacoffee:before {
content: "\f33d";
}
.fa-cc-by:before {
content: "\f33e";
}
.fa-creative-commons-alt:before,
.fa-cc-cc:before {
content: "\f33f";
}
.fa-cc-nc-eu:before {
content: "\f341";
}
.fa-cc-nc-jp:before {
content: "\f342";
}
.fa-cc-nc:before {
content: "\f340";
}
.fa-cc-nd:before {
content: "\f343";
}
.fa-cc-pd:before {
content: "\f344";
}
.fa-cc-remix:before {
content: "\f345";
}
.fa-cc-sa:before {
content: "\f346";
}
.fa-cc-share:before {
content: "\f347";
}
.fa-cc-zero:before {
content: "\f348";
}
.fa-conway-hacker:before,
.fa-conway-glider:before {
content: "\f349";
}
.fa-csharp:before {
content: "\f34a";
}
.fa-email-bulk:before {
content: "\f34b";
}
.fa-email-bulk-o:before {
content: "\f34c";
}
.fa-gnu:before {
content: "\f34d";
}
.fa-google-play:before {
content: "\f34e";
}
.fa-heroku:before {
content: "\f34f";
}
.fa-hassio:before,
.fa-home-assistant:before {
content: "\f350";
}
.fa-java:before {
content: "\f351";
}
.fa-mariadb:before {
content: "\f352";
}
.fa-markdown:before {
content: "\f353";
}
.fa-mysql:before {
content: "\f354";
}
.fa-nordcast:before {
content: "\f355";
}
.fa-plume:before {
content: "\f356";
}
.fa-postgresql:before {
content: "\f357";
}
.fa-sass-alt:before {
content: "\f359";
}
.fa-sass:before {
content: "\f358";
}
.fa-skate:before {
content: "\f35a";
}
.fa-sketchfab:before {
content: "\f35b";
}
.fa-tex:before {
content: "\f35c";
}
.fa-textpattern:before {
content: "\f35d";
}
.fa-unity:before {
content: "\f35e";
}
.sr-only {
position: absolute;
width: 1px;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
/*!
Fork Awesome 1.1.7
Fork Awesome 1.2.0
License - https://forkaweso.me/Fork-Awesome/license
Copyright 2018 Dave Gandy & Fork Awesome

View file

@ -1,5 +1,5 @@
/*!
Fork Awesome 1.1.7
Fork Awesome 1.2.0
License - https://forkaweso.me/Fork-Awesome/license
Copyright 2018 Dave Gandy & Fork Awesome

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 470 KiB

After

Width:  |  Height:  |  Size: 547 KiB

View file

@ -1,5 +1,5 @@
/*!
Fork Awesome 1.1.7
Fork Awesome 1.2.0
License - https://forkaweso.me/Fork-Awesome/license
Copyright 2018 Dave Gandy & Fork Awesome

View file

@ -877,3 +877,58 @@
.@{fa-css-prefix}-sun:before { content: @fa-var-sun; }
.@{fa-css-prefix}-f-droid:before { content: @fa-var-f-droid; }
.@{fa-css-prefix}-biometric:before { content: @fa-var-biometric; }
.@{fa-css-prefix}-wire:before { content: @fa-var-wire; }
.@{fa-css-prefix}-tor-onion:before { content: @fa-var-tor-onion; }
.@{fa-css-prefix}-volume-mute:before { content: @fa-var-volume-mute; }
.@{fa-css-prefix}-bell-ringing:before { content: @fa-var-bell-ringing; }
.@{fa-css-prefix}-bell-ringing-o:before { content: @fa-var-bell-ringing-o; }
.@{fa-css-prefix}-hal:before { content: @fa-var-hal; }
.@{fa-css-prefix}-jupyter:before { content: @fa-var-jupyter; }
.@{fa-css-prefix}-julia:before { content: @fa-var-julia; }
.@{fa-css-prefix}-classicpress:before { content: @fa-var-classicpress; }
.@{fa-css-prefix}-classicpress-circle:before { content: @fa-var-classicpress-circle; }
.@{fa-css-prefix}-open-collective:before { content: @fa-var-open-collective; }
.@{fa-css-prefix}-orcid:before { content: @fa-var-orcid; }
.@{fa-css-prefix}-researchgate:before { content: @fa-var-researchgate; }
.@{fa-css-prefix}-funkwhale:before { content: @fa-var-funkwhale; }
.@{fa-css-prefix}-askfm:before { content: @fa-var-askfm; }
.@{fa-css-prefix}-blockstack:before { content: @fa-var-blockstack; }
.@{fa-css-prefix}-boardgamegeek:before { content: @fa-var-boardgamegeek; }
.@{fa-css-prefix}-bunny:before { content: @fa-var-bunny; }
.@{fa-css-prefix}-buymeacoffee:before { content: @fa-var-buymeacoffee; }
.@{fa-css-prefix}-cc-by:before { content: @fa-var-cc-by; }
.@{fa-css-prefix}-creative-commons-alt:before,
.@{fa-css-prefix}-cc-cc:before { content: @fa-var-cc-cc; }
.@{fa-css-prefix}-cc-nc-eu:before { content: @fa-var-cc-nc-eu; }
.@{fa-css-prefix}-cc-nc-jp:before { content: @fa-var-cc-nc-jp; }
.@{fa-css-prefix}-cc-nc:before { content: @fa-var-cc-nc; }
.@{fa-css-prefix}-cc-nd:before { content: @fa-var-cc-nd; }
.@{fa-css-prefix}-cc-pd:before { content: @fa-var-cc-pd; }
.@{fa-css-prefix}-cc-remix:before { content: @fa-var-cc-remix; }
.@{fa-css-prefix}-cc-sa:before { content: @fa-var-cc-sa; }
.@{fa-css-prefix}-cc-share:before { content: @fa-var-cc-share; }
.@{fa-css-prefix}-cc-zero:before { content: @fa-var-cc-zero; }
.@{fa-css-prefix}-conway-hacker:before,
.@{fa-css-prefix}-conway-glider:before { content: @fa-var-conway-glider; }
.@{fa-css-prefix}-csharp:before { content: @fa-var-csharp; }
.@{fa-css-prefix}-email-bulk:before { content: @fa-var-email-bulk; }
.@{fa-css-prefix}-email-bulk-o:before { content: @fa-var-email-bulk-o; }
.@{fa-css-prefix}-gnu:before { content: @fa-var-gnu; }
.@{fa-css-prefix}-google-play:before { content: @fa-var-google-play; }
.@{fa-css-prefix}-heroku:before { content: @fa-var-heroku; }
.@{fa-css-prefix}-hassio:before,
.@{fa-css-prefix}-home-assistant:before { content: @fa-var-home-assistant; }
.@{fa-css-prefix}-java:before { content: @fa-var-java; }
.@{fa-css-prefix}-mariadb:before { content: @fa-var-mariadb; }
.@{fa-css-prefix}-markdown:before { content: @fa-var-markdown; }
.@{fa-css-prefix}-mysql:before { content: @fa-var-mysql; }
.@{fa-css-prefix}-nordcast:before { content: @fa-var-nordcast; }
.@{fa-css-prefix}-plume:before { content: @fa-var-plume; }
.@{fa-css-prefix}-postgresql:before { content: @fa-var-postgresql; }
.@{fa-css-prefix}-sass-alt:before { content: @fa-var-sass-alt; }
.@{fa-css-prefix}-sass:before { content: @fa-var-sass; }
.@{fa-css-prefix}-skate:before { content: @fa-var-skate; }
.@{fa-css-prefix}-sketchfab:before { content: @fa-var-sketchfab; }
.@{fa-css-prefix}-tex:before { content: @fa-var-tex; }
.@{fa-css-prefix}-textpattern:before { content: @fa-var-textpattern; }
.@{fa-css-prefix}-unity:before { content: @fa-var-unity; }

View file

@ -12,4 +12,5 @@
// src: url('@{fa-font-path}/ForkAwesome.otf') format('opentype'); // used when developing fonts
font-weight: normal;
font-style: normal;
font-display: block;
}

View file

@ -1,5 +1,5 @@
/*!
Fork Awesome 1.1.7
Fork Awesome 1.2.0
License - https://forkaweso.me/Fork-Awesome/license
Copyright 2018 Dave Gandy & Fork Awesome

View file

@ -6,7 +6,7 @@
@fa-line-height-base: 1;
@fa-css-prefix: fa;
@fa-font-family: ForkAwesome;
@fa-version: "1.1.7";
@fa-version: "1.2.0";
@fa-border-color: #eee;
@fa-inverse: #fff;
@fa-li-width: (30em / 14);
@ -59,6 +59,7 @@
@fa-var-arrows-h: "\f07e";
@fa-var-arrows-v: "\f07d";
@fa-var-artstation: "\f2ed";
@fa-var-askfm: "\f33a";
@fa-var-asl-interpreting: "\f2a3";
@fa-var-assistive-listening-systems: "\f2a2";
@fa-var-asterisk: "\f069";
@ -94,6 +95,8 @@
@fa-var-behance-square: "\f1b5";
@fa-var-bell: "\f0a2";
@fa-var-bell-o: "\f0f3";
@fa-var-bell-ringing: "\f32d";
@fa-var-bell-ringing-o: "\f330";
@fa-var-bell-slash: "\f1f6";
@fa-var-bell-slash-o: "\f1f7";
@fa-var-bicycle: "\f206";
@ -105,8 +108,10 @@
@fa-var-bitcoin: "\f15a";
@fa-var-black-tie: "\f27e";
@fa-var-blind: "\f29d";
@fa-var-blockstack: "\f33b";
@fa-var-bluetooth: "\f293";
@fa-var-bluetooth-b: "\f294";
@fa-var-boardgamegeek: "\f33c";
@fa-var-bold: "\f032";
@fa-var-bolt: "\f0e7";
@fa-var-bomb: "\f1e2";
@ -122,7 +127,9 @@
@fa-var-building-o: "\f0f7";
@fa-var-bullhorn: "\f0a1";
@fa-var-bullseye: "\f140";
@fa-var-bunny: "\f35f";
@fa-var-bus: "\f207";
@fa-var-buymeacoffee: "\f33d";
@fa-var-buysellads: "\f20d";
@fa-var-c: "\f31c";
@fa-var-cab: "\f1ba";
@ -148,13 +155,24 @@
@fa-var-cart-plus: "\f217";
@fa-var-cc: "\f20a";
@fa-var-cc-amex: "\f1f3";
@fa-var-cc-by: "\f33e";
@fa-var-cc-cc: "\f33f";
@fa-var-cc-diners-club: "\f24c";
@fa-var-cc-discover: "\f1f2";
@fa-var-cc-jcb: "\f24b";
@fa-var-cc-mastercard: "\f1f1";
@fa-var-cc-nc: "\f340";
@fa-var-cc-nc-eu: "\f341";
@fa-var-cc-nc-jp: "\f342";
@fa-var-cc-nd: "\f343";
@fa-var-cc-paypal: "\f1f4";
@fa-var-cc-pd: "\f344";
@fa-var-cc-remix: "\f345";
@fa-var-cc-sa: "\f346";
@fa-var-cc-share: "\f347";
@fa-var-cc-stripe: "\f1f5";
@fa-var-cc-visa: "\f1f0";
@fa-var-cc-zero: "\f348";
@fa-var-certificate: "\f0a3";
@fa-var-chain: "\f0c1";
@fa-var-chain-broken: "\f127";
@ -177,6 +195,8 @@
@fa-var-circle-o: "\f10c";
@fa-var-circle-o-notch: "\f1ce";
@fa-var-circle-thin: "\f1db";
@fa-var-classicpress: "\f331";
@fa-var-classicpress-circle: "\f332";
@fa-var-clipboard: "\f0ea";
@fa-var-clock-o: "\f017";
@fa-var-clone: "\f24d";
@ -205,13 +225,17 @@
@fa-var-compress: "\f066";
@fa-var-connectdevelop: "\f20e";
@fa-var-contao: "\f26d";
@fa-var-conway-glider: "\f349";
@fa-var-conway-hacker: "\f349";
@fa-var-copy: "\f0c5";
@fa-var-copyright: "\f1f9";
@fa-var-creative-commons: "\f25e";
@fa-var-creative-commons-alt: "\f33f";
@fa-var-credit-card: "\f09d";
@fa-var-credit-card-alt: "\f283";
@fa-var-crop: "\f125";
@fa-var-crosshairs: "\f05b";
@fa-var-csharp: "\f34a";
@fa-var-css3: "\f13c";
@fa-var-cube: "\f1b2";
@fa-var-cubes: "\f1b3";
@ -250,6 +274,8 @@
@fa-var-eject: "\f052";
@fa-var-ellipsis-h: "\f141";
@fa-var-ellipsis-v: "\f142";
@fa-var-email-bulk: "\f34b";
@fa-var-email-bulk-o: "\f34c";
@fa-var-emby: "\f319";
@fa-var-empire: "\f1d1";
@fa-var-envelope: "\f0e0";
@ -338,6 +364,7 @@
@fa-var-freedombox: "\f2fd";
@fa-var-friendica: "\f2e6";
@fa-var-frown-o: "\f119";
@fa-var-funkwhale: "\f339";
@fa-var-futbol-o: "\f1e3";
@fa-var-gamepad: "\f11b";
@fa-var-gavel: "\f0e3";
@ -366,9 +393,11 @@
@fa-var-globe: "\f0ac";
@fa-var-globe-e: "\f304";
@fa-var-globe-w: "\f305";
@fa-var-gnu: "\f34d";
@fa-var-gnu-social: "\f2e7";
@fa-var-gnupg: "\f30d";
@fa-var-google: "\f1a0";
@fa-var-google-play: "\f34e";
@fa-var-google-plus: "\f0d5";
@fa-var-google-plus-circle: "\f2b3";
@fa-var-google-plus-g: "\f0d5";
@ -383,6 +412,7 @@
@fa-var-hackaday: "\f30a";
@fa-var-hacker-news: "\f1d4";
@fa-var-hackster: "\f326";
@fa-var-hal: "\f333";
@fa-var-hand-grab-o: "\f255";
@fa-var-hand-lizard-o: "\f258";
@fa-var-hand-o-down: "\f0a7";
@ -400,6 +430,7 @@
@fa-var-hard-of-hearing: "\f2a4";
@fa-var-hashnode: "\f317";
@fa-var-hashtag: "\f292";
@fa-var-hassio: "\f350";
@fa-var-hdd-o: "\f0a0";
@fa-var-header: "\f1dc";
@fa-var-heading: "\f1dc";
@ -407,8 +438,10 @@
@fa-var-heart: "\f004";
@fa-var-heart-o: "\f08a";
@fa-var-heartbeat: "\f21e";
@fa-var-heroku: "\f34f";
@fa-var-history: "\f1da";
@fa-var-home: "\f015";
@fa-var-home-assistant: "\f350";
@fa-var-hospital-o: "\f0f8";
@fa-var-hotel: "\f236";
@fa-var-hourglass: "\f254";
@ -442,11 +475,14 @@
@fa-var-intersex: "\f224";
@fa-var-ioxhost: "\f208";
@fa-var-italic: "\f033";
@fa-var-java: "\f351";
@fa-var-jirafeau: "\f318";
@fa-var-joomla: "\f1aa";
@fa-var-joplin: "\f310";
@fa-var-jpy: "\f157";
@fa-var-jsfiddle: "\f1cc";
@fa-var-julia: "\f334";
@fa-var-jupyter: "\f335";
@fa-var-key: "\f084";
@fa-var-key-modern: "\f2f7";
@fa-var-keybase: "\f2f4";
@ -498,6 +534,8 @@
@fa-var-map-o: "\f278";
@fa-var-map-pin: "\f276";
@fa-var-map-signs: "\f277";
@fa-var-mariadb: "\f352";
@fa-var-markdown: "\f353";
@fa-var-mars: "\f222";
@fa-var-mars-double: "\f227";
@fa-var-mars-stroke: "\f229";
@ -533,20 +571,24 @@
@fa-var-motorcycle: "\f21c";
@fa-var-mouse-pointer: "\f245";
@fa-var-music: "\f001";
@fa-var-mysql: "\f354";
@fa-var-navicon: "\f0c9";
@fa-var-neuter: "\f22c";
@fa-var-newspaper-o: "\f1ea";
@fa-var-nextcloud: "\f306";
@fa-var-nextcloud-square: "\f307";
@fa-var-nodejs: "\f308";
@fa-var-nordcast: "\f355";
@fa-var-object-group: "\f247";
@fa-var-object-ungroup: "\f248";
@fa-var-odnoklassniki: "\f263";
@fa-var-odnoklassniki-square: "\f264";
@fa-var-open-collective: "\f336";
@fa-var-opencart: "\f23d";
@fa-var-openid: "\f19b";
@fa-var-opera: "\f26a";
@fa-var-optin-monster: "\f23c";
@fa-var-orcid: "\f337";
@fa-var-outdent: "\f03b";
@fa-var-pagelines: "\f18c";
@fa-var-paint-brush: "\f1fc";
@ -583,11 +625,13 @@
@fa-var-play-circle-o: "\f01d";
@fa-var-pleroma: "\f324";
@fa-var-plug: "\f1e6";
@fa-var-plume: "\f356";
@fa-var-plus: "\f067";
@fa-var-plus-circle: "\f055";
@fa-var-plus-square: "\f0fe";
@fa-var-plus-square-o: "\f196";
@fa-var-podcast: "\f2ce";
@fa-var-postgresql: "\f357";
@fa-var-pound: "\f154";
@fa-var-power-off: "\f011";
@fa-var-print: "\f02f";
@ -619,6 +663,7 @@
@fa-var-repeat: "\f01e";
@fa-var-reply: "\f112";
@fa-var-reply-all: "\f122";
@fa-var-researchgate: "\f338";
@fa-var-resistance: "\f1d0";
@fa-var-retweet: "\f079";
@fa-var-rmb: "\f157";
@ -634,6 +679,8 @@
@fa-var-rupee: "\f156";
@fa-var-s15: "\f2cd";
@fa-var-safari: "\f267";
@fa-var-sass: "\f358";
@fa-var-sass-alt: "\f359";
@fa-var-save: "\f0c7";
@fa-var-scissors: "\f0c4";
@fa-var-scribd: "\f28a";
@ -669,6 +716,8 @@
@fa-var-signing: "\f2a7";
@fa-var-simplybuilt: "\f215";
@fa-var-sitemap: "\f0e8";
@fa-var-skate: "\f35a";
@fa-var-sketchfab: "\f35b";
@fa-var-skyatlas: "\f216";
@fa-var-skype: "\f17e";
@fa-var-slack: "\f198";
@ -751,8 +800,10 @@
@fa-var-television: "\f26c";
@fa-var-tencent-weibo: "\f1d5";
@fa-var-terminal: "\f120";
@fa-var-tex: "\f35c";
@fa-var-text-height: "\f034";
@fa-var-text-width: "\f035";
@fa-var-textpattern: "\f35d";
@fa-var-th: "\f00a";
@fa-var-th-large: "\f009";
@fa-var-th-list: "\f00b";
@ -787,6 +838,7 @@
@fa-var-toggle-on: "\f205";
@fa-var-toggle-right: "\f152";
@fa-var-toggle-up: "\f151";
@fa-var-tor-onion: "\f32e";
@fa-var-trademark: "\f25c";
@fa-var-train: "\f238";
@fa-var-transgender: "\f224";
@ -810,6 +862,7 @@
@fa-var-umbrella: "\f0e9";
@fa-var-underline: "\f0cd";
@fa-var-undo: "\f0e2";
@fa-var-unity: "\f35e";
@fa-var-universal-access: "\f29a";
@fa-var-university: "\f19c";
@fa-var-unlink: "\f127";
@ -848,6 +901,7 @@
@fa-var-vk: "\f189";
@fa-var-volume-control-phone: "\f2a0";
@fa-var-volume-down: "\f027";
@fa-var-volume-mute: "\f32f";
@fa-var-volume-off: "\f026";
@fa-var-volume-up: "\f028";
@fa-var-warning: "\f071";
@ -866,6 +920,7 @@
@fa-var-window-minimize: "\f2d1";
@fa-var-window-restore: "\f2d2";
@fa-var-windows: "\f17a";
@fa-var-wire: "\f32c";
@fa-var-won: "\f159";
@fa-var-wordpress: "\f19a";
@fa-var-wpbeginner: "\f297";

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
{
"name": "fork-awesome",
"description": "A fork of the iconic font and CSS framework",
"version": "1.1.7",
"version": "1.2.0",
"style": "css/fork-awesome.css",
"keywords": [
"font",
@ -23,17 +23,17 @@
"license": "(OFL-1.1 AND MIT)",
"dependencies": {},
"devDependencies": {
"all-contributors-cli": "^6.1.1",
"less": "^2.7.3",
"less-plugin-clean-css": "^1.5.1",
"svgo": "^1.1.1"
"all-contributors-cli": "^6.16.0",
"less": "^3.11.3",
"less-plugin-clean-css": "less/less-plugin-clean-css#master",
"svgo": "^1.3.2"
},
"engines": {
"node": ">=0.10.3"
},
"scripts": {
"build": "bundle exec jekyll build",
"dev": "bundle exec jekyll serve -w",
"build": "RUBYOPT='-W0' bundle exec jekyll build",
"dev": "RUBYOPT='-W0' bundle exec jekyll serve -w",
"contributors:add": "all-contributors add",
"contributors:generate": "all-contributors generate"
},

File diff suppressed because it is too large Load diff

View file

@ -12,4 +12,5 @@
// src: url('#{$fa-font-path}/ForkAwesome.otf') format('opentype'); // used when developing fonts
font-weight: normal;
font-style: normal;
font-display: block;
}

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
/*!
Fork Awesome 1.1.7
Fork Awesome 1.2.0
License - https://forkaweso.me/Fork-Awesome/license
Copyright 2018 Dave Gandy & Fork Awesome

View file

@ -3,11 +3,7 @@
# {{ site.forkawesome.name }}
### {{ site.forkawesome.tagline }}
[![npm](https://img.shields.io/npm/v/fork-awesome.svg?style=flat&colorB=CB3837)](https://www.npmjs.com/package/fork-awesome)
[![All Contributors](https://img.shields.io/badge/all_contributors-{{ page.total_contributors }}-orange.svg?style=flat-square)](CONTRIBUTORS.md)
[![JSDeliver](https://data.jsdelivr.com/v1/package/npm/fork-awesome/badge)](https://www.jsdelivr.com/package/npm/fork-awesome)
[![CDNJS](https://img.shields.io/cdnjs/v/fork-awesome.svg?style=flat-square)](https://cdnjs.com/libraries/fork-awesome)
[![Build Status](https://travis-ci.org/ForkAwesome/Fork-Awesome.svg?branch=master)](https://travis-ci.org/ForkAwesome/Fork-Awesome)
[![npm-badge]][npm-link] [![all-contrib]](CONTRIBUTORS.md) [![jsdeliver-badge]][jsdeliver-link] [![cdnjs-badge]][cdnjs-link] [![build-status-badge]][build-status-link]
{{ site.forkawesome.name }} is a full suite of {{ icons | size }} pictographic icons for easy scalable vector graphics on websites, originally created by [Dave Gandy](https://twitter.com/davegandy) and now maintained by a community.
@ -93,3 +89,15 @@ Build the web documentation:
Or serve it on a local server on http://localhost:7998:
$ npm run dev
<!--- reference links for badges -->
[all-contrib]: https://img.shields.io/badge/all_contributors-{{ page.total_contributors }}-orange.svg?style=flat-square "All Contributors badge"
[build-status-badge]: https://travis-ci.org/ForkAwesome/Fork-Awesome.svg?branch=master "Build status badge"
[build-status-link]: https://travis-ci.org/ForkAwesome/Fork-Awesome
[cdnjs-badge]: https://img.shields.io/cdnjs/v/fork-awesome.svg?style=flat-square "CDNJS badge"
[cdnjs-link]: https://cdnjs.com/libraries/fork-awesome
[jsdeliver-badge]: https://data.jsdelivr.com/v1/package/npm/fork-awesome/badge "JSDeliver badge"
[jsdeliver-link]: https://www.jsdelivr.com/package/npm/fork-awesome
[npm-badge]: https://img.shields.io/npm/v/fork-awesome.svg?style=flat&colorB=CB3837 "NPM badge"
[npm-link]: ttps://www.npmjs.com/package/fork-awesome

View file

@ -20,8 +20,8 @@
<div class="margin-bottom-lg">
{% highlight html %}
<h1 class="logo">
<i class="fa fa-pied-piper" aria-hidden="true"></i>
Pied Piper, A Middle-Out Compression Solution Making Data Storage Problems Smaller
<i class="fa fa-fork-awesome" aria-hidden="true"></i>
Fork Awesome, a fork of the iconic font and CSS toolkit
</h1>
{% endhighlight %}
<small class="text-muted">an icon being used as a logo</small>

View file

@ -1,5 +1,5 @@
<section id="new">
{% assign version = 1.0 %}
{% assign version = site.forkawesome.minor_version %}
{% assign icons_new = icons | where_exp:"icon", "icon.created >= version" | sort_by:'class' %}
<h2 class="page-header">{{ icons_new | size }} New Icons since {{ version }}</h2>

View file

@ -33,7 +33,7 @@
<ul class="dropdown-menu pull-right">
<li><a href="{{ page.relative_path }}icons/"><i class="fa fa-flag fa-fw" aria-hidden="true"></i>&nbsp; All Icons</a></li>
<li class="divider"></li>
<li><a href="{{ page.relative_path }}icons/#new"><i class="fa fa-handshake-o fa-fw" aria-hidden="true"></i>&nbsp; New Icons in {{ site.fontawesome.minor_version }}</a></li>
<li><a href="{{ page.relative_path }}icons/#new"><i class="fa fa-handshake-o fa-fw" aria-hidden="true"></i>&nbsp; New Icons</a></li>
<li><a href="{{ page.relative_path }}icons/#web-application"><i class="fa fa-camera-retro fa-fw" aria-hidden="true"></i>&nbsp; Web Application Icons</a></li>
<li><a href="{{ page.relative_path }}icons/#accessibility"><i class="fa fa-universal-access fa-fw" aria-hidden="true"></i>&nbsp; Accessibility Icons</a></li>
<li><a href="{{ page.relative_path }}icons/#hand"><i class="fa fa-hand-spock-o fa-fw" aria-hidden="true"></i>&nbsp; Hand Icons</a></li>

Some files were not shown because too many files have changed in this diff Show more