Angular Dev Toolkit
In 2004, I began the practice of maintaining an organized Actionscript/Flash library that would be installed at all clients. This allowed me to organize and centralize common code that I used repeatedly at practically every gig.
Shortly after the Angular 2 release in 2016, I began organizing frequently used Typescript code and Angular components/directives/etc into a library I named 'The Angular Dev Toolkit.'
This post serves as a permanent link to describe the current library contents. All code in the toolkit is Apache 2.0 licensed and while it contains some of my open-source code, much of the library is closed and client-proprietary. As such, it's one of my key competitive advantages, since every client who hires me is several tens of thousands of lines of code further ahead from day one than if they hired someone else. Every client may continue to use the library free of charge and for any commercial project for as long as desired, after my contract is over.
The library has recently been rebranded as the @algorithmist dev toolkit and was completely rebuilt and expanded using Nx Dev Tools. This allows tools from one major section of the toolkit to be easily re-used in another, using the @algorithmist namespace.
So, here is the updated list (folders are highlighted in bold and test folders are not listed) as of Aug. 2020
@ALGORITHMIT DEV TOOLKIT
algorithmist
-- apps (interactive test applications - not listed here)
-- libs
---- lib-profiles (profiles are collections of streams, which are time-dependent data, not necessarily with uniform time intervals; limiting case is a traditional time series).
------ src/lib
-------- enumerations
---------- stat-types.ts
---------- transform-types.ts
-------- models
---------- profile.ts
---------- profile-metadata.ts
---------- stream-def.ts
---------- stream-types.ts
---------- time-units.ts
---------- transform-node-data.ts
---------- transform-type-metadata.ts
-------- profiles
---------- profile-factory.ts
-------- streams
---------- core
------------ copy-inverse-xform.ts
------------ copy-xform.ts
------------ freeform-xform.ts
------------ null-xform.ts
------------ offset-inverse-xform.ts
------------ offset-percent-inverse-xform.ts
------------ offset-percent-xform.ts
------------ offset-xform.ts
------------ scale-inverse-xform.ts
------------ scale-percent-inverse-xform.ts
------------ scale-percent-xform.ts
------------ scale-xform.ts
------------ single-point-inverse-xform.ts
------------ single-point-xform.ts
---------- data
------------ core-data.ts
---------- dataviz
------------ date-heatmap-provider.ts
------------ over-under.ts
------------ quad-area.ts
---------- outliers
------------ exp-smoothing.ts (single, double, and triple exponential smoothing)
---------- power-utilities
------------ replace.ts
---------- stats
------------ first-difference.ts
------------ interval-difference.ts
------------ normalize.ts
------------ normalize-inverse.ts
------------ second-difference.ts
---------- dynamic-xform-factory.ts
---------- power-utilities-xforms.ts
---------- transform-factory.ts
---------- transform-node.ts
-------- utils
---------- to-millliseconds.ts
---- lib-ts-core (core Typescript library)
------ src/lib
-------- core
---------- drawing
------------ ADTRectangleSelector.ts
------------ DrawStack.ts
------------ LineDecoratorFactory.ts
------------ ShapeConstants.ts
---------- shapes
------------ ArcTo.ts
------------ Arrow.ts
------------ CircularArc.ts
------------ CSection.ts
------------ CurvedArrow.ts
------------ EllipticalArc.ts
------------ ISection.ts
------------ LSection.ts
------------ Wedge.ts
-------- dataviz
---------- bezier-utils.ts
---------- spline-to-bezier.ts
-------- enumerations
---------- data-enum.ts
---------- day-of-week.ts
---------- spline-types.ts
---------- time-enum.ts
---------- user-role-enum.ts
-------- libs
---------- ai
------------ decision-tree
-------------- DecisionTree.ts
------------ fsm (finite-state-machines)
-------------- FiniteStateMachine.ts (Reactive, data-driven FSM)
------------ pathfinding
-------------- interfaces
---------------- cell-type.ts
---------------- grid-setup.ts
---------------- grid-view.ts
-------------- astar.ts
-------------- astar-graph.ts
-------------- astar-graph-arc.ts
-------------- astar-min-heap.ts
-------------- astar-tiles.ts
-------------- astar-waypoints.ts
-------------- grid-2d.ts
-------------- tile-node.ts
------------ rules-engine
-------------- ActionManager.ts
-------------- parser-enum.ts
-------------- Rule.ts
-------------- RuleManager.ts
-------------- RuleParser.ts
------------ sequencing-engine
-------------- SequencingEngine.ts
------------ simanneal
-------------- Simulate.ts
------------ text-vsm (text to Vector State Model, text freq., inv. doc. freq, cosine sim. library)
-------------- cosineSim.ts
-------------- score.ts
-------------- textToVSM.ts
-------------- TfIDF.ts
-------------- toVector.ts
-------------- vsmMod.ts
------------- vsmNorm.ts
---------- barcode
------------ code39
-------------- Code39Barcode.ts
---------- composable
------------ Fcns.ts (collection of one-line functions for use in FP composition)
------------ (includes: reverseChars, initials, padLeft, minValue, maxValue, areGreaterThan, getAllGreaterThan, indexFirstGreaterThan)
---------- kinematics
------------ ik-solvers
-------------- ccd-basic.ts
-------------- limb-solver.ts
------------ interfaces
-------------- bone-model.ts
-------------- bone-properties.ts
-------------- chain-model.ts
-------------- colors.ts
-------------- ik-solver.ts
-------------- linkable.ts
------------ rigs
-------------- arm.ts
-------------- base-bone.ts
-------------- bone-template.ts
-------------- chain.ts
-------------- clavicle.ts
-------------- connector.ts
-------------- foot.ts
-------------- hand.ts
-------------- head.ts
-------------- leg.ts
-------------- neck.ts
-------------- pelvis.ts
-------------- simple-spine.ts
------------ simple-physics
-------------- constant-motion-controller.ts
-------------- gravity-controller.ts
-------------- init-params.ts
-------------- motion-controller.ts
-------------- spring-node.ts
-------------- two-point-spring.ts
-------------- wind-controller.ts
---------- misc
------------ CookieMgr.ts
------------ DayHourOffset.ts
------------ getInvervalsBetweenDays.ts
------------ in-enum.ts
------------ indexOfMax.ts
------------ LocalStorageMgr.ts
------------ iterative-mean.ts
------------ orderedPermutations.ts (Knuth Algorithm L)
------------ toCap.ts
------------ toMsec.ts
------------ uuid.ts
---------- paging
------------ Paging.ts
---------- search
------------ Hierarchy.ts
---------- sorting
------------ CountingSort.ts (counting sort implementation)
------------ quick-select.ts (select k-th smallest element of a numeric array along with index)
------------ SortOn.ts (sort an array of objects based on a collection of properties)
---------- tsmt (Typescript Math Toolkit)
------------ crypto
-------------- core
---------------- Euclid.ts (lcm, gcd, extended Euclid alg.)
------------ dataframe (R-style data frame analysis)
-------------- DataFrame.ts
-------------- FrameStats.ts
-------------- TableAnalysis.ts
------------ datastructures
-------------- ArrayDeque.ts
-------------- AVLTree.ts
-------------- BTreeLight.ts
-------------- BTreeNode.ts
-------------- BTreeUtils.ts
-------------- DisjointSet.ts
-------------- DSNode.ts
-------------- DSNodeImpl.ts
-------------- Graph.ts
-------------- graph-from-list.ts
-------------- GraphArc.ts
-------------- GraphList.ts
-------------- GraphNode.ts
-------------- Heap.ts
-------------- IBTree.ts
-------------- IPrioritizable.ts
-------------- LinkedList.ts
-------------- PriorityQueue.ts
-------------- Queue.ts
-------------- SimpleGraph.ts
-------------- SkipList.ts
-------------- SkipListNode.ts
-------------- SkipListNodeImpl.ts
-------------- Stack.ts
-------------- Tree.ts
-------------- TreeNode.ts
------------ decorators (runtime decorators)
-------------- AbstractLineDecorator.ts
-------------- DashedLineDecorator.ts
-------------- DottedLineDecorator.ts
-------------- IGraphics.ts
-------------- ILineDecorator.ts
------------ drawing
-------------- Axis.ts
-------------- FunctionDrawProperties.ts
-------------- graph-marker.ts
-------------- graph-probe.ts
-------------- GraphAxis.ts
-------------- GraphDrawProperties.ts
-------------- LabelDrawProperties.ts
------------ expression-engine
-------------- ExpressionEngine.ts (parse/eval. expressions for multiple independent variables)
------------ functionparser
-------------- FunctionParser.ts (parse/evaluate functions of one or more independent variables)
------------ geom
-------------- circle-fcns
---------------- circle-utility-functions.ts
-------------- splines
---------------- cubic-bezier
------------------ BezierSplineControl.ts
------------------ CubicBezierSpline.ts
---------------- natural-cubic
------------------ CubicSpline.ts
---------------- BasicCircle.ts
---------------- Circle.ts
---------------- circle-factory.ts
---------------- ConvexHull.ts
---------------- Coordinate.ts
---------------- CubicBezier.ts
---------------- DouglasPeucker.ts
---------------- geom-util-functions.ts
---------------- IPlanarCurve.ts
---------------- Lang.ts
---------------- Layout.ts
---------------- LayoutObject.ts
---------------- LayoutPoint.ts
---------------- LayoutTypeEnum.ts
---------------- Line.ts
---------------- McMaster.ts
---------------- PlanarCurve.ts
---------------- Point.ts
---------------- point-random-walk.ts
---------------- Polygon.ts
---------------- QuadBezier.ts
---------------- Rectangle.ts
---------------- RegularNgon.ts
---------------- TwoPointCurve.ts
---------------- Units.ts
------------ item-allocation (continuous and 0-1 knapsack problem)
-------------- AllocatableItem.ts
-------------- DefaultItemStrategy.ts
-------------- IAllocatableItemProps.ts
-------------- IAllocatableItemStrategy.ts
-------------- ItemAllocation.ts
-------------- Knapsack.ts
-------------- Matrix.ts
------------ math
------------ Derivative.ts
------------ Matrix.ts
------------ Neville.ts
------------ PrimeFactorization.ts
------------ Quaternion.ts
------------ RepeatToFrac.ts
------------ misc
-------------- clock-time-model.ts
-------------- extract-props.ts
-------------- Mixin.ts
-------------- UndoRedo.ts
------------ random
-------------- Binning.ts
-------------- deviates.ts
-------------- RandomIntInRange.ts
-------------- SeededRng.ts
------------ shuffle
------------ fisher-yates.ts
------------ statistics
-------------- bayes
---------------- Bayes.ts
---------------- FrequencyTable.ts
-------------- regression
---------------- Bagging.ts
---------------- Bllsq.ts (linear least squares w/bagging)
---------------- Deviates.ts
---------------- llsq.ts
---------------- Pllsq.ts (polynomial least squares(
-------------- BinomialCoef.ts
-------------- Chi2.ts
-------------- DataStats.ts
-------------- ExtNormal.ts
-------------- Normal.ts
-------------- Poisson.ts
-------------- Spcfcn.ts
------------ utils
-------------- ApproxEqual.ts
-------------- ArrayFunctions.ts
-------------- balancedparens.ts
-------------- Bisect.ts
-------------- CircleUtils.ts
-------------- CompareUtils.ts
-------------- CubicRoots.ts
-------------- Gauss.ts
-------------- GeomUtils.ts
-------------- Halley.ts
-------------- Interp.ts
-------------- LayoutUtils.ts
-------------- Limits.ts
-------------- MathUtils.ts
-------------- Newton.ts
-------------- NumerFormatter.ts
-------------- PackingUtils.ts
-------------- PointUtils.ts
-------------- PolygonUtils.ts
-------------- QuadBezierInterpolate.ts
-------------- Solve2x2.ts
-------------- StringUtils.ts
-------------- TableFilter.ts
-------------- toNumber.ts
-------------- TWBRF.ts
---------- validation
------------- Validation.ts
-------- models
---------- App.ts
---------- graphics.ts
---------- IAddress.ts
---------- IBoundary.ts
---------- IBreadcrumbItem.ts
---------- ICubicBezierParams.ts
---------- IHierarchySearchResult.ts
---------- ILoggingAction.ts
---------- IMenuItem.ts
---------- IOuterGeometry.ts
---------- IPageChange.ts
---------- IPoint.ts
---------- IPolyLayout.ts
---------- IPolyLayoutObject.ts
---------- IQuadBezierParam.ts
---------- IRect.ts
---------- ISimAnneal.ts
---------- IUser.ts
---------- IWordVector.ts
---------- User.ts
---- ui-core (core Angular components/directives/pipes/validators/etc)
------ src/lib
-------- dataviz
---------- functions
------------ Quadrant.ts (single-quadrant graphing engine as Angular Component)
---------- profile-chart
------------ directives
------------ am-stream-plot-directive.ts (AmCharts V3)
------------ interfaces
------------ AmChartOptions.ts
------------ AmTimeSeriesDataProvider.ts
------------ chartHitEvent.ts
------------ ChartRightClickItem.ts
------------ ChartZoom.ts
------------ keyCodes.ts
------------ LegendSelection.ts
------------ libs
-------------- createGraph.ts
-------------- deleteGraph.ts
-------------- format-export-name.ts
-------------- getDataIndex.ts
-------------- modifyChartDataProvider.ts
-------------- modifyGraphs.ts
---------- simple-plot
------------ simple-plot-directive.ts (similar to Python SimplePlot)
-------- directives
---------- checkbox-selector-directive.ts
---------- href.directive.ts
---------- input-selector.directive.ts
---------- make-clickable.ts
---------- media-toggle.directive.ts
-------- drawing
---------- freehand-drawing-directive.ts (Freehand drawing in Angular)
-------- guards
---------- AuthGuard.ts
-------- interceptors
---------- ErrorInterceptor.ts
---------- TokenInterceptor.ts
-------- lazy-load (lazy-load JS and CSS)
---------- extension-enum.ts
---------- get-extension.ts
---------- lazy-load-libs.ts
---------- lazy-load-lite.ts
-------- logging
---------- Log.ts
-------- models
---------- stat-tiles.ts
---------- stat-type-selections.ts
-------- pipes
---------- null-dash (replace nulls with dash)
---------- phoneNumber (format a phone number that is provided as a continuous set of digits)
---------- push (push-pipe similar to that published by Fabian Wiles). Subscribe to observable and run CD on a component behind the scenes.
---------- scientific (display a number in scientific/exponential notation)
-------- profiles
---------- stats
------------ stat-bar
------------ stat-bar-component.html
------------ stat-bar-component.scss
------------ stat-bar-component.ts
-------- services
---------- breadcrumb.service.ts
---------- media.service.ts
---------- window-resize.service.ts
-------- validators
---------- CCTypes.ts (types of credit cards)
---------- CCValidator.ts (validate credit card number)
---------- CreditCardValidator.ts (Angular form validator for credit card numbers)
---------- Email validator (Angular email form validator)
---------- PasswordStrength.ts (evaluate password strength on 1-100 basis)
---------- PasswordValidator.ts (Angular form password validator - baseline function)
---------- patternValidator.ts (Angular form regex pattern validation)
It's difficult to provide a static visual tour of the entire library, so here are a couple screen shots to provide a small glimpse 'under the hood.'
If you have any questions about the library or wish to schedule a consultation on your project, please contact me at theAlgorithmist [at] gmail [dot] com.
Thanks and refer back to this link frequently to keep up on changes to the toolkit.