diff --git a/.codespellrc b/.codespellrc
new file mode 100644
index 0000000..7de6e1c
--- /dev/null
+++ b/.codespellrc
@@ -0,0 +1,6 @@
+[codespell]
+# Ref: https://github.com/codespell-project/codespell#using-a-config-file
+skip = .git*,*.svg,*.lock,*.css,*.min.*,.codespellrc
+check-hidden = true
+# ignore-regex =
+ignore-words-list = bu,ot
diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml
new file mode 100644
index 0000000..b026c85
--- /dev/null
+++ b/.github/workflows/codespell.yml
@@ -0,0 +1,25 @@
+# Codespell configuration is within .codespellrc
+---
+name: Codespell
+
+on:
+ push:
+ branches: [master]
+ pull_request:
+ branches: [master]
+
+permissions:
+ contents: read
+
+jobs:
+ codespell:
+ name: Check for spelling errors
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Annotate locations with typos
+ uses: codespell-project/codespell-problem-matcher@v1
+ - name: Codespell
+ uses: codespell-project/actions-codespell@v2
diff --git a/_oldprotocol.md b/_oldprotocol.md
index 48f7bde..dcedaf1 100644
--- a/_oldprotocol.md
+++ b/_oldprotocol.md
@@ -148,7 +148,7 @@ Get an Account Holder's transaction data.
#### Query parameters
- `start-date` - (optional) if given, transactions will be restricted to those on or after this Unix epoch timestamp.
-- `end-date` - (optional) if given, transactions will be retricted to those before (**but not on**) this Unix epoch timestamp
+- `end-date` - (optional) if given, transactions will be restricted to those before (**but not on**) this Unix epoch timestamp
#### Authentication
diff --git a/_templates/protocol.html b/_templates/protocol.html
index 584365b..1149757 100644
--- a/_templates/protocol.html
+++ b/_templates/protocol.html
@@ -223,7 +223,7 @@
{{ anchor('/accounts') }}GET /accounts
The Content-Type of the response is always application/json.
- If no query paramters are included in a request, then all the Account.transactions attributes will be empty lists.
+ If no query parameters are included in a request, then all the Account.transactions attributes will be empty lists.
diff --git a/js/angular.js b/js/angular.js
index 5b431ae..ab92822 100644
--- a/js/angular.js
+++ b/js/angular.js
@@ -177,7 +177,7 @@ function reverseParams(iteratorFn) {
* the number string gets longer over time, and it can also overflow, where as the nextId
* will grow much slower, it is a string, and it will never overflow.
*
- * @returns an unique alpha-numeric string
+ * @returns an unique alphanumeric string
*/
function nextUid() {
var index = uid.length;
@@ -617,7 +617,7 @@ function shallowCopy(src, dst) {
* * Both objects or values are of the same type and all of their properties pass `===` comparison.
* * Both values are NaN. (In JavasScript, NaN == NaN => false. But we consider two NaN as equal)
*
- * During a property comparision, properties of `function` type and properties with names
+ * During a property comparison, properties of `function` type and properties with names
* that begin with `$` are ignored.
*
* Scope and DOMWindow objects are being compared only be identify (`===`).
@@ -824,7 +824,7 @@ function toKeyValue(obj) {
/**
- * We need our custom method because encodeURIComponent is too agressive and doesn't follow
+ * We need our custom method because encodeURIComponent is too aggressive and doesn't follow
* http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path
* segments:
* segment = *pchar
@@ -844,7 +844,7 @@ function encodeUriSegment(val) {
/**
* This method is intended for encoding *key* or *value* parts of query component. We need a custom
- * method becuase encodeURIComponent is too agressive and encodes stuff that doesn't have to be
+ * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be
* encoded per http://tools.ietf.org/html/rfc3986:
* query = *( pchar / "/" / "?" )
* pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
@@ -1469,7 +1469,7 @@ function publishExternalAPI(angular){
* - [val()](http://api.jquery.com/val/)
* - [wrap()](http://api.jquery.com/wrap/)
*
- * ## In addtion to the above, Angular provides additional methods to both jQuery and jQuery lite:
+ * ## In addition to the above, Angular provides additional methods to both jQuery and jQuery lite:
*
* - `controller(name)` - retrieves the controller of the current element or its parent. By default
* retrieves controller associated with the `ngController` directive. If `name` is provided as
@@ -2669,7 +2669,7 @@ function annotate(fn) {
*
* @param {string} name The name of the service to decorate.
* @param {function()} decorator This function will be invoked when the service needs to be
- * instanciated. The function is called using the {@link AUTO.$injector#invoke
+ * instantiated. The function is called using the {@link AUTO.$injector#invoke
* injector.invoke} method and is therefore fully injectable. Local injection arguments:
*
* * `$delegate` - The original service instance, which can be monkey patched, configured,
@@ -3261,12 +3261,12 @@ function Browser(window, document, $log, $sniffer) {
/**
* @name ng.$browser#defer
* @methodOf ng.$browser
- * @param {function()} fn A function, who's execution should be defered.
+ * @param {function()} fn A function, who's execution should be deferred.
* @param {number=} [delay=0] of milliseconds to defer the function execution.
* @returns {*} DeferId that can be used to cancel the task via `$browser.defer.cancel()`.
*
* @description
- * Executes a fn asynchroniously via `setTimeout(fn, delay)`.
+ * Executes a fn asynchronously via `setTimeout(fn, delay)`.
*
* Unlike when calling `setTimeout` directly, in test this function is mocked and instead of using
* `setTimeout` in tests, the fns are queued in an array, which can be programmatically flushed
@@ -3290,10 +3290,10 @@ function Browser(window, document, $log, $sniffer) {
* @methodOf ng.$browser.defer
*
* @description
- * Cancels a defered task identified with `deferId`.
+ * Cancels a deferred task identified with `deferId`.
*
* @param {*} deferId Token returned by the `$browser.defer` function.
- * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfuly canceled.
+ * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully canceled.
*/
self.defer.cancel = function(deferId) {
if (pendingDeferIds[deferId]) {
@@ -4257,8 +4257,8 @@ function $CompileProvider($provide) {
var parentScope = scope.$parent || scope;
- forEach(newIsolateScopeDirective.scope, function(definiton, scopeName) {
- var match = definiton.match(LOCAL_REGEXP) || [],
+ forEach(newIsolateScopeDirective.scope, function(definition, scopeName) {
+ var match = definition.match(LOCAL_REGEXP) || [],
attrName = match[2]|| scopeName,
mode = match[1], // @, =, or &
lastValue,
@@ -4313,7 +4313,7 @@ function $CompileProvider($provide) {
default: {
throw Error('Invalid isolate scope definition for directive ' +
- newIsolateScopeDirective.name + ': ' + definiton);
+ newIsolateScopeDirective.name + ': ' + definition);
}
}
});
@@ -4373,7 +4373,7 @@ function $CompileProvider($provide) {
*
* @param {string} name name of the directive to look up.
* @param {string} location The directive must be found in specific format.
- * String containing any of theses characters:
+ * String containing any of these characters:
*
* * `E`: element name
* * `A': attribute
@@ -6379,7 +6379,7 @@ function setter(obj, path, setValue) {
}
/**
- * Return the value accesible from the object by path. Any undefined traversals are ignored
+ * Return the value accessible from the object by path. Any undefined traversals are ignored
* @param {Object} obj starting object
* @param {string} path path to traverse
* @param {boolean=true} bindFnToScope
@@ -6555,7 +6555,7 @@ function getterFn(path, csp) {
* @returns {function(context, locals)} a function which represents the compiled expression:
*
* * `context` – `{object}` – an object against which any expressions embedded in the strings
- * are evaluated against (tipically a scope object).
+ * are evaluated against (typically a scope object).
* * `locals` – `{object=}` – local variables context object, useful for overriding values in
* `context`.
*
@@ -7444,7 +7444,7 @@ function $RouteProvider(){
}
/**
- * @returns interpolation of the redirect path with the parametrs
+ * @returns interpolation of the redirect path with the parameters
*/
function interpolate(string, params) {
var result = [];
@@ -8155,7 +8155,7 @@ function $RootScopeProvider(){
* Afterwards, the event traverses upwards toward the root scope and calls all registered
* listeners along the way. The event will stop propagating if one of the listeners cancels it.
*
- * Any exception emmited from the {@link ng.$rootScope.Scope#$on listeners} will be passed
+ * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed
* onto the {@link ng.$exceptionHandler $exceptionHandler} service.
*
* @param {string} name Event name to emit.
@@ -8221,7 +8221,7 @@ function $RootScopeProvider(){
* Afterwards, the event propagates to all direct and indirect scopes of the current scope and
* calls all registered listeners along the way. The event cannot be canceled.
*
- * Any exception emmited from the {@link ng.$rootScope.Scope#$on listeners} will be passed
+ * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed
* onto the {@link ng.$exceptionHandler $exceptionHandler} service.
*
* @param {string} name Event name to emit.
@@ -8362,7 +8362,7 @@ function $SnifferProvider() {
* A reference to the browser's `window` object. While `window`
* is globally available in JavaScript, it causes testability problems, because
* it is a global variable. In angular we always refer to it through the
- * `$window` service, so it may be overriden, removed or mocked for testing.
+ * `$window` service, so it may be overridden, removed or mocked for testing.
*
* All expressions are evaluated with respect to current scope so they don't
* suffer from window globality.
@@ -8536,7 +8536,7 @@ function $HttpProvider() {
* $resource} service.
*
* The $http API is based on the {@link ng.$q deferred/promise APIs} exposed by
- * the $q service. While for simple usage patters this doesn't matter much, for advanced usage,
+ * the $q service. While for simple usage patterns this doesn't matter much, for advanced usage,
* it is important to familiarize yourself with these apis and guarantees they provide.
*
*
@@ -10213,7 +10213,7 @@ var uppercaseFilter = valueFn(uppercase);
- it('should limit the numer array to first three items', function() {
+ it('should limit the number array to first three items', function() {
expect(element('.doc-example-live input[ng-model=limit]').val()).toBe('3');
expect(binding('numbers | limitTo:limit')).toEqual('[1,2,3]');
});
@@ -10272,7 +10272,7 @@ function limitToFilter(){
* Orders a specified `array` by the `expression` predicate.
*
* Note: this function is used to augment the `Array` type in Angular expressions. See
- * {@link ng.$filter} for more informaton about Angular arrays.
+ * {@link ng.$filter} for more information about Angular arrays.
*
* @param {Array} array The array to sort.
* @param {function(*)|string|Array.<(function(*)|string)>} expression A predicate to be
@@ -11847,7 +11847,7 @@ var VALID_CLASS = 'ng-valid',
* @property {Array.} $formatters Whenever the model value changes, it executes all of
* these functions to convert the value as well as validate.
*
- * @property {Object} $error An bject hash with all errors as keys.
+ * @property {Object} $error An object hash with all errors as keys.
*
* @property {boolean} $pristine True if user has not interacted with the control yet.
* @property {boolean} $dirty True if user has already interacted with the control.
@@ -12339,7 +12339,7 @@ var ngValueDirective = function() {
* Typically, you don't use `ngBind` directly, but instead you use the double curly markup like
* `{{ expression }}` which is similar but less verbose.
*
- * Once scenario in which the use of `ngBind` is prefered over `{{ expression }}` binding is when
+ * Once scenario in which the use of `ngBind` is preferred over `{{ expression }}` binding is when
* it's desirable to put bindings into template that is momentarily displayed by the browser in its
* raw state before Angular compiles it. Since `ngBind` is an element attribute, it makes the
* bindings invisible to the user while the page is loading.
@@ -12677,7 +12677,7 @@ var ngClassEvenDirective = classDirective('Even', 1);
* directive to avoid the undesirable flicker effect caused by the html template display.
*
* The directive can be applied to the `` element, but typically a fine-grained application is
- * prefered in order to benefit from progressive rendering of the browser view.
+ * preferred in order to benefit from progressive rendering of the browser view.
*
* `ngCloak` works in cooperation with a css rule that is embedded within `angular.js` and
* `angular.min.js` files. Following is the css rule:
@@ -13361,7 +13361,7 @@ var ngNonBindableDirective = ngDirective({ terminal: true, priority: 1000 });
* plural categories "one" and "other".
*
* @param {string|expression} count The variable to be bounded to.
- * @param {string} when The mapping between plural category to its correspoding strings.
+ * @param {string} when The mapping between plural category to its corresponding strings.
* @param {number=} offset Offset to deduct from the total number.
*
* @example
@@ -13812,7 +13812,7 @@ var ngStyleDirective = ngDirective(function(scope, element, attr) {
* @scope
* @param {*} ngSwitch|on expression to match against ng-switch-when.
* @paramDescription
- * On child elments add:
+ * On child elements add:
*
* * `ngSwitchWhen`: the case statement to match against. If match then this
* case will be displayed.