From fd0ed3634788f6de97f394b6163df69e77edfdc8 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Sat, 27 May 2023 13:48:59 +0300 Subject: [PATCH] Move redirects to content repo --- redirects.yaml | 1896 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1896 insertions(+) create mode 100644 redirects.yaml diff --git a/redirects.yaml b/redirects.yaml new file mode 100644 index 000000000..21379d678 --- /dev/null +++ b/redirects.yaml @@ -0,0 +1,1896 @@ +- from: /feed + to: /feed.xml + status: 200 +- from: /collections + to: /collections/p/1 + status: 301! +- from: /list + to: /snippets/p/1 + status: 301! +- from: /js + to: /js/p/1 + status: 301! +- from: /javascript + to: /js/p/1 + status: 301! +- from: /python + to: /python/p/1 + status: 301! +- from: /py + to: /python/p/1 + status: 301! +- from: /css + to: /css/p/1 + status: 301! +- from: /react + to: /react/p/1 + status: 301! +- from: /list/p/* + to: /snippets/p/:splat + status: 301! +- from: /articles/p/* + to: /snippets/p/1 + status: 301! +- from: /articles/css/* + to: /css/p/1 + status: 301! +- from: /articles/javascript/* + to: /js/p/1 + status: 301! +- from: /articles/python/* + to: /python/p/1 + status: 301! +- from: /articles/react/* + to: /react/p/1 + status: 301! +- from: /articles/webdev/* + to: /web-development/p/1 + status: 301! +- from: /blog/* + to: /articles/:splat + status: 301! +- from: /snippet/* + to: /js/p/1 + status: 301! +- from: /tag/* + to: /js/p/1 + status: 301! +- from: /css/t/animation/* + to: /css/animation/:splat + status: 301! +- from: /css/t/interactivity/* + to: /css/interactivity/:splat + status: 301! +- from: /css/t/layout/* + to: /css/layout/:splat + status: 301! +- from: /css/t/visual/* + to: /css/visual/:splat + status: 301! +- from: /git/t/branch/* + to: /git/branch/:splat + status: 301! +- from: /git/t/commit/* + to: /git/commit/:splat + status: 301! +- from: /git/t/configuration/* + to: /git/configuration/:splat + status: 301! +- from: /git/t/repository/* + to: /git/repository/:splat + status: 301! +- from: /js/t/algorithm/* + to: /js/algorithm/:splat + status: 301! +- from: /js/t/array/* + to: /js/array/:splat + status: 301! +- from: /js/t/browser/* + to: /js/browser/:splat + status: 301! +- from: /js/t/date/* + to: /js/date/:splat + status: 301! +- from: /js/t/function/* + to: /js/function/:splat + status: 301! +- from: /js/t/math/* + to: /js/math/:splat + status: 301! +- from: /js/t/node/* + to: /js/node/:splat + status: 301! +- from: /js/t/object/* + to: /js/object/:splat + status: 301! +- from: /js/t/string/* + to: /js/string/:splat + status: 301! +- from: /js/t/type/* + to: /js/type/:splat + status: 301! +- from: /python/t/date/* + to: /python/date/:splat + status: 301! +- from: /python/t/dictionary/* + to: /python/dictionary/:splat + status: 301! +- from: /python/t/function/* + to: /python/function/:splat + status: 301! +- from: /python/t/list/* + to: /python/list/:splat + status: 301! +- from: /python/t/math/* + to: /python/math/:splat + status: 301! +- from: /python/t/string/* + to: /python/string/:splat + status: 301! +- from: /react/t/components/* + to: /react/components/:splat + status: 301! +- from: /react/t/hooks/* + to: /react/hooks/:splat + status: 301! +- from: /c/cheatsheets/* + to: /cheatsheets/:splat + status: 301! +- from: /c/tips/* + to: /tips/:splat + status: 301! +- from: /c/web-development/* + to: /web-development/:splat + status: 301! +- from: /c/css-centering/* + to: /css/centering/:splat + status: 301! +- from: /c/css-hover-effects/* + to: /css/hover-effects/:splat + status: 301! +- from: /c/css-button-transitions/* + to: /css/button-transitions/:splat + status: 301! +- from: /c/css-background-patterns/* + to: /css/background-patterns/:splat + status: 301! +- from: /c/js-array-initialization/* + to: /js/array-initialization/:splat + status: 301! +- from: /c/js-array-methods/* + to: /js/array-methods/:splat + status: 301! +- from: /c/js-array-set-operations/* + to: /js/array-set-operations/:splat + status: 301! +- from: /c/js-array-tricks/* + to: /js/array-tricks/:splat + status: 301! +- from: /c/js-arrow-functions/* + to: /js/arrow-functions/:splat + status: 301! +- from: /c/js-browser-capabilities/* + to: /js/browser-capabilities/:splat + status: 301! +- from: /c/js-colors/* + to: /js/colors/:splat + status: 301! +- from: /c/js-comparison/* + to: /js/comparison/:splat + status: 301! +- from: /c/js-css-manipulation/* + to: /js/css-manipulation/:splat + status: 301! +- from: /c/js-data-structures/* + to: /js/data-structures/:splat + status: 301! +- from: /c/js-dom-manipulation/* + to: /js/dom-manipulation/:splat + status: 301! +- from: /c/js-dom-querying/* + to: /js/dom-querying/:splat + status: 301! +- from: /c/js-event-handling/* + to: /js/event-handling/:splat + status: 301! +- from: /c/js-generators/* + to: /js/generators/:splat + status: 301! +- from: /c/js-geometry/* + to: /js/geometry/:splat + status: 301! +- from: /c/js-http-requests/* + to: /js/http-requests/:splat + status: 301! +- from: /c/js-interviews/* + to: /js/interviews/:splat + status: 301! +- from: /c/js-logical-operations/* + to: /js/logical-operations/:splat + status: 301! +- from: /c/js-object-cloning/* + to: /js/object-cloning/:splat + status: 301! +- from: /c/js-object-key-selection/* + to: /js/object-key-selection/:splat + status: 301! +- from: /c/js-object-key-transformations/* + to: /js/object-key-transformations/:splat + status: 301! +- from: /c/js-performance/* + to: /js/performance/:splat + status: 301! +- from: /c/js-promises/* + to: /js/promises/:splat + status: 301! +- from: /c/js-proxy/* + to: /js/proxy/:splat + status: 301! +- from: /c/js-random-value-generators/* + to: /js/random-value-generators/:splat + status: 301! +- from: /c/js-scroll/* + to: /js/scroll/:splat + status: 301! +- from: /c/js-string-casing/* + to: /js/string-casing/:splat + status: 301! +- from: /c/js-unit-conversions/* + to: /js/unit-conversions/:splat + status: 301! +- from: /c/js-url/* + to: /js/url/:splat + status: 301! +- from: /c/js-web-storage-essentials/* + to: /js/web-storage-essentials/:splat + status: 301! +- from: /c/react-rendering/* + to: /react/rendering/:splat + status: 301! +- from: /c/react-testing/* + to: /react/testing/:splat + status: 301! +- from: /c/html-head-basics/* + to: /html/head-basics/:splat + status: 301! +- from: /css/s/custom-variables/ + to: /articles/s/css-variables + status: 301! +- from: /css/s/calc/ + to: /css/p/1 + status: 301! +- from: /js/s/filter-falsy/ + to: /js/s/compact + status: 301! +- from: /python/s/function-name/ + to: /python/s/check-prop + status: 301! +- from: /python/s/map-object/ + to: /python/s/map-dictionary + status: 301! +- from: /python/s/zip/ + to: /python/s/merge + status: 301! +- from: /js/s/elo/ + to: /js/p/1 + status: 301! +- from: /js/s/lowercase-keys + to: /js/s/lowerize + status: 301! +- from: /css/s/hover-pespective + to: /css/s/hover-perspective + status: 301! +- from: /css/s/easing-variables + to: /articles/s/css-easing-variables + status: 301! +- from: /python/s/count-occurences + to: /python/s/count-occurrences + status: 301! +- from: /articles/s/javascript-add-key-value-pair-to-object + to: /js/s/add-key-value-pair-to-object + status: 301! +- from: /articles/s/javascript-array-comparison + to: /js/s/array-comparison + status: 301! +- from: /articles/s/javascript-array-includes-value + to: /js/s/array-includes-value + status: 301! +- from: /articles/s/javascript-arrow-function-event-listeners + to: /js/s/arrow-function-event-listeners + status: 301! +- from: /articles/s/javascript-arrow-functions + to: /js/s/arrow-functions + status: 301! +- from: /articles/s/javascript-arrow-regular-function-differences + to: /js/s/arrow-regular-function-differences + status: 301! +- from: /articles/s/javascript-async-array-loops + to: /js/s/async-array-loops + status: 301! +- from: /articles/s/javascript-await-timeout + to: /js/s/await-timeout + status: 301! +- from: /articles/s/javascript-blank-value + to: /js/s/blank-value + status: 301! +- from: /articles/s/javascript-boolean-function + to: /js/s/boolean-function + status: 301! +- from: /articles/s/javascript-boolean-trap + to: /js/s/boolean-trap + status: 301! +- from: /articles/s/javascript-callbacks + to: /js/s/callback-pitfalls + status: 301! +- from: /articles/s/javascript-classical-vs-prototypal-inheritance + to: /js/s/classical-vs-prototypal-inheritance + status: 301! +- from: /articles/s/javascript-closures + to: /js/s/closures + status: 301! +- from: /articles/s/javascript-copy-array + to: /js/s/copy-array + status: 301! +- from: /articles/s/javascript-date-comparison + to: /js/s/date-comparison + status: 301! +- from: /articles/s/javascript-deep-freeze-object + to: /js/s/deep-freeze-object + status: 301! +- from: /articles/s/javascript-destructuring-assignment + to: /js/s/destructuring-assignment + status: 301! +- from: /articles/s/javascript-empty-array + to: /js/s/empty-array + status: 301! +- from: /articles/s/javascript-encodeuri-encodeuricomponent + to: /js/s/encodeuri-encodeuricomponent + status: 301! +- from: /articles/s/javascript-enum + to: /js/s/enum + status: 301! +- from: /articles/s/javascript-equality + to: /js/s/equality + status: 301! +- from: /articles/s/javascript-event-bubbling-capturing-delegation + to: /js/s/event-bubbling-capturing-delegation + status: 301! +- from: /articles/s/javascript-event-loop-explained + to: /js/s/event-loop-explained + status: 301! +- from: /articles/s/javascript-evil-closures + to: /js/s/evil-closures + status: 301! +- from: /articles/s/javascript-execute-event-handler-once + to: /js/s/execute-event-handler-once + status: 301! +- from: /articles/s/javascript-expression-statement + to: /js/s/expression-statement + status: 301! +- from: /articles/s/javascript-for-in-for-of-foreach + to: /js/s/for-in-for-of-foreach + status: 301! +- from: /articles/s/javascript-for-loop-early-break + to: /js/s/for-loop-early-break + status: 301! +- from: /articles/s/javascript-function-call-apply-bind + to: /js/s/function-call-apply-bind + status: 301! +- from: /articles/s/javascript-generator-for-range + to: /js/s/generator-for-range + status: 301! +- from: /articles/s/javascript-higher-order-functions + to: /js/s/higher-order-functions + status: 301! +- from: /articles/s/javascript-iife + to: /js/s/iife + status: 301! +- from: /articles/s/javascript-index-for-of-loop + to: /js/s/index-for-of-loop + status: 301! +- from: /articles/s/javascript-iterable-to-array + to: /js/s/iterable-to-array + status: 301! +- from: /articles/s/javascript-iterators + to: /js/s/iterators + status: 301! +- from: /articles/s/javascript-json-stringify-pick-keys + to: /js/s/json-stringify-pick-keys + status: 301! +- from: /articles/s/javascript-make-iterable + to: /js/s/make-iterable + status: 301! +- from: /articles/s/javascript-memoization + to: /js/s/memoization + status: 301! +- from: /articles/s/javascript-merge-arrays + to: /js/s/merge-arrays + status: 301! +- from: /articles/s/javascript-modify-url-without-reload + to: /js/s/modify-url-without-reload + status: 301! +- from: /articles/s/javascript-module-cheatsheet + to: /js/s/module-cheatsheet + status: 301! +- from: /articles/s/javascript-naming-conventions + to: /js/s/naming-conventions + status: 301! +- from: /articles/s/javascript-nullish-coalescing-optional-chaining + to: /js/s/nullish-coalescing-optional-chaining + status: 301! +- from: /articles/s/javascript-numeric-separator + to: /js/s/numeric-separator + status: 301! +- from: /articles/s/javascript-object-array-proxy + to: /js/s/object-array-proxy + status: 301! +- from: /articles/s/javascript-object-comparison + to: /js/s/object-comparison + status: 301! +- from: /articles/s/javascript-object-is-triple-equals + to: /js/s/object-is-triple-equals + status: 301! +- from: /articles/s/javascript-pass-by-reference-or-pass-by-value + to: /js/s/pass-by-reference-or-pass-by-value + status: 301! +- from: /articles/s/javascript-prefix-postfix-operators + to: /js/s/prefix-postfix-operators + status: 301! +- from: /articles/s/javascript-pretty-print-json + to: /js/s/pretty-print-json + status: 301! +- from: /articles/s/javascript-prevent-string-being-escaped + to: /js/s/prevent-string-being-escaped + status: 301! +- from: /articles/s/javascript-primitive-instanceof + to: /js/s/primitive-instanceof + status: 301! +- from: /articles/s/javascript-promise-then-catch + to: /js/s/promise-then-catch + status: 301! +- from: /articles/s/javascript-promise-then-finally + to: /js/s/promise-then-finally + status: 301! +- from: /articles/s/javascript-promises + to: /js/s/promises + status: 301! +- from: /articles/s/javascript-property-enumerability + to: /js/s/property-enumerability + status: 301! +- from: /articles/s/javascript-pure-functions + to: /js/s/pure-functions + status: 301! +- from: /articles/s/javascript-query-selector-shorthand + to: /js/s/query-selector-shorthand + status: 301! +- from: /articles/s/javascript-random-value-pure-functions + to: /js/s/random-value-pure-functions + status: 301! +- from: /articles/s/javascript-recursion + to: /js/s/recursion + status: 301! +- from: /articles/s/javascript-reload-page + to: /js/s/reload-page + status: 301! +- from: /articles/s/javascript-remove-object-property + to: /js/s/remove-object-property + status: 301! +- from: /articles/s/javascript-return-constructor + to: /js/s/return-constructor + status: 301! +- from: /articles/s/javascript-shallow-deep-clone + to: /js/s/shallow-deep-clone + status: 301! +- from: /articles/s/javascript-singleton-proxy + to: /js/s/singleton-proxy + status: 301! +- from: /articles/s/javascript-sleep + to: /js/s/sleep + status: 301! +- from: /articles/s/javascript-spread-rest-syntax + to: /js/s/spread-rest-syntax + status: 301! +- from: /articles/s/javascript-store-dom-items + to: /js/s/store-dom-items + status: 301! +- from: /articles/s/javascript-string-contains-substring + to: /js/s/string-contains-substring + status: 301! +- from: /articles/s/javascript-string-immutability + to: /js/s/string-immutability + status: 301! +- from: /articles/s/javascript-string-to-boolean + to: /js/s/string-to-boolean + status: 301! +- from: /articles/s/javascript-swap-two-variables + to: /js/s/swap-two-variables + status: 301! +- from: /articles/s/javascript-switch-object + to: /js/s/switch-object + status: 301! +- from: /articles/s/javascript-sync-async + to: /js/s/sync-async + status: 301! +- from: /articles/s/javascript-ternary-operator + to: /js/s/ternary-operator + status: 301! +- from: /articles/s/javascript-this + to: /js/s/this + status: 301! +- from: /articles/s/javascript-truthy-falsy-values + to: /js/s/truthy-falsy-values + status: 301! +- from: /articles/s/javascript-undeclared-undefined-null + to: /js/s/undeclared-undefined-null + status: 301! +- from: /articles/s/javascript-use-strict + to: /js/s/use-strict + status: 301! +- from: /articles/s/javascript-value-as-number + to: /js/s/value-as-number + status: 301! +- from: /articles/s/javascript-value-not-equal-to-itself + to: /js/s/value-not-equal-to-itself + status: 301! +- from: /articles/s/javascript-var-let-const + to: /js/s/var-let-const + status: 301! +- from: /articles/s/javascript-variable-hoisting + to: /js/s/variable-hoisting + status: 301! +- from: /articles/s/javascript-variable-scope + to: /js/s/variable-scope + status: 301! +- from: /articles/s/javascript-void-links + to: /js/s/void-links + status: 301! +- from: /articles/s/js-abort-fetch + to: /js/s/abort-fetch + status: 301! +- from: /articles/s/js-append-elements-to-array + to: /js/s/append-elements-to-array + status: 301! +- from: /articles/s/js-array-filtering-tips + to: /js/s/array-filtering-tips + status: 301! +- from: /articles/s/js-array-initialization + to: /js/s/array-initialization + status: 301! +- from: /articles/s/js-array-map-vs-foreach + to: /js/s/array-map-vs-foreach + status: 301! +- from: /articles/s/js-array-min-max + to: /js/s/array-min-max + status: 301! +- from: /articles/s/js-array-sorting-shorthand + to: /js/s/array-sorting-shorthand + status: 301! +- from: /articles/s/js-callbacks + to: /js/s/callbacks + status: 301! +- from: /articles/s/js-cannot-extend-proxy-object + to: /js/s/cannot-extend-proxy-object + status: 301! +- from: /articles/s/js-compare-string-case-accent-insensitive + to: /js/s/compare-string-case-accent-insensitive + status: 301! +- from: /articles/s/js-construct-url + to: /js/s/construct-url + status: 301! +- from: /articles/s/js-create-html-elements + to: /js/s/create-html-elements + status: 301! +- from: /articles/s/js-data-structures-binary-search-tree + to: /js/s/data-structures-binary-search-tree + status: 301! +- from: /articles/s/js-data-structures-binary-tree + to: /js/s/data-structures-binary-tree + status: 301! +- from: /articles/s/js-data-structures-doubly-linked-list + to: /js/s/data-structures-doubly-linked-list + status: 301! +- from: /articles/s/js-data-structures-graph + to: /js/s/data-structures-graph + status: 301! +- from: /articles/s/js-data-structures-linked-list + to: /js/s/data-structures-linked-list + status: 301! +- from: /articles/s/js-data-structures-queue + to: /js/s/data-structures-queue + status: 301! +- from: /articles/s/js-data-structures-stack + to: /js/s/data-structures-stack + status: 301! +- from: /articles/s/js-data-structures-tree + to: /js/s/data-structures-tree + status: 301! +- from: /articles/s/js-decimal-to-hex + to: /js/s/decimal-to-hex + status: 301! +- from: /articles/s/js-detect-undefined-object-property + to: /js/s/detect-undefined-object-property + status: 301! +- from: /articles/s/js-double-negation-operator + to: /js/s/double-negation-operator + status: 301! +- from: /articles/s/js-dynamic-getter-chain-proxy + to: /js/s/dynamic-getter-chain-proxy + status: 301! +- from: /articles/s/js-dynamic-getter-setter-proxy + to: /js/s/dynamic-getter-setter-proxy + status: 301! +- from: /articles/s/js-dynamic-properties-are-slow + to: /js/s/dynamic-properties-are-slow + status: 301! +- from: /articles/s/js-edit-url-params + to: /js/s/edit-url-params + status: 301! +- from: /articles/s/js-element-from-point + to: /js/s/element-from-point + status: 301! +- from: /articles/s/js-email-validation + to: /js/s/email-validation + status: 301! +- from: /articles/s/js-fast-remove-array-element + to: /js/s/fast-remove-array-element + status: 301! +- from: /articles/s/js-frequency-map-data-structure + to: /js/s/frequency-map-data-structure + status: 301! +- from: /articles/s/js-immutable-object-proxy + to: /js/s/immutable-object-proxy + status: 301! +- from: /articles/s/js-last-element-of-array + to: /js/s/last-element-of-array + status: 301! +- from: /articles/s/js-locale-sensitive-string-truncation + to: /js/s/locale-sensitive-string-truncation + status: 301! +- from: /articles/s/js-map-vs-object + to: /js/s/map-vs-object + status: 301! +- from: /articles/s/js-native-data-structures + to: /js/s/native-data-structures + status: 301! +- from: /articles/s/js-object-freeze-vs-seal + to: /js/s/object-freeze-vs-seal + status: 301! +- from: /articles/s/js-proxy-array-negative-index + to: /js/s/proxy-array-negative-index + status: 301! +- from: /articles/s/js-proxy-introduction + to: /js/s/proxy-introduction + status: 301! +- from: /articles/s/js-remove-array-duplicates + to: /js/s/remove-array-duplicates + status: 301! +- from: /articles/s/js-remove-element-from-array + to: /js/s/remove-element-from-array + status: 301! +- from: /articles/s/js-remove-trailing-zeros + to: /js/s/remove-trailing-zeros + status: 301! +- from: /articles/s/js-replace-all-occurences-of-string + to: /js/s/replace-all-occurences-of-string + status: 301! +- from: /articles/s/js-spread-operator-tricks + to: /js/s/spread-operator-tricks + status: 301! +- from: /articles/s/js-static-instance-methods + to: /js/s/static-instance-methods + status: 301! +- from: /articles/s/js-textcontent-or-innertext + to: /js/s/textcontent-or-innertext + status: 301! +- from: /articles/s/js-timeout-interval-delay + to: /js/s/timeout-interval-delay + status: 301! +- from: /articles/s/js-typecheck-array + to: /js/s/typecheck-array + status: 301! +- from: /articles/s/js-typecheck-proxy + to: /js/s/typecheck-proxy + status: 301! +- from: /articles/s/js-window-location-cheatsheet + to: /js/s/window-location-cheatsheet + status: 301! +- from: /articles/s/python-bare-except + to: /python/s/bare-except + status: 301! +- from: /articles/s/python-dict-getkey-vs-dictkey + to: /python/s/dict-getkey-vs-dictkey + status: 301! +- from: /articles/s/python-empty-list + to: /python/s/empty-list + status: 301! +- from: /articles/s/python-file-close + to: /python/s/file-close + status: 301! +- from: /articles/s/python-fstrings-str-format + to: /python/s/fstrings-str-format + status: 301! +- from: /articles/s/python-identity-equality + to: /python/s/identity-equality + status: 301! +- from: /articles/s/python-lists-tuples + to: /python/s/lists-tuples + status: 301! +- from: /articles/s/python-lowercase + to: /python/s/lowercase + status: 301! +- from: /articles/s/python-mutable-default-arguments + to: /python/s/mutable-default-arguments + status: 301! +- from: /articles/s/python-named-tuples + to: /python/s/named-tuples + status: 301! +- from: /articles/s/python-slice-assignment + to: /python/s/slice-assignment + status: 301! +- from: /articles/s/python-slice-notation + to: /python/s/slice-notation + status: 301! +- from: /articles/s/python-sort-dictionary-tuple-key + to: /python/s/sort-dictionary-tuple-key + status: 301! +- from: /articles/s/python-sortedlist-vs-list-sort + to: /python/s/sortedlist-vs-list-sort + status: 301! +- from: /articles/s/python-string-is-empty + to: /python/s/string-is-empty + status: 301! +- from: /articles/s/python-swap-variables + to: /python/s/swap-variables + status: 301! +- from: /articles/s/python-trim-whitespace + to: /python/s/trim-whitespace + status: 301! +- from: /articles/s/react-conditional-classname + to: /react/s/conditional-classname + status: 301! +- from: /articles/s/react-proptypes-objectof-vs-shape + to: /react/s/proptypes-objectof-vs-shape + status: 301! +- from: /articles/s/react-redux-readable-reducers + to: /react/s/redux-readable-reducers + status: 301! +- from: /articles/s/react-rendering-basics + to: /react/s/rendering-basics + status: 301! +- from: /articles/s/react-rendering-optimization + to: /react/s/rendering-optimization + status: 301! +- from: /articles/s/react-rendering-state + to: /react/s/rendering-state + status: 301! +- from: /articles/s/react-selected-option + to: /react/s/selected-option + status: 301! +- from: /articles/s/react-use-effect-primitive-dependencies + to: /react/s/use-effect-primitive-dependencies + status: 301! +- from: /articles/s/react-use-interval-explained + to: /react/s/use-interval-explained + status: 301! +- from: /articles/s/react-use-state-with-label + to: /react/s/use-state-with-label + status: 301! +- from: /articles/s/css-centering + to: /css/s/centering + status: 301! +- from: /articles/s/css-clamp + to: /css/s/clamp + status: 301! +- from: /articles/s/css-code-reviews + to: /css/s/code-reviews + status: 301! +- from: /articles/s/css-current-color + to: /css/s/current-color + status: 301! +- from: /articles/s/css-easing-variables + to: /css/s/easing-variables + status: 301! +- from: /articles/s/css-footer-at-the-bottom + to: /css/s/footer-at-the-bottom + status: 301! +- from: /articles/s/css-inherited-properties-cheatsheet + to: /css/s/inherited-properties-cheatsheet + status: 301! +- from: /articles/s/css-nested-border-radius + to: /css/s/nested-border-radius + status: 301! +- from: /articles/s/css-print-stylesheet + to: /css/s/print-stylesheet + status: 301! +- from: /articles/s/css-pseudo-classes + to: /css/s/pseudo-classes + status: 301! +- from: /articles/s/css-reset + to: /css/s/reset + status: 301! +- from: /articles/s/css-root-vs-html + to: /css/s/root-vs-html + status: 301! +- from: /articles/s/css-select-any-link + to: /css/s/select-any-link + status: 301! +- from: /articles/s/css-style-default-links + to: /css/s/style-default-links + status: 301! +- from: /articles/s/css-unitless-line-height + to: /css/s/unitless-line-height + status: 301! +- from: /articles/s/css-units-cheatsheet + to: /css/s/units-cheatsheet + status: 301! +- from: /articles/s/css-variables + to: /css/s/variables + status: 301! +- from: /articles/s/10-vs-code-extensions-for-js-developers + to: /js/s/10-vs-code-extensions-for-js-developers + status: 301! +- from: /articles/s/25-css-gradients + to: /css/s/25-css-gradients + status: 301! +- from: /articles/s/4-javascript-array-methods + to: /js/s/4-array-methods + status: 301! +- from: /articles/s/6-javascript-regexp-tricks + to: /js/s/6-regexp-tricks + status: 301! +- from: /articles/s/6-python-f-strings-tips + to: /python/s/6-f-strings-tips + status: 301! +- from: /articles/s/async-javascript-cheatsheet + to: /js/s/async-cheatsheet + status: 301! +- from: /articles/s/big-o-cheatsheet + to: /js/s/big-o-cheatsheet + status: 301! +- from: /articles/s/breaking-react + to: /react/s/breaking-react + status: 301! +- from: /articles/s/code-anatomy-chaining-reduce-for-loop + to: /js/s/code-anatomy-chaining-reduce-for-loop + status: 301! +- from: /articles/s/code-anatomy-optimizing-recursion + to: /js/s/code-anatomy-optimizing-recursion + status: 301! +- from: /articles/s/code-anatomy-performant-python + to: /python/s/code-anatomy-performant-python + status: 301! +- from: /articles/s/common-regexp-cheatsheet + to: /js/s/common-regexp-cheatsheet + status: 301! +- from: /articles/s/console-log-cheatsheet + to: /js/s/console-log-cheatsheet + status: 301! +- from: /articles/s/cookies-local-storage-session + to: /js/s/cookies-local-storage-session + status: 301! +- from: /articles/s/copy-text-to-clipboard-with-javascript + to: /js/s/copy-text-to-clipboard + status: 301! +- from: /articles/s/cors-explained + to: /js/s/cors-explained + status: 301! +- from: /articles/s/detect-caps-lock-is-on + to: /js/s/detect-caps-lock-is-on + status: 301! +- from: /articles/s/eslint-refactor-for-in + to: /js/s/eslint-refactor-for-in + status: 301! +- from: /articles/s/flexbox-cheatsheet + to: /css/s/flexbox-cheatsheet + status: 301! +- from: /articles/s/git-aliases + to: /git/s/aliases + status: 301! +- from: /articles/s/git-commit-different-date + to: /git/s/commit-different-date + status: 301! +- from: /articles/s/github-co-authors + to: /git/s/github-co-authors + status: 301! +- from: /articles/s/jest-mock-global-methods + to: /js/s/jest-mock-global-methods + status: 301! +- from: /articles/s/nodejs-chrome-debugging + to: /js/s/nodejs-chrome-debugging + status: 301! +- from: /articles/s/nodejs-static-file-server + to: /js/s/nodejs-static-file-server + status: 301! +- from: /articles/s/nodejs-test-module-introduction + to: /js/s/nodejs-test-module-introduction + status: 301! +- from: /articles/s/passive-scroll-listener-performance + to: /js/s/passive-scroll-listener-performance + status: 301! +- from: /articles/s/perfect-css-transition-duration + to: /css/s/perfect-transition-duration + status: 301! +- from: /articles/s/regexp-cheatsheet + to: /js/s/regexp-cheatsheet + status: 301! +- from: /articles/s/select-focused-dom-element + to: /js/s/select-focused-dom-element + status: 301! +- from: /articles/s/setup-python3-pip3-as-default + to: /python/s/setup-python3-pip3-as-default + status: 301! +- from: /articles/s/testing-async-react-components + to: /react/s/testing-async-components + status: 301! +- from: /articles/s/testing-react-portals + to: /react/s/testing-portals + status: 301! +- from: /articles/s/testing-redux-connected-components + to: /react/s/testing-redux-connected-components + status: 301! +- from: /articles/s/testing-stateful-ui-components + to: /react/s/testing-stateful-ui-components + status: 301! +- from: /articles/s/the-case-for-javascript-trailing-commas + to: /js/s/the-case-for-trailing-commas + status: 301! +- from: /articles/s/typographic-scale-basics + to: /css/s/typographic-scale-basics + status: 301! +- from: /articles/s/5-tips-for-better-pull-requests + to: /git/s/5-tips-for-better-pull-requests + status: 301! +- from: /articles/s/responsive-favicon-dark-mode + to: /css/s/responsive-favicon-dark-mode + status: 301! +- from: /js/s/remove-class + to: /js/s/remove-class-from-html-element + status: 301! +- from: /js/s/add-class + to: /js/s/add-class-to-html-element + status: 301! +- from: /js/s/has-class + to: /js/s/html-element-has-class + status: 301! +- from: /js/s/toggle-class + to: /js/s/toggle-html-element-class + status: 301! +- from: /js/s/add-styles + to: /js/s/add-styles-to-html-element + status: 301! +- from: /js/s/set-style + to: /js/s/set-style-for-html-element + status: 301! +- from: /js/s/on + to: /js/s/add-event-listener + status: 301! +- from: /js/s/add-multiple-events + to: /js/s/add-multiple-event-listeners + status: 301! +- from: /js/s/off + to: /js/s/remove-event-listener + status: 301! +- from: /js/s/remove-event-listener-all + to: /js/s/remove-multiple-event-listeners + status: 301! +- from: /js/s/hide + to: /js/s/hide-html-elements + status: 301! +- from: /js/s/show + to: /js/s/show-html-elements + status: 301! +- from: /js/s/atob + to: /js/s/decode-base64-encoded-string + status: 301! +- from: /js/s/btoa + to: /js/s/encode-string-to-base64 + status: 301! +- from: /js/s/aperture + to: /js/s/consecutive-element-subarrays + status: 301! +- from: /js/s/accumulate + to: /js/s/partial-sum-array + status: 301! +- from: /js/s/alphabetical + to: /js/s/sort-array-alphabetically + status: 301! +- from: /js/s/chain-async + to: /js/s/chain-async-functions + status: 301! +- from: /js/s/all + to: /js/s/all-array-elements-are-truthy + status: 301! +- from: /js/s/any + to: /js/s/any-array-element-is-truthy + status: 301! +- from: /js/s/none + to: /js/s/all-array-elements-are-falsy + status: 301! +- from: /js/s/flatten + to: /js/s/flatten-array + status: 301! +- from: /js/s/ary + to: /js/s/function-arity + status: 301! +- from: /js/s/unary + to: /js/s/unary-function-arity + status: 301! +- from: /js/s/binary + to: /js/s/binary-function-arity + status: 301! +- from: /js/s/compact + to: /js/s/compact-array + status: 301! +- from: /js/s/complement + to: /js/s/logical-complement + status: 301! +- from: /js/s/compose + to: /js/s/compose-functions + status: 301! +- from: /js/s/compose-right + to: /js/s/reverse-compose-functions + status: 301! +- from: /js/s/create-dir-if-not-exists + to: /js/s/create-directory-if-not-exists + status: 301! +- from: /js/s/digitize + to: /js/s/digitize-number + status: 301! +- from: /js/s/distance + to: /js/s/distance-between-two-points + status: 301! +- from: /js/s/includes-all + to: /js/s/array-includes-all-values + status: 301! +- from: /js/s/includes-any + to: /js/s/array-includes-any-values + status: 301! +- from: /js/s/has-many + to: /js/s/array-has-many-matches + status: 301! +- from: /js/s/has-one + to: /js/s/array-has-only-one-match + status: 301! +- from: /js/s/zip + to: /js/s/group-array-elements + status: 301! +- from: /js/s/unzip + to: /js/s/ungroup-array-elements + status: 301! +- from: /js/s/zip-with + to: /js/s/group-array-elements-based-on-function + status: 301! +- from: /js/s/unzip-with + to: /js/s/ungroup-array-elements-based-on-function + status: 301! +- from: /js/s/zip-object + to: /js/s/group-array-into-object + status: 301! +- from: /js/s/once + to: /js/s/call-function-once + status: 301! +- from: /js/s/pad + to: /js/s/pad-string + status: 301! +- from: /js/s/frozen-set + to: /js/s/freeze-set-object + status: 301! +- from: /js/s/permutations + to: /js/s/array-permutations + status: 301! +- from: /js/s/prefix + to: /js/s/prefix-css-property + status: 301! +- from: /js/s/ranking + to: /js/s/array-ranking + status: 301! +- from: /js/s/redirect + to: /js/s/redirect-to-url + status: 301! +- from: /js/s/require-uncached + to: /js/s/uncached-module-require + status: 301! +- from: /js/s/attempt + to: /js/s/attempt-invoking-function + status: 301! +- from: /js/s/bind + to: /js/s/bind-function-context + status: 301! +- from: /js/s/bind-key + to: /js/s/bind-object-method + status: 301! +- from: /js/s/call + to: /js/s/call-functions-with-context + status: 301! +- from: /js/s/chunk-into-n + to: /js/s/split-array-into-n-chunks + status: 301! +- from: /js/s/chunk + to: /js/s/split-into-chunks + status: 301! +- from: /js/s/chunkify + to: /js/s/chunk-iterable + status: 301! +- from: /js/s/initialize-array-with-range-right + to: /js/s/initialize-array-with-reversed-range + status: 301! +- from: /js/s/initialize-nd-array + to: /js/s/initialize-n-dimensional-array + status: 301! +- from: /js/s/initialize2-d-array + to: /js/s/initialize-2d-array + status: 301! +- from: /js/s/untildify + to: /js/s/convert-to-absolute-path + status: 301! +- from: /js/s/curry + to: /js/s/curry-function + status: 301! +- from: /js/s/uncurry + to: /js/s/uncurry-function + status: 301! +- from: /js/s/functions + to: /js/s/function-names + status: 301! +- from: /js/s/get-cmd-args + to: /js/s/command-line-arguments + status: 301! +- from: /js/s/flags + to: /js/s/to-flags-object + status: 301! +- from: /js/s/frequencies + to: /js/s/value-frequencies + status: 301! +- from: /js/s/has-duplicates + to: /js/s/array-has-duplicates + status: 301! +- from: /js/s/head + to: /js/s/array-head + status: 301! +- from: /js/s/tail + to: /js/s/array-tail + status: 301! +- from: /js/s/jso-nto-csv + to: /js/s/json-to-csv + status: 301! +- from: /js/s/get-protocol + to: /js/s/current-page-protocol + status: 301! +- from: /js/s/get-type + to: /js/s/type-of-value + status: 301! +- from: /js/s/memoize + to: /js/s/memoize-function + status: 301! +- from: /js/s/negate + to: /js/s/negate-predicate + status: 301! +- from: /js/s/nest + to: /js/s/nest-objects + status: 301! +- from: /js/s/juxt + to: /js/s/juxtapose-functions + status: 301! +- from: /js/s/nth-root + to: /js/s/nth-number-root + status: 301! +- from: /js/s/coalesce-factory + to: /js/s/argument-coalescing-factory + status: 301! +- from: /js/s/coalesce + to: /js/s/argument-coalescing + status: 301! +- from: /js/s/words + to: /js/s/string-to-words + status: 301! +- from: /js/s/x-prod + to: /js/s/cross-product-of-arrays + status: 301! +- from: /js/s/throttle + to: /js/s/throttle-function + status: 301! +- from: /js/s/defer + to: /js/s/defer-function + status: 301! +- from: /js/s/delay + to: /js/s/delay-function + status: 301! +- from: /js/s/debounce + to: /js/s/debounce-function + status: 301! +- from: /js/s/bind-all + to: /js/s/bind-object-methods + status: 301! +- from: /js/s/copy-sign + to: /js/s/copy-sign-to-number + status: 301! +- from: /js/s/deep-clone + to: /js/s/deep-clone-object + status: 301! +- from: /js/s/shallow-clone + to: /js/s/shallow-clone-object + status: 301! +- from: /js/s/tomorrow + to: /js/s/date-tomorrow + status: 301! +- from: /js/s/yesterday + to: /js/s/date-yesterday + status: 301! +- from: /js/s/get-months-diff-between-dates + to: /js/s/date-difference-in-months + status: 301! +- from: /js/s/get-days-diff-between-dates + to: /js/s/date-difference-in-days + status: 301! +- from: /js/s/count-week-days-between + to: /js/s/date-difference-in-weekdays + status: 301! +- from: /js/s/get-hours-diff-between-dates + to: /js/s/date-difference-in-hours + status: 301! +- from: /js/s/get-minutes-diff-between-dates + to: /js/s/date-difference-in-minutes + status: 301! +- from: /js/s/get-seconds-diff-between-dates + to: /js/s/date-difference-in-seconds + status: 301! +- from: /js/s/is-weekday + to: /js/s/date-is-weekday + status: 301! +- from: /js/s/is-weekend + to: /js/s/date-is-weekend + status: 301! +- from: /js/s/from-timestamp + to: /js/s/date-from-unix-timestamp + status: 301! +- from: /js/s/get-timestamp + to: /js/s/unix-timestamp-from-date + status: 301! +- from: /js/s/is-after-date + to: /js/s/date-is-after-another-date + status: 301! +- from: /js/s/is-before-date + to: /js/s/date-is-before-another-date + status: 301! +- from: /js/s/is-between-dates + to: /js/s/date-is-between-two-dates + status: 301! +- from: /js/s/is-same-date + to: /js/s/date-is-same-as-another-date + status: 301! +- from: /js/s/is-iso-string + to: /js/s/is-iso-formatted-date + status: 301! +- from: /js/s/to-iso-string-with-timezone + to: /js/s/iso-format-date-with-timezone + status: 301! +- from: /js/s/add-week-days + to: /js/s/add-weekdays-to-date + status: 301! +- from: /js/s/defaults + to: /js/s/default-values-for-object-properties + status: 301! +- from: /js/s/is + to: /js/s/value-is-of-type + status: 301! +- from: /js/s/log-base + to: /js/s/logarithm-in-base + status: 301! +- from: /js/s/is-disjoint + to: /js/s/disjointed-iterables + status: 301! +- from: /js/s/is-empty + to: /js/s/collection-is-empty + status: 301! +- from: /js/s/most-frequent + to: /js/s/most-frequent-array-element + status: 301! +- from: /js/s/most-performant + to: /js/s/most-performant-function + status: 301! +- from: /js/s/round + to: /js/s/round-number-to-precision + status: 301! +- from: /js/s/check-prop + to: /js/s/check-property + status: 301! +- from: /js/s/pretty-bytes + to: /js/s/pretty-print-number-of-bytes + status: 301! +- from: /js/s/for-own-right + to: /js/s/reverse-iterate-object-properties + status: 301! +- from: /js/s/for-own + to: /js/s/iterate-object-properties + status: 301! +- from: /js/s/has-flags + to: /js/s/process-arguments-have-flags + status: 301! +- from: /js/s/has-key + to: /js/s/object-has-key + status: 301! +- from: /js/s/has-value + to: /js/s/object-has-value + status: 301! +- from: /js/s/have-same-contents + to: /js/s/arrays-have-same-contents + status: 301! +- from: /js/s/shank + to: /js/s/remove-elements-from-array + status: 301! +- from: /js/s/remove-element + to: /js/s/remove-dom-element + status: 301! +- from: /js/s/render-element + to: /js/s/render-dom-element + status: 301! +- from: /js/s/transpose + to: /js/s/transpose-matrix + status: 301! +- from: /js/s/nth-arg + to: /js/s/nth-argument + status: 301! +- from: /js/s/random-alpha-numeric + to: /js/s/random-alphanumeric + status: 301! +- from: /js/s/random-int-array-in-range + to: /js/s/random-integer-array-in-range + status: 301! +- from: /js/s/sdbm + to: /js/s/hash-string-into-number + status: 301! +- from: /js/s/slugify + to: /js/s/string-to-slug + status: 301! +- from: /js/s/sample-size + to: /js/s/multiple-array-samples + status: 301! +- from: /js/s/sample + to: /js/s/array-sample + status: 301! +- from: /js/s/partition-by + to: /js/s/partition-array + status: 301! +- from: /js/s/partition + to: /js/s/partition-array-in-two + status: 301! +- from: /js/s/url-join + to: /js/s/join-url-segments + status: 301! +- from: /js/s/either + to: /js/s/function-logical-or + status: 301! +- from: /js/s/in-range + to: /js/s/number-in-range + status: 301! +- from: /js/s/partial-right + to: /js/s/append-function-arguments + status: 301! +- from: /js/s/partial + to: /js/s/prepend-function-arguments + status: 301! +- from: /js/s/times + to: /js/s/iterate-n-times + status: 301! +- from: /js/s/to-char-array + to: /js/s/to-character-array + status: 301! +- from: /js/s/to-currency + to: /js/s/number-to-currency + status: 301! +- from: /js/s/to-decimal-mark + to: /js/s/number-to-decimal-mark + status: 301! +- from: /js/s/to-hash + to: /js/s/iterable-to-hash + status: 301! +- from: /js/s/to-identity-object + to: /js/s/array-to-identity-object + status: 301! +- from: /js/s/to-optional-fixed + to: /js/s/number-to-optional-fixed + status: 301! +- from: /js/s/prod + to: /js/s/product-of-numeric-values + status: 301! +- from: /js/s/toggle-element + to: /js/s/toggle-array-element + status: 301! +- from: /js/s/sub-set + to: /js/s/subset + status: 301! +- from: /js/s/super-set + to: /js/s/superset + status: 301! +- from: /js/s/drop-right-while + to: /js/s/drop-array-elements-from-right-while + status: 301! +- from: /js/s/drop-right + to: /js/s/drop-array-elements-from-right + status: 301! +- from: /js/s/drop-while + to: /js/s/drop-array-elements-from-left-while + status: 301! +- from: /js/s/drop + to: /js/s/drop-array-elements-from-left + status: 301! +- from: /js/s/take-right-until + to: /js/s/take-array-elements-from-end-until + status: 301! +- from: /js/s/take-right-while + to: /js/s/take-array-elements-from-end-while + status: 301! +- from: /js/s/take-right + to: /js/s/take-array-elements-from-end + status: 301! +- from: /js/s/take-until + to: /js/s/take-array-elements-until + status: 301! +- from: /js/s/take-while + to: /js/s/take-array-elements-while + status: 301! +- from: /js/s/take + to: /js/s/take-array-elements + status: 301! +- from: /js/s/pluck + to: /js/s/pluck-values-from-object-array + status: 301! +- from: /js/s/sum + to: /js/s/sum-array + status: 301! +- from: /js/s/is-sorted + to: /js/s/array-is-sorted + status: 301! +- from: /js/s/combine + to: /js/s/combine-object-arrays + status: 301! +- from: /js/s/compact-join + to: /js/s/compact-join-array + status: 301! +- from: /js/s/group-by + to: /js/s/function-based-array-element-grouping + status: 301! +- from: /js/s/join + to: /js/s/join-array-into-string + status: 301! +- from: /js/s/longest-item + to: /js/s/longest-array-element + status: 301! +- from: /js/s/offset + to: /js/s/offset-array-elements + status: 301! +- from: /js/s/average + to: /js/s/average-of-numbers + status: 301! +- from: /js/s/closest + to: /js/s/closest-numeric-match + status: 301! +- from: /js/s/converge + to: /js/s/converge-branching-functions + status: 301! +- from: /js/s/over + to: /js/s/invoke-functions-on-arguments + status: 301! +- from: /js/s/percentile + to: /js/s/percentile-of-matches + status: 301! +- from: /js/s/similarity + to: /js/s/array-similarity + status: 301! +- from: /js/s/difference + to: /js/s/array-difference + status: 301! +- from: /js/s/union + to: /js/s/array-union + status: 301! +- from: /js/s/intersection + to: /js/s/array-intersection + status: 301! +- from: /js/s/symmetric-difference + to: /js/s/array-symmetric-difference + status: 301! +- from: /js/s/union-by + to: /js/s/mapped-array-union + status: 301! +- from: /js/s/difference-by + to: /js/s/mapped-array-difference + status: 301! +- from: /js/s/intersection-by + to: /js/s/mapped-array-intersection + status: 301! +- from: /js/s/symmetric-difference-by + to: /js/s/mapped-array-symmetric-difference + status: 301! +- from: /js/s/union-with + to: /js/s/function-based-array-union + status: 301! +- from: /js/s/difference-with + to: /js/s/function-based-array-difference + status: 301! +- from: /js/s/intersection-with + to: /js/s/function-based-array-intersection + status: 301! +- from: /js/s/symmetric-difference-with + to: /js/s/function-based-array-symmetric-difference + status: 301! +- from: /js/s/unique-symmetric-difference + to: /js/s/array-unique-symmetric-difference + status: 301! +- from: /js/s/remove + to: /js/s/remove-matching-array-elements + status: 301! +- from: /js/s/reject + to: /js/s/reject-non-matching-values + status: 301! +- from: /js/s/dig + to: /js/s/get-nested-value-in-object + status: 301! +- from: /js/s/when + to: /js/s/conditionally-apply-function + status: 301! +- from: /js/s/rearg + to: /js/s/rearrange-function-arguments + status: 301! +- from: /js/s/omit-by + to: /js/s/omit-matching-object-keys + status: 301! +- from: /js/s/pick-by + to: /js/s/pick-matching-object-keys + status: 301! +- from: /js/s/omit + to: /js/s/omit-object-keys + status: 301! +- from: /js/s/pick + to: /js/s/pick-object-keys + status: 301! +- from: /js/s/deep-map-keys + to: /js/s/deep-map-object-keys + status: 301! +- from: /js/s/map-keys + to: /js/s/map-object-keys + status: 301! +- from: /js/s/rename-keys + to: /js/s/rename-object-keys + status: 301! +- from: /js/s/symbolize-keys + to: /js/s/symbolize-object-keys + status: 301! +- from: /js/s/assert-valid-keys + to: /js/s/assert-object-key-validity + status: 301! +- from: /js/s/deep-merge + to: /js/s/deep-merge-objects + status: 301! +- from: /js/s/merge + to: /js/s/merge-objects + status: 301! +- from: /js/s/transform + to: /js/s/transform-object + status: 301! +- from: /js/s/unwind + to: /js/s/unwind-object + status: 301! +- from: /js/s/walk-through + to: /js/s/walk-through-object + status: 301! +- from: /js/s/equals + to: /js/s/deep-equality-comparison + status: 301! +- from: /js/s/deep-get + to: /js/s/deep-get-object-value + status: 301! +- from: /js/s/get + to: /js/s/get-nested-object-value + status: 301! +- from: /js/s/index-on + to: /js/s/array-to-object-based-on-key + status: 301! +- from: /js/s/matches + to: /js/s/match-object-properties + status: 301! +- from: /js/s/over-args + to: /js/s/transform-function-arguments + status: 301! +- from: /js/s/size + to: /js/s/size-of-array-object-or-string + status: 301! +- from: /js/s/order-by + to: /js/s/order-object-array + status: 301! +- from: /js/s/order-with + to: /js/s/order-object-array-based-on-property + status: 301! +- from: /js/s/is-contained-in + to: /js/s/array-is-contained-in + status: 301! +- from: /js/s/collect-into + to: /js/s/convert-function-to-variadic + status: 301! +- from: /js/s/spread-over + to: /js/s/convert-function-from-variadic + status: 301! +- from: /js/s/count-by + to: /js/s/count-grouped-elements + status: 301! +- from: /js/s/reduced-filter + to: /js/s/filter-matching-and-unspecified-values + status: 301! +- from: /js/s/reduce-which + to: /js/s/function-based-array-min-max + status: 301! +- from: /js/s/sum-power + to: /js/s/sum-powers-in-range + status: 301! +- from: /js/s/sum-n + to: /js/s/sum-of-numbers-until-n + status: 301! +- from: /js/s/split-lines + to: /js/s/split-into-lines + status: 301! +- from: /js/s/every-nth + to: /js/s/every-nth-element + status: 301! +- from: /js/s/first-n + to: /js/s/first-n-elements + status: 301! +- from: /js/s/last-n + to: /js/s/last-n-elements + status: 301! +- from: /js/s/find-first-n + to: /js/s/find-first-n-matches + status: 301! +- from: /js/s/find-last-n + to: /js/s/find-last-n-matches + status: 301! +- from: /js/s/max-by + to: /js/s/function-based-array-max + status: 301! +- from: /js/s/min-by + to: /js/s/function-based-array-min + status: 301! +- from: /js/s/max-n + to: /js/s/n-max-elements + status: 301! +- from: /js/s/min-n + to: /js/s/n-min-elements + status: 301! +- from: /js/s/index-of-all + to: /js/s/index-of-all-matches + status: 301! +- from: /js/s/last + to: /js/s/last-array-element + status: 301! +- from: /js/s/flip + to: /js/s/flip-function-arguments + status: 301! +- from: /js/s/left-substr-generator + to: /js/s/left-substring-generator + status: 301! +- from: /js/s/right-substr-generator + to: /js/s/right-substring-generator + status: 301! +- from: /js/s/intersects + to: /js/s/arrays-intersect + status: 301! +- from: /js/s/replace-or-append + to: /js/s/replace-or-append-array-value + status: 301! +- from: /js/s/resolve-after + to: /js/s/resolve-promise-after-amount-of-time + status: 301! +- from: /js/s/run-async + to: /js/s/run-function-asyc + status: 301! +- from: /js/s/sorted-index-by + to: /js/s/function-based-sorted-array-insertion-index + status: 301! +- from: /js/s/sorted-index + to: /js/s/insertion-index-in-sorted-array + status: 301! +- from: /js/s/sorted-last-index-by + to: /js/s/function-based-sorted-array-last-insertion-index + status: 301! +- from: /js/s/sorted-last-index + to: /js/s/last-insertion-index-in-sorted-array + status: 301! +- from: /js/s/map-consecutive + to: /js/s/map-consecutive-elements + status: 301! +- from: /js/s/map-num-range + to: /js/s/map-number-to-range + status: 301! +- from: /js/s/insert-after + to: /js/s/insert-html-string-after-element + status: 301! +- from: /js/s/insert-before + to: /js/s/insert-html-string-before-element + status: 301! +- from: /js/s/initial + to: /js/s/array-without-last-element + status: 301! +- from: /js/s/deep-flatten + to: /js/s/deep-flatten-array + status: 301! +- from: /js/s/bifurcate-by + to: /js/s/bifurcate-array-based-on-function + status: 301! +- from: /js/s/bifurcate + to: /js/s/bifurcate-array-based-on-values + status: 301! +- from: /js/s/map-object + to: /js/s/map-array-to-object + status: 301! +- from: /js/s/map-to-object + to: /js/s/convert-map-to-object + status: 301! +- from: /js/s/object-to-map + to: /js/s/convert-object-to-map + status: 301! +- from: /js/s/matches-with + to: /js/s/function-based-object-property-matches + status: 301! +- from: /js/s/find-key + to: /js/s/find-first-matching-key + status: 301! +- from: /js/s/find-keys + to: /js/s/find-matching-keys + status: 301! +- from: /js/s/find-last-index + to: /js/s/find-last-matching-index + status: 301! +- from: /js/s/find-last-key + to: /js/s/find-last-matching-key + status: 301! +- from: /js/s/find-last + to: /js/s/find-last-matching-value + status: 301! +- from: /js/s/insert-at + to: /js/s/insert-value-at-array-index + status: 301! +- from: /js/s/all-equal + to: /js/s/array-element-equality + status: 301! +- from: /js/s/all-equal-by + to: /js/s/function-based-array-element-equality + status: 301! +- from: /js/s/all-unique + to: /js/s/array-element-uniqueness + status: 301! +- from: /js/s/all-unique-by + to: /js/s/function-based-array-element-uniqueness + status: 301! +- from: /js/s/filter-non-unique-by + to: /js/s/function-based-array-non-uniqueness-filter + status: 301! +- from: /js/s/filter-unique-by + to: /js/s/function-based-array-uniqueness-filter + status: 301! +- from: /js/s/index-by + to: /js/s/function-based-array-indexing + status: 301! +- from: /js/s/unique-elements-by-right + to: /js/s/function-based-reversed-array-unique-values + status: 301! +- from: /js/s/unique-elements-by + to: /js/s/function-based-array-unique-values + status: 301! +- from: /js/s/average-by + to: /js/s/mapped-array-average + status: 301! +- from: /js/s/filter-non-unique + to: /js/s/filter-non-unique-array-values + status: 301! +- from: /js/s/filter-unique + to: /js/s/filter-unique-array-values + status: 301! +- from: /js/s/find-consecutive + to: /js/s/arrays-of-consecutive-elements + status: 301! +- from: /js/s/pull-at-index + to: /js/s/pull-values-from-array-at-index + status: 301! +- from: /js/s/pull-at-value + to: /js/s/pull-matching-values-from-array + status: 301! +- from: /js/s/pull-by + to: /js/s/pull-values-from-array-based-on-function + status: 301! +- from: /js/s/pull + to: /js/s/pull-values-from-array + status: 301! +- from: /js/s/reduce-successive + to: /js/s/successive-values-array + status: 301! +- from: /js/s/replace-last + to: /js/s/replace-last-occurrence + status: 301! +- from: /js/s/sum-by + to: /js/s/mapped-array-sum + status: 301! +- from: /js/s/unfold + to: /js/s/unfold-array + status: 301! +- from: /js/s/unique-elements + to: /js/s/unique-elements-in-array + status: 301! +- from: /js/s/without + to: /js/s/filter-out-matching-array-elements + status: 301! +- from: /articles/s/8-tips-for-accessible-websites + to: /html/s/8-tips-for-accessible-websites + status: 301! +- from: /articles/s/custom-file-download-names + to: /html/s/custom-file-download-names + status: 301! +- from: /articles/s/html-head-icons + to: /html/s/head-icons + status: 301! +- from: /articles/s/html-head-links + to: /html/s/head-links + status: 301! +- from: /articles/s/html-head-social-tags + to: /html/s/head-social-tags + status: 301! +- from: /articles/s/html-recommended-minimum-head + to: /html/s/recommended-minimum-head + status: 301! +- from: /articles/s/lazy-loading-images + to: /html/s/lazy-loading-images + status: 301! +- from: /articles/s/password-autocomplete-suggestion + to: /html/s/password-autocomplete-suggestion + status: 301! +- from: /articles/s/prefetching-resources + to: /html/s/prefetching-resources + status: 301! +- from: /articles/s/resource-preloading-cheatsheet + to: /html/s/resource-preloading-cheatsheet + status: 301! +- from: /articles/s/reversed-list + to: /html/s/reversed-list + status: 301! +- from: /articles/s/zooming-accessibility-tips + to: /html/s/zooming-accessibility-tips + status: 301! +- from: /articles/s/javascript-target-blank + to: /html/s/target-blank + status: 301! +- from: /articles/s/js-async-defer + to: /html/s/async-defer + status: 301! +- from: /git/s/view-commits-summary-no-merges + to: /git/s/view-commits-summary + status: 301! +- from: /git/s/update-commit-message + to: /git/s/update-commit-message-or-content + status: 301! +- from: /git/s/update-commit-contents + to: /git/s/update-commit-message-or-content + status: 301! +- from: /git/s/branches-not-containing-commit + to: /git/s/branches-containing-commit + status: 301! +- from: /git/s/commit-amend-author + to: /git/s/set-or-amend-commit-author + status: 301! +- from: /git/s/commit-set-author + to: /git/s/set-or-amend-commit-author + status: 301! +- from: /articles/s/git-fast-forward + to: /git/s/fast-forward-merge + status: 301! +- from: /git/s/fast-forward + to: /git/s/fast-forward-merge + status: 301! +- from: /git/s/merge-branch + to: /git/s/merge-branch-merge-commit + status: 301! +- from: /git/s/rewind-n-commits + to: /git/s/rewind-to-commit + status: 301! +- from: /git/s/undo-commit + to: /git/s/undo-commit-without-rewriting-history + status: 301! +- from: /git/s/undo-last-commit + to: /git/s/undo-commit-without-rewriting-history + status: 301!